Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit4986a66

Browse files
committed
Adapt to SAMD core
1 parent47e23cc commit4986a66

File tree

7 files changed

+86
-53
lines changed

7 files changed

+86
-53
lines changed

‎api/ArduinoAPI.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343

4444
/* Standard C library includes */
4545
#include<stdlib.h>
46+
#include<stdint.h>
4647
#include<stdbool.h>
4748
#include<string.h>
4849
#include<math.h>

‎api/Common.cpp‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
#include"Common.h"
2+
3+
/* C++ prototypes*/
4+
longmap(long x,long in_min,long in_max,long out_min,long out_max)
5+
{
6+
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
7+
}
8+
9+
uint16_tmakeWord(uint16_t w) {return w; }
10+
uint16_tmakeWord(uint8_t h,uint8_t l) {return (h <<8) | l; }

‎api/Common.h‎

Lines changed: 50 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,45 @@
1+
#include<stdint.h>
2+
13
#ifdef__cplusplus
24
extern"C"{
35
#endif
46

57
voidyield(void);
68

79
typedefenum {
8-
LOW=0x0,
9-
HIGH=0x1,
10-
}_pinStatus;
10+
LOW=0x0,
11+
HIGH=0x1,
12+
}PinStatus;
1113

1214
typedefenum {
13-
INPUT=0x0,
14-
OUTPUT=0x1,
15-
INPUT_PULLUP=0x2,
16-
INPUT_PULLDOWN=0x3,
17-
}_pinMode;
15+
IRQ_LOW=0,
16+
IRQ_HIGH=1,
17+
CHANGE=2,
18+
FALLING=3,
19+
RISING=4,
20+
}InterruptMode;
1821

19-
#definePI 3.1415926535897932384626433832795
20-
#defineHALF_PI 1.5707963267948966192313216916398
21-
#defineTWO_PI 6.283185307179586476925286766559
22-
#defineDEG_TO_RAD 0.017453292519943295769236907684886
23-
#defineRAD_TO_DEG 57.295779513082320876798154814105
24-
#defineEULER 2.718281828459045235360287471352
22+
typedefenum {
23+
INPUT=0x0,
24+
OUTPUT=0x1,
25+
INPUT_PULLUP=0x2,
26+
INPUT_PULLDOWN=0x3,
27+
}PinMode;
2528

26-
#defineSERIAL 0x0
27-
#defineDISPLAY 0x1
29+
#definePI 3.1415926535897932384626433832795
30+
#defineHALF_PI 1.5707963267948966192313216916398
31+
#defineTWO_PI 6.283185307179586476925286766559
32+
#defineDEG_TO_RAD 0.017453292519943295769236907684886
33+
#defineRAD_TO_DEG 57.295779513082320876798154814105
34+
#defineEULER 2.718281828459045235360287471352
2835

29-
typedefenum {
30-
CHANGE=1,
31-
FALLING=2,
32-
RISING=3,
33-
}_interruptMode;
36+
#defineSERIAL 0x0
37+
#defineDISPLAY 0x1
3438

3539
typedefenum {
3640
LSBFIRST=0,
3741
MSBFIRST=1,
38-
}_spi_bitFirst_mode;
42+
}BitMode;
3943

4044
#ifndefmin
4145
#definemin(a,b) \
@@ -67,6 +71,8 @@ typedef enum {
6771
#definesq(x) ((x)*(x))
6872
#endif
6973

74+
typedefvoid (*voidFuncPtr)(void);
75+
7076
// interrupts() / noInterrupts() must be defined by the core
7177

7278
#definelowByte(w) ((uint8_t) ((w) & 0xff))
@@ -77,40 +83,47 @@ typedef enum {
7783
#definebitClear(value,bit) ((value) &= ~(1UL << (bit)))
7884
#definebitWrite(value,bit,bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))
7985

80-
typedefunsignedintword;
81-
8286
#ifndefbit
8387
#definebit(b) (1UL << (b))
8488
#endif
8589

86-
typedefboolboolean;
87-
typedefuint8_tbyte;
90+
/* TODO: request for removal */
91+
typedefboolboolean;
92+
typedefuint8_tbyte;
93+
typedefuint16_tword;
8894

8995
voidinit(void);
9096
voidinitVariant(void);
9197

9298
intatexit(void (*func)()) __attribute__((weak));
9399
intmain() __attribute__((weak));
94100

95-
voidpinMode(uint8_tpinNumber,_pinModepinMode);
96-
voiddigitalWrite(uint8_tpinNumber,_pinStatusstatus);
97-
_pinStatusdigitalRead(uint8_tpinNumber);
98-
intanalogRead(uint8_tpinNumber);
101+
#ifdefEXTENDED_PIN_MODE
102+
// Platforms who wnat to declare more than 256 pins need to define EXTENDED_PIN_MODE globally
103+
typedefuint32_tpin_size_t;
104+
#else
105+
typedefuint8_tpin_size_t;
106+
#endif
107+
108+
voidpinMode(pin_size_tpinNumber,PinModepinMode);
109+
voiddigitalWrite(pin_size_tpinNumber,PinStatusstatus);
110+
PinStatusdigitalRead(pin_size_tpinNumber);
111+
intanalogRead(pin_size_tpinNumber);
99112
voidanalogReference(uint8_tmode);
100-
voidanalogWrite(uint8_tpinNumber,intvalue);
113+
voidanalogWrite(pin_size_tpinNumber,intvalue);
101114

102115
unsigned longmillis(void);
103116
unsigned longmicros(void);
104117
voiddelay(unsigned long);
105118
voiddelayMicroseconds(unsignedintus);
106-
unsigned longpulseIn(uint8_tpin,uint8_tstate,unsigned longtimeout);
107-
unsigned longpulseInLong(uint8_tpin,uint8_tstate,unsigned longtimeout);
119+
unsigned longpulseIn(pin_size_tpin,uint8_tstate,unsigned longtimeout);
120+
unsigned longpulseInLong(pin_size_tpin,uint8_tstate,unsigned longtimeout);
108121

109-
voidshiftOut(uint8_tdataPin,uint8_tclockPin,uint8_tbitOrder,uint8_tval);
110-
uint8_tshiftIn(uint8_tdataPin,uint8_tclockPin,uint8_tbitOrder);
122+
voidshiftOut(pin_size_tdataPin,pin_size_tclockPin,uint8_tbitOrder,uint8_tval);
123+
pin_size_tshiftIn(pin_size_tdataPin,pin_size_tclockPin,uint8_tbitOrder);
111124

112-
voidattachInterrupt(uint8_tinterruptNumber,void (*callback)(void),_interruptModemode);
113-
voiddetachInterrupt(uint8_tinterruptNumber);
125+
voidattachInterrupt(pin_size_tinterruptNumber,voidFuncPtrcallback,InterruptModemode);
126+
voiddetachInterrupt(pin_size_tinterruptNumber);
114127

115128
voidsetup(void);
116129
voidloop(void);

‎api/RingBuffer.cpp‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#include<stdio.h>
2222
#include<stdlib.h>
2323

24-
RingBuffer::RingBuffer(rb_index_type size =64) : size(size)
24+
RingBuffer::RingBuffer(rb_index_type size) : size(size)
2525
{
2626
_aucBuffer = (uint8_t*)malloc(size);
2727
memset( _aucBuffer,0, size ) ;
@@ -79,6 +79,16 @@ int RingBuffer::available()
7979
return delta;
8080
}
8181

82+
intRingBuffer::availableForStore()
83+
{
84+
int delta = _iHead - _iTail;
85+
if (delta >=0)
86+
return size + additionalSize -1 - delta;
87+
else
88+
return -delta -1;
89+
}
90+
91+
8292
intRingBuffer::peek()
8393
{
8494
if(_iTail == _iHead)

‎api/RingBuffer.h‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,12 @@ typedef unsigned int rb_index_type;
3737
classRingBuffer
3838
{
3939
public:
40-
RingBuffer( rb_index_type size ) ;
40+
RingBuffer( rb_index_type size=64) ;
4141
voidstore_char(uint8_t c ) ;
4242
voidclear();
4343
intread_char();
4444
intavailable();
45+
intavailableForStore();
4546
intpeek();
4647
boolisFull();
4748
voidaddStorage(uint8_t* _buffer, rb_index_type _size) {

‎api/String.h‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,11 @@
2626
#include<stdlib.h>
2727
#include<string.h>
2828
#include<ctype.h>
29+
#if defined(__AVR__)
2930
#include"avr/pgmspace.h"
31+
#else
32+
#include"deprecated-avr-comp/avr/pgmspace.h"
33+
#endif
3034

3135
// When compiling programs with this class, the following gcc parameters
3236
// dramatically increase performance and memory (RAM) efficiency, typically

‎api/USBAPI.h‎

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,20 @@
2222

2323
#include<stdint.h>
2424

25-
classUSBDevice_
26-
{
27-
public:
28-
USBDevice_();
29-
boolconfigured();
30-
31-
voidattach();
32-
voiddetach();// Serial port goes down too...
33-
voidpoll();
34-
boolwakeupHost();// returns false, when wakeup cannot be processed
35-
};
36-
extern USBDevice_ USBDevice;
37-
3825
//================================================================================
3926
//================================================================================
4027
// Low level API
4128

4229
typedefstruct __attribute__((packed))
4330
{
44-
uint8_t bmRequestType;
31+
union {
32+
uint8_tbmRequestType;
33+
struct {
34+
uint8_tdirection :5;
35+
uint8_ttype :2;
36+
uint8_ttransferDirection :1;
37+
};
38+
};
4539
uint8_tbRequest;
4640
uint8_twValueL;
4741
uint8_twValueH;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp