diff --git a/bootloaders/diskloader/src/DiskLoader.cpp b/bootloaders/diskloader/src/DiskLoader.cpp index f5df8a4..d14c7fb 100644 --- a/bootloaders/diskloader/src/DiskLoader.cpp +++ b/bootloaders/diskloader/src/DiskLoader.cpp @@ -26,15 +26,15 @@ void entrypoint(void) ::); } -u8 _flashbuf[128]; -u8 _inSync; -u8 _ok; -extern volatile u8 _ejected; -extern volatile u16 _timeout; +uint8_t _flashbuf[128]; +uint8_t _inSync; +uint8_t _ok; +extern volatile uint8_t _ejected; +extern volatile uint16_t _timeout; -void Program(u8 ep, u16 page, u8 count) +void Program(uint8_t ep, uint16_t page, uint8_t count) { - u8 write = page < 30*1024; // Don't write over firmware please + uint8_t write = page < 30*1024; // Don't write over firmware please if (write) boot_page_erase(page); @@ -46,9 +46,9 @@ void Program(u8 ep, u16 page, u8 count) boot_spm_busy_wait(); // Wait until the memory is erased. count >>= 1; - u16* p = (u16*)page; - u16* b = (u16*)_flashbuf; - for (u8 i = 0; i < count; i++) + uint16_t* p = (uint16_t*)page; + uint16_t* b = (uint16_t*)_flashbuf; + for (uint8_t i = 0; i < count; i++) boot_page_fill(p++, b[i]); boot_page_write(page); @@ -78,8 +78,8 @@ int USBGetChar(); #define STK_READ_PAGE 0x74 // 't' #define STK_READ_SIGN 0x75 // 'u' -extern const u8 _readSize[] PROGMEM; -const u8 _readSize[] = +extern const uint8_t _readSize[] PROGMEM; +const uint8_t _readSize[] = { STK_GET_PARAMETER, 1, STK_SET_DEVICE, 20, @@ -91,8 +91,8 @@ const u8 _readSize[] = 0,0 }; -extern const u8 _consts[] PROGMEM; -const u8 _consts[] = +extern const uint8_t _consts[] PROGMEM; +const uint8_t _consts[] = { SIGNATURE_0, SIGNATURE_1, @@ -131,18 +131,18 @@ int main() for(;;) { - u8* packet = _flashbuf; - u16 address = 0; + uint8_t* packet = _flashbuf; + uint16_t address = 0; for (;;) { - u8 cmd = getch(); + uint8_t cmd = getch(); // Read packet contents - u8 len; - const u8* rs = _readSize; + uint8_t len; + const uint8_t* rs = _readSize; for(;;) { - u8 c = pgm_read_byte(rs++); + uint8_t c = pgm_read_byte(rs++); len = pgm_read_byte(rs++); if (c == cmd || c == 0) break; @@ -152,11 +152,11 @@ int main() Recv(CDC_RX,packet,len); // Send a response - u8 send = 0; - const u8* pgm = _consts+7; // 0 + uint8_t send = 0; + const uint8_t* pgm = _consts+7; // 0 if (STK_GET_PARAMETER == cmd) { - u8 i = packet[0] - 0x80; + uint8_t i = packet[0] - 0x80; if (i > 2) i = (i == 0x18) ? 3 : 4; // 0x80:HW_VER,0x81:SW_MAJOR,0x82:SW_MINOR,0x18:3 or 0 pgm = _consts + i + 3; @@ -179,7 +179,7 @@ int main() else if (STK_LOAD_ADDRESS == cmd) { - address = *((u16*)packet); // word addresses + address = *((uint16_t*)packet); // word addresses address += address; } @@ -191,7 +191,7 @@ int main() else if (STK_READ_PAGE == cmd) { send = packet[1]; - pgm = (const u8*)address; + pgm = (const uint8_t*)address; address += send; // not sure of this is required } @@ -216,15 +216,15 @@ int main() } // Nice breathing LED indicates we are in the firmware -u16 _pulse; +uint16_t _pulse; void LEDPulse() { _pulse += 4; - u8 p = _pulse >> 9; + uint8_t p = _pulse >> 9; if (p > 63) p = 127-p; p += p; - if (((u8)_pulse) > p) + if (((uint8_t)_pulse) > p) L_LED_OFF(); else L_LED_ON(); @@ -234,7 +234,7 @@ void StartSketch() { TX_LED_OFF(); // switch off the RX and TX LEDs before starting the user sketch RX_LED_OFF(); - UDCON = 1; // Detatch USB + UDCON = 1; // Detach USB UDIEN = 0; asm volatile ( // Reset vector to run firmware "clr r30\n" @@ -245,7 +245,7 @@ void StartSketch() void Reset() { - wdt_enable(WDTO_15MS); + wdt_enable(WDTO_15MS); // reset the microcontroller to reinitialize all IO and other registers for (;;) ; } diff --git a/bootloaders/diskloader/src/Platform.h b/bootloaders/diskloader/src/Platform.h index 2e90334..57dc7d5 100644 --- a/bootloaders/diskloader/src/Platform.h +++ b/bootloaders/diskloader/src/Platform.h @@ -11,11 +11,6 @@ #include #include -typedef unsigned char u8; -typedef unsigned short u16; -typedef unsigned long u32; - - #define CPU_PRESCALE(n) (CLKPR = 0x80, CLKPR = (n)) #define DISABLE_JTAG() MCUCR = (1 << JTD) | (1 << IVCE) | (0 << PUD); MCUCR = (1 << JTD) | (0 << IVSEL) | (0 << IVCE) | (0 << PUD); @@ -39,9 +34,9 @@ typedef unsigned long u32; #define TRANSFER_RELEASE 0x40 #define TRANSFER_ZERO 0x20 -void Transfer(u8 ep, const u8* data, int len); -void Recv(u8 ep, u8* dst, u8 len); -void Program(u8 ep, u16 page, u8 count); +void Transfer(uint8_t ep, const uint8_t* data, int len); +void Recv(uint8_t ep, uint8_t* dst, uint8_t len); +void Program(uint8_t ep, uint16_t page, uint8_t count); /* HID is not fully-supported in the bootloader - can be enabled for testing, but note the descriptor report and other parts are diff --git a/bootloaders/diskloader/src/USBCore.cpp b/bootloaders/diskloader/src/USBCore.cpp index 160e6cf..ac5d081 100644 --- a/bootloaders/diskloader/src/USBCore.cpp +++ b/bootloaders/diskloader/src/USBCore.cpp @@ -31,8 +31,8 @@ /** Pulse generation counters to keep track of the number of milliseconds remaining for each pulse type */ #define TX_RX_LED_PULSE_MS 100 -u8 TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ -u8 RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ +uint8_t TxLEDPulse; /**< Milliseconds remaining for data Tx LED pulse */ +uint8_t RxLEDPulse; /**< Milliseconds remaining for data Rx LED pulse */ void Reset(); @@ -41,11 +41,11 @@ void Reset(); typedef struct { - u32 dwDTERate; - u8 bCharFormat; - u8 bParityType; - u8 bDataBits; - u8 lineState; + uint32_t dwDTERate; + uint8_t bCharFormat; + uint8_t bParityType; + uint8_t bDataBits; + uint8_t lineState; } LineInfo; static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; @@ -54,9 +54,9 @@ static volatile LineInfo _usbLineInfo = { 57600, 0x00, 0x00, 0x00, 0x00 }; //================================================================== // 4 bytes of RAM -volatile u8 _usbConfiguration; -volatile u8 _ejected; -volatile u16 _timeout; +volatile uint8_t _usbConfiguration; +volatile uint8_t _ejected; +volatile uint16_t _timeout; static inline void WaitIN(void) { @@ -74,7 +74,7 @@ static inline void WaitOUT(void) ; } -static inline u8 WaitForINOrOUT() +static inline uint8_t WaitForINOrOUT() { while (!(UEINTX & ((1<> 8) @@ -324,7 +324,7 @@ extern const u8 _rawHID[] PROGMEM; #define RAWHID_TX_SIZE 64 #define RAWHID_RX_SIZE 64 -const u8 _rawHID[] = +const uint8_t _rawHID[] = { // RAW HID 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), // 30 @@ -346,15 +346,15 @@ const u8 _rawHID[] = 0xC0 // end collection }; -u8 _cdcComposite = 0; +uint8_t _cdcComposite = 0; bool SendDescriptor() { Setup& setup = _setup; - u16 desc_length = 0; - const u8* desc_addr = 0; + uint16_t desc_length = 0; + const uint8_t* desc_addr = 0; - u8 t = setup.wValueH; + uint8_t t = setup.wValueH; if (0x22 == t) { #ifdef HID_ENABLED @@ -363,23 +363,23 @@ bool SendDescriptor() #endif } else if (USB_DEVICE_DESCRIPTOR_TYPE == t) { - desc_addr = (const u8*)&USB_DeviceDescriptor; + desc_addr = (const uint8_t*)&USB_DeviceDescriptor; } else if (USB_CONFIGURATION_DESCRIPTOR_TYPE == t) { - desc_addr = (const u8*)&USB_ConfigDescriptor; + desc_addr = (const uint8_t*)&USB_ConfigDescriptor; desc_length = sizeof(USB_ConfigDescriptor); } else if (USB_STRING_DESCRIPTOR_TYPE == t) { if (setup.wValueL == 0) - desc_addr = (const u8*)&STRING_LANGUAGE; + desc_addr = (const uint8_t*)&STRING_LANGUAGE; else if (setup.wValueL == IPRODUCT) - desc_addr = (const u8*)&STRING_IPRODUCT; + desc_addr = (const uint8_t*)&STRING_IPRODUCT; else if (setup.wValueL == ISERIAL) - desc_addr = (const u8*)&STRING_SERIAL; + desc_addr = (const uint8_t*)&STRING_SERIAL; else if (setup.wValueL == IMANUFACTURER) - desc_addr = (const u8*)&STRING_IMANUFACTURER; + desc_addr = (const uint8_t*)&STRING_IMANUFACTURER; else return false; } else @@ -393,13 +393,13 @@ bool SendDescriptor() // Send descriptor // EP0 is 64 bytes long // RWAL and FIFOCON don't work on EP0 - u16 n = 0; + uint16_t n = 0; do { if (!WaitForINOrOUT()) return false; Send8(pgm_read_byte(&desc_addr[n++])); - u8 clr = n & 0x3F; + uint8_t clr = n & 0x3F; if (!clr) ClearIN(); // Fifo is full, release this packet } while (n < desc_length); @@ -413,7 +413,7 @@ void USBSetupInterrupt() return; Setup& setup = _setup; // global saves ~30 bytes - Recv((u8*)&setup,8); + Recv((uint8_t*)&setup,8); ClearSetupInt(); if (setup.bmRequestType & DEVICETOHOST) @@ -422,7 +422,7 @@ void USBSetupInterrupt() ClearIN(); bool ok = true; - u8 r = setup.bRequest; + uint8_t r = setup.bRequest; if (SET_ADDRESS == r) { WaitIN(); @@ -458,7 +458,7 @@ void USBSetupInterrupt() void USBGeneralInterrupt() { - u8 udint = UDINT; + uint8_t udint = UDINT; UDINT = 0; // End of Reset @@ -493,7 +493,7 @@ int USBGetChar() // Read a char if (HasData(CDC_RX)) { - u8 c = Recv8(); + uint8_t c = Recv8(); if (!ReadWriteAllowed()) ReleaseRX(); return c; diff --git a/bootloaders/diskloader/src/USBCore.h b/bootloaders/diskloader/src/USBCore.h index 537c0ec..313ae3b 100644 --- a/bootloaders/diskloader/src/USBCore.h +++ b/bootloaders/diskloader/src/USBCore.h @@ -97,32 +97,32 @@ // Device typedef struct { - u8 len; // 18 - u8 dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE - u16 usbVersion; // 0x200 - u8 deviceClass; - u8 deviceSubClass; - u8 deviceProtocol; - u8 packetSize0; // Packet 0 - u16 idVendor; - u16 idProduct; - u16 deviceVersion; // 0x100 - u8 iManufacturer; - u8 iProduct; - u8 iSerialNumber; - u8 bNumConfigurations; + uint8_t len; // 18 + uint8_t dtype; // 1 USB_DEVICE_DESCRIPTOR_TYPE + uint16_t usbVersion; // 0x200 + uint8_t deviceClass; + uint8_t deviceSubClass; + uint8_t deviceProtocol; + uint8_t packetSize0; // Packet 0 + uint16_t idVendor; + uint16_t idProduct; + uint16_t deviceVersion; // 0x100 + uint8_t iManufacturer; + uint8_t iProduct; + uint8_t iSerialNumber; + uint8_t bNumConfigurations; } DeviceDescriptor; // Config typedef struct { - u8 len; // 9 - u8 dtype; // 2 - u16 clen; // total length - u8 numInterfaces; - u8 config; - u8 iconfig; - u8 attributes; - u8 maxPower; + uint8_t len; // 9 + uint8_t dtype; // 2 + uint16_t clen; // total length + uint8_t numInterfaces; + uint8_t config; + uint8_t iconfig; + uint8_t attributes; + uint8_t maxPower; } ConfigDescriptor; // String @@ -130,58 +130,58 @@ typedef struct { // Interface typedef struct { - u8 len; // 9 - u8 dtype; // 4 - u8 number; - u8 alternate; - u8 numEndpoints; - u8 interfaceClass; - u8 interfaceSubClass; - u8 protocol; - u8 iInterface; + uint8_t len; // 9 + uint8_t dtype; // 4 + uint8_t number; + uint8_t alternate; + uint8_t numEndpoints; + uint8_t interfaceClass; + uint8_t interfaceSubClass; + uint8_t protocol; + uint8_t iInterface; } InterfaceDescriptor; // Endpoint typedef struct { - u8 len; // 7 - u8 dtype; // 5 - u8 addr; - u8 attr; - u16 packetSize; - u8 interval; + uint8_t len; // 7 + uint8_t dtype; // 5 + uint8_t addr; + uint8_t attr; + uint16_t packetSize; + uint8_t interval; } EndpointDescriptor; // Interface Association Descriptor // Used to bind 2 interfaces together in CDC compostite device typedef struct { - u8 len; // 8 - u8 dtype; // 11 - u8 firstInterface; - u8 interfaceCount; - u8 functionClass; - u8 funtionSubClass; - u8 functionProtocol; - u8 iInterface; + uint8_t len; // 8 + uint8_t dtype; // 11 + uint8_t firstInterface; + uint8_t interfaceCount; + uint8_t functionClass; + uint8_t funtionSubClass; + uint8_t functionProtocol; + uint8_t iInterface; } IADDescriptor; // CDC CS interface descriptor typedef struct { - u8 len; // 5 - u8 dtype; // 0x24 - u8 subtype; - u8 d0; - u8 d1; + uint8_t len; // 5 + uint8_t dtype; // 0x24 + uint8_t subtype; + uint8_t d0; + uint8_t d1; } CDCCSInterfaceDescriptor; typedef struct { - u8 len; // 4 - u8 dtype; // 0x24 - u8 subtype; - u8 d0; + uint8_t len; // 4 + uint8_t dtype; // 0x24 + uint8_t subtype; + uint8_t d0; } CDCCSInterfaceDescriptor4; typedef struct @@ -204,15 +204,15 @@ typedef struct typedef struct { - u8 len; // 9 - u8 dtype; // 0x21 - u8 addr; - u8 versionL; // 0x101 - u8 versionH; // 0x101 - u8 country; - u8 desctype; // 0x22 report - u8 descLenL; - u8 descLenH; + uint8_t len; // 9 + uint8_t dtype; // 0x21 + uint8_t addr; + uint8_t versionL; // 0x101 + uint8_t versionH; // 0x101 + uint8_t country; + uint8_t desctype; // 0x22 report + uint8_t descLenL; + uint8_t descLenH; } HIDDescDescriptor; typedef struct diff --git a/bootloaders/diskloader/src/USBDesc.cpp b/bootloaders/diskloader/src/USBDesc.cpp index b143687..7160868 100644 --- a/bootloaders/diskloader/src/USBDesc.cpp +++ b/bootloaders/diskloader/src/USBDesc.cpp @@ -22,17 +22,17 @@ //==================================================================================================== // Actual device descriptors -const u16 STRING_LANGUAGE[2] = { +const uint16_t STRING_LANGUAGE[2] = { (3<<8) | (2+2), 0x0409 // English }; -const u16 STRING_SERIAL[13] = { +const uint16_t STRING_SERIAL[13] = { (3<<8) | (2+2*12), USB_SERIAL_STRING }; -const u16 STRING_IPRODUCT[28] = { +const uint16_t STRING_IPRODUCT[28] = { (3<<8) | (2+2*27), #if USB_PID == USB_PID_LEONARDO 'A','r','d','u','i','n','o',' ','L','e','o','n','a','r','d','o',' ','b','o','o','t','l','o','a','d','e','r' @@ -41,7 +41,7 @@ const u16 STRING_IPRODUCT[28] = { #endif }; -const u16 STRING_IMANUFACTURER[12] = { +const uint16_t STRING_IMANUFACTURER[12] = { (3<<8) | (2+2*11), 'A','r','d','u','i','n','o',' ','L','L','C' }; diff --git a/bootloaders/diskloader/src/USBDesc.h b/bootloaders/diskloader/src/USBDesc.h index 3a7fc55..fa962e9 100644 --- a/bootloaders/diskloader/src/USBDesc.h +++ b/bootloaders/diskloader/src/USBDesc.h @@ -47,10 +47,10 @@ extern Config USB_ConfigDescriptor PROGMEM; extern DeviceDescriptor USB_DeviceDescriptor PROGMEM; extern DeviceDescriptor USB_DeviceDescriptorA PROGMEM; -extern const u16 STRING_LANGUAGE[2] PROGMEM; -extern const u16 STRING_IPRODUCT[28] PROGMEM; -extern const u16 STRING_IMANUFACTURER[12] PROGMEM; -extern const u16 STRING_SERIAL[13] PROGMEM; +extern const uint16_t STRING_LANGUAGE[2] PROGMEM; +extern const uint16_t STRING_IPRODUCT[28] PROGMEM; +extern const uint16_t STRING_IMANUFACTURER[12] PROGMEM; +extern const uint16_t STRING_SERIAL[13] PROGMEM; #define IMANUFACTURER 1 #define IPRODUCT 2