From 49d5ed2f2e357c34f568b6cec297fc62da7995c4 Mon Sep 17 00:00:00 2001 From: Phonog Date: Mon, 31 Oct 2016 22:21:27 +0100 Subject: [PATCH 001/373] Add files via upload --- .../examples/HardwareCANexample/Changes.h | 53 ++ .../HardwareCANexample/HardwareCANexample.ino | 181 +++++ STM32F1/libraries/HardwareCAN/keywords.txt | 40 ++ .../libraries/HardwareCAN/library.properties | 9 + .../libraries/HardwareCAN/src/HardwareCAN.cpp | 120 ++++ .../libraries/HardwareCAN/src/HardwareCAN.h | 68 ++ .../libraries/HardwareCAN/src/utility/can.c | 543 +++++++++++++++ .../libraries/HardwareCAN/src/utility/can.h | 322 +++++++++ STM32F1/libraries/rcc.h | 641 ++++++++++++++++++ STM32F1/libraries/rcc_f1.c | 174 +++++ STM32F1/libraries/usb.c | 402 +++++++++++ 11 files changed, 2553 insertions(+) create mode 100644 STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/Changes.h create mode 100644 STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/HardwareCANexample.ino create mode 100644 STM32F1/libraries/HardwareCAN/keywords.txt create mode 100644 STM32F1/libraries/HardwareCAN/library.properties create mode 100644 STM32F1/libraries/HardwareCAN/src/HardwareCAN.cpp create mode 100644 STM32F1/libraries/HardwareCAN/src/HardwareCAN.h create mode 100644 STM32F1/libraries/HardwareCAN/src/utility/can.c create mode 100644 STM32F1/libraries/HardwareCAN/src/utility/can.h create mode 100644 STM32F1/libraries/rcc.h create mode 100644 STM32F1/libraries/rcc_f1.c create mode 100644 STM32F1/libraries/usb.c diff --git a/STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/Changes.h b/STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/Changes.h new file mode 100644 index 000000000..1ccd2fe88 --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/Changes.h @@ -0,0 +1,53 @@ +#ifdef CHANGES_INCLUDE + +****** DETAILS OF THE CHANGES TO BE DONE TO THE CORE TO BE ABLE TO USE THE LIBRARY HardwareCAN ****** + +1) History +The Hardware CAN library was originally published in the Maple Leaflabs forum by X893. +I tested it, and found bugs, which I fixed in the code. My fixes are commented with the initials JMD. +The most important things that missed was to connect the interrupt service routine to the CAN interrupt vector. +The problem is that in the F1 family, this vector is shared with the USB vector, as is some of the memory. Thus, +when one wants to use the CAN, the USB becomes unavailable. This is a severe drawback of this chip, but one has to cope with this. + +2) Changes performed + +2.1) In file C:\ArduinoForSTM32\arduino-1.6.9\hardware\Arduino_STM32-master\STM32F1\cores\maple\libmaple\rcc_f1.c +inserted 1 line, position 96: + [RCC_CAN] = { .clk_domain = APB1, .line_num = 25 }, //! JMD after X893 + +2.2) In file C:\ArduinoForSTM32\arduino-1.6.9\hardware\Arduino_STM32-master\STM32F1\system\libmaple\stm32f1\include\series\rcc.h +inserted 1 line, position 442: + RCC_CAN, //! JMD after X893 + +2.3) In file C:\ArduinoForSTM32\arduino-1.6.9\hardware\Arduino_STM32-master\STM32F1\cores\maple\libmaple\usb\stm32f1\usb.c +2.3.1) inserted 12 lines, position 186 +// JMD : default ISRs of CAN, to be overridden if HardwareCAN library is used in sketch +void __attribute__((weak)) USB_HP_CAN_TX_IRQHandler(void) +{ ; } // Dummy ISR + +void __irq_usb_hp_can_tx(void) +{ + USB_HP_CAN_TX_IRQHandler () ; +} + +uint8 __attribute__((weak)) CAN_RX0_IRQ_Handler(void) +{ return 1 ; } // Dummy ISR + +2.3.2) and altered function void __irq_usb_lp_can_rx0(void) + Was + +void __irq_usb_lp_can_rx0(void) { + uint16 istr = USB_BASE->ISTR; + + /* Use USB_ISR_MSK to only include code for bits we care about. */ + +Becomes + +void __irq_usb_lp_can_rx0(void) { + uint16 istr = USB_BASE->ISTR; + + if (CAN_RX0_IRQ_Handler()) //! JMD : Call to CAN ISR, returns 1 CAN is active + return; //! JMD + + /* Use USB_ISR_MSK to only include code for bits we care about. */ + #endif diff --git a/STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/HardwareCANexample.ino b/STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/HardwareCANexample.ino new file mode 100644 index 000000000..4e3a9e574 --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/examples/HardwareCANexample/HardwareCANexample.ino @@ -0,0 +1,181 @@ +#include +#include "changes.h" +/* + * Example of use of the HardwareCAN library + * This application receives two frames containing various data. It also produces data that are sent periodically using another two frames. + * Please read the file changes.h to see the changes to be performed to the core in order to use this + */ +// Define the values of the identifiers +#define GYRO_ID 0x27 +#define JOYSTICK_VALUES_ID 0x5A +#define TANK_LEVEL_ID 0x78 +#define MOTOR_CONTROL_ID 0x92 + +// Limit time to flag a CAN error +#define CAN_TIMEOUT 100 +#define CAN_DELAY 10 // ms between two processings of incoming messages +#define CAN_SEND_RATE 200 // ms between two successive sendings + +// Message structures. Each message has its own identifier. As many such variables should be defined +// as the number of different CAN frames the application has to send. Here, they are two. +CanMsg msgGyroscope ; +CanMsg msgMotorControl ; + +// Traffic handling data +int CANquietTime ; // Quiet time counter to detect no activity on CAN bus +bool CANError ; // Indicates that incoming CAN traffic is missing +int CANsendDivider ; // Used to send frames once every so many times loop() is called + +// Applicaton variables +int Contents[4] ; // Contents of the four tanks +int JoystickX ; // Setting of the joystick, X axis +int JoystickY ; // ... Y axis +int AngularRate ; // Output of local gyroscope +int Throttle ; // Motor control value, produced by some local processing +bool ErreurGyroscope = false ; + +// Instanciation of CAN interface +HardwareCAN canBus(CAN1_BASE); + + +// Note : for the predefined identifiers, please have a look in file can.h + +void CANSetup(void) +{ + CAN_STATUS Stat ; + + // Initialize the message structures + // A CAN structure includes the following fields: + msgGyroscope.IDE = CAN_ID_STD; // Indicates a standard identifier ; CAN_ID_EXT would mean this frame uses an extended identifier + msgGyroscope.RTR = CAN_RTR_DATA; // Indicated this is a data frame, as opposed to a remote frame (would then be CAN_RTR_REMOTE) + msgGyroscope.ID = GYRO_ID ; // Identifier of the frame : 0-2047 (0-0x3ff) for standard idenfiers; 0-0x1fffffff for extended identifiers + msgGyroscope.DLC = 3; // Number of data bytes to follow + msgGyroscope.Data[0] = 0x0; // Data bytes, there can be 0 to 8 bytes. + msgGyroscope.Data[1] = 0x0; + msgGyroscope.Data[2] = 0x0; + + msgMotorControl.IDE = CAN_ID_STD; + msgMotorControl.RTR = CAN_RTR_DATA; + msgMotorControl.ID = MOTOR_CONTROL_ID ; + msgMotorControl.DLC = 2; + msgMotorControl.Data[0] = 0x0; + msgMotorControl.Data[1] = 0x0; + + // Initialize CAN module + canBus.map(CAN_GPIO_PB8_PB9); // This setting is already wired in the Olimexino-STM32 board + Stat = canBus.begin(CAN_SPEED_125, CAN_MODE_NORMAL); // Other speeds go from 125 kbps to 1000 kbps. CAN allows even more choices. + + canBus.filter(0, 0, 0); + canBus.set_irq_mode(); // Use irq mode (recommended), so the handling of incoming messages + // will be performed at ease in a task or in the loop. The software fifo is 16 cells long, + // allowing at least 15 ms before processing the fifo is needed at 125 kbps + Stat = canBus.status(); + if (Stat != CAN_OK) + /* Your own error processing here */ ; // Initialization failed +} + +// Send one frame. Parameter is a pointer to a frame structure (above), that has previously been updated with data. +// If no mailbox is available, wait until one becomes empty. There are 3 mailboxes. +CAN_TX_MBX CANsend(CanMsg *pmsg) +{ + CAN_TX_MBX mbx; + + do + { + mbx = canBus.send(pmsg) ; +#ifdef USE_MULTITASK + vTaskDelay( 1 ) ; // Infinite loops are not multitasking-friendly +#endif + } + while(mbx == CAN_TX_NO_MBX) ; // Waiting outbound frames will eventually be sent, unless there is a CAN bus failure. + return mbx ; +} + +// Process incoming messages +// Note : frames are not fully checked for correctness: DLC value is not checked, neither are the IDE and RTR fields. However, the data is guaranteed to be corrrect. +void ProcessMessages(void) +{ + int Pr = 0 ; + int i ; + + CanMsg *r_msg; + + // Loop for every message in the fifo + while ((r_msg = canBus.recv()) != NULL) + { + CANquietTime = 0 ; // Reset at each received frame + CANError = false ; // Clear CAN silence error + switch ( r_msg->ID ) + { + case TANK_LEVEL_ID : // This frame contains four 16-bit words, little endian coded + for ( i = 0 ; i < 4 ; i++ ) + Contents[i] = (int)r_msg->Data[2*i] | ((int)r_msg->Data[(2*i)+1]) << 8 ; + break ; + + case JOYSTICK_VALUES_ID : // This frame contains two 16-bit words, little endian coded + Pr = (int)r_msg->Data[0] ; + Pr |= (int)r_msg->Data[1] << 8 ; + JoystickX = Pr ; + + Pr = (int)r_msg->Data[2] ; + Pr |= (int)r_msg->Data[3] << 8 ; + JoystickY = Pr ; + break ; + + default : // Any frame with a different identifier is ignored + break ; + } + + canBus.free(); // Remove processed message from buffer, whatever the identifier +#ifdef USE_MULTITASK + vTaskDelay( 1 ) ; // Infinite loops are not multitasking-friendly +#endif + } +} + +// Send messages +// Prepare and send 2 frames containing the value of process variables +// Sending all frames at once is a choice; they could be sent separately, at different times and rates. +void SendCANmessages(void) +{ + // Prepare Gyroscope frame : send angular rate + msgGyroscope.Data[0] = AngularRate & 0xff ; + msgGyroscope.Data[1] = ( AngularRate >> 8 ) & 0xff ; + msgGyroscope.Data[2] = ErreurGyroscope ? 1 : 0 ; + CANsend(&msgGyroscope) ; // Send this frame + + msgMotorControl.Data[0] = Throttle & 0xff ; + msgMotorControl.Data[1] = ( Throttle >> 8 ) & 0xff ; + CANsend(&msgMotorControl) ; +} + +// The application program starts here +void setup() { + // put your setup code here, to run once: + CANSetup() ; // Initialize the CAN module and prepare the message structures. +} + +void loop() { + // Process incoming messages periodically (should be often enough to avoid overflowing the fifo) + ProcessMessages() ; // Process all incoming messages, update local variables accordingly + + // This is an example of timeout management. Here it is global to all received frames; + // it could be on a frame by frame basis, with as many control variables as the number of frames. + CANquietTime++ ; + if ( CANquietTime > CAN_TIMEOUT ) + { + CANquietTime = CAN_TIMEOUT + 1 ; // To prevent overflowing this variable if silence prolongs... + CANError = true ; // Flag CAN silence error. Will be cleared at first frame received + } + + // Send messages containing variables to publish. Sent less frequently than the processing of incoming frames (here, every 200 ms) + CANsendDivider-- ; + if ( CANsendDivider < 0 ) + { + CANsendDivider = CAN_SEND_RATE / CAN_DELAY ; + SendCANmessages() ; + } + delay(CAN_DELAY) ; // The delay must not be greater than the time to overflow the incoming fifo (here about 15 ms) +} + + diff --git a/STM32F1/libraries/HardwareCAN/keywords.txt b/STM32F1/libraries/HardwareCAN/keywords.txt new file mode 100644 index 000000000..6d901e314 --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/keywords.txt @@ -0,0 +1,40 @@ +####################################### +# Syntax Coloring Map For HardwareCAN +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### +HardwareCAN KEYWORD1 +CanMsg KEYWORD1 +CAN_TX_MBX KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +release KEYWORD2 CAN_Release +send KEYWORD2 CAN_Send +read KEYWORD2 CAN_Read +recv KEYWORD2 CAN_Recieve +set_pool_mode KEYWORD2 CAN_Set_Pool_Mode +set_irq_mode KEYWORD2 CAN_Set_IRQ_Mode +fifo_ready KEYWORD2 CAN_Fifo_Ready +filter KEYWORD2 CAN_Filter +free KEYWORD2 CAN_Free +available KEYWORD2 CAN_Available + +####################################### +# Constants (LITERAL1) +####################################### +CAN_GPIO_PD0_PD1 LITERAL1 +CAN_GPIO_PB8_PB9 LITERAL1 +CAN_FIFO0 LITERAL1 +CAN_FIFO1 LITERAL1 +CAN_SPEED_125 LITERAL1 +CAN_SPEED_250 LITERAL1 +CAN_SPEED_500 LITERAL1 +CAN_SPEED_1000 LITERAL1 +CAN1_BASE LITERAL1 +CAN2_BASE LITERAL1 +CAN_ID_STD LITERAL1 +CAN_RTR_DATA LITERAL1 diff --git a/STM32F1/libraries/HardwareCAN/library.properties b/STM32F1/libraries/HardwareCAN/library.properties new file mode 100644 index 000000000..9186eb6cc --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/library.properties @@ -0,0 +1,9 @@ +name=HardwareCAN +version=1.0.0 +author=Maple Leaflabs fixed by JMD +maintainer=JMD +sentence=Enables managing CAN communication using the built-in CAN port of the OLIMEX STM32 board. +paragraph=With this library you can use the built-in CAN port of the OLIMEX STM32. The library handles both standard and extended frames. +category=Communication +url= +architectures=* \ No newline at end of file diff --git a/STM32F1/libraries/HardwareCAN/src/HardwareCAN.cpp b/STM32F1/libraries/HardwareCAN/src/HardwareCAN.cpp new file mode 100644 index 000000000..f113c4d85 --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/src/HardwareCAN.cpp @@ -0,0 +1,120 @@ +/** + * @brief HardwareCAN "wiring-like" api for CAN + */ + +#include "wirish.h" +#include "utility/can.h" +#include "HardwareCAN.h" + +/** + * @brief Initialize a CAN peripheral + * @param freq frequency to run at, must one of the following values: + * - CAN_SPEED_1000 + * - CAN_SPEED_500 + * - CAN_SPEED_250 + * - CAN_SPEED_125 + */ +CAN_STATUS HardwareCAN::begin(CAN_SPEED speed, uint32 mode) +{ +/* Begin Fix JMD + if (can_init(Port, CAN_MCR_NART, CAN_SPEED_250) == CAN_OK) + // NART empêche la réémission en cas de perte d'arbitrage d'où trames perdues + */ + Serial.end(); // disable USB interface -- JMD + if (can_init(Port, 0, speed) == CAN_OK) + // End Fix JMD + return can_set_mode(Port, mode); + return can_status(); +} + +void HardwareCAN::set_pool_mode(void) +{ + return can_set_pool_mode(Port); +} + +void HardwareCAN::set_irq_mode(void) +{ + return can_set_irq_mode(Port); +} + +CAN_STATUS HardwareCAN::filter(uint8 idx, uint32 id, uint32 mask) +{ + return can_filter(Port, idx, CAN_FIFO0, CAN_FILTER_32BIT, CAN_FILTER_MASK, id, mask); +} + +CAN_STATUS HardwareCAN::status(void) +{ + return can_status(); +} + +CAN_TX_MBX HardwareCAN::send(CanMsg* message) +{ + return can_transmit(Port, message); +} + +uint8 HardwareCAN::available(void) +{ + return can_rx_available(); +} + +CanMsg* HardwareCAN::recv(void) +{ + return can_rx_queue_get(); +} + +void HardwareCAN::clear(void) +{ + can_rx_queue_clear(); +} + +void HardwareCAN::free(void) +{ + can_rx_queue_free(); +} + +void HardwareCAN::cancel(CAN_TX_MBX mbx) +{ + can_cancel(Port, mbx); +} + +/** + * @brief Initialize a CAN peripheral + */ +CAN_STATUS HardwareCAN::begin(void) +{ + return begin(CAN_SPEED_250, CAN_MODE_NORMAL); +} + +void HardwareCAN::end(void) +{ + can_deinit(Port); +} + +CanMsg* HardwareCAN::read(CAN_FIFO fifo, CanMsg* msg) +{ + return can_read(Port, fifo, msg); +} + +void HardwareCAN::release(CAN_FIFO fifo) +{ + can_rx_release(Port, fifo); +} + +/** + * @brief Initialize a CAN peripheral + */ +CAN_STATUS HardwareCAN::map(CAN_GPIO_MAP remap) +{ + return can_gpio_map(Port, remap); +} + +uint8 HardwareCAN::fifo_ready(CAN_FIFO fifo) +{ + return can_fifo_ready(Port, fifo); +} + +HardwareCAN::HardwareCAN(CAN_Port* CANx) +{ + Port = CANx; +} + diff --git a/STM32F1/libraries/HardwareCAN/src/HardwareCAN.h b/STM32F1/libraries/HardwareCAN/src/HardwareCAN.h new file mode 100644 index 000000000..ccc318f5b --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/src/HardwareCAN.h @@ -0,0 +1,68 @@ +/** + * @brief HardwareCAN definitions + */ + +#ifndef _HARDWARECAN_H_ +#define _HARDWARECAN_H_ + +#include "utility/can.h" +#include "usb_serial.h" + +#define PID_REQUEST 0x7DF +#define PID_REPLY 0x7E8 + +#define ENGINE_COOLANT_TEMP 0x05 +#define ENGINE_RPM 0x0C +#define VEHICLE_SPEED 0x0D +#define MAF_SENSOR 0x10 +#define O2_VOLTAGE 0x14 +#define THROTTLE 0x11 + +/** + * Defines the possible SPI communication speeds. + */ + +class HardwareCAN +{ +private: +public: + CAN_Port* Port; + HardwareCAN(CAN_Port *CANx_BASE); + CAN_STATUS begin(void); + + uint32 MSR(void) + { + return Port->MSR; + } + + uint32 RF0R(void) + { + return Port->RF0R; + } + + void set_pool_mode(void); + void set_irq_mode(void); + + CAN_STATUS begin(CAN_SPEED speed, uint32 mode); + void end(void); + + CAN_STATUS filter(uint8 idx, uint32 id, uint32 mask); + CAN_STATUS map(CAN_GPIO_MAP remap); + CAN_STATUS status(void); + + CAN_TX_MBX send(CanMsg* message); + void cancel(CAN_TX_MBX mbx); + + uint8 available(void); + + CanMsg* recv(void); + + void free(void); + void clear(void); + + uint8 fifo_ready(CAN_FIFO fifo); + CanMsg* read(CAN_FIFO fifo, CanMsg* msg); + void release(CAN_FIFO fifo); +}; + +#endif diff --git a/STM32F1/libraries/HardwareCAN/src/utility/can.c b/STM32F1/libraries/HardwareCAN/src/utility/can.c new file mode 100644 index 000000000..0120e0eed --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/src/utility/can.c @@ -0,0 +1,543 @@ +//#include "libmaple.h" +#include "can.h" +//#include "rcc.h" +//#include "gpio.h" +//#include "nvic.h" +//#include "usb.h" + +/** + * CAN_interrupts + */ + +#define CAN_IT_RQCP0 ((uint32)0x00000005) /* Request completed mailbox 0 */ +#define CAN_IT_RQCP1 ((uint32)0x00000006) /* Request completed mailbox 1 */ +#define CAN_IT_RQCP2 ((uint32)0x00000007) /* Request completed mailbox 2 */ +#define CAN_IT_TME ((uint32)0x00000001) /* Transmit mailbox empty */ +#define CAN_IT_FMP0 ((uint32)0x00000002) /* FIFO 0 message pending */ +#define CAN_IT_FF0 ((uint32)0x00000004) /* FIFO 0 full */ +#define CAN_IT_FOV0 ((uint32)0x00000008) /* FIFO 0 overrun */ +#define CAN_IT_FMP1 ((uint32)0x00000010) /* FIFO 1 message pending */ +#define CAN_IT_FF1 ((uint32)0x00000020) /* FIFO 1 full */ +#define CAN_IT_FOV1 ((uint32)0x00000040) /* FIFO 1 overrun */ +#define CAN_IT_EWG ((uint32)0x00000100) /* Error warning */ +#define CAN_IT_EPV ((uint32)0x00000200) /* Error passive */ +#define CAN_IT_BOF ((uint32)0x00000400) /* Bus-off */ +#define CAN_IT_LEC ((uint32)0x00000800) /* Last error code */ +#define CAN_IT_ERR ((uint32)0x00008000) /* Error */ +#define CAN_IT_WKU ((uint32)0x00010000) /* Wake-up */ +#define CAN_IT_SLK ((uint32)0x00020000) /* Sleep */ + +/* Time out for INAK bit */ +#define CAN_INAK_TimeOut ((uint32)0x0000FFFF) + +/* Time out for SLAK bit */ +#define CAN_SLAK_TimeOut ((uint32)0x0000FFFF) + +#define CAN_CONTROL_MASK (CAN_MCR_TTCM | CAN_MCR_ABOM | CAN_MCR_AWUM | CAN_MCR_NART | CAN_MCR_RFLM | CAN_MCR_TXFP) +#define CAN_TIMING_MASK (CAN_BTR_SJW | CAN_BTR_TS2 | CAN_BTR_TS1 | CAN_BTR_BRP) +#define CAN_MODE_MASK (CAN_BTR_LBKM | CAN_BTR_SILM) + +struct can_speed_info { + const uint32 btr; +}; + +#define CAN_CLOCK (36000000UL / 18UL) + +static const struct can_speed_info can_speed_table[] = { + [CAN_SPEED_125] = { .btr = ( + (( 4-1) << CAN_BTR_SJW_POS) | + ((12-1) << CAN_BTR_TS1_POS) | + (( 5-1) << CAN_BTR_TS2_POS) | + (CAN_CLOCK / 125000UL - 1) + )}, + [CAN_SPEED_250] = { .btr = ( + (( 4-1) << CAN_BTR_SJW_POS) | + ((12-1) << CAN_BTR_TS1_POS) | + (( 5-1) << CAN_BTR_TS2_POS) | + (CAN_CLOCK / 250000UL - 1) + )}, + [CAN_SPEED_500] = { .btr = ( + (( 4-1) << CAN_BTR_SJW_POS) | + ((12-1) << CAN_BTR_TS1_POS) | + (( 5-1) << CAN_BTR_TS2_POS) | + (CAN_CLOCK / 500000UL - 1) + )}, + [CAN_SPEED_1000] = { .btr = ( + (( 4-1) << CAN_BTR_SJW_POS) | + ((12-1) << CAN_BTR_TS1_POS) | + (( 5-1) << CAN_BTR_TS2_POS) | + (CAN_CLOCK / 1000000UL - 1) + )} +}; + +CAN_STATUS status; +CanMsg can_rx_queue[CAN_RX_QUEUE_SIZE]; + +uint8 can_rx_head; +uint8 can_rx_tail; +uint8 can_rx_count; +uint8 can_rx_lost; +uint8 can_active = 0; + +/** + * @brief Return last operation status + */ +CAN_STATUS can_status(void) +{ + return status; +} + +/** + * @brief Enter initialization mode + */ +CAN_STATUS can_init_enter(CAN_Port* CANx) +{ + volatile uint32 wait_ack = 0 ; + + status = CAN_OK; + if ((CANx->MSR & CAN_MSR_INAK) == 0) // Check for initialization mode already set + { + CANx->MCR |= CAN_MCR_INRQ; // Request initialisation + + wait_ack = 0; // Wait the acknowledge + while ((wait_ack != CAN_INAK_TimeOut) && ((CANx->MSR & CAN_MSR_INAK) == 0)) + wait_ack++; + if ((CANx->MSR & CAN_MSR_INAK) == 0) + status = CAN_INIT_E_FAILED; // Timeout + } + return status; +} + +/** + * @brief Leave initialization mode + */ +CAN_STATUS can_init_leave(CAN_Port* CANx) +{ + volatile uint32 wait_ack = 0 ; + + status = CAN_OK; + if ((CANx->MSR & CAN_MSR_INAK) != 0) // Check for initialization mode already reset + { + CANx->MCR &= ~CAN_MCR_INRQ; // Clear Request initialization + + wait_ack = 0; // Wait the acknowledge + while ((wait_ack != CAN_INAK_TimeOut) && ((CANx->MSR & CAN_MSR_INAK) != 0)) + wait_ack++; + if ((CANx->MSR & CAN_MSR_INAK) != 0) + status = CAN_INIT_L_FAILED; + } + return status; +} + +/** + * @brief Deinitializes the CAN peripheral registers to their default reset values. + */ +CAN_STATUS can_deinit(CAN_Port* CANx) +{ + if (CANx == CAN1_BASE) + { + nvic_irq_disable(NVIC_USB_LP_CAN_RX0); // Disable interrupts + nvic_irq_disable(NVIC_USB_HP_CAN_TX); + rcc_reset_dev(RCC_CAN); + rcc_clk_disable(RCC_CAN); + can_active = 0; + } + return (status = CAN_OK); +} + +/** + * @brief Initialize CAN registers + */ +/* + * Bits in control parameter: + * CAN_MCR_TTCM time triggered communication mode + * CAN_MCR_ABOM automatic bus-off management + * CAN_MCR_AWUM automatic wake-up mode + * CAN_MCR_NART no automatic retransmission + * CAN_MCR_RFLM receive FIFO locked mode + * CAN_MCR_TXFP transmit FIFO priority + */ +CAN_STATUS can_init(CAN_Port* CANx, uint32 control, uint8 speed) +{ + status = CAN_INIT_FAILED; // default result status + // initialize receive message queue + can_rx_head = can_rx_tail = can_rx_count = can_rx_lost = 0; + + rcc_reset_dev(RCC_USB); //! X893 + rcc_clk_disable(RCC_USB); //! X893 +// line_dtr_rts = 0; //! X893 + rcc_clk_enable(RCC_AFIO); // enable clocks for AFIO + rcc_clk_enable(RCC_CAN); // and CAN + rcc_reset_dev(RCC_CAN); // reset CAN interface + + can_active = 1; // set CAN active flag (for interrupt handler + + CANx->MCR &= ~CAN_MCR_SLEEP; // reset CAN sleep mode (default after reset) + + if (can_init_enter(CANx) != CAN_OK) // enter CAN initialization mode + return status; // error, so return + + CANx->MCR &= ~CAN_CONTROL_MASK; // set mode bits + CANx->MCR |= (control & CAN_CONTROL_MASK); + + CANx->BTR &= ~CAN_TIMING_MASK; // Set the bit timing register + CANx->BTR |= (can_speed_table[speed].btr & CAN_TIMING_MASK); + + nvic_irq_enable(NVIC_USB_LP_CAN_RX0); // Enable interrupts + + nvic_irq_enable(NVIC_USB_HP_CAN_TX); + + CANx->IER = (CAN_IER_FMPIE0 | CAN_IER_FMPIE1 | CAN_IER_TMEIE); + + if (can_init_leave(CANx) == CAN_OK) + { + while (!(CANx->TSR & CAN_TSR_TME0)); // Transmit mailbox 0 is empty + while (!(CANx->TSR & CAN_TSR_TME1)); // Transmit mailbox 0 is empty + while (!(CANx->TSR & CAN_TSR_TME2)); // Transmit mailbox 0 is empty + } + return status; +} + +/** + * @brief Set timing calues (CAN_BTR) + */ +CAN_STATUS can_set_timing(CAN_Port* CANx, uint32 timing) +{ + if (can_init_enter(CANx) == CAN_OK) + { + CANx->BTR = ((CANx->BTR & ~CAN_TIMING_MASK) | (timing & CAN_TIMING_MASK)); + can_init_leave(CANx); + } + return status; +} + +/** + * @brief Set CAN mode + * @param CANx pointer to CAN port + * @param mode CAN mode + */ +CAN_STATUS can_set_mode(CAN_Port* CANx, uint32 mode) +{ + if (can_init_enter(CANx) == CAN_OK) + { + CANx->BTR &= ~CAN_MODE_MASK; + CANx->BTR |= (mode & CAN_MODE_MASK); + can_init_leave(CANx); + } + return status; +} + +/** + * @brief Set CAN to GPIO mapping + */ +CAN_STATUS can_gpio_map(CAN_Port* CANx, CAN_GPIO_MAP map_mode) +{ + rcc_clk_enable(RCC_AFIO); + + status = CAN_INIT_FAILED; + if( CANx == CAN1_BASE) + { + switch(map_mode) + { + case CAN_GPIO_PB8_PB9: + rcc_clk_enable(RCC_GPIOB); + afio_remap(AFIO_MAPR_CAN_REMAP_PB8_PB9); + gpio_set_mode(GPIOB, 8, GPIO_INPUT_FLOATING); + gpio_set_mode(GPIOB, 9, GPIO_AF_OUTPUT_PP); + break; +#if NR_GPIO_PORTS >= 4 + case CAN_GPIO_PD0_PD1: + rcc_clk_enable(RCC_GPIOD); + afio_remap(AFIO_MAPR_CAN_REMAP_PD0_PD1); + gpio_set_mode(GPIOD, 0, GPIO_INPUT_FLOATING); + gpio_set_mode(GPIOD, 1, GPIO_AF_OUTPUT_PP); + break; +#endif + default: + return status; + } + status = CAN_OK; + } + return status; +} + +CAN_STATUS can_filter(CAN_Port* CANx, uint8 filter_idx, CAN_FIFO fifo, CAN_FILTER_SCALE scale, CAN_FILTER_MODE mode, uint32 fr1, uint32 fr2) +{ + uint32 mask = ((uint32)0x00000001) << filter_idx; + + CANx->FMR |= CAN_FMR_FINIT; // Initialization mode for the filter + CANx->FA1R &= ~mask; // Deactivation filter + + + if (scale == CAN_FILTER_32BIT) + CANx->FS1R |= mask; + else + CANx->FS1R &= ~mask; + + CANx->sFilterRegister[filter_idx].FR1 = fr1; + CANx->sFilterRegister[filter_idx].FR2 = fr2; + + if (mode == CAN_FILTER_MASK) + CANx->FM1R &= ~mask; + else + CANx->FM1R |= mask; + + if (fifo == CAN_FIFO0) + CANx->FFA1R &= ~mask; + else + CANx->FFA1R |= mask; + + CANx->FA1R |= mask; + CANx->FMR &= ~CAN_FMR_FINIT; + return CAN_OK; +} + +/** + * @brief Initiates the transmission of a message. + * @param CANx: where x can be 1 to select the CAN peripheral. + * @param msg: pointer to a structure which contains CAN Id, CAN DLC and CAN datas. + * @retval : The number of the mailbox that is used for transmission or CAN_NO_MB if there is no empty mailbox. + */ +CAN_TX_MBX can_transmit(CAN_Port* CANx, CanMsg* msg) +{ + CAN_TX_MBX mbx; + uint32 data; + + /* Select one empty transmit mailbox */ + if (CANx->TSR & CAN_TSR_TME0) + mbx = CAN_TX_MBX0; + else if (CANx->TSR & CAN_TSR_TME1) + mbx = CAN_TX_MBX1; + else if (CANx->TSR & CAN_TSR_TME2) + mbx = CAN_TX_MBX2; + else + { + status = CAN_NO_MB; + return CAN_TX_NO_MBX; + } + + /* Set up the Id */ + if (msg->IDE == CAN_ID_STD) + data = (msg->ID << 21); + else + data = (msg->ID << 3) | CAN_ID_EXT; + + data |= ((uint32)msg->RTR); + + /* Set up the DLC */ + CANx->sTxMailBox[mbx].TDTR = (uint32)(msg->DLC & 0x0F); + + /* Set up the data field */ + CANx->sTxMailBox[mbx].TDLR = ( + ((uint32)msg->Data[3] << 24) | + ((uint32)msg->Data[2] << 16) | + ((uint32)msg->Data[1] << 8) | + ((uint32)msg->Data[0]) + ); + CANx->sTxMailBox[mbx].TDHR = ( + ((uint32)msg->Data[7] << 24) | + ((uint32)msg->Data[6] << 16) | + ((uint32)msg->Data[5] << 8) | + ((uint32)msg->Data[4]) + ); + /* Request transmission */ + CANx->sTxMailBox[mbx].TIR = (data | CAN_TMIDxR_TXRQ); + status = CAN_OK; + + return mbx; +} + +/** + * Checks the transmission of a message. + * @param CANx: where x can be 1 to select the CAN peripheral. + * @param mbx: the number of the mailbox that is used for transmission. + * @retval : CAN_TX_OK if the CAN driver transmits the message, CAN_TX_FAILED in an other case. + */ +CAN_STATUS can_tx_status(CAN_Port* CANx, CAN_TX_MBX mbx) +{ + /* RQCP, TXOK and TME bits */ + uint8 state = 0; + + switch (mbx) + { + case CAN_TX_MBX0: + state |= (uint8)((CANx->TSR & CAN_TSR_RQCP0) << 2); + state |= (uint8)((CANx->TSR & CAN_TSR_TXOK0) >> 0); + state |= (uint8)((CANx->TSR & CAN_TSR_TME0) >> 26); + break; + case CAN_TX_MBX1: + state |= (uint8)((CANx->TSR & CAN_TSR_RQCP1) >> 6); + state |= (uint8)((CANx->TSR & CAN_TSR_TXOK1) >> 8); + state |= (uint8)((CANx->TSR & CAN_TSR_TME1) >> 27); + break; + case CAN_TX_MBX2: + state |= (uint8)((CANx->TSR & CAN_TSR_RQCP2) >> 14); + state |= (uint8)((CANx->TSR & CAN_TSR_TXOK2) >> 16); + state |= (uint8)((CANx->TSR & CAN_TSR_TME2) >> 28); + break; + default: + status = CAN_TX_FAILED; + return status; + } + + // state = RQCP TXOK TME + switch (state) + { + /* transmit pending */ + case 0x0: + status = CAN_TX_PENDING; + break; + /* transmit failed */ + case 0x5: + status = CAN_TX_FAILED; + break; + /* transmit succedeed */ + case 0x7: + status = CAN_OK; + break; + default: + status = CAN_TX_FAILED; + break; + } + return status; +} + +/** + * @brief Cancels a transmit request. + * @param CANx: where x can be 1 to select the CAN peripheral. + * @param mbx: Mailbox number. + * @retval : None. + */ +void can_cancel(CAN_Port* CANx, uint8 mbx) +{ + /* abort transmission */ + switch (mbx) + { + case 0: + CANx->TSR |= CAN_TSR_ABRQ0; + break; + case 1: + CANx->TSR |= CAN_TSR_ABRQ1; + break; + case 2: + CANx->TSR |= CAN_TSR_ABRQ2; + break; + default: + break; + } +} + +void can_rx_queue_clear(void) +{ + nvic_irq_disable(NVIC_USB_LP_CAN_RX0); + can_rx_head = can_rx_tail = can_rx_count = can_rx_lost = 0; + nvic_irq_enable(NVIC_USB_LP_CAN_RX0); +} + +uint8 can_rx_available(void) +{ + return can_rx_count; +} + +CanMsg* can_rx_queue_get(void) +{ + if (can_rx_count == 0) + return NULL; + return &(can_rx_queue[can_rx_tail]); +} + +void can_rx_queue_free(void) +{ + if (can_rx_count > 0) + { + nvic_irq_disable(NVIC_USB_LP_CAN_RX0); // JMD problème d'atomicité + can_rx_tail = (can_rx_tail == (CAN_RX_QUEUE_SIZE - 1)) ? 0 : (can_rx_tail + 1); + --can_rx_count; + nvic_irq_enable(NVIC_USB_LP_CAN_RX0); // fin JMD problème d'atomicité + } +} + +CanMsg* can_read(CAN_Port* CANx, CAN_FIFO fifo, CanMsg* msg) +{ + uint32 data = CANx->sFIFOMailBox[fifo].RIR; + + /* Get the Id */ + if (data & CAN_ID_EXT) + { + msg->ID = 0x1FFFFFFF & (data >> 3); + msg->IDE = (uint8)CAN_ID_EXT; + } + else + { + msg->ID = 0x000007FF & (data >> 21); + msg->IDE = (uint8)CAN_ID_STD; + } + + msg->RTR = (uint8)(CAN_RTR_REMOTE & data); + msg->DLC = (uint8)(0x0F & CANx->sFIFOMailBox[fifo].RDTR); + msg->FMI = (uint8)(0xFF & (CANx->sFIFOMailBox[fifo].RDTR >> 8)); + + /* Get the data field */ + data = CANx->sFIFOMailBox[fifo].RDLR; + uint8* p = msg->Data; + *p++ = (uint8)0xFF & data; + *p++ = (uint8)0xFF & (data >> 8); + *p++ = (uint8)0xFF & (data >> 16); + *p++ = (uint8)0xFF & (data >> 24); + + data = CANx->sFIFOMailBox[fifo].RDHR; + *p++ = (uint8)0xFF & data; + *p++ = (uint8)0xFF & (data >> 8); + *p++ = (uint8)0xFF & (data >> 16); + *p++ = (uint8)0xFF & (data >> 24); + + return msg; +} + +void can_rx_release(CAN_Port* CANx, CAN_FIFO fifo) +{ + if (fifo == CAN_FIFO0) + CANx->RF0R |= (CAN_RF0R_RFOM0); // Release FIFO0 + else + CANx->RF1R |= (CAN_RF1R_RFOM1); // Release FIFO1 +} + +void can_rx_read(CAN_Port* CANx, CAN_FIFO fifo) +{ + if (can_rx_count < CAN_RX_QUEUE_SIZE) // read the message + { + CanMsg* msg = &can_rx_queue[can_rx_head]; + can_read(CANx, fifo, msg); + can_rx_head = (can_rx_head == (CAN_RX_QUEUE_SIZE - 1)) ? 0 : (can_rx_head + 1); + can_rx_count++; + } + else + can_rx_lost = 1; // no place in queue, ignore package + + can_rx_release(CANx, fifo); +} + +uint8 CAN_RX0_IRQ_Handler(void) +{ + if (can_active) + { + while ((CAN1_BASE->RF0R & CAN_RF0R_FMP0) != 0) + can_rx_read(CAN1_BASE, CAN_FIFO0); // message pending FIFO0 + while ((CAN1_BASE->RF1R & CAN_RF1R_FMP1) != 0) + can_rx_read(CAN1_BASE, CAN_FIFO1); // message pending FIFO1 + } + return can_active; // return CAN active flag to USB handler +} + +void USB_HP_CAN_TX_IRQHandler (void) +{ + if (can_active) + { + if (CAN1_BASE->TSR & CAN_TSR_RQCP0) + CAN1_BASE->TSR |= CAN_TSR_RQCP0; // reset request complete mbx 0 + if (CAN1_BASE->TSR & CAN_TSR_RQCP1) + CAN1_BASE->TSR |= CAN_TSR_RQCP1; // reset request complete mbx 1 + if (CAN1_BASE->TSR & CAN_TSR_RQCP2) + CAN1_BASE->TSR |= CAN_TSR_RQCP2; // reset request complete mbx 2 + } +} diff --git a/STM32F1/libraries/HardwareCAN/src/utility/can.h b/STM32F1/libraries/HardwareCAN/src/utility/can.h new file mode 100644 index 000000000..576ac36fe --- /dev/null +++ b/STM32F1/libraries/HardwareCAN/src/utility/can.h @@ -0,0 +1,322 @@ +#ifndef _CAN_H_ +#define _CAN_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +//#include "libmaple_types.h" +#include +#include +#include "libmaple/nvic.h" +#include +//#include "types.h" +#include "libmaple/usb.h" + +#ifndef CAN_RX_QUEUE_SIZE + #define CAN_RX_QUEUE_SIZE 16 +#endif + +/* peripheral addresses */ +#define CAN1_BASE ((CAN_Port*)0x40006400) +#define CAN2_BASE ((CAN_Port*)0x40006800) + + +/* CAN Master Control Register bits */ +#define CAN_MCR_INRQ ((uint32)0x00000001) /* Initialization request */ +#define CAN_MCR_SLEEP ((uint32)0x00000002) /* Sleep mode request */ +#define CAN_MCR_TXFP ((uint32)0x00000004) /* Transmit FIFO priority */ +#define CAN_MCR_RFLM ((uint32)0x00000008) /* Receive FIFO locked mode */ +#define CAN_MCR_NART ((uint32)0x00000010) /* No automatic retransmission */ +#define CAN_MCR_AWUM ((uint32)0x00000020) /* Automatic wake up mode */ +#define CAN_MCR_ABOM ((uint32)0x00000040) /* Automatic bus-off management */ +#define CAN_MCR_TTCM ((uint32)0x00000080) /* Time triggered communication mode */ +#define CAN_MCR_RESET ((uint32)0x00008000) /* bxCAN software master reset */ +#define CAN_MCR_DBF ((uint32)0x00010000) /* Debug freeze */ + +/* CAN Master Status Register bits */ +#define CAN_MSR_INAK ((uint32)0x00000001) /* Initialization acknowledge */ +#define CAN_MSR_SLAK ((uint32)0x00000002) /* Sleep acknowledge */ +#define CAN_MSR_ERRI ((uint32)0x00000004) /* Error interrupt */ +#define CAN_MSR_WKUI ((uint32)0x00000008) /* Wake-up interrupt */ +#define CAN_MSR_SLAKI ((uint32)0x00000010) /* Sleep acknowledge interrupt */ +#define CAN_MSR_TXM ((uint32)0x00000100) /* Transmit mode */ +#define CAN_MSR_RXM ((uint32)0x00000200) /* Receive mode */ +#define CAN_MSR_SAMP ((uint32)0x00000400) /* Last sample point */ +#define CAN_MSR_RX ((uint32)0x00000800) /* CAN Rx signal */ + +/* CAN Transmit Status Register bits */ +#define CAN_TSR_RQCP0 ((uint32)0x00000001) /* Request completed mailbox0 */ +#define CAN_TSR_TXOK0 ((uint32)0x00000002) /* Transmission OK of mailbox0 */ +#define CAN_TSR_ALST0 ((uint32)0x00000004) /* Arbitration Lost for Mailbox0 */ +#define CAN_TSR_TERR0 ((uint32)0x00000008) /* Transmission Error of Mailbox0 */ +#define CAN_TSR_ABRQ0 ((uint32)0x00000080) /* Abort request for mailbox0 */ +#define CAN_TSR_RQCP1 ((uint32)0x00000100) /* Request completed mailbox1 */ +#define CAN_TSR_TXOK1 ((uint32)0x00000200) /* Transmission OK of mailbox1 */ +#define CAN_TSR_ALST1 ((uint32)0x00000400) /* Arbitration Lost for Mailbox1 */ +#define CAN_TSR_TERR1 ((uint32)0x00000800) /* Transmission Error of Mailbox1 */ +#define CAN_TSR_ABRQ1 ((uint32)0x00008000) /* Abort request for mailbox1 */ +#define CAN_TSR_RQCP2 ((uint32)0x00010000) /* Request completed mailbox2 */ +#define CAN_TSR_TXOK2 ((uint32)0x00020000) /* Transmission OK of mailbox2 */ +#define CAN_TSR_ALST2 ((uint32)0x00040000) /* Arbitration Lost for mailbox 2 */ +#define CAN_TSR_TERR2 ((uint32)0x00080000) /* Transmission Error of Mailbox 2 */ +#define CAN_TSR_ABRQ2 ((uint32)0x00800000) /* Abort request for mailbox2 */ +#define CAN_TSR_CODE ((uint32)0x03000000) /* Mailbox Code */ +#define CAN_TSR_TME ((uint32)0x1C000000) /* TME[2:0] bits */ +#define CAN_TSR_TME0 ((uint32)0x04000000) /* Transmit mailbox 0 empty */ +#define CAN_TSR_TME1 ((uint32)0x08000000) /* Transmit mailbox 1 empty */ +#define CAN_TSR_TME2 ((uint32)0x10000000) /* Transmit mailbox 2 empty */ +#define CAN_TSR_LOW ((uint32)0xE0000000) /* LOW[2:0] bits */ +#define CAN_TSR_LOW0 ((uint32)0x20000000) /* Lowest Priority Flag for Mailbox 0 */ +#define CAN_TSR_LOW1 ((uint32)0x40000000) /* Lowest Priority Flag for Mailbox 1 */ +#define CAN_TSR_LOW2 ((uint32)0x80000000) /* Lowest Priority Flag for Mailbox 2 */ + +/* CAN Receive FIFO 0 Register bits */ +#define CAN_RF0R_FMP0 ((uint32)0x00000003) /* FIFO 0 message pending */ +#define CAN_RF0R_FULL0 ((uint32)0x00000008) /* FIFO 0 full */ +#define CAN_RF0R_FOVR0 ((uint32)0x00000010) /* FIFO 0 overrun */ +#define CAN_RF0R_RFOM0 ((uint32)0x00000020) /* Release FIFO 0 output mailbox */ + +/* CAN Receive FIFO 1 Register bits */ +#define CAN_RF1R_FMP1 ((uint32)0x00000003) /* FIFO 1 message pending */ +#define CAN_RF1R_FULL1 ((uint32)0x00000008) /* FIFO 1 full */ +#define CAN_RF1R_FOVR1 ((uint32)0x00000010) /* FIFO 1 overrun */ +#define CAN_RF1R_RFOM1 ((uint32)0x00000020) /* Release FIFO 1 output mailbox */ + +/* CAN Error Status Register bits */ +#define CAN_ESR_EWGF ((uint32)0x00000001) /* Error warning flag */ +#define CAN_ESR_EPVF ((uint32)0x00000002) /* Error passive flag */ +#define CAN_ESR_BOFF ((uint32)0x00000004) /* Bus-off flag */ + +/* CAN interrupt enable register (CAN_IER) */ +#define CAN_IER_TMEIE ((uint32)0x00000001) /* Transmit Mailbox Empty Interrupt Enable */ +#define CAN_IER_FMPIE0 ((uint32)0x00000002) /* FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE0 ((uint32)0x00000004) /* FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE0 ((uint32)0x00000008) /* FIFO Overrun Interrupt Enable */ +#define CAN_IER_FMPIE1 ((uint32)0x00000010) /* FIFO Message Pending Interrupt Enable */ +#define CAN_IER_FFIE1 ((uint32)0x00000020) /* FIFO Full Interrupt Enable */ +#define CAN_IER_FOVIE1 ((uint32)0x00000040) /* FIFO Overrun Interrupt Enable */ +#define CAN_IER_EWGIE ((uint32)0x00000100) /* Error Warning Interrupt Enable */ +#define CAN_IER_EPVIE ((uint32)0x00000200) /* Error Passive Interrupt Enable */ +#define CAN_IER_BOFIE ((uint32)0x00000400) /* Bus-Off Interrupt Enable */ +#define CAN_IER_LECIE ((uint32)0x00000800) /* Last Error Code Interrupt Enable */ +#define CAN_IER_ERRIE ((uint32)0x00008000) /* Error Interrupt Enable */ +#define CAN_IER_WKUIE ((uint32)0x00010000) /* Wakeup Interrupt Enable */ +#define CAN_IER_SLKIE ((uint32)0x00020000) /* Sleep Interrupt Enable */ + +/* CAN error status register (CAN_ESR) */ +#define CAN_ESR_EWGF ((uint32)0x00000001) /* Error Warning Flag */ +#define CAN_ESR_EPVF ((uint32)0x00000002) /* Error Passive Flag */ +#define CAN_ESR_BOFF ((uint32)0x00000004) /* Bus-Off Flag */ + +#define CAN_ESR_LEC ((uint32)0x00000070) /* LEC[2:0] bits (Last Error Code) */ +#define CAN_ESR_LEC_0 ((uint32)0x00000010) /* Bit 0 */ +#define CAN_ESR_LEC_1 ((uint32)0x00000020) /* Bit 1 */ +#define CAN_ESR_LEC_2 ((uint32)0x00000040) /* Bit 2 */ + +#define CAN_ESR_TEC ((uint32)0x00FF0000) /* Least significant byte of the 9-bit Transmit Error Counter */ +#define CAN_ESR_REC ((uint32)0xFF000000) /* Receive Error Counter */ + +/* CAN bit timing register (CAN_BTR) */ +#define CAN_BTR_SJW_POS 24 +#define CAN_BTR_TS2_POS 20 +#define CAN_BTR_TS1_POS 16 + +#define CAN_BTR_BRP ((uint32)0x000003FF) /* Baud Rate Prescaler */ +#define CAN_BTR_TS1 ((uint32)0x000F0000) /* Time Segment 1 */ +#define CAN_BTR_TS2 ((uint32)0x00700000) /* Time Segment 2 */ +#define CAN_BTR_SJW ((uint32)0x03000000) /* Resynchronization Jump Width */ +#define CAN_BTR_LBKM ((uint32)0x40000000) /* Loop Back Mode (Debug) */ +#define CAN_BTR_SILM ((uint32)0x80000000) /* Silent Mode */ + + +/* CAN Mailbox Transmit Request */ +#define CAN_TMIDxR_TXRQ ((uint32)0x00000001) /* Transmit mailbox request */ + +/* CAN Filter Master Register bits */ +#define CAN_FMR_FINIT ((uint32)0x00000001) /* Filter init mode */ + + +typedef enum CAN_GPIO_MAP { + CAN_GPIO_PB8_PB9, /* RX to PB8, TX to PB9 */ + CAN_GPIO_PD0_PD1 /* RX to PD0, TX to PD1 */ +} CAN_GPIO_MAP; + +typedef enum CAN_STATUS +{ + CAN_OK = 0, + CAN_INIT_FAILED, + CAN_INIT_E_FAILED, + CAN_INIT_L_FAILED, + CAN_TX_FAILED, + CAN_TX_PENDING, + CAN_NO_MB, + CAN_FILTER_FULL +} CAN_STATUS; + +typedef enum CAN_TX_MBX +{ + CAN_TX_MBX0 = 0, + CAN_TX_MBX1 = 1, + CAN_TX_MBX2 = 2, + CAN_TX_NO_MBX = CAN_NO_MB +} CAN_TX_MBX; + +#define CAN_MODE_NORMAL ((uint32)0x0) /* normal mode */ +#define CAN_MODE_LOOPBACK (CAN_BTR_LBKM) /* loopback mode */ +#define CAN_MODE_SILENT (CAN_BTR_SILM) /* silent mode */ +#define CAN_MODE_SILENT_LOOPBACK (CAN_BTR_LBKM | CAN_BTR_SILM) /* loopback combined with silent mode */ + +enum CAN_SPEED { + CAN_SPEED_125, + CAN_SPEED_250, + CAN_SPEED_500, + CAN_SPEED_1000, +}; + +/** + * CAN_identifier_type + */ +#define CAN_ID_STD ((uint32)0x00) /* Standard Id */ +#define CAN_ID_EXT ((uint32)0x04) /* Extended Id */ + +/** + * CAN_remote_transmission_request + */ +#define CAN_RTR_DATA ((uint32)0x00) /* Data frame */ +#define CAN_RTR_REMOTE ((uint32)0x02) /* Remote frame */ + +/** + * CAN_receive_FIFO_number_constants + */ +typedef enum { + CAN_FIFO0 = 0, + CAN_FIFO1 = 1 +} CAN_FIFO; + +typedef enum { + CAN_FILTER_32BIT = 0, + CAN_FILTER_16BIT = 1 +} CAN_FILTER_SCALE; + +typedef enum { + CAN_FILTER_MASK = 0, + CAN_FILTER_LIST = 1 +} CAN_FILTER_MODE; +/** + * @brief Controller Area Network TxMailBox + */ +typedef struct +{ + volatile uint32 TIR; + volatile uint32 TDTR; + volatile uint32 TDLR; + volatile uint32 TDHR; +} CAN_TxMailBox_Port; + +/** + * @brief Controller Area Network FIFOMailBox + */ +typedef struct +{ + volatile uint32 RIR; + volatile uint32 RDTR; + volatile uint32 RDLR; + volatile uint32 RDHR; +} CAN_FIFOMailBox_Port; + +/** + * @brief Controller Area Network FilterRegister + */ +typedef struct +{ + volatile uint32 FR1; + volatile uint32 FR2; +} CAN_FilterRegister_Port; + +typedef struct { + volatile uint32 MCR; // CAN master control register (CAN_MCR) + volatile uint32 MSR; // CAN master status register (CAN_MSR) + volatile uint32 TSR; // CAN transmit status register (CAN_TSR) + volatile uint32 RF0R; // CAN receive FIFO 0 register (CAN_RF0R) + volatile uint32 RF1R; // CAN receive FIFO 1 register (CAN_RF1R) + volatile uint32 IER; + volatile uint32 ESR; + volatile uint32 BTR; + uint32 RESERVED0[88]; + CAN_TxMailBox_Port sTxMailBox[3]; + CAN_FIFOMailBox_Port sFIFOMailBox[2]; + uint32 RESERVED1[12]; + volatile uint32 FMR; + volatile uint32 FM1R; + uint32 RESERVED2; + volatile uint32 FS1R; + uint32 RESERVED3; + volatile uint32 FFA1R; + uint32 RESERVED4; + volatile uint32 FA1R; + uint32 RESERVED5[8]; + CAN_FilterRegister_Port sFilterRegister[14]; +} CAN_Port; + +/** + * @brief CAN Tx message structure definition + */ +typedef struct +{ + uint32 ID; // CAN ID + uint8 IDE; // CAN_ID_STD for standard and CAN_ID_EXT for extended + uint8 RTR; + uint8 DLC; + uint8 Data[8]; + uint8 FMI; +} CanMsg; + +/* Functions */ +CAN_STATUS can_init_enter(CAN_Port* CANx); +CAN_STATUS can_init_leave(CAN_Port* CANx); +CAN_STATUS can_init(CAN_Port *CANx, uint32 mode, uint8 speed); +CAN_STATUS can_deinit(CAN_Port* CANx); +CAN_STATUS can_filter(CAN_Port* CANx, uint8 filter_idx, CAN_FIFO fifo_number, CAN_FILTER_SCALE scale, CAN_FILTER_MODE mode, uint32 fr1, uint32 fr2); +CAN_STATUS can_set_timing(CAN_Port* CANx, uint32 timing); +CAN_STATUS can_set_mode(CAN_Port* CANx, uint32 mode); +CAN_STATUS can_gpio_map(CAN_Port* CANx, CAN_GPIO_MAP map_mode); +CAN_STATUS can_status(void); +void can_cancel(CAN_Port* CANx, uint8 mbx); +void can_rx_queue_clear(void); +uint8 can_rx_available(void); +CanMsg* can_rx_queue_get(void); +CanMsg* can_read(CAN_Port* CANx, CAN_FIFO fifo, CanMsg* msg); +void can_rx_release(CAN_Port* CANx, CAN_FIFO fifo); +void can_rx_queue_free(void); +CAN_TX_MBX can_transmit(CAN_Port* CANx, CanMsg* msg); +CAN_STATUS can_tx_status(CAN_Port* CANx, CAN_TX_MBX mbx); + +/** + * @brief Set pooling mode + */ +static inline void can_set_pool_mode(CAN_Port* CANx) +{ + CANx->IER &= ~(CAN_IER_FMPIE0 | CAN_IER_FMPIE1); +} + +/** + * @brief Set interrupt mode + */ +static inline void can_set_irq_mode(CAN_Port* CANx) +{ + CANx->IER |= (CAN_IER_FMPIE0 | CAN_IER_FMPIE1); +} + +static inline uint8 can_fifo_ready(CAN_Port* CANx, CAN_FIFO fifo) +{ + if (fifo == CAN_FIFO0) + return (uint8)(CANx->RF0R & CAN_RF0R_FMP0); + return (uint8)(CANx->RF1R & CAN_RF1R_FMP1); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/rcc.h b/STM32F1/libraries/rcc.h new file mode 100644 index 000000000..aa9f8d3c9 --- /dev/null +++ b/STM32F1/libraries/rcc.h @@ -0,0 +1,641 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2011 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/stm32f1/include/series/rcc.h + * @brief STM32F1 reset and clock control (RCC) support. + */ + +#ifndef _LIBMAPLE_STM32F1_RCC_H_ +#define _LIBMAPLE_STM32F1_RCC_H_ + +#ifdef __cplusplus +extern "C"{ +#endif + +#include +#include + +/* + * Register map + */ + +/** STM32F1 RCC register map type */ +typedef struct rcc_reg_map { + __io uint32 CR; /**< Clock control register */ + __io uint32 CFGR; /**< Clock configuration register */ + __io uint32 CIR; /**< Clock interrupt register */ + __io uint32 APB2RSTR; /**< APB2 peripheral reset register */ + __io uint32 APB1RSTR; /**< APB1 peripheral reset register */ + __io uint32 AHBENR; /**< AHB peripheral clock enable register */ + __io uint32 APB2ENR; /**< APB2 peripheral clock enable register */ + __io uint32 APB1ENR; /**< APB1 peripheral clock enable register */ + __io uint32 BDCR; /**< Backup domain control register */ + __io uint32 CSR; /**< Control/status register */ +} rcc_reg_map; + +#define RCC_BASE ((struct rcc_reg_map*)0x40021000) + +/* + * Register bit definitions + */ + +/* Clock control register */ + +#define RCC_CR_PLLRDY_BIT 25 +#define RCC_CR_PLLON_BIT 24 +#define RCC_CR_CSSON_BIT 19 +#define RCC_CR_HSEBYP_BIT 18 +#define RCC_CR_HSERDY_BIT 17 +#define RCC_CR_HSEON_BIT 16 +#define RCC_CR_HSIRDY_BIT 1 +#define RCC_CR_HSION_BIT 0 + +#define RCC_CR_PLLRDY (1U << RCC_CR_PLLRDY_BIT) +#define RCC_CR_PLLON (1U << RCC_CR_PLLON_BIT) +#define RCC_CR_CSSON (1U << RCC_CR_CSSON_BIT) +#define RCC_CR_HSEBYP (1U << RCC_CR_HSEBYP_BIT) +#define RCC_CR_HSERDY (1U << RCC_CR_HSERDY_BIT) +#define RCC_CR_HSEON (1U << RCC_CR_HSEON_BIT) +#define RCC_CR_HSICAL (0xFF << 8) +#define RCC_CR_HSITRIM (0x1F << 3) +#define RCC_CR_HSIRDY (1U << RCC_CR_HSIRDY_BIT) +#define RCC_CR_HSION (1U << RCC_CR_HSION_BIT) + +/* Clock configuration register */ + +#define RCC_CFGR_USBPRE_BIT 22 +#define RCC_CFGR_PLLXTPRE_BIT 17 +#define RCC_CFGR_PLLSRC_BIT 16 + +#define RCC_CFGR_MCO (0x3 << 24) +#define RCC_CFGR_USBPRE (0x3 << RCC_CFGR_USBPRE_BIT) +#define RCC_CFGR_PLLMUL (0xF << 18) +#define RCC_CFGR_PLLXTPRE (1U << RCC_CFGR_PLLXTPRE_BIT) +#define RCC_CFGR_PLLSRC (1U << RCC_CFGR_PLLSRC_BIT) +#define RCC_CFGR_ADCPRE (0x3 << 14) +#define RCC_CFGR_PPRE2 (0x7 << 11) +#define RCC_CFGR_PPRE1 (0x7 << 8) +#define RCC_CFGR_HPRE (0xF << 4) +#define RCC_CFGR_SWS (0x3 << 2) +#define RCC_CFGR_SWS_PLL (0x2 << 2) +#define RCC_CFGR_SWS_HSE (0x1 << 2) +#define RCC_CFGR_SW 0x3 +#define RCC_CFGR_SW_PLL 0x2 +#define RCC_CFGR_SW_HSE 0x1 + +/* Clock interrupt register */ + +#define RCC_CIR_CSSC_BIT 23 +#define RCC_CIR_PLLRDYC_BIT 20 +#define RCC_CIR_HSERDYC_BIT 19 +#define RCC_CIR_HSIRDYC_BIT 18 +#define RCC_CIR_LSERDYC_BIT 17 +#define RCC_CIR_LSIRDYC_BIT 16 +#define RCC_CIR_PLLRDYIE_BIT 12 +#define RCC_CIR_HSERDYIE_BIT 11 +#define RCC_CIR_HSIRDYIE_BIT 10 +#define RCC_CIR_LSERDYIE_BIT 9 +#define RCC_CIR_LSIRDYIE_BIT 8 +#define RCC_CIR_CSSF_BIT 7 +#define RCC_CIR_PLLRDYF_BIT 4 +#define RCC_CIR_HSERDYF_BIT 3 +#define RCC_CIR_HSIRDYF_BIT 2 +#define RCC_CIR_LSERDYF_BIT 1 +#define RCC_CIR_LSIRDYF_BIT 0 + +#define RCC_CIR_CSSC (1U << RCC_CIR_CSSC_BIT) +#define RCC_CIR_PLLRDYC (1U << RCC_CIR_PLLRDYC_BIT) +#define RCC_CIR_HSERDYC (1U << RCC_CIR_HSERDYC_BIT) +#define RCC_CIR_HSIRDYC (1U << RCC_CIR_HSIRDYC_BIT) +#define RCC_CIR_LSERDYC (1U << RCC_CIR_LSERDYC_BIT) +#define RCC_CIR_LSIRDYC (1U << RCC_CIR_LSIRDYC_BIT) +#define RCC_CIR_PLLRDYIE (1U << RCC_CIR_PLLRDYIE_BIT) +#define RCC_CIR_HSERDYIE (1U << RCC_CIR_HSERDYIE_BIT) +#define RCC_CIR_HSIRDYIE (1U << RCC_CIR_HSIRDYIE_BIT) +#define RCC_CIR_LSERDYIE (1U << RCC_CIR_LSERDYIE_BIT) +#define RCC_CIR_LSIRDYIE (1U << RCC_CIR_LSIRDYIE_BIT) +#define RCC_CIR_CSSF (1U << RCC_CIR_CSSF_BIT) +#define RCC_CIR_PLLRDYF (1U << RCC_CIR_PLLRDYF_BIT) +#define RCC_CIR_HSERDYF (1U << RCC_CIR_HSERDYF_BIT) +#define RCC_CIR_HSIRDYF (1U << RCC_CIR_HSIRDYF_BIT) +#define RCC_CIR_LSERDYF (1U << RCC_CIR_LSERDYF_BIT) +#define RCC_CIR_LSIRDYF (1U << RCC_CIR_LSIRDYF_BIT) + +/* APB2 peripheral reset register */ + +#define RCC_APB2RSTR_TIM11RST_BIT 21 +#define RCC_APB2RSTR_TIM10RST_BIT 20 +#define RCC_APB2RSTR_TIM9RST_BIT 19 +#define RCC_APB2RSTR_ADC3RST_BIT 15 +#define RCC_APB2RSTR_USART1RST_BIT 14 +#define RCC_APB2RSTR_TIM8RST_BIT 13 +#define RCC_APB2RSTR_SPI1RST_BIT 12 +#define RCC_APB2RSTR_TIM1RST_BIT 11 +#define RCC_APB2RSTR_ADC2RST_BIT 10 +#define RCC_APB2RSTR_ADC1RST_BIT 9 +#define RCC_APB2RSTR_IOPGRST_BIT 8 +#define RCC_APB2RSTR_IOPFRST_BIT 7 +#define RCC_APB2RSTR_IOPERST_BIT 6 +#define RCC_APB2RSTR_IOPDRST_BIT 5 +#define RCC_APB2RSTR_IOPCRST_BIT 4 +#define RCC_APB2RSTR_IOPBRST_BIT 3 +#define RCC_APB2RSTR_IOPARST_BIT 2 +#define RCC_APB2RSTR_AFIORST_BIT 0 + +#define RCC_APB2RSTR_TIM11RST (1U << RCC_APB2RSTR_TIM11RST_BIT) +#define RCC_APB2RSTR_TIM10RST (1U << RCC_APB2RSTR_TIM10RST_BIT) +#define RCC_APB2RSTR_TIM9RST (1U << RCC_APB2RSTR_TIM9RST_BIT) +#define RCC_APB2RSTR_ADC3RST (1U << RCC_APB2RSTR_ADC3RST_BIT) +#define RCC_APB2RSTR_USART1RST (1U << RCC_APB2RSTR_USART1RST_BIT) +#define RCC_APB2RSTR_TIM8RST (1U << RCC_APB2RSTR_TIM8RST_BIT) +#define RCC_APB2RSTR_SPI1RST (1U << RCC_APB2RSTR_SPI1RST_BIT) +#define RCC_APB2RSTR_TIM1RST (1U << RCC_APB2RSTR_TIM1RST_BIT) +#define RCC_APB2RSTR_ADC2RST (1U << RCC_APB2RSTR_ADC2RST_BIT) +#define RCC_APB2RSTR_ADC1RST (1U << RCC_APB2RSTR_ADC1RST_BIT) +#define RCC_APB2RSTR_IOPGRST (1U << RCC_APB2RSTR_IOPGRST_BIT) +#define RCC_APB2RSTR_IOPFRST (1U << RCC_APB2RSTR_IOPFRST_BIT) +#define RCC_APB2RSTR_IOPERST (1U << RCC_APB2RSTR_IOPERST_BIT) +#define RCC_APB2RSTR_IOPDRST (1U << RCC_APB2RSTR_IOPDRST_BIT) +#define RCC_APB2RSTR_IOPCRST (1U << RCC_APB2RSTR_IOPCRST_BIT) +#define RCC_APB2RSTR_IOPBRST (1U << RCC_APB2RSTR_IOPBRST_BIT) +#define RCC_APB2RSTR_IOPARST (1U << RCC_APB2RSTR_IOPARST_BIT) +#define RCC_APB2RSTR_AFIORST (1U << RCC_APB2RSTR_AFIORST_BIT) + +/* APB1 peripheral reset register */ + +#define RCC_APB1RSTR_DACRST_BIT 29 +#define RCC_APB1RSTR_PWRRST_BIT 28 +#define RCC_APB1RSTR_BKPRST_BIT 27 +#define RCC_APB1RSTR_CANRST_BIT 25 +#define RCC_APB1RSTR_USBRST_BIT 23 +#define RCC_APB1RSTR_I2C2RST_BIT 22 +#define RCC_APB1RSTR_I2C1RST_BIT 21 +#define RCC_APB1RSTR_UART5RST_BIT 20 +#define RCC_APB1RSTR_UART4RST_BIT 19 +#define RCC_APB1RSTR_USART3RST_BIT 18 +#define RCC_APB1RSTR_USART2RST_BIT 17 +#define RCC_APB1RSTR_SPI3RST_BIT 15 +#define RCC_APB1RSTR_SPI2RST_BIT 14 +#define RCC_APB1RSTR_WWDRST_BIT 11 +#define RCC_APB1RSTR_TIM14RST_BIT 8 +#define RCC_APB1RSTR_TIM13RST_BIT 7 +#define RCC_APB1RSTR_TIM12RST_BIT 6 +#define RCC_APB1RSTR_TIM7RST_BIT 5 +#define RCC_APB1RSTR_TIM6RST_BIT 4 +#define RCC_APB1RSTR_TIM5RST_BIT 3 +#define RCC_APB1RSTR_TIM4RST_BIT 2 +#define RCC_APB1RSTR_TIM3RST_BIT 1 +#define RCC_APB1RSTR_TIM2RST_BIT 0 + +#define RCC_APB1RSTR_DACRST (1U << RCC_APB1RSTR_DACRST_BIT) +#define RCC_APB1RSTR_PWRRST (1U << RCC_APB1RSTR_PWRRST_BIT) +#define RCC_APB1RSTR_BKPRST (1U << RCC_APB1RSTR_BKPRST_BIT) +#define RCC_APB1RSTR_CANRST (1U << RCC_APB1RSTR_CANRST_BIT) +#define RCC_APB1RSTR_USBRST (1U << RCC_APB1RSTR_USBRST_BIT) +#define RCC_APB1RSTR_I2C2RST (1U << RCC_APB1RSTR_I2C2RST_BIT) +#define RCC_APB1RSTR_I2C1RST (1U << RCC_APB1RSTR_I2C1RST_BIT) +#define RCC_APB1RSTR_UART5RST (1U << RCC_APB1RSTR_UART5RST_BIT) +#define RCC_APB1RSTR_UART4RST (1U << RCC_APB1RSTR_UART4RST_BIT) +#define RCC_APB1RSTR_USART3RST (1U << RCC_APB1RSTR_USART3RST_BIT) +#define RCC_APB1RSTR_USART2RST (1U << RCC_APB1RSTR_USART2RST_BIT) +#define RCC_APB1RSTR_SPI3RST (1U << RCC_APB1RSTR_SPI3RST_BIT) +#define RCC_APB1RSTR_SPI2RST (1U << RCC_APB1RSTR_SPI2RST_BIT) +#define RCC_APB1RSTR_WWDRST (1U << RCC_APB1RSTR_WWDRST_BIT) +#define RCC_APB1RSTR_TIM14RST (1U << RCC_APB1RSTR_TIM14RST_BIT) +#define RCC_APB1RSTR_TIM13RST (1U << RCC_APB1RSTR_TIM13RST_BIT) +#define RCC_APB1RSTR_TIM12RST (1U << RCC_APB1RSTR_TIM12RST_BIT) +#define RCC_APB1RSTR_TIM7RST (1U << RCC_APB1RSTR_TIM7RST_BIT) +#define RCC_APB1RSTR_TIM6RST (1U << RCC_APB1RSTR_TIM6RST_BIT) +#define RCC_APB1RSTR_TIM5RST (1U << RCC_APB1RSTR_TIM5RST_BIT) +#define RCC_APB1RSTR_TIM4RST (1U << RCC_APB1RSTR_TIM4RST_BIT) +#define RCC_APB1RSTR_TIM3RST (1U << RCC_APB1RSTR_TIM3RST_BIT) +#define RCC_APB1RSTR_TIM2RST (1U << RCC_APB1RSTR_TIM2RST_BIT) + +/* AHB peripheral clock enable register */ + +#define RCC_AHBENR_SDIOEN_BIT 10 +#define RCC_AHBENR_FSMCEN_BIT 8 +#define RCC_AHBENR_CRCEN_BIT 7 +#define RCC_AHBENR_FLITFEN_BIT 4 +#define RCC_AHBENR_SRAMEN_BIT 2 +#define RCC_AHBENR_DMA2EN_BIT 1 +#define RCC_AHBENR_DMA1EN_BIT 0 + +#define RCC_AHBENR_SDIOEN (1U << RCC_AHBENR_SDIOEN_BIT) +#define RCC_AHBENR_FSMCEN (1U << RCC_AHBENR_FSMCEN_BIT) +#define RCC_AHBENR_CRCEN (1U << RCC_AHBENR_CRCEN_BIT) +#define RCC_AHBENR_FLITFEN (1U << RCC_AHBENR_FLITFEN_BIT) +#define RCC_AHBENR_SRAMEN (1U << RCC_AHBENR_SRAMEN_BIT) +#define RCC_AHBENR_DMA2EN (1U << RCC_AHBENR_DMA2EN_BIT) +#define RCC_AHBENR_DMA1EN (1U << RCC_AHBENR_DMA1EN_BIT) + +/* APB2 peripheral clock enable register */ + +#define RCC_APB2ENR_TIM11EN_BIT 21 +#define RCC_APB2ENR_TIM10EN_BIT 20 +#define RCC_APB2ENR_TIM9EN_BIT 19 +#define RCC_APB2ENR_ADC3EN_BIT 15 +#define RCC_APB2ENR_USART1EN_BIT 14 +#define RCC_APB2ENR_TIM8EN_BIT 13 +#define RCC_APB2ENR_SPI1EN_BIT 12 +#define RCC_APB2ENR_TIM1EN_BIT 11 +#define RCC_APB2ENR_ADC2EN_BIT 10 +#define RCC_APB2ENR_ADC1EN_BIT 9 +#define RCC_APB2ENR_IOPGEN_BIT 8 +#define RCC_APB2ENR_IOPFEN_BIT 7 +#define RCC_APB2ENR_IOPEEN_BIT 6 +#define RCC_APB2ENR_IOPDEN_BIT 5 +#define RCC_APB2ENR_IOPCEN_BIT 4 +#define RCC_APB2ENR_IOPBEN_BIT 3 +#define RCC_APB2ENR_IOPAEN_BIT 2 +#define RCC_APB2ENR_AFIOEN_BIT 0 + +#define RCC_APB2ENR_TIM11EN (1U << RCC_APB2ENR_TIM11EN_BIT) +#define RCC_APB2ENR_TIM10EN (1U << RCC_APB2ENR_TIM10EN_BIT) +#define RCC_APB2ENR_TIM9EN (1U << RCC_APB2ENR_TIM9EN_BIT) +#define RCC_APB2ENR_ADC3EN (1U << RCC_APB2ENR_ADC3EN_BIT) +#define RCC_APB2ENR_USART1EN (1U << RCC_APB2ENR_USART1EN_BIT) +#define RCC_APB2ENR_TIM8EN (1U << RCC_APB2ENR_TIM8EN_BIT) +#define RCC_APB2ENR_SPI1EN (1U << RCC_APB2ENR_SPI1EN_BIT) +#define RCC_APB2ENR_TIM1EN (1U << RCC_APB2ENR_TIM1EN_BIT) +#define RCC_APB2ENR_ADC2EN (1U << RCC_APB2ENR_ADC2EN_BIT) +#define RCC_APB2ENR_ADC1EN (1U << RCC_APB2ENR_ADC1EN_BIT) +#define RCC_APB2ENR_IOPGEN (1U << RCC_APB2ENR_IOPGEN_BIT) +#define RCC_APB2ENR_IOPFEN (1U << RCC_APB2ENR_IOPFEN_BIT) +#define RCC_APB2ENR_IOPEEN (1U << RCC_APB2ENR_IOPEEN_BIT) +#define RCC_APB2ENR_IOPDEN (1U << RCC_APB2ENR_IOPDEN_BIT) +#define RCC_APB2ENR_IOPCEN (1U << RCC_APB2ENR_IOPCEN_BIT) +#define RCC_APB2ENR_IOPBEN (1U << RCC_APB2ENR_IOPBEN_BIT) +#define RCC_APB2ENR_IOPAEN (1U << RCC_APB2ENR_IOPAEN_BIT) +#define RCC_APB2ENR_AFIOEN (1U << RCC_APB2ENR_AFIOEN_BIT) + +/* APB1 peripheral clock enable register */ + +#define RCC_APB1ENR_DACEN_BIT 29 +#define RCC_APB1ENR_PWREN_BIT 28 +#define RCC_APB1ENR_BKPEN_BIT 27 +#define RCC_APB1ENR_CANEN_BIT 25 +#define RCC_APB1ENR_USBEN_BIT 23 +#define RCC_APB1ENR_I2C2EN_BIT 22 +#define RCC_APB1ENR_I2C1EN_BIT 21 +#define RCC_APB1ENR_UART5EN_BIT 20 +#define RCC_APB1ENR_UART4EN_BIT 19 +#define RCC_APB1ENR_USART3EN_BIT 18 +#define RCC_APB1ENR_USART2EN_BIT 17 +#define RCC_APB1ENR_SPI3EN_BIT 15 +#define RCC_APB1ENR_SPI2EN_BIT 14 +#define RCC_APB1ENR_WWDEN_BIT 11 +#define RCC_APB1ENR_TIM14EN_BIT 8 +#define RCC_APB1ENR_TIM13EN_BIT 7 +#define RCC_APB1ENR_TIM12EN_BIT 6 +#define RCC_APB1ENR_TIM7EN_BIT 5 +#define RCC_APB1ENR_TIM6EN_BIT 4 +#define RCC_APB1ENR_TIM5EN_BIT 3 +#define RCC_APB1ENR_TIM4EN_BIT 2 +#define RCC_APB1ENR_TIM3EN_BIT 1 +#define RCC_APB1ENR_TIM2EN_BIT 0 + +#define RCC_APB1ENR_DACEN (1U << RCC_APB1ENR_DACEN_BIT) +#define RCC_APB1ENR_PWREN (1U << RCC_APB1ENR_PWREN_BIT) +#define RCC_APB1ENR_BKPEN (1U << RCC_APB1ENR_BKPEN_BIT) +#define RCC_APB1ENR_CANEN (1U << RCC_APB1ENR_CANEN_BIT) +#define RCC_APB1ENR_USBEN (1U << RCC_APB1ENR_USBEN_BIT) +#define RCC_APB1ENR_I2C2EN (1U << RCC_APB1ENR_I2C2EN_BIT) +#define RCC_APB1ENR_I2C1EN (1U << RCC_APB1ENR_I2C1EN_BIT) +#define RCC_APB1ENR_UART5EN (1U << RCC_APB1ENR_UART5EN_BIT) +#define RCC_APB1ENR_UART4EN (1U << RCC_APB1ENR_UART4EN_BIT) +#define RCC_APB1ENR_USART3EN (1U << RCC_APB1ENR_USART3EN_BIT) +#define RCC_APB1ENR_USART2EN (1U << RCC_APB1ENR_USART2EN_BIT) +#define RCC_APB1ENR_SPI3EN (1U << RCC_APB1ENR_SPI3EN_BIT) +#define RCC_APB1ENR_SPI2EN (1U << RCC_APB1ENR_SPI2EN_BIT) +#define RCC_APB1ENR_WWDEN (1U << RCC_APB1ENR_WWDEN_BIT) +#define RCC_APB1ENR_TIM14EN (1U << RCC_APB1ENR_TIM14EN_BIT) +#define RCC_APB1ENR_TIM13EN (1U << RCC_APB1ENR_TIM13EN_BIT) +#define RCC_APB1ENR_TIM12EN (1U << RCC_APB1ENR_TIM12EN_BIT) +#define RCC_APB1ENR_TIM7EN (1U << RCC_APB1ENR_TIM7EN_BIT) +#define RCC_APB1ENR_TIM6EN (1U << RCC_APB1ENR_TIM6EN_BIT) +#define RCC_APB1ENR_TIM5EN (1U << RCC_APB1ENR_TIM5EN_BIT) +#define RCC_APB1ENR_TIM4EN (1U << RCC_APB1ENR_TIM4EN_BIT) +#define RCC_APB1ENR_TIM3EN (1U << RCC_APB1ENR_TIM3EN_BIT) +#define RCC_APB1ENR_TIM2EN (1U << RCC_APB1ENR_TIM2EN_BIT) + +/* Backup domain control register */ + +#define RCC_BDCR_BDRST_BIT 16 +#define RCC_BDCR_RTCEN_BIT 15 +#define RCC_BDCR_LSEBYP_BIT 2 +#define RCC_BDCR_LSERDY_BIT 1 +#define RCC_BDCR_LSEON_BIT 0 + +#define RCC_BDCR_BDRST (1U << RCC_BDCR_BDRST_BIT) +#define RCC_BDCR_RTCEN (1U << RCC_BDCR_RTC_BIT) +#define RCC_BDCR_RTCSEL (0x3 << 8) +#define RCC_BDCR_RTCSEL_NONE (0x0 << 8) +#define RCC_BDCR_RTCSEL_LSE (0x1 << 8) +#define RCC_BDCR_RTCSEL_LSI (0x2 << 8) // added to support RTClock +#define RCC_BDCR_RTCSEL_HSE (0x3 << 8) +#define RCC_BDCR_LSEBYP (1U << RCC_BDCR_LSEBYP_BIT) +#define RCC_BDCR_LSERDY (1U << RCC_BDCR_LSERDY_BIT) +#define RCC_BDCR_LSEON (1U << RCC_BDCR_LSEON_BIT) + +/* Control/status register */ + +#define RCC_CSR_LPWRRSTF_BIT 31 +#define RCC_CSR_WWDGRSTF_BIT 30 +#define RCC_CSR_IWDGRSTF_BIT 29 +#define RCC_CSR_SFTRSTF_BIT 28 +#define RCC_CSR_PORRSTF_BIT 27 +#define RCC_CSR_PINRSTF_BIT 26 +#define RCC_CSR_RMVF_BIT 24 +#define RCC_CSR_LSIRDY_BIT 1 +#define RCC_CSR_LSION_BIT 0 + +#define RCC_CSR_LPWRRSTF (1U << RCC_CSR_LPWRRSTF_BIT) +#define RCC_CSR_WWDGRSTF (1U << RCC_CSR_WWDGRSTF_BIT) +#define RCC_CSR_IWDGRSTF (1U << RCC_CSR_IWDGRSTF_BIT) +#define RCC_CSR_SFTRSTF (1U << RCC_CSR_SFTRSTF_BIT) +#define RCC_CSR_PORRSTF (1U << RCC_CSR_PORRSTF_BIT) +#define RCC_CSR_PINRSTF (1U << RCC_CSR_PINRSTF_BIT) +#define RCC_CSR_RMVF (1U << RCC_CSR_RMVF_BIT) +#define RCC_CSR_LSIRDY (1U << RCC_CSR_LSIRDY_BIT) +#define RCC_CSR_LSION (1U << RCC_CSR_LSION_BIT) + +/* + * libmaple-mandated enumeration types. + */ + +/** + * @brief STM32F1 rcc_clk_id. + */ +typedef enum rcc_clk_id { + RCC_ADC1, + RCC_ADC2, + RCC_ADC3, + RCC_AFIO, + RCC_BKP, + RCC_CRC, + RCC_DAC, + RCC_DMA1, + RCC_DMA2, + RCC_FLITF, + RCC_FSMC, + RCC_GPIOA, + RCC_GPIOB, + RCC_GPIOC, + RCC_GPIOD, + RCC_GPIOE, + RCC_GPIOF, + RCC_GPIOG, + RCC_I2C1, + RCC_I2C2, + RCC_PWR, + RCC_SDIO, + RCC_SPI1, + RCC_SPI2, + RCC_SPI3, + RCC_SRAM, + RCC_TIMER1, + RCC_TIMER2, + RCC_TIMER3, + RCC_TIMER4, + RCC_TIMER5, + RCC_TIMER6, + RCC_TIMER7, + RCC_TIMER8, + RCC_TIMER9, + RCC_TIMER10, + RCC_TIMER11, + RCC_TIMER12, + RCC_TIMER13, + RCC_TIMER14, + RCC_USART1, + RCC_USART2, + RCC_USART3, + RCC_UART4, + RCC_UART5, + RCC_USB, + RCC_CAN, //! JMD after X893 +} rcc_clk_id; + +/** + * @brief STM32F1 PLL clock sources. + * @see rcc_configure_pll() + */ +typedef enum rcc_pllsrc { + RCC_PLLSRC_HSE = (0x1 << 16), + RCC_PLLSRC_HSI_DIV_2 = (0x0 << 16) +} rcc_pllsrc; + +/** + * @brief STM32F1 clock domains. + * @see rcc_dev_clk() + */ +typedef enum rcc_clk_domain { + RCC_APB1, + RCC_APB2, + RCC_AHB +} rcc_clk_domain; + +/** + * @brief STM32F1 Prescaler identifiers + * @see rcc_set_prescaler() + */ +typedef enum rcc_prescaler { + RCC_PRESCALER_AHB, + RCC_PRESCALER_APB1, + RCC_PRESCALER_APB2, + RCC_PRESCALER_USB, + RCC_PRESCALER_ADC +} rcc_prescaler; + +/** + * @brief STM32F1 ADC prescaler dividers + * @see rcc_set_prescaler() + */ +typedef enum rcc_adc_divider { + RCC_ADCPRE_PCLK_DIV_2 = 0x0 << 14, + RCC_ADCPRE_PCLK_DIV_4 = 0x1 << 14, + RCC_ADCPRE_PCLK_DIV_6 = 0x2 << 14, + RCC_ADCPRE_PCLK_DIV_8 = 0x3 << 14, +} rcc_adc_divider; + +/** + * @brief STM32F1 APB1 prescaler dividers + * @see rcc_set_prescaler() + */ +typedef enum rcc_apb1_divider { + RCC_APB1_HCLK_DIV_1 = 0x0 << 8, + RCC_APB1_HCLK_DIV_2 = 0x4 << 8, + RCC_APB1_HCLK_DIV_4 = 0x5 << 8, + RCC_APB1_HCLK_DIV_8 = 0x6 << 8, + RCC_APB1_HCLK_DIV_16 = 0x7 << 8, +} rcc_apb1_divider; + +/** + * @brief STM32F1 APB2 prescaler dividers + * @see rcc_set_prescaler() + */ +typedef enum rcc_apb2_divider { + RCC_APB2_HCLK_DIV_1 = 0x0 << 11, + RCC_APB2_HCLK_DIV_2 = 0x4 << 11, + RCC_APB2_HCLK_DIV_4 = 0x5 << 11, + RCC_APB2_HCLK_DIV_8 = 0x6 << 11, + RCC_APB2_HCLK_DIV_16 = 0x7 << 11, +} rcc_apb2_divider; + +/** + * @brief STM32F1 AHB prescaler dividers + * @see rcc_set_prescaler() + */ +typedef enum rcc_ahb_divider { + RCC_AHB_SYSCLK_DIV_1 = 0x0 << 4, + RCC_AHB_SYSCLK_DIV_2 = 0x8 << 4, + RCC_AHB_SYSCLK_DIV_4 = 0x9 << 4, + RCC_AHB_SYSCLK_DIV_8 = 0xA << 4, + RCC_AHB_SYSCLK_DIV_16 = 0xB << 4, + RCC_AHB_SYSCLK_DIV_32 = 0xC << 4, + RCC_AHB_SYSCLK_DIV_64 = 0xD << 4, + RCC_AHB_SYSCLK_DIV_128 = 0xD << 4, + RCC_AHB_SYSCLK_DIV_256 = 0xE << 4, + RCC_AHB_SYSCLK_DIV_512 = 0xF << 4, +} rcc_ahb_divider; + +/** + * @brief STM32F1 USB prescaler dividers + * @see rcc_set_prescaler() + */ + /* + Set and reset by software to control the USB clock prescaler value. The USB clock +must be 48MHz. These bits can’t be reset if the USB clock is enabled. +00: (CK_PLL / 1.5) selected +01: CK_PLL selected + */ + +typedef enum rcc_usb_divider { + RCC_USB_SYSCLK_DIV_1 = 0x1 << 22, + RCC_USB_SYSCLK_DIV_1_5 = 0x0 << 22, + RCC_USB_SYSCLK_DIV_2 = 0x3 << 22, + RCC_USB_SYSCLK_DIV_2_5 = 0x2 << 22, +} rcc_usb_divider; + + +/** + * @brief Start the low speed internal oscillator + */ +static inline void rcc_start_lsi(void) { + *bb_perip(&RCC_BASE->CSR, RCC_CSR_LSION_BIT) = 1; + while (*bb_perip(&RCC_BASE->CSR, RCC_CSR_LSIRDY_BIT) == 0); +} + +/** + * @brief STM32F1 clock sources. + */ +typedef enum rcc_clk { + RCC_CLK_PLL = (uint16)((offsetof(struct rcc_reg_map, CR) << 8) | + RCC_CR_PLLON_BIT), /**< Main PLL, clocked by + HSI or HSE. */ + RCC_CLK_HSE = (uint16)((offsetof(struct rcc_reg_map, CR) << 8) | + RCC_CR_HSEON_BIT), /**< High speed external. */ + RCC_CLK_HSI = (uint16)((offsetof(struct rcc_reg_map, CR) << 8) | + RCC_CR_HSION_BIT), /**< High speed internal. */ + RCC_CLK_LSE = (uint16)((offsetof(struct rcc_reg_map, BDCR) << 8) | + RCC_BDCR_LSEON_BIT), /**< Low-speed external + * (32.768 KHz). */ + RCC_CLK_LSI = (uint16)((offsetof(struct rcc_reg_map, CSR) << 8) | + RCC_CSR_LSION_BIT), /**< Low-speed internal + * (approximately 32 KHz). */ +} rcc_clk; + +/** + * @brief STM32F1 PLL multipliers. + */ +typedef enum rcc_pll_multiplier { + RCC_PLLMUL_2 = (0x0 << 18), + RCC_PLLMUL_3 = (0x1 << 18), + RCC_PLLMUL_4 = (0x2 << 18), + RCC_PLLMUL_5 = (0x3 << 18), + RCC_PLLMUL_6 = (0x4 << 18), + RCC_PLLMUL_7 = (0x5 << 18), + RCC_PLLMUL_8 = (0x6 << 18), + RCC_PLLMUL_9 = (0x7 << 18), + RCC_PLLMUL_10 = (0x8 << 18), + RCC_PLLMUL_11 = (0x9 << 18), + RCC_PLLMUL_12 = (0xA << 18), + RCC_PLLMUL_13 = (0xB << 18), + RCC_PLLMUL_14 = (0xC << 18), + RCC_PLLMUL_15 = (0xD << 18), + RCC_PLLMUL_16 = (0xE << 18), +} rcc_pll_multiplier; + +/* FIXME [0.0.13] Just have data point to an rcc_pll_multiplier! */ +/** + * @brief Start the low speed external oscillatior + */ +static inline void rcc_start_lse(void) { + bb_peri_set_bit(&RCC_BASE->BDCR, RCC_BDCR_LSEBYP_BIT, 0); + bb_peri_set_bit(&RCC_BASE->BDCR, RCC_BDCR_LSEON_BIT, 1); + while (bb_peri_get_bit(&RCC_BASE->BDCR, RCC_BDCR_LSERDY_BIT ) == 0); +} + +/** + * @brief STM32F1 PLL configuration values. + * Point to one of these with the "data" field in a struct rcc_pll_cfg. + * @see struct rcc_pll_cfg. + */ +typedef struct stm32f1_rcc_pll_data { + rcc_pll_multiplier pll_mul; /**< PLL multiplication factor. */ +} stm32f1_rcc_pll_data; + +/* + * Deprecated bits. + */ +static inline void rcc_start_hse(void) { // Added to support RTClock +// *bb_perip(&RCC_BASE->CR, RCC_CR_HSEON_BIT) = 1; + while (bb_peri_get_bit(&RCC_BASE->CR, RCC_CR_HSERDY_BIT) == 0); +} + +/** + * @brief Deprecated; STM32F1 only. + * + * Initialize the clock control system. Initializes the system + * clock source to use the PLL driven by an external oscillator. + * + * @param sysclk_src system clock source, must be PLL + * @param pll_src pll clock source, must be HSE + * @param pll_mul pll multiplier + */ +__deprecated +void rcc_clk_init(rcc_sysclk_src sysclk_src, + rcc_pllsrc pll_src, + rcc_pll_multiplier pll_mul); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/rcc_f1.c b/STM32F1/libraries/rcc_f1.c new file mode 100644 index 000000000..9040a4dc2 --- /dev/null +++ b/STM32F1/libraries/rcc_f1.c @@ -0,0 +1,174 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2011 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/stm32f1/rcc.c + * @brief STM32F1 RCC. + */ + +#include +#include +#include + +#include "rcc_private.h" + +#define APB1 RCC_APB1 +#define APB2 RCC_APB2 +#define AHB RCC_AHB + +/* Device descriptor table, maps rcc_clk_id onto bus and enable/reset + * register bit numbers. */ +const struct rcc_dev_info rcc_dev_table[] = { + [RCC_GPIOA] = { .clk_domain = APB2, .line_num = 2 }, + [RCC_GPIOB] = { .clk_domain = APB2, .line_num = 3 }, + [RCC_GPIOC] = { .clk_domain = APB2, .line_num = 4 }, + [RCC_GPIOD] = { .clk_domain = APB2, .line_num = 5 }, + [RCC_AFIO] = { .clk_domain = APB2, .line_num = 0 }, + [RCC_ADC1] = { .clk_domain = APB2, .line_num = 9 }, + [RCC_ADC2] = { .clk_domain = APB2, .line_num = 10 }, + [RCC_ADC3] = { .clk_domain = APB2, .line_num = 15 }, + [RCC_USART1] = { .clk_domain = APB2, .line_num = 14 }, + [RCC_USART2] = { .clk_domain = APB1, .line_num = 17 }, + [RCC_USART3] = { .clk_domain = APB1, .line_num = 18 }, + [RCC_TIMER1] = { .clk_domain = APB2, .line_num = 11 }, + [RCC_TIMER2] = { .clk_domain = APB1, .line_num = 0 }, + [RCC_TIMER3] = { .clk_domain = APB1, .line_num = 1 }, + [RCC_TIMER4] = { .clk_domain = APB1, .line_num = 2 }, + [RCC_SPI1] = { .clk_domain = APB2, .line_num = 12 }, + [RCC_SPI2] = { .clk_domain = APB1, .line_num = 14 }, + [RCC_DMA1] = { .clk_domain = AHB, .line_num = 0 }, + [RCC_PWR] = { .clk_domain = APB1, .line_num = 28}, + [RCC_BKP] = { .clk_domain = APB1, .line_num = 27}, + [RCC_I2C1] = { .clk_domain = APB1, .line_num = 21 }, + [RCC_I2C2] = { .clk_domain = APB1, .line_num = 22 }, + [RCC_CRC] = { .clk_domain = AHB, .line_num = 6}, + [RCC_FLITF] = { .clk_domain = AHB, .line_num = 4}, + [RCC_SRAM] = { .clk_domain = AHB, .line_num = 2}, + [RCC_USB] = { .clk_domain = APB1, .line_num = 23}, +#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) + [RCC_GPIOE] = { .clk_domain = APB2, .line_num = 6 }, + [RCC_GPIOF] = { .clk_domain = APB2, .line_num = 7 }, + [RCC_GPIOG] = { .clk_domain = APB2, .line_num = 8 }, + [RCC_UART4] = { .clk_domain = APB1, .line_num = 19 }, + [RCC_UART5] = { .clk_domain = APB1, .line_num = 20 }, + [RCC_TIMER5] = { .clk_domain = APB1, .line_num = 3 }, + [RCC_TIMER6] = { .clk_domain = APB1, .line_num = 4 }, + [RCC_TIMER7] = { .clk_domain = APB1, .line_num = 5 }, + [RCC_TIMER8] = { .clk_domain = APB2, .line_num = 13 }, + [RCC_FSMC] = { .clk_domain = AHB, .line_num = 8 }, + [RCC_DAC] = { .clk_domain = APB1, .line_num = 29 }, + [RCC_DMA2] = { .clk_domain = AHB, .line_num = 1 }, + [RCC_SDIO] = { .clk_domain = AHB, .line_num = 10 }, + [RCC_SPI3] = { .clk_domain = APB1, .line_num = 15 }, +#endif +#ifdef STM32_XL_DENSITY + [RCC_TIMER9] = { .clk_domain = APB2, .line_num = 19 }, + [RCC_TIMER10] = { .clk_domain = APB2, .line_num = 20 }, + [RCC_TIMER11] = { .clk_domain = APB2, .line_num = 21 }, + [RCC_TIMER12] = { .clk_domain = APB1, .line_num = 6 }, + [RCC_TIMER13] = { .clk_domain = APB1, .line_num = 7 }, + [RCC_TIMER14] = { .clk_domain = APB1, .line_num = 8 }, +#endif + [RCC_CAN] = { .clk_domain = APB1, .line_num = 25 }, //! JMD after X893 +}; + +__deprecated +void rcc_clk_init(rcc_sysclk_src sysclk_src, + rcc_pllsrc pll_src, + rcc_pll_multiplier pll_mul) { + /* Assume that we're going to clock the chip off the PLL, fed by + * the HSE */ + ASSERT(sysclk_src == RCC_CLKSRC_PLL && + pll_src == RCC_PLLSRC_HSE); + + RCC_BASE->CFGR = pll_src | pll_mul | (0x3<<22); + + /* Turn on, and wait for, HSE. */ + rcc_turn_on_clk(RCC_CLK_HSE); + while (!rcc_is_clk_ready(RCC_CLK_HSE)) + ; + + /* Do the same for the main PLL. */ + rcc_turn_on_clk(RCC_CLK_PLL); + while(!rcc_is_clk_ready(RCC_CLK_PLL)) + ; + + /* Finally, switch over to the PLL. */ + rcc_switch_sysclk(RCC_CLKSRC_PLL); +} + +/* pll_cfg->data must point to a valid struct stm32f1_rcc_pll_data. */ +void rcc_configure_pll(rcc_pll_cfg *pll_cfg) { + stm32f1_rcc_pll_data *data = pll_cfg->data; + rcc_pll_multiplier pll_mul = data->pll_mul; + uint32 cfgr; + /* Check that the PLL is disabled. */ + ASSERT_FAULT(!rcc_is_clk_on(RCC_CLK_PLL)); + + cfgr = RCC_BASE->CFGR; + cfgr &= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL); + cfgr |= pll_cfg->pllsrc | pll_mul; + + RCC_BASE->CFGR = cfgr; +} + +void rcc_clk_enable(rcc_clk_id id) { + static __io uint32* enable_regs[] = { + [APB1] = &RCC_BASE->APB1ENR, + [APB2] = &RCC_BASE->APB2ENR, + [AHB] = &RCC_BASE->AHBENR, + }; + rcc_do_clk_enable(enable_regs, id); +} + +void rcc_reset_dev(rcc_clk_id id) { + static __io uint32* reset_regs[] = { + [APB1] = &RCC_BASE->APB1RSTR, + [APB2] = &RCC_BASE->APB2RSTR, + }; + rcc_do_reset_dev(reset_regs, id); +} + +void rcc_set_prescaler(rcc_prescaler prescaler, uint32 divider) { + static const uint32 masks[] = { + [RCC_PRESCALER_AHB] = RCC_CFGR_HPRE, + [RCC_PRESCALER_APB1] = RCC_CFGR_PPRE1, + [RCC_PRESCALER_APB2] = RCC_CFGR_PPRE2, + [RCC_PRESCALER_USB] = RCC_CFGR_USBPRE, + [RCC_PRESCALER_ADC] = RCC_CFGR_ADCPRE, + }; + rcc_do_set_prescaler(masks, prescaler, divider); +} + +void rcc_clk_disable(rcc_clk_id id) { + static __io uint32* enable_regs[] = { + [APB1] = &RCC_BASE->APB1ENR, + [APB2] = &RCC_BASE->APB2ENR, + [AHB] = &RCC_BASE->AHBENR, + }; + rcc_do_clk_disable(enable_regs, id); +} \ No newline at end of file diff --git a/STM32F1/libraries/usb.c b/STM32F1/libraries/usb.c new file mode 100644 index 000000000..f7965351a --- /dev/null +++ b/STM32F1/libraries/usb.c @@ -0,0 +1,402 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/usb/stm32f1/usb.c + * @brief USB support. + * + * This is a mess. + */ + +#include + +#include +#include + +/* Private headers */ +#include "usb_reg_map.h" +#include "usb_lib_globals.h" + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" + +static void dispatch_ctr_lp(void); + +/* + * usb_lib/ globals + */ + +uint16 SaveTState; /* caches TX status for later use */ +uint16 SaveRState; /* caches RX status for later use */ + +/* + * Other state + */ + +typedef enum { + RESUME_EXTERNAL, + RESUME_INTERNAL, + RESUME_LATER, + RESUME_WAIT, + RESUME_START, + RESUME_ON, + RESUME_OFF, + RESUME_ESOF +} RESUME_STATE; + +struct { + volatile RESUME_STATE eState; + volatile uint8 bESOFcnt; +} ResumeS; + +static usblib_dev usblib = { + .irq_mask = USB_ISR_MSK, + .state = USB_UNCONNECTED, + .prevState = USB_UNCONNECTED, + .clk_id = RCC_USB, +}; +usblib_dev *USBLIB = &usblib; + +/* + * Routines + */ + +void usb_init_usblib(usblib_dev *dev, + void (**ep_int_in)(void), + void (**ep_int_out)(void)) { + rcc_clk_enable(dev->clk_id); + + dev->ep_int_in = ep_int_in; + dev->ep_int_out = ep_int_out; + + /* usb_lib/ declares both and then assumes that pFoo points to Foo + * (even though the names don't always match), which is stupid for + * all of the obvious reasons, but whatever. Here we are. */ + pInformation = &Device_Info; + pProperty = &Device_Property; + pUser_Standard_Requests = &User_Standard_Requests; + + pInformation->ControlState = 2; /* FIXME [0.0.12] use + CONTROL_STATE enumerator */ + pProperty->Init(); +} + +static void usb_suspend(void) { + uint16 cntr; + + /* TODO decide if read/modify/write is really what we want + * (e.g. usb_resume_init() reconfigures CNTR). */ + cntr = USB_BASE->CNTR; + cntr |= USB_CNTR_FSUSP; + USB_BASE->CNTR = cntr; + cntr |= USB_CNTR_LP_MODE; + USB_BASE->CNTR = cntr; + + USBLIB->prevState = USBLIB->state; + USBLIB->state = USB_SUSPENDED; +} + +static void usb_resume_init(void) { + uint16 cntr; + + cntr = USB_BASE->CNTR; + cntr &= ~USB_CNTR_LP_MODE; + USB_BASE->CNTR = cntr; + + /* Enable interrupt lines */ + USB_BASE->CNTR = USB_ISR_MSK; +} + +static void usb_resume(RESUME_STATE eResumeSetVal) { + uint16 cntr; + + if (eResumeSetVal != RESUME_ESOF) { + ResumeS.eState = eResumeSetVal; + } + + switch (ResumeS.eState) { + case RESUME_EXTERNAL: + usb_resume_init(); + ResumeS.eState = RESUME_OFF; + USBLIB->state = USBLIB->prevState; + break; + case RESUME_INTERNAL: + usb_resume_init(); + ResumeS.eState = RESUME_START; + break; + case RESUME_LATER: + ResumeS.bESOFcnt = 2; + ResumeS.eState = RESUME_WAIT; + break; + case RESUME_WAIT: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) { + ResumeS.eState = RESUME_START; + } + break; + case RESUME_START: + cntr = USB_BASE->CNTR; + cntr |= USB_CNTR_RESUME; + USB_BASE->CNTR = cntr; + ResumeS.eState = RESUME_ON; + ResumeS.bESOFcnt = 10; + break; + case RESUME_ON: + ResumeS.bESOFcnt--; + if (ResumeS.bESOFcnt == 0) { + cntr = USB_BASE->CNTR; + cntr &= ~USB_CNTR_RESUME; + USB_BASE->CNTR = cntr; + USBLIB->state = USBLIB->prevState; + ResumeS.eState = RESUME_OFF; + } + break; + case RESUME_OFF: + case RESUME_ESOF: + default: + ResumeS.eState = RESUME_OFF; + break; + } +} + +// JMD : default ISRs of CAN, to be overridden if HardwareCAN library is used in sketch +void __attribute__((weak)) USB_HP_CAN_TX_IRQHandler(void) +{ ; } // Dummy ISR + +void __irq_usb_hp_can_tx(void) +{ + USB_HP_CAN_TX_IRQHandler () ; +} + +uint8 __attribute__((weak)) CAN_RX0_IRQ_Handler(void) +{ return 0 ; } // Dummy ISR + +#define SUSPEND_ENABLED 1 +void __irq_usb_lp_can_rx0(void) { + uint16 istr = USB_BASE->ISTR; + + if (CAN_RX0_IRQ_Handler()) //! JMD : Call to CAN ISR, returns 1 CAN is active + return; //! JMD + + /* Use USB_ISR_MSK to only include code for bits we care about. */ + +#if (USB_ISR_MSK & USB_ISTR_RESET) + if (istr & USB_ISTR_RESET & USBLIB->irq_mask) { + USB_BASE->ISTR = ~USB_ISTR_RESET; + pProperty->Reset(); + } +#endif + +#if (USB_ISR_MSK & USB_ISTR_PMAOVR) + if (istr & ISTR_PMAOVR & USBLIB->irq_mask) { + USB_BASE->ISTR = ~USB_ISTR_PMAOVR; + } +#endif + +#if (USB_ISR_MSK & USB_ISTR_ERR) + if (istr & USB_ISTR_ERR & USBLIB->irq_mask) { + USB_BASE->ISTR = ~USB_ISTR_ERR; + } +#endif + +#if (USB_ISR_MSK & USB_ISTR_WKUP) + if (istr & USB_ISTR_WKUP & USBLIB->irq_mask) { + USB_BASE->ISTR = ~(USB_ISTR_WKUP | USB_ISTR_SUSP); + usb_resume(RESUME_EXTERNAL); + } +#endif + +#if (USB_ISR_MSK & USB_ISTR_SUSP) + if (istr & USB_ISTR_SUSP & USBLIB->irq_mask) { + /* check if SUSPEND is possible */ + if (SUSPEND_ENABLED) { + usb_suspend(); + } else { + /* if not possible then resume after xx ms */ + usb_resume(RESUME_LATER); + } + /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ + USB_BASE->ISTR = ~(USB_ISTR_WKUP | USB_ISTR_SUSP); + } +#endif + +#if (USB_ISR_MSK & USB_ISTR_SOF) + if (istr & USB_ISTR_SOF & USBLIB->irq_mask) { + USB_BASE->ISTR = ~USB_ISTR_SOF; + } +#endif + +#if (USB_ISR_MSK & USB_ISTR_ESOF) + if (istr & USB_ISTR_ESOF & USBLIB->irq_mask) { + USB_BASE->ISTR = ~USB_ISTR_ESOF; + /* resume handling timing is made with ESOFs */ + usb_resume(RESUME_ESOF); /* request without change of the machine state */ + } +#endif + + /* + * Service the correct transfer interrupt. + */ + +#if (USB_ISR_MSK & USB_ISTR_CTR) + if (istr & USB_ISTR_CTR & USBLIB->irq_mask) { + dispatch_ctr_lp(); + } +#endif +} + +/* + * Auxiliary routines + */ + +static inline uint8 dispatch_endpt_zero(uint16 istr_dir); +static inline void dispatch_endpt(uint8 ep); +static inline void set_rx_tx_status0(uint16 rx, uint16 tx); + +static void handle_setup0(void); +static void handle_in0(void); +static void handle_out0(void); + +static void dispatch_ctr_lp() { + uint16 istr; + while (((istr = USB_BASE->ISTR) & USB_ISTR_CTR) != 0) { + /* TODO WTF, figure this out: RM0008 says CTR is read-only, + * but ST's firmware claims it's clear-only, and emphasizes + * the importance of clearing it in more than one place. */ + USB_BASE->ISTR = ~USB_ISTR_CTR; + uint8 ep_id = istr & USB_ISTR_EP_ID; + if (ep_id == 0) { + /* TODO figure out why it's OK to break out of the loop + * once we're done serving endpoint zero, but not okay if + * there are multiple nonzero endpoint transfers to + * handle. */ + if (dispatch_endpt_zero(istr & USB_ISTR_DIR)) { + return; + } + } else { + dispatch_endpt(ep_id); + } + } +} + +/* FIXME Dataflow on endpoint 0 RX/TX status is based off of ST's + * code, and is ugly/confusing in its use of SaveRState/SaveTState. + * Fixing this requires filling in handle_in0(), handle_setup0(), + * handle_out0(). */ +static inline uint8 dispatch_endpt_zero(uint16 istr_dir) { + uint32 epr = (uint16)USB_BASE->EP[0]; + + if (!(epr & (USB_EP_CTR_TX | USB_EP_SETUP | USB_EP_CTR_RX))) { + return 0; + } + + /* Cache RX/TX statuses in SaveRState/SaveTState, respectively. + * The various handle_foo0() may clobber these values + * before we reset them at the end of this routine. */ + SaveRState = epr & USB_EP_STAT_RX; + SaveTState = epr & USB_EP_STAT_TX; + + /* Set actual RX/TX statuses to NAK while we're thinking */ + set_rx_tx_status0(USB_EP_STAT_RX_NAK, USB_EP_STAT_TX_NAK); + + if (istr_dir == 0) { + /* ST RM0008: "If DIR bit=0, CTR_TX bit is set in the USB_EPnR + * register related to the interrupting endpoint. The + * interrupting transaction is of IN type (data transmitted by + * the USB peripheral to the host PC)." */ + ASSERT_FAULT(epr & USB_EP_CTR_TX); + usb_clear_ctr_tx(USB_EP0); + handle_in0(); + } else { + /* RM0008: "If DIR bit=1, CTR_RX bit or both CTR_TX/CTR_RX + * are set in the USB_EPnR register related to the + * interrupting endpoint. The interrupting transaction is of + * OUT type (data received by the USB peripheral from the host + * PC) or two pending transactions are waiting to be + * processed." + * + * [mbolivar] Note how the following control flow (which + * replicates ST's) doesn't seem to actually handle both + * interrupts that are ostensibly pending when both CTR_RX and + * CTR_TX are set. + * + * TODO sort this mess out. + */ + if (epr & USB_EP_CTR_TX) { + usb_clear_ctr_tx(USB_EP0); + handle_in0(); + } else { /* SETUP or CTR_RX */ + /* SETUP is held constant while CTR_RX is set, so clear it + * either way */ + usb_clear_ctr_rx(USB_EP0); + if (epr & USB_EP_SETUP) { + handle_setup0(); + } else { /* CTR_RX */ + handle_out0(); + } + } + } + + set_rx_tx_status0(SaveRState, SaveTState); + return 1; +} + +static inline void dispatch_endpt(uint8 ep) { + uint32 epr = USB_BASE->EP[ep]; + /* If ISTR_CTR is set and the ISTR gave us this EP_ID to handle, + * then presumably at least one of CTR_RX and CTR_TX is set, but + * again, ST's control flow allows for the possibility of neither. + * + * TODO try to find out if neither being set is possible. */ + if (epr & USB_EP_CTR_RX) { + usb_clear_ctr_rx(ep); + (USBLIB->ep_int_out[ep - 1])(); + } + if (epr & USB_EP_CTR_TX) { + usb_clear_ctr_tx(ep); + (USBLIB->ep_int_in[ep - 1])(); + } +} + +static inline void set_rx_tx_status0(uint16 rx, uint16 tx) { + usb_set_ep_rx_stat(USB_EP0, rx); + usb_set_ep_tx_stat(USB_EP0, tx); +} + +/* TODO Rip out usb_lib/ dependency from the following functions: */ + +static void handle_setup0(void) { + Setup0_Process(); +} + +static void handle_in0(void) { + In0_Process(); +} + +static void handle_out0(void) { + Out0_Process(); +} From ee3a3056146dd188b0a2e43261cd1fd3d348edbe Mon Sep 17 00:00:00 2001 From: Phonog Date: Mon, 31 Oct 2016 22:33:52 +0100 Subject: [PATCH 002/373] Add files via upload --- STM32F1/cores/maple/libmaple/rcc_f1.c | 1 + 1 file changed, 1 insertion(+) diff --git a/STM32F1/cores/maple/libmaple/rcc_f1.c b/STM32F1/cores/maple/libmaple/rcc_f1.c index f45f670e1..9040a4dc2 100644 --- a/STM32F1/cores/maple/libmaple/rcc_f1.c +++ b/STM32F1/cores/maple/libmaple/rcc_f1.c @@ -93,6 +93,7 @@ const struct rcc_dev_info rcc_dev_table[] = { [RCC_TIMER13] = { .clk_domain = APB1, .line_num = 7 }, [RCC_TIMER14] = { .clk_domain = APB1, .line_num = 8 }, #endif + [RCC_CAN] = { .clk_domain = APB1, .line_num = 25 }, //! JMD after X893 }; __deprecated From 9765b9b36883e8edae546ea96d95597ad0fd0740 Mon Sep 17 00:00:00 2001 From: Phonog Date: Mon, 31 Oct 2016 22:35:35 +0100 Subject: [PATCH 003/373] Add files via upload --- STM32F1/system/libmaple/stm32f1/include/series/rcc.h | 1 + 1 file changed, 1 insertion(+) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/rcc.h b/STM32F1/system/libmaple/stm32f1/include/series/rcc.h index f40dcbaba..aa9f8d3c9 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/rcc.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/rcc.h @@ -439,6 +439,7 @@ typedef enum rcc_clk_id { RCC_UART4, RCC_UART5, RCC_USB, + RCC_CAN, //! JMD after X893 } rcc_clk_id; /** From 9e5911b98f6239245a7dbb2da7dc9667939aebfd Mon Sep 17 00:00:00 2001 From: Phonog Date: Mon, 31 Oct 2016 23:05:27 +0100 Subject: [PATCH 004/373] Add files via upload --- STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c index f837eb64b..f7965351a 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c @@ -183,10 +183,25 @@ static void usb_resume(RESUME_STATE eResumeSetVal) { } } +// JMD : default ISRs of CAN, to be overridden if HardwareCAN library is used in sketch +void __attribute__((weak)) USB_HP_CAN_TX_IRQHandler(void) +{ ; } // Dummy ISR + +void __irq_usb_hp_can_tx(void) +{ + USB_HP_CAN_TX_IRQHandler () ; +} + +uint8 __attribute__((weak)) CAN_RX0_IRQ_Handler(void) +{ return 0 ; } // Dummy ISR + #define SUSPEND_ENABLED 1 void __irq_usb_lp_can_rx0(void) { uint16 istr = USB_BASE->ISTR; + if (CAN_RX0_IRQ_Handler()) //! JMD : Call to CAN ISR, returns 1 CAN is active + return; //! JMD + /* Use USB_ISR_MSK to only include code for bits we care about. */ #if (USB_ISR_MSK & USB_ISTR_RESET) From f245065179976f3c1f265a462a485504598c6f2b Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 9 Dec 2017 20:51:09 +0100 Subject: [PATCH 005/373] Update BluePill-RTClock-test.ino - use build time for RTC - reworked serial monitor output to use sprintf - some fixes + cosmetics --- .../BluePill-RTClock-test.ino | 99 +++++++++++++------ 1 file changed, 67 insertions(+), 32 deletions(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index d49025a1d..bf133c2c1 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -6,7 +6,7 @@ 1. Blink on PC13 per 4s or 7s by attachAlarmInterrupt for 10 times 2. Second counter by attachSecondsInterrpt 3. Serial output on(41s) or off(21s) by creatAlarm - 4. change to your timezone in the sketch; . + 4. change to your timezone in the sketch; 3. get Unix epoch time from https://www.epochconverter.com/ ; 4. last step input the 10 bits number( example: 1503945555) to Serialport ; 5. the clock will be reset to you wanted. @@ -28,10 +28,8 @@ RTClock rtclock (RTCSEL_LSE); // initialise int timezone = 8; // change to your timezone -time_t tt; -time_t tt1; -tm_t mtt = { 47, 9, 13, 3, 11, 22, 30, 30 }; // init time 47+1970 = 2017 Unix epoch Time counted from 00:00:00 1 Jan 1970 -char weekday1[][7] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; // 0,1,2,3,4,5,6 +time_t tt, tt1; +tm_t mtt; uint8_t dateread[11]; int globAlmCount = 0; int lastGlobAlmCount; @@ -42,40 +40,87 @@ int alarmcount = 3; uint8_t AlarmExchange = 0; bool dispflag = true; -#define LED_PIN PC13 - +//----------------------------------------------------------------------------- +const char * weekdays[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; +const char * months[] = {"Dummy", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; +//----------------------------------------------------------------------------- +uint8_t str2month(const char * d) +{ + uint8_t i = 13; + while ( (--i) && strcmp(months[i], d)!=0 ); + return i; +} +//----------------------------------------------------------------------------- +const char * delim = " :"; +char s[128]; // for sprintf +//----------------------------------------------------------------------------- +void ParseBuildTimestamp(tm_t & mt) +{ + // Timestamp format: "Dec 8 2017, 22:57:54" + sprintf(s, "Timestamp: %s, %s\n", __DATE__, __TIME__); + //Serial.print(s); + char * token = strtok(s, delim); // get first token + // walk through tokens + while( token != NULL ) { + if ( (uint8_t m = str2month((const char*)token))>0 ) { + mt.month = m; + //Serial.print(" month: "); Serial.println(mt.month); + token = strtok(NULL, delim); // get next token + mt.day = atoi(token); + //Serial.print(" day: "); Serial.println(mt.day); + token = strtok(NULL, delim); // get next token + mt.year = atoi(token) - 1970; + //Serial.print(" year: "); Serial.println(mt.year); + token = strtok(NULL, delim); // get next token + mt.hour = atoi(token); + //Serial.print(" hour: "); Serial.println(mt.hour); + token = strtok(NULL, delim); // get next token + mt.minute = atoi(token); + //Serial.print(" minute: "); Serial.println(mt.minute); + token = strtok(NULL, delim); // get next token + mt.second = atoi(token); + //Serial.print(" second: "); Serial.println(mt.second); + } + token = strtok(NULL, delim); + } +} +//----------------------------------------------------------------------------- // This function is called in the attachSecondsInterrpt +//----------------------------------------------------------------------------- void SecondCount () { tt++; } +//----------------------------------------------------------------------------- // This function is called in the attachAlarmInterrpt +//----------------------------------------------------------------------------- void blink () { - digitalWrite(LED_PIN, !digitalRead(LED_PIN)); + digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); globAlmCount++; - //tt++; } - +//----------------------------------------------------------------------------- void OnOffSerial () { dispflag = !dispflag; SPECAlmCount++; } - +//----------------------------------------------------------------------------- void setup() { lastGlobAlmCount = ~globAlmCount; lastSPECAlmCount = ~SPECAlmCount; Serial.begin(115200); - pinMode(LED_PIN, OUTPUT); - tt = rtclock.makeTime(mtt); - rtclock.setTime(tt); + pinMode(LED_BUILTIN, OUTPUT); + //while (!Serial); delay(1000); + ParseBuildTimestamp(mtt); // get the Unix epoch Time counted from 00:00:00 1 Jan 1970 + tt = rtclock.makeTime(mtt); + rtclock.setTime(tt+25); // additional seconds to compensate build and upload delay tt1 = tt; rtclock.attachAlarmInterrupt(blink);// Call blink rtclock.attachSecondsInterrupt(SecondCount);// Call SecondCount } - +//----------------------------------------------------------------------------- void loop() { while (Serial.available()) @@ -91,7 +136,7 @@ void loop() rtclock.setTime(rtclock.TimeZone(tt, timezone)); } } - if (lastGlobAlmCount != globAlmCount | lastSPECAlmCount != SPECAlmCount ) { + if (lastGlobAlmCount != globAlmCount || lastSPECAlmCount != SPECAlmCount ) { if (globAlmCount == 10) { // to detachAlarmInterrupt and start creatAlarm after 10 times about 110s rtclock.detachAlarmInterrupt(); globAlmCount = 0; @@ -117,23 +162,13 @@ void loop() } } } - if (tt1 != tt & dispflag == true ) + if (tt1 != tt && dispflag == true ) { tt1 = tt; - //rtclock.breakTime(tt, mtt); - Serial.print("Date: "); - Serial.print(rtclock.day()); - Serial.print("- "); - Serial.print(rtclock.month()); - Serial.print(" "); - Serial.print(rtclock.year() + 1970); - Serial.print(" "); - Serial.print(weekday1[rtclock.weekday()]); - Serial.print(" Time: "); - Serial.print(rtclock.hour()); - Serial.print(" : "); - Serial.print(rtclock.minute()); - Serial.print(" : "); - Serial.println(rtclock.second()); + // get and print actual RTC timestamp + rtclock.breakTime(rtclock.now(), mtt); + sprintf(s, "RTC timestamp: %s %u %u, %s, %02u:%02u:%02u\n", + months[mtt.month], mtt.day, mtt.year+1970, weekdays[mtt.weekday], mtt.hour, mtt.minute, mtt.second); + Serial.print(s); } } From e70309ae78d9c84ffec88a1554c3a0daa015225c Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 9 Dec 2017 20:56:48 +0100 Subject: [PATCH 006/373] Update BluePill-RTClock-test.ino - tabs replaced by spaces for a better visual text alignment --- .../BluePill-RTClock-test.ino | 66 +++++++++---------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index bf133c2c1..87213b75a 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -46,9 +46,9 @@ const char * months[] = {"Dummy", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul //----------------------------------------------------------------------------- uint8_t str2month(const char * d) { - uint8_t i = 13; - while ( (--i) && strcmp(months[i], d)!=0 ); - return i; + uint8_t i = 13; + while ( (--i) && strcmp(months[i], d)!=0 ); + return i; } //----------------------------------------------------------------------------- const char * delim = " :"; @@ -56,33 +56,33 @@ char s[128]; // for sprintf //----------------------------------------------------------------------------- void ParseBuildTimestamp(tm_t & mt) { - // Timestamp format: "Dec 8 2017, 22:57:54" - sprintf(s, "Timestamp: %s, %s\n", __DATE__, __TIME__); - //Serial.print(s); - char * token = strtok(s, delim); // get first token - // walk through tokens - while( token != NULL ) { - if ( (uint8_t m = str2month((const char*)token))>0 ) { - mt.month = m; - //Serial.print(" month: "); Serial.println(mt.month); - token = strtok(NULL, delim); // get next token - mt.day = atoi(token); - //Serial.print(" day: "); Serial.println(mt.day); - token = strtok(NULL, delim); // get next token - mt.year = atoi(token) - 1970; - //Serial.print(" year: "); Serial.println(mt.year); - token = strtok(NULL, delim); // get next token - mt.hour = atoi(token); - //Serial.print(" hour: "); Serial.println(mt.hour); - token = strtok(NULL, delim); // get next token - mt.minute = atoi(token); - //Serial.print(" minute: "); Serial.println(mt.minute); - token = strtok(NULL, delim); // get next token - mt.second = atoi(token); - //Serial.print(" second: "); Serial.println(mt.second); - } - token = strtok(NULL, delim); - } + // Timestamp format: "Dec 8 2017, 22:57:54" + sprintf(s, "Timestamp: %s, %s\n", __DATE__, __TIME__); + //Serial.print(s); + char * token = strtok(s, delim); // get first token + // walk through tokens + while( token != NULL ) { + if ( (uint8_t m = str2month((const char*)token))>0 ) { + mt.month = m; + //Serial.print(" month: "); Serial.println(mt.month); + token = strtok(NULL, delim); // get next token + mt.day = atoi(token); + //Serial.print(" day: "); Serial.println(mt.day); + token = strtok(NULL, delim); // get next token + mt.year = atoi(token) - 1970; + //Serial.print(" year: "); Serial.println(mt.year); + token = strtok(NULL, delim); // get next token + mt.hour = atoi(token); + //Serial.print(" hour: "); Serial.println(mt.hour); + token = strtok(NULL, delim); // get next token + mt.minute = atoi(token); + //Serial.print(" minute: "); Serial.println(mt.minute); + token = strtok(NULL, delim); // get next token + mt.second = atoi(token); + //Serial.print(" second: "); Serial.println(mt.second); + } + token = strtok(NULL, delim); + } } //----------------------------------------------------------------------------- // This function is called in the attachSecondsInterrpt @@ -165,10 +165,10 @@ void loop() if (tt1 != tt && dispflag == true ) { tt1 = tt; - // get and print actual RTC timestamp + // get and print actual RTC timestamp rtclock.breakTime(rtclock.now(), mtt); - sprintf(s, "RTC timestamp: %s %u %u, %s, %02u:%02u:%02u\n", - months[mtt.month], mtt.day, mtt.year+1970, weekdays[mtt.weekday], mtt.hour, mtt.minute, mtt.second); + sprintf(s, "RTC timestamp: %s %u %u, %s, %02u:%02u:%02u\n", + months[mtt.month], mtt.day, mtt.year+1970, weekdays[mtt.weekday], mtt.hour, mtt.minute, mtt.second); Serial.print(s); } } From f8b7a7ab14ae422835849369b19bccc0d8fea25d Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 9 Dec 2017 21:04:07 +0100 Subject: [PATCH 007/373] Update BluePill-RTClock-test.ino make compiler happy --- .../examples/BluePill-RTClock-test/BluePill-RTClock-test.ino | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index 87213b75a..394a130f5 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -62,7 +62,8 @@ void ParseBuildTimestamp(tm_t & mt) char * token = strtok(s, delim); // get first token // walk through tokens while( token != NULL ) { - if ( (uint8_t m = str2month((const char*)token))>0 ) { + uint8_t m = str2month((const char*)token); + if ( m>0 ) { mt.month = m; //Serial.print(" month: "); Serial.println(mt.month); token = strtok(NULL, delim); // get next token From 75f21e3194ebeac17427c066a6b907f6b57099c6 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 9 Dec 2017 21:05:47 +0100 Subject: [PATCH 008/373] Update BluePill-RTClock-test.ino corrected text alignment (again) --- .../examples/BluePill-RTClock-test/BluePill-RTClock-test.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index 394a130f5..697b09445 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -62,8 +62,8 @@ void ParseBuildTimestamp(tm_t & mt) char * token = strtok(s, delim); // get first token // walk through tokens while( token != NULL ) { - uint8_t m = str2month((const char*)token); - if ( m>0 ) { + uint8_t m = str2month((const char*)token); + if ( m>0 ) { mt.month = m; //Serial.print(" month: "); Serial.println(mt.month); token = strtok(NULL, delim); // get next token From f21895e48d0cedbf7645df7fdd42726921795f54 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sun, 10 Dec 2017 02:07:29 +0100 Subject: [PATCH 009/373] Update BluePill-RTClock-test.ino - corrected typo in comments - reworked serial date input --- .../BluePill-RTClock-test.ino | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index 697b09445..5f7b8470b 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -4,7 +4,7 @@ based on https://github.com/rogerclarkmelbourne/Arduino_STM32 1. Blink on PC13 per 4s or 7s by attachAlarmInterrupt for 10 times - 2. Second counter by attachSecondsInterrpt + 2. Second counter by attachSecondsInterrupt 3. Serial output on(41s) or off(21s) by creatAlarm 4. change to your timezone in the sketch; 3. get Unix epoch time from https://www.epochconverter.com/ ; @@ -35,7 +35,6 @@ int globAlmCount = 0; int lastGlobAlmCount; int SPECAlmCount = 0; int lastSPECAlmCount; -int i = 0; int alarmcount = 3; uint8_t AlarmExchange = 0; bool dispflag = true; @@ -86,14 +85,14 @@ void ParseBuildTimestamp(tm_t & mt) } } //----------------------------------------------------------------------------- -// This function is called in the attachSecondsInterrpt +// This function is called in the attachSecondsInterrupt //----------------------------------------------------------------------------- void SecondCount () { tt++; } //----------------------------------------------------------------------------- -// This function is called in the attachAlarmInterrpt +// This function is called in the attachAlarmInterrupt //----------------------------------------------------------------------------- void blink () { @@ -115,8 +114,8 @@ void setup() pinMode(LED_BUILTIN, OUTPUT); //while (!Serial); delay(1000); ParseBuildTimestamp(mtt); // get the Unix epoch Time counted from 00:00:00 1 Jan 1970 - tt = rtclock.makeTime(mtt); - rtclock.setTime(tt+25); // additional seconds to compensate build and upload delay + tt = rtclock.makeTime(mtt) + 25; // additional seconds to compensate build and upload delay + rtclock.setTime(tt); tt1 = tt; rtclock.attachAlarmInterrupt(blink);// Call blink rtclock.attachSecondsInterrupt(SecondCount);// Call SecondCount @@ -124,18 +123,13 @@ void setup() //----------------------------------------------------------------------------- void loop() { - while (Serial.available()) - { dateread[i] = Serial.read(); - if (i < 11) { - i++; - } - else { - i = 0; - tt = (dateread[0] - '0') * 1000000000 + (dateread[1] - '0') * 100000000 + (dateread[2] - '0') * 10000000 + (dateread[3] - '0') * 1000000 + (dateread[4] - '0') * 100000; - tt += (dateread[5] - '0') * 10000 + (dateread[6] - '0') * 1000 + (dateread[7] - '0') * 100 + (dateread[8] - '0') * 10 + (dateread[9] - '0'); - rtclock.TimeZone(tt, timezone); //adjust to your local date - rtclock.setTime(rtclock.TimeZone(tt, timezone)); + if ( Serial.available()>10 ) { + for (uint8_t i = 0; i<11; i++) { + dateread[i] = Serial.read(); } + Serial.flush(); + tt = atol((char*)dateread); + rtclock.setTime(rtclock.TimeZone(tt, timezone)); //adjust to your local date } if (lastGlobAlmCount != globAlmCount || lastSPECAlmCount != SPECAlmCount ) { if (globAlmCount == 10) { // to detachAlarmInterrupt and start creatAlarm after 10 times about 110s From 000b6ffcd93ebb9a0fe9a745c3d2bf8b124adfc5 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sun, 10 Dec 2017 02:17:58 +0100 Subject: [PATCH 010/373] Update BluePill-RTClock-test.ino - small alignment fix. --- .../examples/BluePill-RTClock-test/BluePill-RTClock-test.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index 5f7b8470b..d5789db4c 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -163,7 +163,7 @@ void loop() // get and print actual RTC timestamp rtclock.breakTime(rtclock.now(), mtt); sprintf(s, "RTC timestamp: %s %u %u, %s, %02u:%02u:%02u\n", - months[mtt.month], mtt.day, mtt.year+1970, weekdays[mtt.weekday], mtt.hour, mtt.minute, mtt.second); + months[mtt.month], mtt.day, mtt.year+1970, weekdays[mtt.weekday], mtt.hour, mtt.minute, mtt.second); Serial.print(s); } } From 3f7db854e4072c98fe435126e49f52e62e816256 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Mon, 11 Dec 2017 09:03:19 +1100 Subject: [PATCH 011/373] Moved atomic.h for better AVR compatibity --- STM32F1/system/libmaple/include/{libmaple => util}/atomic.h | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename STM32F1/system/libmaple/include/{libmaple => util}/atomic.h (100%) diff --git a/STM32F1/system/libmaple/include/libmaple/atomic.h b/STM32F1/system/libmaple/include/util/atomic.h similarity index 100% rename from STM32F1/system/libmaple/include/libmaple/atomic.h rename to STM32F1/system/libmaple/include/util/atomic.h From 63f4162c6cbc23b5467ce7ced2bcf5d2bf0bf385 Mon Sep 17 00:00:00 2001 From: Thomas Friedrichsmeier Date: Tue, 12 Dec 2017 10:58:22 +0100 Subject: [PATCH 012/373] Fix compilation with -std=gnu++11 See https://github.com/rogerclarkmelbourne/Arduino_STM32/issues/402 --- STM32F1/libraries/STM32ADC/src/STM32ADC.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/STM32ADC/src/STM32ADC.h b/STM32F1/libraries/STM32ADC/src/STM32ADC.h index fd0588f5e..685eeb1d7 100644 --- a/STM32F1/libraries/STM32ADC/src/STM32ADC.h +++ b/STM32F1/libraries/STM32ADC/src/STM32ADC.h @@ -152,7 +152,7 @@ class STM32ADC{ voidFuncPtr _DMA_int; voidFuncPtr _ADC_int; voidFuncPtr _AWD_int; - static const float _AverageSlope = 4.3; // mV/oC //4.0 to 4.6 - static const float _V25 = 1.43; //Volts //1.34 - 1.52 + static constexpr float _AverageSlope = 4.3; // mV/oC //4.0 to 4.6 + static constexpr float _V25 = 1.43; //Volts //1.34 - 1.52 }; From 951d0acf178b28d52919fb777874d90603c88883 Mon Sep 17 00:00:00 2001 From: victorpv Date: Sat, 16 Dec 2017 17:25:57 -0600 Subject: [PATCH 013/373] Adding PB2 as in the Generic R and Z versions. --- STM32F1/variants/generic_stm32f103v/board.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/variants/generic_stm32f103v/board.cpp b/STM32F1/variants/generic_stm32f103v/board.cpp index 9c137725a..c24140e1e 100644 --- a/STM32F1/variants/generic_stm32f103v/board.cpp +++ b/STM32F1/variants/generic_stm32f103v/board.cpp @@ -98,7 +98,7 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ - /* NOTE PB2 is not included as its Boot 1 */ + {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ //JTDO, SPI3_SCK / I2S3_CK/ {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ //NJTRST, SPI3_MISO {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ //I2C1_SMBA/ SPI3_MOSI @@ -196,4 +196,4 @@ extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = { DEFINE_HWSERIAL(Serial2, 3); DEFINE_HWSERIAL_UART(Serial3, 4); DEFINE_HWSERIAL_UART(Serial4, 5); -#endif \ No newline at end of file +#endif From e64dbc2d473a671f59f87655249247e34d026ef8 Mon Sep 17 00:00:00 2001 From: victorpv Date: Sat, 16 Dec 2017 17:28:00 -0600 Subject: [PATCH 014/373] Add PB2 to enums as in the R and Z Generic boards Can be used for output --- STM32F1/variants/generic_stm32f103v/board/board.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/variants/generic_stm32f103v/board/board.h b/STM32F1/variants/generic_stm32f103v/board/board.h index 3bb680a78..ccd5ecf84 100644 --- a/STM32F1/variants/generic_stm32f103v/board/board.h +++ b/STM32F1/variants/generic_stm32f103v/board/board.h @@ -124,10 +124,10 @@ * write code using low-level GPIO functionality. */ enum { PA0,PA1,PA2,PA3,PA4,PA5,PA6,PA7,PA8,PA9,PA10,PA11,PA12,PA13,PA14,PA15, -PB0,PB1,PB3,PB4,PB5,PB6,PB7,PB8,PB9,PB10,PB11,PB12,PB13,PB14,PB15, +PB0,PB1,PB2,PB3,PB4,PB5,PB6,PB7,PB8,PB9,PB10,PB11,PB12,PB13,PB14,PB15, PC0,PC1,PC2,PC3,PC4,PC5,PC6,PC7,PC8,PC9,PC10,PC11,PC12,PC13,PC14,PC15, PD0,PD1,PD2,PD3,PD4,PD5,PD6,PD7,PD8,PD9,PD10,PD11,PD12,PD13,PD14,PD15, PE0,PE1,PE2,PE3,PE4,PE5,PE6,PE7,PE8,PE9,PE10,PE11,PE12,PE13,PE14,PE15, -};/* Note PB2 is skipped as this is Boot1 and is not going to be much use as its likely to be pulled permanently low */ +}; #endif From 09812b48630ff59613cbe1e813b0766f08394296 Mon Sep 17 00:00:00 2001 From: victorpv Date: Sun, 17 Dec 2017 15:20:07 -0600 Subject: [PATCH 015/373] Add comment to PB2 pin about boot1 function. --- STM32F1/variants/generic_stm32f103v/board.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/variants/generic_stm32f103v/board.cpp b/STM32F1/variants/generic_stm32f103v/board.cpp index c24140e1e..d5596a2b5 100644 --- a/STM32F1/variants/generic_stm32f103v/board.cpp +++ b/STM32F1/variants/generic_stm32f103v/board.cpp @@ -98,7 +98,7 @@ extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ - {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ + {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ // Boot1 pin. It affects boot mode (flash, RAM, ROM) {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ //JTDO, SPI3_SCK / I2S3_CK/ {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ //NJTRST, SPI3_MISO {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ //I2C1_SMBA/ SPI3_MOSI From 066dacf797c4ab42d99b9cb9ea1468ed6e6118f4 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Fri, 29 Dec 2017 08:58:57 +0100 Subject: [PATCH 016/373] Update wirish_debug.cpp reserve SWD lines only for debug --- STM32F1/cores/maple/stm32f1/wirish_debug.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/stm32f1/wirish_debug.cpp b/STM32F1/cores/maple/stm32f1/wirish_debug.cpp index f0576165e..8f6cc98ee 100644 --- a/STM32F1/cores/maple/stm32f1/wirish_debug.cpp +++ b/STM32F1/cores/maple/stm32f1/wirish_debug.cpp @@ -37,5 +37,5 @@ void disableDebugPorts(void) { } void enableDebugPorts(void) { - afio_cfg_debug_ports(AFIO_DEBUG_FULL_SWJ); + afio_cfg_debug_ports(AFIO_DEBUG_SW_ONLY); } From 63f784ff6f4823d754c0f270ce55a17931456079 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Tue, 2 Jan 2018 16:19:31 +0100 Subject: [PATCH 017/373] Update HW_STM32.h remove static directive --- STM32F1/libraries/OLED_I2C/hardware/arm/HW_STM32.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/OLED_I2C/hardware/arm/HW_STM32.h b/STM32F1/libraries/OLED_I2C/hardware/arm/HW_STM32.h index a892c43c7..20c1a16e5 100644 --- a/STM32F1/libraries/OLED_I2C/hardware/arm/HW_STM32.h +++ b/STM32F1/libraries/OLED_I2C/hardware/arm/HW_STM32.h @@ -109,7 +109,7 @@ void OLED::update() twi->TWI_THR = scrbuf[b]; while ((twi->TWI_SR & TWI_SR_TXRDY) != TWI_SR_TXRDY) {}; */ - static byte aa=scrbuf[b]; + byte aa=scrbuf[b]; WIRE_WRITE(aa); } From ac9237248f23ce6ca9e24abefe9bd368197f5e74 Mon Sep 17 00:00:00 2001 From: "Frederic.Pillon" Date: Tue, 9 Jan 2018 09:18:36 +0100 Subject: [PATCH 018/373] Replace {build.path}/{archive_file} by {archive_file_path} See https://github.com/arduino/Arduino/issues/6757#issuecomment-331861565 From @facchinm: Replacing {build.path}/{archive_file} with archive_file_path should remove the arduino_build_xxxxxx/.. part and make the path a bit shorter. Issue also raised here using BP: http://stm32duino.com/viewtopic.php?f=3&t=3070 Signed-off-by: Frederic.Pillon --- STM32F1/platform.txt | 4 ++-- STM32F3/platform.txt | 6 +++--- STM32F4/platform.txt | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index de1f206dc..b52e7dfb9 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -87,7 +87,7 @@ recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mcpu={b recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" ## Combine gc-sections, archives, and objects -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.path}/{archive_file}" -Wl,--end-group +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{archive_file_path}" -Wl,--end-group ## Create eeprom recipe.objcopy.eep.pattern= @@ -160,4 +160,4 @@ tools.jlink_upload.path.linux={runtime.hardware.path}/tools/linux tools.jlink_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.jlink_upload.upload.params.verbose=-d tools.jlink_upload.upload.params.quiet=n -tools.jlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" \ No newline at end of file +tools.jlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" diff --git a/STM32F3/platform.txt b/STM32F3/platform.txt index 94f787c81..60d40428c 100644 --- a/STM32F3/platform.txt +++ b/STM32F3/platform.txt @@ -79,10 +79,10 @@ recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mcpu={b recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" ## Combine gc-sections, archives, and objects -##recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group +##recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{archive_file_path}" -Wl,--end-group #-Wl,--entry=__start__ -#recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} -Wl,--whole-archive "{build.path}/{archive_file}" -Wl,--no-whole-archive -Wl,--end-group +#recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.variant.path}/{build.variant_system_lib}" "{archive_file_path}" -Wl,--end-group +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} -Wl,--whole-archive "{archive_file_path}" -Wl,--no-whole-archive -Wl,--end-group ## Create eeprom recipe.objcopy.eep.pattern= diff --git a/STM32F4/platform.txt b/STM32F4/platform.txt index d115210cc..3c3e833bd 100755 --- a/STM32F4/platform.txt +++ b/STM32F4/platform.txt @@ -76,10 +76,10 @@ recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mcpu={b recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" ## Combine gc-sections, archives, and objects -##recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group +##recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{archive_file_path}" -Wl,--end-group #-Wl,--entry=__start__ -#recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.variant.path}/{build.variant_system_lib}" "{build.path}/{archive_file}" -Wl,--end-group -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} -Wl,--whole-archive "{build.path}/{archive_file}" -Wl,--no-whole-archive -Wl,--end-group +#recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.variant.path}/{build.variant_system_lib}" "{archive_file_path}" -Wl,--end-group +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} -Wl,--whole-archive "{archive_file_path}" -Wl,--no-whole-archive -Wl,--end-group ## Create eeprom recipe.objcopy.eep.pattern= From 8540c6b08b20a5cd36964c6d1668269edbd2b5c5 Mon Sep 17 00:00:00 2001 From: BlackBrix-Editor <35255671+BlackBrix-Editor@users.noreply.github.com> Date: Tue, 9 Jan 2018 11:23:16 +0100 Subject: [PATCH 019/373] option XTAL16M for boards with 16MHz-crystal tested on STM32F103VE only but surely can be used on other STM32F103xC, STM32F103xD, STM32F103xE with the same clock PLL structure --- STM32F1/variants/generic_stm32f103v/wirish/boards.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp index 254666f68..ddeaa57e8 100644 --- a/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp @@ -130,6 +130,12 @@ static void setup_clocks(void) { wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); +#ifdef XTAL16M + // 16MHz crystal (HSE) + // in this case we additionally set the Bit 17 (PLLXTPRE=1) => then HSE clock is divided by 2 before PLL entry + RCC_BASE->CFGR |= RCC_CFGR_PLLXTPRE; +#endif + // Enable the PLL, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_PLL); while(!rcc_is_clk_ready(RCC_CLK_PLL)) From d54de1cbb011fb2f4273a365340b2b3a29f23b6e Mon Sep 17 00:00:00 2001 From: BlackBrix-Editor <35255671+BlackBrix-Editor@users.noreply.github.com> Date: Tue, 9 Jan 2018 12:21:48 +0100 Subject: [PATCH 020/373] corrected RAM-length = 48kByte for STM32F103VC --- STM32F1/variants/generic_stm32f103v/ld/stm32f103vc.ld | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/variants/generic_stm32f103v/ld/stm32f103vc.ld b/STM32F1/variants/generic_stm32f103v/ld/stm32f103vc.ld index 7efca5d77..6079807f5 100644 --- a/STM32F1/variants/generic_stm32f103v/ld/stm32f103vc.ld +++ b/STM32F1/variants/generic_stm32f103v/ld/stm32f103vc.ld @@ -16,7 +16,7 @@ */ MEMORY { - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 48K rom (rx) : ORIGIN = 0x08000000, LENGTH = 256K } From 514cf856aae4e0f391c318d7677b53b4b04270a2 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Thu, 18 Jan 2018 11:39:03 +0100 Subject: [PATCH 021/373] Update boards.txt added error LED pin for generic F103C --- STM32F1/boards.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index 49c12932a..cb9416a9c 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -346,6 +346,8 @@ genericSTM32F103C.build.variant=generic_stm32f103c genericSTM32F103C.build.vect=VECT_TAB_ADDR=0x8000000 genericSTM32F103C.build.core=maple genericSTM32F103C.build.board=GENERIC_STM32F103C +genericSTM32F103C.build.error_led_port=GPIOC +genericSTM32F103C.build.error_led_pin=13 genericSTM32F103C.upload.use_1200bps_touch=false genericSTM32F103C.upload.file_type=bin genericSTM32F103C.upload.auto_reset=true From 9cd2f3a74366835930c4f3ba94193fc9db42ad10 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 21 Jan 2018 15:34:24 +1100 Subject: [PATCH 022/373] Manually committed changes from https://github.com/rogerclarkmelbourne/Arduino_STM32/pull/401, as that PR included changes to permissions on unrelated files in the tools --- STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c | 8 ++++++++ STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c | 9 +++++++-- STM32F1/system/libmaple/include/libmaple/usb.h | 2 ++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c index f837eb64b..0feb745eb 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c @@ -120,6 +120,12 @@ static void usb_suspend(void) { USBLIB->state = USB_SUSPENDED; } +void usb_power_off(void) { + USB_BASE->CNTR = USB_CNTR_FRES; + USB_BASE->ISTR = 0; + USB_BASE->CNTR = USB_CNTR_FRES + USB_CNTR_PDWN; +} + static void usb_resume_init(void) { uint16 cntr; @@ -268,6 +274,7 @@ static void handle_out0(void); static void dispatch_ctr_lp() { uint16 istr; + while (((istr = USB_BASE->ISTR) & USB_ISTR_CTR) != 0) { /* TODO WTF, figure this out: RM0008 says CTR is read-only, * but ST's firmware claims it's clear-only, and emphasizes @@ -288,6 +295,7 @@ static void dispatch_ctr_lp() { } } + /* FIXME Dataflow on endpoint 0 RX/TX status is based off of ST's * code, and is ugly/confusing in its use of SaveRState/SaveTState. * Fixing this requires filling in handle_in0(), handle_setup0(), diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c index cba050f54..1f0b626a8 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c @@ -80,7 +80,6 @@ static uint8* usbGetConfigDescriptor(uint16 length); static uint8* usbGetStringDescriptor(uint16 length); static void usbSetConfiguration(void); static void usbSetDeviceAddress(void); - /* * Descriptors */ @@ -392,6 +391,8 @@ void usb_cdcacm_enable(gpio_dev *disc_dev, uint8 disc_bit) { } /* Initialize the USB peripheral. */ + /* One of the callbacks that will automatically happen from this will be to usbInit(), + which will power up the USB peripheral. */ usb_init_usblib(USBLIB, ep_int_in, ep_int_out); } @@ -403,6 +404,9 @@ void usb_cdcacm_disable(gpio_dev *disc_dev, uint8 disc_bit) { { gpio_write_bit(disc_dev, disc_bit, 1); } + /* Powerdown the USB peripheral. It gets powered up again with usbInit(), which + gets called when usb_cdcacm_enable() is called. */ + usb_power_off(); } void usb_cdcacm_putc(char ch) { @@ -644,7 +648,8 @@ static uint8* vcomGetSetLineCoding(uint16 length) { static void usbInit(void) { pInformation->Current_Configuration = 0; - USB_BASE->CNTR = USB_CNTR_FRES; + // Reset and power up the peripheral. + USB_BASE->CNTR = USB_CNTR_FRES; USBLIB->irq_mask = 0; USB_BASE->CNTR = USBLIB->irq_mask; diff --git a/STM32F1/system/libmaple/include/libmaple/usb.h b/STM32F1/system/libmaple/include/libmaple/usb.h index ea24030d4..1ea06e9de 100644 --- a/STM32F1/system/libmaple/include/libmaple/usb.h +++ b/STM32F1/system/libmaple/include/libmaple/usb.h @@ -157,6 +157,8 @@ typedef struct usblib_dev { extern usblib_dev *USBLIB; +void usb_power_off(void); + void usb_init_usblib(usblib_dev *dev, void (**ep_int_in)(void), void (**ep_int_out)(void)); From 0f78c266ed2c571e9e48e4236b3721c88752f4db Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Thu, 14 Dec 2017 16:32:59 +0100 Subject: [PATCH 023/373] Added Wire_slave.h (no actual i2c slave implementation yet) --- STM32F1/libraries/Wire/Wire_slave.h | 1 + STM32F1/libraries/Wire/library.properties | 10 + .../SFRRanger_reader/SFRRanger_reader.ino | 87 ++ .../digital_potentiometer.ino | 38 + .../i2c_libmaple_slave/i2c_libmaple_slave.ino | 122 +++ .../examples/master_reader/master_reader.ino | 32 + .../examples/master_writer/master_writer.ino | 31 + .../slave_receiver/slave_receiver.ino | 38 + .../examples/slave_sender/slave_sender.ino | 32 + .../libraries/WireSlave/library.properties | 11 + STM32F1/libraries/WireSlave/src/Wire.h | 1 + STM32F1/libraries/WireSlave/src/Wire.h.gch | Bin 0 -> 1819056 bytes .../libraries/WireSlave/src/Wire_slave.cpp | 106 +++ STM32F1/libraries/WireSlave/src/Wire_slave.h | 78 ++ .../libraries/WireSlave/src/Wire_slave.h.gch | Bin 0 -> 9475 bytes STM32F1/libraries/WireSlave/src/i2c_slave.c | 789 ++++++++++++++++++ .../libraries/WireSlave/src/i2c_slave.h.gch | Bin 0 -> 9475 bytes .../WireSlave/src/libmaple/i2c_common_slave.h | 110 +++ .../WireSlave/src/libmaple/i2c_slave.h | 475 +++++++++++ .../WireSlave/src/libmaple/i2c_slave.h.gch | Bin 0 -> 9475 bytes .../WireSlave/src/utility/WireBase_slave.cpp | 145 ++++ .../WireSlave/src/utility/WireBase_slave.h | 145 ++++ .../src/utility/WireBase_slave.h.gch | Bin 0 -> 9475 bytes 23 files changed, 2251 insertions(+) create mode 100644 STM32F1/libraries/Wire/Wire_slave.h create mode 100644 STM32F1/libraries/Wire/library.properties create mode 100644 STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino create mode 100644 STM32F1/libraries/WireSlave/examples/digital_potentiometer/digital_potentiometer.ino create mode 100644 STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino create mode 100644 STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino create mode 100644 STM32F1/libraries/WireSlave/examples/master_writer/master_writer.ino create mode 100644 STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino create mode 100644 STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino create mode 100644 STM32F1/libraries/WireSlave/library.properties create mode 100644 STM32F1/libraries/WireSlave/src/Wire.h create mode 100644 STM32F1/libraries/WireSlave/src/Wire.h.gch create mode 100644 STM32F1/libraries/WireSlave/src/Wire_slave.cpp create mode 100644 STM32F1/libraries/WireSlave/src/Wire_slave.h create mode 100644 STM32F1/libraries/WireSlave/src/Wire_slave.h.gch create mode 100644 STM32F1/libraries/WireSlave/src/i2c_slave.c create mode 100644 STM32F1/libraries/WireSlave/src/i2c_slave.h.gch create mode 100644 STM32F1/libraries/WireSlave/src/libmaple/i2c_common_slave.h create mode 100644 STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h create mode 100644 STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h.gch create mode 100644 STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp create mode 100644 STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h create mode 100644 STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h.gch diff --git a/STM32F1/libraries/Wire/Wire_slave.h b/STM32F1/libraries/Wire/Wire_slave.h new file mode 100644 index 000000000..21b4102bd --- /dev/null +++ b/STM32F1/libraries/Wire/Wire_slave.h @@ -0,0 +1 @@ +#error "Something is trying to include Wire.h when Wire_Slave.h is already included, they are mutually exclusive" diff --git a/STM32F1/libraries/Wire/library.properties b/STM32F1/libraries/Wire/library.properties new file mode 100644 index 000000000..1129fa3fb --- /dev/null +++ b/STM32F1/libraries/Wire/library.properties @@ -0,0 +1,10 @@ +name=Wire +version=1.0 +author=Arduino +maintainer=Arduino +sentence=Allows the communication between devices or sensors connected via Two Wire Interface Bus. +paragraph= +category=Communication +url=http://www.arduino.cc/en/Reference/Wire +architectures=STM32F1 +include=Wire.h diff --git a/STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino b/STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino new file mode 100644 index 000000000..5537eca56 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino @@ -0,0 +1,87 @@ +// I2C SRF10 or SRF08 Devantech Ultrasonic Ranger Finder +// by Nicholas Zambetti +// and James Tichenor + +// Demonstrates use of the Wire library reading data from the +// Devantech Utrasonic Rangers SFR08 and SFR10 + +// Created 29 April 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial communication at 9600bps +} + +int reading = 0; + +void loop() +{ + // step 1: instruct sensor to read echoes + Wire.beginTransmission(112); // transmit to device #112 (0x70) + // the address specified in the datasheet is 224 (0xE0) + // but i2c adressing uses the high 7 bits so it's 112 + Wire.write(byte(0x00)); // sets register pointer to the command register (0x00) + Wire.write(byte(0x50)); // command sensor to measure in "inches" (0x50) + // use 0x51 for centimeters + // use 0x52 for ping microseconds + Wire.endTransmission(); // stop transmitting + + // step 2: wait for readings to happen + delay(70); // datasheet suggests at least 65 milliseconds + + // step 3: instruct sensor to return a particular echo reading + Wire.beginTransmission(112); // transmit to device #112 + Wire.write(byte(0x02)); // sets register pointer to echo #1 register (0x02) + Wire.endTransmission(); // stop transmitting + + // step 4: request reading from sensor + Wire.requestFrom(112, 2); // request 2 bytes from slave device #112 + + // step 5: receive reading from sensor + if(2 <= Wire.available()) // if two bytes were received + { + reading = Wire.read(); // receive high byte (overwrites previous reading) + reading = reading << 8; // shift high byte to be high 8 bits + reading |= Wire.read(); // receive low byte as lower 8 bits + Serial.println(reading); // print the reading + } + + delay(250); // wait a bit since people have to read the output :) +} + + +/* + +// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08) +// usage: changeAddress(0x70, 0xE6); + +void changeAddress(byte oldAddress, byte newAddress) +{ + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA0)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xAA)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(byte(0xA5)); + Wire.endTransmission(); + + Wire.beginTransmission(oldAddress); + Wire.write(byte(0x00)); + Wire.write(newAddress); + Wire.endTransmission(); +} + +*/ diff --git a/STM32F1/libraries/WireSlave/examples/digital_potentiometer/digital_potentiometer.ino b/STM32F1/libraries/WireSlave/examples/digital_potentiometer/digital_potentiometer.ino new file mode 100644 index 000000000..8830ada12 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/digital_potentiometer/digital_potentiometer.ino @@ -0,0 +1,38 @@ +// I2C Digital Potentiometer +// by Nicholas Zambetti +// and Shawn Bonkowski + +// Demonstrates use of the Wire library +// Controls AD5171 digital potentiometer via I2C/TWI + +// Created 31 March 2006 + +// This example code is in the public domain. + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte val = 0; + +void loop() +{ + Wire.beginTransmission(44); // transmit to device #44 (0x2c) + // device address is specified in datasheet + Wire.write(byte(0x00)); // sends instruction byte + Wire.write(val); // sends potentiometer value byte + Wire.endTransmission(); // stop transmitting + + val++; // increment value + if(val == 64) // if reached 64th position (max) + { + val = 0; // start over from lowest value + } + delay(500); +} diff --git a/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino new file mode 100644 index 000000000..23456e40a --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino @@ -0,0 +1,122 @@ +/* +* i2c_slave example.cpp +* +* You can use this sketch in combination with master_writer.pde +* +* Created on: 4 Sep 2012 +* Author: Barry Carter +*/ +#include +#include + +#define USE_BUFFERED_EXAMPLE 1 + +i2c_msg msg; +uint8 buffer[255]; +char* const bufferAsChar = (char*)buffer; // ready type casted alias + +volatile bool newMessage = false; + +void funcrx(i2c_msg *msg __attribute__((unused))){ + // Received length will be in msg->length + newMessage = true; +} + +#if USE_BUFFERED_EXAMPLE == 1 +/* We ARE using a buffer to transmit the data out. +* Make sure you fill the buffer with the data AND you set the length correctly +*/ +void functx(i2c_msg *msg){ + // Cheeky. We are using the received byte of the data which is currently in + // byte 0 to echo it back to the master device + //msg->data[0] = 0x01; // We are re-using the rx buffer here to echo the request back + msg->data[1] = 0x02; + msg->data[2] = 0x03; + msg->data[3] = 0x04; + msg->data[4] = 0x05; + msg->length = 5; +} + +#else + +/* We are NOT using the buffered data transmission +* We will get this callback for each outgoing packet. Make sure to call i2c_write +* Strickly speaking, we should be sending a NACk on the last byte we want to send +* but for this test example I am going to assume the master will NACK it when it +* wants to stop. +*/ +void functx(i2c_msg *msg){ + i2c_write(I2C1, msg->data[0]); +} + +#endif + +// #define Serial Serial1 + +void setup() { + Serial.begin(115200); + while(!Serial) + ; + Serial.println("I2C Slave example"); + + // attach the buffer + msg.data = buffer; + + /* Init slave mode. Enables master too + * We are going to configure the slave device to + * - enable fast I2C (400khz) + * - dual addresses (can have 2 addresses per module) + * general call (accepts data writes to 0x00 on a broadcast basis) + * + * If the buffered example is enabled, then we also enable the + * buffer for rx and tx. + * Note you can independently enable/disable RX and TX buffers to + * allow a buffered read and direct writes. Useful if you don't know how + * much the master will read. + */ + #if USE_BUFFERED_EXAMPLE == 1 + i2c_slave_enable(I2C1, I2C_FAST_MODE | I2C_SLAVE_DUAL_ADDRESS | I2C_SLAVE_GENERAL_CALL | I2C_SLAVE_USE_RX_BUFFER | I2C_SLAVE_USE_TX_BUFFER); + #else + i2c_slave_enable(I2C1, I2C_FAST_MODE | I2C_SLAVE_DUAL_ADDRESS | I2C_SLAVE_GENERAL_CALL); + #endif + + // attach receive handler + i2c_slave_attach_recv_handler(I2C1, &msg, funcrx); + // attach transmit handler + i2c_slave_attach_transmit_handler(I2C1, &msg, functx); + + // set addresss to 4 + i2c_slave_set_own_address(I2C1, 4); +} + +void loop() { + static uint32_t lastMessage = millis(); + + // This is potentially dangerous. + // We're reading from the live buffer, the content can change + // in the middle of Serial.println + + if (newMessage && strlen(bufferAsChar)==6) { + for (int i=0; i<5; i++) { + // Print as char + Serial.print(bufferAsChar[i]); + } + // Print as byte + Serial.println(buffer[5]); + lastMessage = millis(); + newMessage = false; + } else { + if(newMessage && strlen(bufferAsChar)!=6) { + // this also happends on the line "x is 0" + Serial.print("Bad data received:"); + Serial.println(bufferAsChar); + Serial.print("strlen:"); + Serial.println(strlen(bufferAsChar)); + newMessage = false; + } else + if(millis() - lastMessage > 3000){ + Serial.println("Nothing received in 3 seconds."); + lastMessage = millis(); + } + } +} diff --git a/STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino b/STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino new file mode 100644 index 000000000..4b45d1289 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino @@ -0,0 +1,32 @@ +// Wire Master Reader +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Reads data from an I2C/TWI slave device +// Refer to the "Wire Slave Sender" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) + Serial.begin(9600); // start serial for output +} + +void loop() +{ + Wire.requestFrom(2, 6); // request 6 bytes from slave device #2 + + while(Wire.available()) // slave may send less than requested + { + char c = Wire.read(); // receive a byte as character + Serial.print(c); // print the character + } + + delay(500); +} diff --git a/STM32F1/libraries/WireSlave/examples/master_writer/master_writer.ino b/STM32F1/libraries/WireSlave/examples/master_writer/master_writer.ino new file mode 100644 index 000000000..f997473a7 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/master_writer/master_writer.ino @@ -0,0 +1,31 @@ +// Wire Master Writer +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Writes data to an I2C/TWI slave device +// Refer to the "Wire Slave Receiver" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(); // join i2c bus (address optional for master) +} + +byte x = 0; + +void loop() +{ + Wire.beginTransmission(4); // transmit to device #4 + Wire.write("x is "); // sends five bytes + Wire.write(x); // sends one byte + Wire.endTransmission(); // stop transmitting + + x++; + delay(500); +} diff --git a/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino b/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino new file mode 100644 index 000000000..b430c2539 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino @@ -0,0 +1,38 @@ +// Wire Slave Receiver +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Receives data as an I2C/TWI slave device +// Refer to the "Wire Master Writer" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(4); // join i2c bus with address #4 + Wire.onReceive(receiveEvent); // register event + Serial.begin(9600); // start serial for output +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is received from master +// this function is registered as an event, see setup() +void receiveEvent(int howMany) +{ + while(1 < Wire.available()) // loop through all but the last + { + char c = Wire.read(); // receive byte as a character + Serial.print(c); // print the character + } + int x = Wire.read(); // receive byte as an integer + Serial.println(x); // print the integer +} diff --git a/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino b/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino new file mode 100644 index 000000000..fcdac14b3 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino @@ -0,0 +1,32 @@ +// Wire Slave Sender +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Sends data as an I2C/TWI slave device +// Refer to the "Wire Master Reader" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(2); // join i2c bus with address #2 + Wire.onRequest(requestEvent); // register event +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is requested by master +// this function is registered as an event, see setup() +void requestEvent() +{ + Wire.write("hello "); // respond with message of 6 bytes + // as expected by master +} diff --git a/STM32F1/libraries/WireSlave/library.properties b/STM32F1/libraries/WireSlave/library.properties new file mode 100644 index 000000000..2a1c387b2 --- /dev/null +++ b/STM32F1/libraries/WireSlave/library.properties @@ -0,0 +1,11 @@ +name=Wire_Slave +version=1.0 +author= +email= +sentence=Wire with slave support +paragraph=Experimental Wire with slave support +url= +architectures=STM32F1 +maintainer= +category=Communication +include=src/Wire_Slave.h diff --git a/STM32F1/libraries/WireSlave/src/Wire.h b/STM32F1/libraries/WireSlave/src/Wire.h new file mode 100644 index 000000000..ede963b37 --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/Wire.h @@ -0,0 +1 @@ +#error "Something is trying to include Wire_slave.h when Wire.h is already included, they are mutually exclusive" diff --git a/STM32F1/libraries/WireSlave/src/Wire.h.gch b/STM32F1/libraries/WireSlave/src/Wire.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..b29a5ea9fd8851ea75533c42ff77077972caf5ce GIT binary patch literal 1819056 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 z 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≠!FX+RNj++pOJ3nHmv#KU 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

h#jNeg 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 diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.h.gch b/STM32F1/libraries/WireSlave/src/Wire_slave.h.gch deleted file mode 100644 index 5a6345078e7abad4b9211a296cfa52568e2ed238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx diff --git a/STM32F1/libraries/WireSlave/src/i2c_slave.h.gch b/STM32F1/libraries/WireSlave/src/i2c_slave.h.gch deleted file mode 100644 index 5a6345078e7abad4b9211a296cfa52568e2ed238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx diff --git a/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h.gch b/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h.gch deleted file mode 100644 index 5a6345078e7abad4b9211a296cfa52568e2ed238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx diff --git a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h.gch b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h.gch deleted file mode 100644 index 5a6345078e7abad4b9211a296cfa52568e2ed238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx From 730711b80aced608f59020803335e6b2dc482053 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Thu, 14 Dec 2017 16:45:55 +0100 Subject: [PATCH 025/373] Made sure Wire_slave.h is included first --- .../WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino | 1 + 1 file changed, 1 insertion(+) diff --git a/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino index 23456e40a..51e2dcc5a 100644 --- a/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino +++ b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino @@ -6,6 +6,7 @@ * Created on: 4 Sep 2012 * Author: Barry Carter */ +#include #include #include From 3425506d1983c7ae41153f80a8ba7651b25492fc Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Thu, 14 Dec 2017 17:30:35 +0100 Subject: [PATCH 026/373] spellcheccck --- STM32F1/libraries/WireSlave/library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/WireSlave/library.properties b/STM32F1/libraries/WireSlave/library.properties index 2a1c387b2..fd24ab1df 100644 --- a/STM32F1/libraries/WireSlave/library.properties +++ b/STM32F1/libraries/WireSlave/library.properties @@ -8,4 +8,4 @@ url= architectures=STM32F1 maintainer= category=Communication -include=src/Wire_Slave.h +include=src/Wire_slave.h From c4fdf5aa63a787ce9a28ddebfab9428e7681a65b Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Thu, 14 Dec 2017 21:04:54 +0100 Subject: [PATCH 027/373] keywords.txt Copied from ArduinoCore-sam (Due) --- STM32F1/libraries/WireSlave/keywords.txt | 31 ++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 STM32F1/libraries/WireSlave/keywords.txt diff --git a/STM32F1/libraries/WireSlave/keywords.txt b/STM32F1/libraries/WireSlave/keywords.txt new file mode 100644 index 000000000..47ffd52d0 --- /dev/null +++ b/STM32F1/libraries/WireSlave/keywords.txt @@ -0,0 +1,31 @@ +####################################### +# Syntax Coloring Map For Wire +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +####################################### +# Methods and Functions (KEYWORD2) +####################################### + +begin KEYWORD2 +setClock KEYWORD2 +beginTransmission KEYWORD2 +endTransmission KEYWORD2 +requestFrom KEYWORD2 +onReceive KEYWORD2 +onRequest KEYWORD2 + +####################################### +# Instances (KEYWORD2) +####################################### + +Wire KEYWORD2 +Wire1 KEYWORD2 + +####################################### +# Constants (LITERAL1) +####################################### + From 56e95f2773f10b1dad148d1c5e3f93b45c5b9cd2 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Thu, 14 Dec 2017 22:03:09 +0100 Subject: [PATCH 028/373] Steals any reference to Wire.h and redirects it to Wire_slave.h. This way we don't need to alter third party libraries. Note that Wire_slave.h must be included **before** the real Wire.h for this to work. --- STM32F1/libraries/WireSlave/src/Wire.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/STM32F1/libraries/WireSlave/src/Wire.h b/STM32F1/libraries/WireSlave/src/Wire.h index 2d3ce7049..0a47d0322 100644 --- a/STM32F1/libraries/WireSlave/src/Wire.h +++ b/STM32F1/libraries/WireSlave/src/Wire.h @@ -1 +1,4 @@ -#error "Something is trying to include Wire.h when Wire_slave.h is already included, they are mutually exclusive" +#pragma once +#include "Wire_slave.h" + +//#error "Something is trying to include Wire.h when Wire_slave.h is already included, they are mutually exclusive" From 6fe4a55922a30cef5f03c6a12897a682d12cf44d Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 15 Dec 2017 11:56:01 +0100 Subject: [PATCH 029/373] Added SoftWire.h --- STM32F1/libraries/Wire/library.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/Wire/library.properties b/STM32F1/libraries/Wire/library.properties index 1129fa3fb..2d822fedb 100644 --- a/STM32F1/libraries/Wire/library.properties +++ b/STM32F1/libraries/Wire/library.properties @@ -7,4 +7,4 @@ paragraph= category=Communication url=http://www.arduino.cc/en/Reference/Wire architectures=STM32F1 -include=Wire.h +include=Wire.h,SoftWire.h From c65ec99a8d206aada5fbdc4be83e6f099c9c2a5e Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 15 Dec 2017 13:19:37 +0100 Subject: [PATCH 030/373] Updated library.properties --- STM32F1/libraries/Wire/library.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/Wire/library.properties b/STM32F1/libraries/Wire/library.properties index 2d822fedb..06b7aee78 100644 --- a/STM32F1/libraries/Wire/library.properties +++ b/STM32F1/libraries/Wire/library.properties @@ -1,7 +1,7 @@ name=Wire version=1.0 -author=Arduino -maintainer=Arduino +author=Roger Clark +maintainer= sentence=Allows the communication between devices or sensors connected via Two Wire Interface Bus. paragraph= category=Communication From 987102c8d2d23ee09498c2b9ba36cba1057409a3 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 15 Dec 2017 16:00:54 +0100 Subject: [PATCH 031/373] Temporarily removed not yet functioning examples --- .../slave_receiver/slave_receiver.ino | 38 ------------------- .../examples/slave_sender/slave_sender.ino | 32 ---------------- 2 files changed, 70 deletions(-) delete mode 100644 STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino delete mode 100644 STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino diff --git a/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino b/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino deleted file mode 100644 index b430c2539..000000000 --- a/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino +++ /dev/null @@ -1,38 +0,0 @@ -// Wire Slave Receiver -// by Nicholas Zambetti - -// Demonstrates use of the Wire library -// Receives data as an I2C/TWI slave device -// Refer to the "Wire Master Writer" example for use with this - -// Created 29 March 2006 - -// This example code is in the public domain. - - -#include - -void setup() -{ - Wire.begin(4); // join i2c bus with address #4 - Wire.onReceive(receiveEvent); // register event - Serial.begin(9600); // start serial for output -} - -void loop() -{ - delay(100); -} - -// function that executes whenever data is received from master -// this function is registered as an event, see setup() -void receiveEvent(int howMany) -{ - while(1 < Wire.available()) // loop through all but the last - { - char c = Wire.read(); // receive byte as a character - Serial.print(c); // print the character - } - int x = Wire.read(); // receive byte as an integer - Serial.println(x); // print the integer -} diff --git a/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino b/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino deleted file mode 100644 index fcdac14b3..000000000 --- a/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino +++ /dev/null @@ -1,32 +0,0 @@ -// Wire Slave Sender -// by Nicholas Zambetti - -// Demonstrates use of the Wire library -// Sends data as an I2C/TWI slave device -// Refer to the "Wire Master Reader" example for use with this - -// Created 29 March 2006 - -// This example code is in the public domain. - - -#include - -void setup() -{ - Wire.begin(2); // join i2c bus with address #2 - Wire.onRequest(requestEvent); // register event -} - -void loop() -{ - delay(100); -} - -// function that executes whenever data is requested by master -// this function is registered as an event, see setup() -void requestEvent() -{ - Wire.write("hello "); // respond with message of 6 bytes - // as expected by master -} From 78f8a90a2df3f408cab28764d35113a06263295e Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Tue, 19 Dec 2017 23:46:32 +0100 Subject: [PATCH 032/373] Fixed a master/slave mode mixup. Turns out that (sr2&I2C_SR2_MSL)!=I2C_SR2_MSL indicates slave mode after master has requested, and received, data. "MSL - Cleared by hardware after detecting a Stop condition on the bus or a loss of arbitration (ARLO=1), or by hardware when PE=0." -RM0008 --- STM32F1/libraries/WireSlave/src/i2c_slave.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/STM32F1/libraries/WireSlave/src/i2c_slave.c b/STM32F1/libraries/WireSlave/src/i2c_slave.c index 770cd3a63..865949b36 100644 --- a/STM32F1/libraries/WireSlave/src/i2c_slave.c +++ b/STM32F1/libraries/WireSlave/src/i2c_slave.c @@ -70,6 +70,12 @@ static inline void i2c_send_slave_addr(i2c_dev *dev, uint32 addr, uint32 rw) { #ifdef I2C_DEBUG #define NR_CRUMBS 128 +struct crumb { + uint32 event; + uint32 arg0; + uint32 arg1; + uint32 arg2; // filler to make the data fit GDB memory dump screen +}; static struct crumb crumbs[NR_CRUMBS]; static uint32 cur_crumb = 0; @@ -79,6 +85,7 @@ static inline void i2c_drop_crumb(uint32 event, uint32 arg0, uint32 arg1) { crumb->event = event; crumb->arg0 = arg0; crumb->arg1 = arg1; + crumb->arg2 = cur_crumb-1; } } #define I2C_CRUMB(event, arg0, arg1) i2c_drop_crumb(event, arg0, arg1) @@ -87,12 +94,6 @@ static inline void i2c_drop_crumb(uint32 event, uint32 arg0, uint32 arg1) { #define I2C_CRUMB(event, arg0, arg1) #endif -struct crumb { - uint32 event; - uint32 arg0; - uint32 arg1; -}; - enum { IRQ_ENTRY = 1, TXE_ONLY = 2, @@ -351,8 +352,8 @@ void _i2c_irq_handler(i2c_dev *dev) { * Add Slave support */ - /* Check to see if MSL master slave bit is set */ - if ((sr2 & I2C_SR2_MSL) != I2C_SR2_MSL) { /* 0 = slave mode 1 = master */ + /* Check to see if in slave mode */ + if (dev->config_flags&(I2C_SLAVE_DUAL_ADDRESS|I2C_SLAVE_GENERAL_CALL)) { /* Check for address match */ if (sr1 & I2C_SR1_ADDR) { From b46b7461f401a2b51259fb76b350b5748b2f564a Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 22 Dec 2017 18:52:12 +0100 Subject: [PATCH 033/373] Merged with Wire implementation from stm32duino/Arduino_Core_STM32 --- .../SFRRanger_reader/SFRRanger_reader.ino | 2 +- .../i2c_libmaple_slave_reader.ino} | 5 - .../i2c_scanner_wire/i2c_scanner_wire.ino | 78 +++ .../examples/master_reader/master_reader.ino | 4 +- .../WireSlave/examples/selftest1/code.cpp | 68 ++ .../examples/selftest1/selftest1.ino | 16 + .../slave_receiver/slave_receiver.ino | 37 ++ .../examples/slave_sender/slave_sender.ino | 32 + .../libraries/WireSlave/src/Wire_slave.cpp | 591 +++++++++++++++--- STM32F1/libraries/WireSlave/src/Wire_slave.h | 209 +++++-- .../libraries/WireSlave/src/Wire_slave.h.gch | Bin 0 -> 9475 bytes STM32F1/libraries/WireSlave/src/i2c_slave.c | 15 +- .../WireSlave/src/utility/WireBase_slave.cpp | 145 ----- .../WireSlave/src/utility/WireBase_slave.h | 145 ----- 14 files changed, 888 insertions(+), 459 deletions(-) rename STM32F1/libraries/WireSlave/examples/{i2c_libmaple_slave/i2c_libmaple_slave.ino => i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino} (97%) create mode 100644 STM32F1/libraries/WireSlave/examples/i2c_scanner_wire/i2c_scanner_wire.ino create mode 100644 STM32F1/libraries/WireSlave/examples/selftest1/code.cpp create mode 100644 STM32F1/libraries/WireSlave/examples/selftest1/selftest1.ino create mode 100644 STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino create mode 100644 STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino create mode 100644 STM32F1/libraries/WireSlave/src/Wire_slave.h.gch delete mode 100644 STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp delete mode 100644 STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h diff --git a/STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino b/STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino index 5537eca56..9409bb10e 100644 --- a/STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino +++ b/STM32F1/libraries/WireSlave/examples/SFRRanger_reader/SFRRanger_reader.ino @@ -15,7 +15,7 @@ void setup() { Wire.begin(); // join i2c bus (address optional for master) - Serial.begin(9600); // start serial communication at 9600bps + Serial.begin(115200); // start serial communication at 9600bps } int reading = 0; diff --git a/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino similarity index 97% rename from STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino rename to STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino index 51e2dcc5a..a63ff3c98 100644 --- a/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave/i2c_libmaple_slave.ino +++ b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino @@ -8,7 +8,6 @@ */ #include #include -#include #define USE_BUFFERED_EXAMPLE 1 @@ -52,12 +51,8 @@ void functx(i2c_msg *msg){ #endif -// #define Serial Serial1 - void setup() { Serial.begin(115200); - while(!Serial) - ; Serial.println("I2C Slave example"); // attach the buffer diff --git a/STM32F1/libraries/WireSlave/examples/i2c_scanner_wire/i2c_scanner_wire.ino b/STM32F1/libraries/WireSlave/examples/i2c_scanner_wire/i2c_scanner_wire.ino new file mode 100644 index 000000000..44af4dc1d --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/i2c_scanner_wire/i2c_scanner_wire.ino @@ -0,0 +1,78 @@ +// -------------------------------------- +// i2c_scanner +// +// Version 1 +// This program (or code that looks like it) +// can be found in many places. +// For example on the Arduino.cc forum. +// The original author is not know. +// Version 2, Juni 2012, Using Arduino 1.0.1 +// Adapted to be as simple as possible by Arduino.cc user Krodal +// Version 3, Feb 26 2013 +// V3 by louarnold +// Version 4, March 3, 2013, Using Arduino 1.0.3 +// by Arduino.cc user Krodal. +// Changes by louarnold removed. +// Scanning addresses changed from 0...127 to 1...119, +// according to the i2c scanner by Nick Gammon +// http://www.gammon.com.au/forum/?id=10896 +// Version 5, March 28, 2013 +// As version 4, but address scans now to 127. +// A sensor seems to use address 120. +// +// This sketch tests the standard 7-bit addresses +// Devices with higher bit address might not be seen properly. +// + +#include + +//use IIC2 +//TwoWire WIRE2 (2,I2C_FAST_MODE); +//#define Wire WIRE2 + + +void setup() { + + Serial.begin(115200); + Wire.begin(); + Serial.println("\nI2C Scanner"); +} + + +void loop() { + byte error, address; + int nDevices; + + Serial.println("Scanning..."); + + nDevices = 0; + for(address = 1; address < 127; address++) { + // The i2c_scanner uses the return value of + // the Write.endTransmisstion to see if + // a device did acknowledge to the address. + + Wire.beginTransmission(address); + error = Wire.endTransmission(); + + if (error == 0) { + Serial.print("I2C device found at address 0x"); + if (address < 16) + Serial.print("0"); + Serial.println(address, HEX); + + nDevices++; + } + else if (error == 4) { + Serial.print("Unknown error at address 0x"); + if (address < 16) + Serial.print("0"); + Serial.println(address, HEX); + } + } + if (nDevices == 0) + Serial.println("No I2C devices found"); + else + Serial.println("done"); + + delay(5000); // wait 5 seconds for next scan +} diff --git a/STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino b/STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino index 4b45d1289..bd914e368 100644 --- a/STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino +++ b/STM32F1/libraries/WireSlave/examples/master_reader/master_reader.ino @@ -15,12 +15,12 @@ void setup() { Wire.begin(); // join i2c bus (address optional for master) - Serial.begin(9600); // start serial for output + Serial.begin(115200); // start serial for output } void loop() { - Wire.requestFrom(2, 6); // request 6 bytes from slave device #2 + Wire.requestFrom(8, 6); // request 6 bytes from slave device #8 while(Wire.available()) // slave may send less than requested { diff --git a/STM32F1/libraries/WireSlave/examples/selftest1/code.cpp b/STM32F1/libraries/WireSlave/examples/selftest1/code.cpp new file mode 100644 index 000000000..d2bce8c61 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/selftest1/code.cpp @@ -0,0 +1,68 @@ +// Wire Slave Receiver +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Receives data as an I2C/TWI slave device +// Refer to the "Wire Master Writer" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + +#include +//#define Serial Serial1 + +#define MasterWire Wire +#define SlaveWire Wire1 +#define ENABLE_SLAVE +#define ENABLE_MASTER + +void receiveEvent(int howMany); + +void setup(){ + Serial.begin(115200); // start serial for output + + #ifdef ENABLE_MASTER + MasterWire.begin(); // join i2c bus #1 as master + Serial.println("Done with MasterWire.begin "); + #endif + + #ifdef ENABLE_SLAVE + SlaveWire.begin(4); // join i2c bus #2 as slave with address #4 + Serial.println("Done with SlaveWire.begin "); + #endif + + #ifdef ENABLE_SLAVE + SlaveWire.onReceive(receiveEvent); // register event + #endif +} + +void loop(){ + #ifdef ENABLE_MASTER + static byte x = 0; + Serial.print("Master writing "); + Serial.println(x); + + MasterWire.beginTransmission(4); // transmit to device #4 + MasterWire.write("x is "); // sends five bytes + MasterWire.write(x); // sends one byte + MasterWire.endTransmission(); // stop transmitting + + x++; + #endif + delay(500); +} + +// function that executes whenever data is received from master +// this function is registered as an event, see setup() +// Note that it is not advicable to call Serial.print() from within an ISR +void receiveEvent(int howMany){ + //Serial.print("Slave receving "); + while(1 < SlaveWire.available()){ // loop through all but the last + char c = SlaveWire.read(); // receive byte as a character + Serial.print(c); // print the character + } + int x = SlaveWire.read(); // receive byte as an integer + Serial.println(x); // print the integer +} + diff --git a/STM32F1/libraries/WireSlave/examples/selftest1/selftest1.ino b/STM32F1/libraries/WireSlave/examples/selftest1/selftest1.ino new file mode 100644 index 000000000..58f1e5c2c --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/selftest1/selftest1.ino @@ -0,0 +1,16 @@ +// Wire Slave Receiver +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Receives data as an I2C/TWI slave device +// Refer to the "Wire Master Writer" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + +// The code is temporarily moved to the code.cpp. +// This makes it possible to set breakpoints in eclipse IDE. +// I'm sure that there is an Eclipse configuration that makes it +// possible for it to detect .ino files as .cpp, but I'm lazy + diff --git a/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino b/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino new file mode 100644 index 000000000..5d71b9a20 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino @@ -0,0 +1,37 @@ +// Wire Slave Receiver +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Receives data as an I2C/TWI slave device +// Refer to the "Wire Master Writer" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include +#define Serial Serial1 + +void setup(){ + Serial.begin(115200); // start serial for output + + Wire.begin(4); // join i2c bus with address #4 + Wire.onReceive(receiveEvent); // register event +} + +void loop(){ + delay(100); +} + +// function that executes whenever data is received from master +// this function is registered as an event, see setup() +// Note that it is not advicable to call Serial.print() from within an ISR +void receiveEvent(int howMany){ + while(1 < Wire.available()){ // loop through all but the last + char c = Wire.read(); // receive byte as a character + Serial.print(c); // print the character + } + int x = Wire.read(); // receive byte as an integer + Serial.println(x); // print the integer +} diff --git a/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino b/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino new file mode 100644 index 000000000..75add4a00 --- /dev/null +++ b/STM32F1/libraries/WireSlave/examples/slave_sender/slave_sender.ino @@ -0,0 +1,32 @@ +// Wire Slave Sender +// by Nicholas Zambetti + +// Demonstrates use of the Wire library +// Sends data as an I2C/TWI slave device +// Refer to the "Wire Master Reader" example for use with this + +// Created 29 March 2006 + +// This example code is in the public domain. + + +#include + +void setup() +{ + Wire.begin(8); // join i2c bus with address #8 + Wire.onRequest(requestEvent); // register event +} + +void loop() +{ + delay(100); +} + +// function that executes whenever data is requested by master +// this function is registered as an event, see setup() +void requestEvent() +{ + Wire.write("hello "); // respond with message of 6 bytes + // as expected by master +} diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp index 93cc55f09..75e753f5c 100644 --- a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp @@ -1,106 +1,523 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ +/* + TwoWire.cpp - TWI/I2C library for Wiring & Arduino + Copyright (c) 2006 Nicholas Zambetti. All right reserved. -/** - * @file TwoWire.cpp - * @author Trystan Jones - * @brief Wire library, uses the hardware I2C available in the Maple to - * interact with I2C slave devices. - */ + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. -/* - * Library created by crenn to use the new WireBase system and allow Arduino - * users easy interaction with the I2C Hardware in a familiar method. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts */ +extern "C" { + #include + #include + #include +} + #include "Wire_slave.h" +#include "wirish.h" +#include -uint8 TwoWire::process(uint8 stop) { - int8 res = i2c_master_xfer(sel_hard, &itc_msg, 1, 0); - if (res == I2C_ERROR_PROTOCOL) { - if (sel_hard->error_flags & I2C_SR1_AF) { /* NACK */ - res = (sel_hard->error_flags & I2C_SR1_ADDR ? ENACKADDR : - ENACKTRNS); - } else if (sel_hard->error_flags & I2C_SR1_OVR) { /* Over/Underrun */ - res = EDATA; - } else { /* Bus or Arbitration error */ - res = EOTHER; - } - i2c_disable(sel_hard); - i2c_master_enable(sel_hard, (I2C_BUS_RESET | dev_flags)); - } - return res; +#define BUFFER_LENGTH 32 + +#define MASTER_ADDRESS 0x33 +// Constructors //////////////////////////////////////////////////////////////// + +TwoWire::TwoWire(i2c_dev* i2cDevice) : + sel_hard(i2cDevice), + rxBuffer(nullptr), + rxBufferAllocated(0), + rxBufferIndex(0), + rxBufferLength(0), + txBuffer(nullptr), + txBufferAllocated(0), + txBufferIndex(0), + txBufferLength(0), + transmitting(false), + master(true), + dev_flags(0), + itc_msg(), + itc_slave_msg(), + user_onRequest(nullptr), + user_onReceive(nullptr) { } -uint8 TwoWire::process(){ - return process(true); +// Public Methods ////////////////////////////////////////////////////////////// + +void TwoWire::begin(void) { + begin(MASTER_ADDRESS); } -// TODO: Add in Error Handling if devsel is out of range for other Maples -TwoWire::TwoWire(uint8 dev_sel, uint8 flags) { - if (dev_sel == 1) { - sel_hard = I2C1; - } else if (dev_sel == 2) { - sel_hard = I2C2; - } else { - ASSERT(1); +void TwoWire::begin(uint8_t address){ + + rxBufferIndex = 0; + rxBufferLength = 0; + allocateRxBuffer(BUFFER_LENGTH); + + txBufferIndex = 0; + txBufferLength = 0; + allocateTxBuffer(BUFFER_LENGTH); + + transmitting = 0; + + master = (address == MASTER_ADDRESS); + + // Set default speed to 100KHz + if (master) { + dev_flags = 0; + i2c_master_enable(sel_hard, dev_flags); + } else { + // TODO: I2C_SLAVE_DUAL_ADDRESS ? + dev_flags = I2C_SLAVE_GENERAL_CALL | I2C_SLAVE_USE_RX_BUFFER | + I2C_SLAVE_USE_TX_BUFFER; + + itc_slave_msg.addr = address; + itc_slave_msg.flags = 0; + itc_slave_msg.data = rxBuffer; + itc_slave_msg.length = 0; + itc_slave_msg.flags = 0; + + // TODO why does enable only work before setting IRS and address? + i2c_slave_enable(sel_hard, dev_flags); + + if (sel_hard==I2C1){ + // attach receive handler + i2c_slave_attach_recv_handler(sel_hard, &itc_slave_msg, onReceiveService1); + // attach transmit handler + i2c_slave_attach_transmit_handler(sel_hard, &itc_slave_msg, onRequestService1); + } + #if WIRE_INTERFACES_COUNT > 1 + else if (sel_hard==I2C2){ + // attach receive handler + i2c_slave_attach_recv_handler(sel_hard, &itc_slave_msg, onReceiveService2); + // attach transmit handler + i2c_slave_attach_transmit_handler(sel_hard, &itc_slave_msg, onRequestService2); } - dev_flags = flags; + #endif + + i2c_slave_set_own_address(sel_hard, address); + } } -TwoWire::~TwoWire() { - i2c_disable(sel_hard); - sel_hard = 0; +void TwoWire::begin(int address) { + begin((uint8_t) address); } -void TwoWire::begin(uint8 self_addr) { +void TwoWire::end(void) { + free(txBuffer); + txBuffer = nullptr; + txBufferAllocated = 0; + free(rxBuffer); + rxBuffer = nullptr; + rxBufferAllocated = 0; + i2c_peripheral_disable(sel_hard); + i2c_master_release_bus(sel_hard); // TODO is this required? +} + +void TwoWire::setClock(uint32_t frequencyHz) { + switch (frequencyHz) { + case 400000: + dev_flags |= I2C_FAST_MODE; // set FAST_MODE bit + break; + case 100000: + default: + dev_flags &= ~I2C_FAST_MODE; // clear FAST_MODE bit + break; + } + if (sel_hard->regs->CR1 & I2C_CR1_PE){ + i2c_disable(sel_hard); i2c_master_enable(sel_hard, dev_flags); + } } -void TwoWire::end() { +uint8 TwoWire::process(bool stop) { + int8 res = i2c_master_xfer(sel_hard, &itc_msg, 1, 0); + + if (res == I2C_ERROR_PROTOCOL) { + if (sel_hard->error_flags & I2C_SR1_AF) { /* NACK */ + res = (sel_hard->error_flags & I2C_SR1_ADDR ? ENACKADDR : ENACKTRNS); + } else if (sel_hard->error_flags & I2C_SR1_OVR) { /* Over/Underrun */ + res = EDATA; + } else { /* Bus or Arbitration error */ + res = EOTHER; + } i2c_disable(sel_hard); - sel_hard = 0; -} - -void TwoWire::setClock(uint32_t frequencyHz) -{ - switch(frequencyHz) - { - case 400000: - dev_flags |= I2C_FAST_MODE;// set FAST_MODE bit - break; - case 100000: - default: - dev_flags &= ~I2C_FAST_MODE;// clear FAST_MODE bit - break; - } - if (sel_hard->regs->CR1 & I2C_CR1_PE){ - i2c_disable(sel_hard); - i2c_master_enable(sel_hard, dev_flags); - } -} - -TwoWire Wire(1); + i2c_master_enable(sel_hard, (I2C_BUS_RESET | dev_flags)); + } + + return res; +} + +//TODO: Add the ability to queue messages (adding a boolean to end of function +// call, allows for the Arduino style to stay while also giving the flexibility +// to bulk send +uint8 TwoWire::requestFrom(uint8_t address, uint8_t num_bytes, + uint32_t iaddress, uint8_t isize, uint8_t sendStop) { + + ASSERT(master); + + allocateRxBuffer(num_bytes); + // error if no memory block available to allocate the buffer + if (rxBuffer == nullptr) { + return EDATA; + } + + // reset tx buffer iterator vars + rxBufferIndex = 0; + rxBufferLength = 0; + + if (num_bytes > BUFFER_LENGTH) { + num_bytes = BUFFER_LENGTH; + } + + itc_msg.addr = address; + itc_msg.flags = I2C_MSG_READ; + itc_msg.length = num_bytes; + itc_msg.data = &rxBuffer[rxBufferIndex]; + process(sendStop); // TODO deal with to the return value + + // TODO handle iaddress & isize + rxBufferLength += itc_msg.xferred; + itc_msg.flags = 0; + + return rxBufferLength; +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity, + uint8_t sendStop) { + // TODO shouldn't this set flag |= I2C_MSG_10BIT_ADDR ??? + return requestFrom((uint8_t) address, (uint8_t) quantity, (uint32_t) 0, + (uint8_t) 0, sendStop); +} + +uint8_t TwoWire::requestFrom(uint8_t address, uint8_t quantity) { + return requestFrom((uint8_t) address, (uint8_t) quantity, (uint32_t) 0, + (uint8_t) 0, (uint8_t) true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity) { + return requestFrom((uint8_t) address, (uint8_t) quantity, (uint32_t) 0, + (uint8_t) 0, (uint8_t) true); +} + +uint8_t TwoWire::requestFrom(int address, int quantity, + int sendStop) { + return requestFrom((uint8_t) address, (uint8_t) quantity, (uint32_t) 0, + (uint8_t) 0, (bool) sendStop); +} + +void TwoWire::beginTransmission(uint8_t address) { + + // indicate that we are transmitting + transmitting = 1; + + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; + + itc_msg.addr = address; + itc_msg.data = &txBuffer[txBufferIndex]; + itc_msg.length = 0; + itc_msg.flags = 0; + +} + +void TwoWire::beginTransmission(int address) { + beginTransmission((uint8_t) address); +} + +// +// Originally, 'endTransmission' was an f(void) function. +// It has been modified to take one parameter indicating +// whether or not a STOP should be performed on the bus. +// Calling endTransmission(false) allows a sketch to +// perform a repeated start. +// +// WARNING: Nothing in the library keeps track of whether +// the bus tenure has been properly ended with a STOP. It +// is very possible to leave the bus in a hung state if +// no call to endTransmission(true) is made. Some I2C +// devices will behave oddly if they do not see a STOP. +// +uint8_t TwoWire::endTransmission(uint8_t sendStop) { + //UNUSED(sendStop); + int8_t ret = 4; + + if (master == true) { + + itc_msg.data = txBuffer; + itc_msg.length = txBufferLength; + itc_msg.flags = 0; + ret = process(sendStop); // Changed so that the return value from process is returned by this function see also the return line below + txBufferIndex = 0; + + // reset Tx buffer + resetTxBuffer(); // TODO why? isn't this just unesssesary? + + // reset tx buffer iterator vars + txBufferIndex = 0; + txBufferLength = 0; + + // indicate that we are done transmitting + transmitting = 0; + } + + return ret; +} + +// This provides backwards compatibility with the original +// definition, and expected behaviour, of endTransmission +// + +uint8_t TwoWire::endTransmission(void) { + return endTransmission(true); +} + +// must be called in: +// slave tx event callback +// or after beginTransmission(address) +size_t TwoWire::write(uint8_t data) { + if (!transmitting && master) { + return 0; + } else { + // in master transmitter mode or slave tx event callback + allocateTxBuffer(txBufferLength + 1); + // error if no memory block available to allocate the buffer + if (txBuffer == nullptr) { + setWriteError(); + return 0; + } + // put byte in tx buffer + txBuffer[txBufferIndex] = data; + ++txBufferIndex; + // update amount in buffer + txBufferLength = txBufferIndex; + } + return 1; +} + +/** + * @brief This function must be called in slave Tx event callback or after + * beginTransmission() and before endTransmission(). + * @param pdata: pointer to the buffer data + * @param quantity: number of bytes to write + * @retval number of bytes ready to write. + */ +size_t TwoWire::write(const uint8_t *data, size_t quantity) { + if (!transmitting && master) { + return 0; + } else { + // in master transmitter mode or slave Tx event callback + allocateTxBuffer(txBufferLength + quantity); + // error if no memory block available to allocate the buffer + if (txBuffer == nullptr) { + setWriteError(); + return 0; + } + // put bytes in tx buffer + memcpy(&(txBuffer[txBufferIndex]), data, quantity); + txBufferIndex = txBufferIndex + quantity; + // update amount in buffer + txBufferLength = txBufferIndex; + return quantity; + } + return 0; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::available(void) { + return rxBufferLength - rxBufferIndex; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::read(void) { + int value = -1; + + // get each successive byte on each call + if (rxBufferIndex < rxBufferLength) { + value = rxBuffer[rxBufferIndex]; + ++rxBufferIndex; + + /* Commented as not I think it is not useful + * but kept to show that it is possible to + * reset rx buffer when no more data available */ + /*if(rxBufferIndex == rxBufferLength) { + resetRxBuffer(); + }*/ + } + + return value; +} + +// must be called in: +// slave rx event callback +// or after requestFrom(address, numBytes) +int TwoWire::peek(void) { + int value = -1; + + if (rxBufferIndex < rxBufferLength) { + value = rxBuffer[rxBufferIndex]; + } + + return value; +} + +void TwoWire::flush(void) { + rxBufferIndex = 0; + rxBufferLength = 0; + resetRxBuffer(); + txBufferIndex = 0; + txBufferLength = 0; + resetTxBuffer(); +} + +// behind the scenes function that is called when data is received +void __attribute__((always_inline)) TwoWire::onReceiveService(i2c_msg* msg) { + // don't bother if user hasn't registered a callback + if (!user_onReceive) { + return; + } + + // don't bother if rx buffer is in use by a master requestFrom() op + // i know this drops data, but it allows for slight stupidity + // meaning, they may not have read all the master requestFrom() data yet + if (rxBufferIndex < rxBufferLength) { + return; + } + // copy twi rx buffer into local read buffer + // this enables new reads to happen in parallel + // + // TODO: Something is strange here, isn't msg->data==rxBuffer? nope, itsnot + // + memcpy(rxBuffer, msg->data, msg->length); + // set rx iterator vars + rxBufferIndex = 0; + rxBufferLength = msg->length; + // alert user program + user_onReceive(msg->length); +} + +// behind the scenes function that is called when data is requested +void __attribute__((always_inline)) TwoWire::onRequestService(i2c_msg* msg) { + // don't bother if user hasn't registered a callback + if (!user_onRequest) { + return; + } + + // reset tx buffer iterator vars + // !!! this will kill any pending pre-master sendTo() activity + txBufferIndex = 0; + txBufferLength = 0; + // alert user program + user_onRequest(); + + // update i2c_msg + msg->data = txBuffer; + msg->length = txBufferLength; + msg->xferred = 0; +} + +// sets function called on slave write +void TwoWire::onReceive(void (*function)(int)) { + user_onReceive = function; +} + +// sets function called on slave read +void TwoWire::onRequest(void (*function)(void)) { + user_onRequest = function; +} + +/** + * @brief Allocate the Rx/Tx buffer to the requested length if needed + * @note Minimum allocated size is BUFFER_LENGTH) + * @param length: number of bytes to allocate + */ +inline void TwoWire::allocateRxBuffer(size_t length) { + // By default we allocate BUFFER_LENGTH bytes. It is the min size of the buffer. + if (length < BUFFER_LENGTH) { + length = BUFFER_LENGTH; + } + if (rxBufferAllocated < length) { + rxBuffer = (uint8_t *) realloc(rxBuffer, length * sizeof(uint8_t)); + rxBufferAllocated = (rxBuffer != nullptr) ? length : 0; + } +} + +inline void TwoWire::allocateTxBuffer(size_t length) { + // By default we allocate BUFFER_LENGTH bytes. It is the min size of the buffer. + if (length < BUFFER_LENGTH) { + length = BUFFER_LENGTH; + } + if (txBufferAllocated < length) { + txBuffer = (uint8_t *) realloc(txBuffer, length * sizeof(uint8_t)); + txBufferAllocated = (txBuffer != nullptr) ? length : 0; + } +} + +/** + * @brief Reset Rx/Tx buffer content to 0 + */ +inline void TwoWire::resetRxBuffer(void) { + if (rxBuffer != nullptr) + memset(rxBuffer, 0, rxBufferAllocated); +} + +inline void TwoWire::resetTxBuffer(void) { + if (txBuffer != nullptr) + memset(txBuffer, 0, txBufferAllocated); +} + + +// Preinstantiate Objects ////////////////////////////////////////////////////// +TwoWire& Wire = TwoWire::getInstance(); //SCL:D14 SDA:D15 +#if WIRE_INTERFACES_COUNT > 1 +TwoWire& Wire1 = TwoWire::getInstance1(); //SCL: D1 SDA: D0 +#endif + +// Static methods ////////////////////////////////////////////////////////////// + +TwoWire& TwoWire::getInstance(){ + static TwoWire instance(I2C1); + return instance; +} + +#if WIRE_INTERFACES_COUNT > 1 +TwoWire& TwoWire::getInstance1(){ + static TwoWire instance(I2C2); + return instance; +} +#endif + +// onRequestServiceX and onReceiveServiceX can't be inline since they +// are exclusively called via a function pointer +void TwoWire::onRequestService1(i2c_msg* msg) { + Wire.onRequestService(msg); +} + +void TwoWire::onReceiveService1(i2c_msg* msg) { + Wire.onReceiveService(msg); +} + +#if WIRE_INTERFACES_COUNT > 1 +void TwoWire::onRequestService2(i2c_msg* msg) { + Wire1.onRequestService(msg); +} +void TwoWire::onReceiveService2(i2c_msg* msg) { + Wire1.onReceiveService(msg); +} +#endif diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.h b/STM32F1/libraries/WireSlave/src/Wire_slave.h index dbe2a4ea5..ff71228c6 100644 --- a/STM32F1/libraries/WireSlave/src/Wire_slave.h +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.h @@ -1,78 +1,149 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file Wire.h - * @author Trystan Jones - * @brief Wire library, uses the hardware I2C available in the Maple to - * interact with I2C slave devices. - */ - /* - * Library created by crenn to use the new WireBase system and allow Arduino - * users easy interaction with the I2C Hardware in a familiar method. + TwoWire.h - TWI/I2C library for Arduino & Wiring + Copyright (c) 2006 Nicholas Zambetti. All right reserved. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + Modified 2012 by Todd Krein (todd@krein.org) to implement repeated starts */ -#ifndef _TWOWIRE_H_ -#define _TWOWIRE_H_ +#ifndef TwoWire_h +#define TwoWire_h -#include "utility/WireBase_slave.h" -#include "wirish.h" +#include +#include "Stream.h" +#include "Arduino.h" #include -class TwoWire : public WireBase { + +// WIRE_HAS_END means Wire has end() +#ifndef WIRE_HAS_END +#define WIRE_HAS_END 1 +#endif + +#ifndef WIRE_INTERFACES_COUNT +#define WIRE_INTERFACES_COUNT 2 +#endif + +/* return codes from endTransmission() */ +typedef enum EndTranmissionCodes { + SUCCESS = 0, /* transmission was successful */ + EDATA = 1, /* too much data */ + ENACKADDR = 2, /* received nack on transmit of address */ + ENACKTRNS = 3, /* received nack on transmit of data */ + EOTHER = 4, /* other error */ +} EndTranmissionCodes; + +class TwoWire: public Stream { private: - i2c_dev* sel_hard; - uint8 dev_flags; -protected: - /* - * Processes the incoming I2C message defined by WireBase to the - * hardware. If an error occured, restart the I2C device. - */ - uint8 process(uint8); - uint8 process(); + i2c_dev* sel_hard; + + uint8_t *rxBuffer; // lazy allocation + uint8_t rxBufferAllocated; + uint8_t rxBufferIndex; + uint8_t rxBufferLength; + + uint8_t *txBuffer; // lazy allocation + uint8_t txBufferAllocated; + uint8_t txBufferIndex; + uint8_t txBufferLength; + + uint8_t transmitting; + + bool master; + + uint8 dev_flags; + i2c_msg itc_msg; + i2c_msg itc_slave_msg; + + void (*user_onRequest)(void); + void (*user_onReceive)(int); + + void allocateRxBuffer(size_t length); + void allocateTxBuffer(size_t length); + + void resetRxBuffer(void); + void resetTxBuffer(void); + uint8 process(bool stop = true); // wrapper for i2c_master_xfer + + inline void __attribute__((always_inline)) onReceiveService(i2c_msg* msg); + inline void __attribute__((always_inline)) onRequestService(i2c_msg* msg); + + static void onRequestService1(i2c_msg*); + static void onReceiveService1(i2c_msg*); + #if WIRE_INTERFACES_COUNT > 1 + static void onRequestService2(i2c_msg*); + static void onReceiveService2(i2c_msg*); + #endif + + TwoWire(i2c_dev* i2cDevice); + TwoWire() = delete; + TwoWire(const TwoWire&) = delete; + TwoWire& operator=(const TwoWire&) = delete; + TwoWire(TwoWire&&) = delete; + TwoWire& operator=(TwoWire&&) = delete; + public: - /* - * Check if devsel is within range and enable selected I2C interface with - * passed flags - */ - TwoWire(uint8, uint8 = 0); - - /* - * Shuts down (disables) the hardware I2C - */ - void end(); - - void setClock(uint32_t frequencyHz); - /* - * Disables the I2C device and remove the device address. - */ - ~TwoWire(); - - void begin(uint8 = 0x00); + static TwoWire& getInstance(); + #if WIRE_INTERFACES_COUNT > 1 + static TwoWire& getInstance1(); + #endif + + void begin(); + void begin(uint8_t); + void begin(int); + void end(); + void setClock(uint32_t); + void beginTransmission(uint8_t); + void beginTransmission(int); + uint8_t endTransmission(void); + uint8_t endTransmission(uint8_t); + + uint8_t requestFrom(uint8_t, uint8_t); + uint8_t requestFrom(uint8_t, uint8_t, uint8_t); + uint8_t requestFrom(uint8_t, uint8_t, uint32_t, uint8_t, uint8_t); + uint8_t requestFrom(int, int); + uint8_t requestFrom(int, int, int); + + virtual size_t write(uint8_t); + virtual size_t write(const uint8_t *, size_t); + virtual int available(void); + virtual int read(void); + virtual int peek(void); + virtual void flush(void); + void onReceive(void (*)(int)); + void onRequest(void (*)(void)); + + inline size_t write(unsigned long n) { + return write((uint8_t) n); + } + inline size_t write(long n) { + return write((uint8_t) n); + } + inline size_t write(unsigned int n) { + return write((uint8_t) n); + } + inline size_t write(int n) { + return write((uint8_t) n); + } + using Print::write; }; -extern TwoWire Wire; -#endif // _TWOWIRE_H_ + +extern TwoWire& Wire; +#if WIRE_INTERFACES_COUNT > 1 +extern TwoWire& Wire1; +#endif + +#endif // TwoWire_h diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.h.gch b/STM32F1/libraries/WireSlave/src/Wire_slave.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..5a6345078e7abad4b9211a296cfa52568e2ed238 GIT binary patch literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx literal 0 HcmV?d00001 diff --git a/STM32F1/libraries/WireSlave/src/i2c_slave.c b/STM32F1/libraries/WireSlave/src/i2c_slave.c index 865949b36..82ade9a4b 100644 --- a/STM32F1/libraries/WireSlave/src/i2c_slave.c +++ b/STM32F1/libraries/WireSlave/src/i2c_slave.c @@ -158,6 +158,7 @@ void i2c_bus_reset(const i2c_dev *dev) { * @param dev Device to initialize. */ void i2c_init(i2c_dev *dev) { + rcc_reset_dev(dev->clk_id); rcc_clk_enable(dev->clk_id); _i2c_irq_priority_fixup(dev); @@ -197,8 +198,10 @@ void i2c_master_enable(i2c_dev *dev, uint32 flags) { i2c_init(dev); i2c_config_gpios(dev); - /* Configure clock and rise time */ - set_ccr_trise(dev, flags); + /* Configure clock and rise time, but only if in master mode */ + if (!(flags & (I2C_SLAVE_DUAL_ADDRESS|I2C_SLAVE_GENERAL_CALL))) { + set_ccr_trise(dev, flags); + } /* Enable event and buffer interrupts */ nvic_irq_enable(dev->ev_nvic_line); @@ -245,8 +248,9 @@ void i2c_master_enable(i2c_dev *dev, uint32 flags) { * Callback will be called before tx */ void i2c_slave_enable(i2c_dev *dev, uint32 flags) { + // TODO: Figure out why i2c_disable(I2C2) causes a crash when I2C1 is enabled i2c_disable(dev); - i2c_master_enable(dev, dev->config_flags | flags); + i2c_master_enable(dev, flags); } /** @@ -329,7 +333,8 @@ static inline int32 wait_for_state_change(i2c_dev *dev, */ /* - * IRQ handler for I2C master. Handles transmission/reception. + * IRQ handler for I2C master and slave. + * Handles transmission/reception. */ void _i2c_irq_handler(i2c_dev *dev) { /* WTFs: @@ -676,7 +681,7 @@ void _i2c_irq_error_handler(i2c_dev *dev) { I2C_SR1_OVR); /* Are we in slave mode? */ - if ((dev->regs->SR2 & I2C_SR2_MSL) != I2C_SR2_MSL) { + if (dev->config_flags & (I2C_SLAVE_DUAL_ADDRESS|I2C_SLAVE_GENERAL_CALL)) { /* Check to see if the master device did a NAK on the last bit * This is perfectly valid for a master to do this on the bus. * We ignore this. Any further error processing takes us into dead diff --git a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp deleted file mode 100644 index a30921179..000000000 --- a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp +++ /dev/null @@ -1,145 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file WireBase.cpp - * @author Trystan Jones - * @brief Wire library, following the majority of the interface from Arduino. - * Provides a 'standard' interface to I2C (two-wire) communication for - * derived classes. - */ - -/* - * Library created by crenn to allow a system which would provide users the - * 'standardised' Arduino method for interfacing with I2C devices regardless of - * whether it is I2C hardware or emulating software. - */ - -#include "WireBase_slave.h" -#include "wirish.h" - -void WireBase::begin(uint8 self_addr) { - tx_buf_idx = 0; - tx_buf_overflow = false; - rx_buf_idx = 0; - rx_buf_len = 0; -} - -void WireBase::beginTransmission(uint8 slave_address) { - itc_msg.addr = slave_address; - itc_msg.data = &tx_buf[tx_buf_idx]; - itc_msg.length = 0; - itc_msg.flags = 0; -} - -void WireBase::beginTransmission(int slave_address) { - beginTransmission((uint8)slave_address); -} - -uint8 WireBase::endTransmission(bool stop) { - uint8 retVal; - if (tx_buf_overflow) { - return EDATA; - } - retVal = process(stop);// Changed so that the return value from process is returned by this function see also the return line below - tx_buf_idx = 0; - tx_buf_overflow = false; - return retVal;//SUCCESS; -} - -uint8 WireBase::endTransmission(){ - endTransmission(true); -} - -//TODO: Add the ability to queue messages (adding a boolean to end of function -// call, allows for the Arduino style to stay while also giving the flexibility -// to bulk send -uint8 WireBase::requestFrom(uint8 address, int num_bytes) { - if (num_bytes > BUFFER_LENGTH) { - num_bytes = BUFFER_LENGTH; - } - itc_msg.addr = address; - itc_msg.flags = I2C_MSG_READ; - itc_msg.length = num_bytes; - itc_msg.data = &rx_buf[rx_buf_idx]; - process(); - rx_buf_len += itc_msg.xferred; - itc_msg.flags = 0; - return rx_buf_len; -} - -uint8 WireBase::requestFrom(int address, int numBytes) { - return WireBase::requestFrom((uint8)address, numBytes); -} - -void WireBase::write(uint8 value) { - if (tx_buf_idx == BUFFER_LENGTH) { - tx_buf_overflow = true; - return; - } - tx_buf[tx_buf_idx++] = value; - itc_msg.length++; -} - -void WireBase::write(uint8* buf, int len) { - for (uint8 i = 0; i < len; i++) { - write(buf[i]); - } -} - -void WireBase::write(int value) { - write((uint8)value); -} - -void WireBase::write(int* buf, int len) { - write((uint8*)buf, (uint8)len); -} - -void WireBase::write(char* buf) { - uint8 *ptr = (uint8*)buf; - while (*ptr) { - write(*ptr); - ptr++; - } -} - -uint8 WireBase::available() { - return rx_buf_len - rx_buf_idx; -} - -uint8 WireBase::read() { - if (rx_buf_idx == rx_buf_len) { - rx_buf_idx = 0; - rx_buf_len = 0; - return 0; - } else if (rx_buf_idx == (rx_buf_len-1)) { - uint8 temp = rx_buf[rx_buf_idx]; - rx_buf_idx = 0; - rx_buf_len = 0; - return temp; - } - return rx_buf[rx_buf_idx++]; -} diff --git a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h deleted file mode 100644 index 31f3f8cee..000000000 --- a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h +++ /dev/null @@ -1,145 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file WireBase.h - * @author Trystan Jones - * @brief Wire library, following the majority of the interface from Arduino. - * Provides a 'standard' interface to I2C (two-wire) communication for - * derived classes. - */ - -/* - * Library created by crenn to allow a system which would provide users the - * 'standardised' Arduino method for interfacing with I2C devices regardless of - * whether it is I2C hardware or emulating software. - */ - -#ifndef _WIREBASE_H_ -#define _WIREBASE_H_ - -#include "wirish.h" -#include - -#define BUFFER_LENGTH 32 - -/* return codes from endTransmission() */ -#define SUCCESS 0 /* transmission was successful */ -#define EDATA 1 /* too much data */ -#define ENACKADDR 2 /* received nack on transmit of address */ -#define ENACKTRNS 3 /* received nack on transmit of data */ -#define EOTHER 4 /* other error */ - -class WireBase { // Abstraction is awesome! -protected: - i2c_msg itc_msg; - uint8 rx_buf[BUFFER_LENGTH]; /* receive buffer */ - uint8 rx_buf_idx; /* first unread idx in rx_buf */ - uint8 rx_buf_len; /* number of bytes read */ - - uint8 tx_buf[BUFFER_LENGTH]; /* transmit buffer */ - uint8 tx_buf_idx; // next idx available in tx_buf, -1 overflow - boolean tx_buf_overflow; - - // Force derived classes to define process function - virtual uint8 process(uint8) = 0; - virtual uint8 process() = 0; -public: - WireBase() {} - ~WireBase() {} - - /* - * Initialises the class interface - */ - // Allow derived classes to overwrite begin function - virtual void begin(uint8 = 0x00); - - /* - * Sets up the transmission message to be processed - */ - void beginTransmission(uint8); - - /* - * Allow only 8 bit addresses to be used - */ - void beginTransmission(int); - - /* - * Call the process function to process the message if the TX - * buffer has not overflowed. - */ - uint8 endTransmission(bool); - uint8 endTransmission(void); - - /* - * Request bytes from a slave device and process the request, - * storing into the receiving buffer. - */ - uint8 requestFrom(uint8, int); - - /* - * Allow only 8 bit addresses to be used when requesting bytes - */ - uint8 requestFrom(int, int); - - /* - * Stack up bytes to be sent when transmitting - */ - void write(uint8); - - /* - * Stack up bytes from the array to be sent when transmitting - */ - void write(uint8*, int); - - /* - * Ensure that a sending data will only be 8-bit bytes - */ - void write(int); - - /* - * Ensure that an array sending data will only be 8-bit bytes - */ - void write(int*, int); - - /* - * Stack up bytes from a string to be sent when transmitting - */ - void write(char*); - - /* - * Return the amount of bytes that is currently in the receiving buffer - */ - uint8 available(); - - /* - * Return the value of byte in the receiving buffer that is currently being - * pointed to - */ - uint8 read(); -}; - -#endif // _WIREBASE_H_ From 4ad4de080fd87bcdb0f176959bd74c8293ecc3e3 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 22 Dec 2017 20:04:24 +0100 Subject: [PATCH 034/373] Saved some 50K flash memory by modifying the singleton implementation --- STM32F1/libraries/WireSlave/src/Wire_slave.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp index 75e753f5c..2cdb1570c 100644 --- a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp @@ -492,14 +492,20 @@ TwoWire& Wire1 = TwoWire::getInstance1(); //SCL: D1 SDA: D0 // Static methods ////////////////////////////////////////////////////////////// TwoWire& TwoWire::getInstance(){ - static TwoWire instance(I2C1); - return instance; + static TwoWire* instance = nullptr; + if (!instance) { + instance = new TwoWire(I2C1); + } + return *instance; } #if WIRE_INTERFACES_COUNT > 1 TwoWire& TwoWire::getInstance1(){ - static TwoWire instance(I2C2); - return instance; + static TwoWire* instance = nullptr; + if (!instance) { + instance = new TwoWire(I2C2); + } + return *instance; } #endif From 01c23b6a5828607734f872ddf5861f5df2797175 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 22 Dec 2017 20:33:00 +0100 Subject: [PATCH 035/373] Changed type of transmitting to bool (from uint8_t) --- STM32F1/libraries/WireSlave/src/Wire_slave.cpp | 6 +++--- STM32F1/libraries/WireSlave/src/Wire_slave.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp index 2cdb1570c..9bb989718 100644 --- a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp @@ -69,7 +69,7 @@ void TwoWire::begin(uint8_t address){ txBufferLength = 0; allocateTxBuffer(BUFFER_LENGTH); - transmitting = 0; + transmitting = false; master = (address == MASTER_ADDRESS); @@ -220,7 +220,7 @@ uint8_t TwoWire::requestFrom(int address, int quantity, void TwoWire::beginTransmission(uint8_t address) { // indicate that we are transmitting - transmitting = 1; + transmitting = true; // reset tx buffer iterator vars txBufferIndex = 0; @@ -270,7 +270,7 @@ uint8_t TwoWire::endTransmission(uint8_t sendStop) { txBufferLength = 0; // indicate that we are done transmitting - transmitting = 0; + transmitting = false; } return ret; diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.h b/STM32F1/libraries/WireSlave/src/Wire_slave.h index ff71228c6..131acebb8 100644 --- a/STM32F1/libraries/WireSlave/src/Wire_slave.h +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.h @@ -60,7 +60,7 @@ class TwoWire: public Stream { uint8_t txBufferIndex; uint8_t txBufferLength; - uint8_t transmitting; + bool transmitting; bool master; From b9dbeb69d9dee7330435af9b5e30e99be6423265 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 29 Dec 2017 12:04:29 +0100 Subject: [PATCH 036/373] Fixed minor example issues --- .../i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino | 2 +- .../WireSlave/examples/slave_receiver/slave_receiver.ino | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino index a63ff3c98..fd059c121 100644 --- a/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino +++ b/STM32F1/libraries/WireSlave/examples/i2c_libmaple_slave_reader/i2c_libmaple_slave_reader.ino @@ -53,7 +53,7 @@ void functx(i2c_msg *msg){ void setup() { Serial.begin(115200); - Serial.println("I2C Slave example"); + Serial.println("libmaple I2C slave reader example"); // attach the buffer msg.data = buffer; diff --git a/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino b/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino index 5d71b9a20..bf9f255f8 100644 --- a/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino +++ b/STM32F1/libraries/WireSlave/examples/slave_receiver/slave_receiver.ino @@ -11,7 +11,6 @@ #include -#define Serial Serial1 void setup(){ Serial.begin(115200); // start serial for output From 4e820c3649fbe4238bdef67dad393967a76b6873 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 29 Dec 2017 12:13:17 +0100 Subject: [PATCH 037/373] Full method signatures in header file. I don't understand why anyone wants to remove useful API information from the header file. CPP files describes implementation details, header files describes the API. --- STM32F1/libraries/WireSlave/src/Wire_slave.h | 50 ++++++++++---------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.h b/STM32F1/libraries/WireSlave/src/Wire_slave.h index 131acebb8..a99ab412e 100644 --- a/STM32F1/libraries/WireSlave/src/Wire_slave.h +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.h @@ -69,7 +69,7 @@ class TwoWire: public Stream { i2c_msg itc_slave_msg; void (*user_onRequest)(void); - void (*user_onReceive)(int); + void (*user_onReceive)(int quantity); void allocateRxBuffer(size_t length); void allocateTxBuffer(size_t length); @@ -96,47 +96,49 @@ class TwoWire: public Stream { TwoWire& operator=(TwoWire&&) = delete; public: + // return the 'Wire' instance (using I2C1) static TwoWire& getInstance(); #if WIRE_INTERFACES_COUNT > 1 + // return the 'Wire1' instance (using I2C2) static TwoWire& getInstance1(); #endif - void begin(); - void begin(uint8_t); - void begin(int); + void begin(); // master mode + void begin(uint8_t myAddress); //slave mode + void begin(int myAddress); //slave mode void end(); - void setClock(uint32_t); - void beginTransmission(uint8_t); - void beginTransmission(int); + void setClock(uint32_t frequencyHz); + void beginTransmission(uint8_t slaveAddress); + void beginTransmission(int slaveAddress); uint8_t endTransmission(void); - uint8_t endTransmission(uint8_t); + uint8_t endTransmission(uint8_t sendStop); - uint8_t requestFrom(uint8_t, uint8_t); - uint8_t requestFrom(uint8_t, uint8_t, uint8_t); - uint8_t requestFrom(uint8_t, uint8_t, uint32_t, uint8_t, uint8_t); - uint8_t requestFrom(int, int); - uint8_t requestFrom(int, int, int); + uint8_t requestFrom(uint8_t slaveAddress, uint8_t quantity); + uint8_t requestFrom(uint8_t slaveAddress, uint8_t quantity, uint8_t sendStop); + uint8_t requestFrom(uint8_t slaveAddress, uint8_t num_bytes, uint32_t iaddress, uint8_t isize, uint8_t sendStop); + uint8_t requestFrom(int slaveAddress, int quantity); + uint8_t requestFrom(int slaveAddress, int quantity, int sendStop); - virtual size_t write(uint8_t); - virtual size_t write(const uint8_t *, size_t); + virtual size_t write(uint8_t data); + virtual size_t write(const uint8_t *data, size_t quantity); virtual int available(void); virtual int read(void); virtual int peek(void); virtual void flush(void); - void onReceive(void (*)(int)); + void onReceive(void (*)(int quantity)); void onRequest(void (*)(void)); - inline size_t write(unsigned long n) { - return write((uint8_t) n); + inline size_t write(unsigned long data) { + return write((uint8_t) data); } - inline size_t write(long n) { - return write((uint8_t) n); + inline size_t write(long data) { + return write((uint8_t) data); } - inline size_t write(unsigned int n) { - return write((uint8_t) n); + inline size_t write(unsigned int data) { + return write((uint8_t) data); } - inline size_t write(int n) { - return write((uint8_t) n); + inline size_t write(int data) { + return write((uint8_t) data); } using Print::write; }; From daf62cafcaf044836945a6d6553180b8da00e927 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 29 Dec 2017 12:15:26 +0100 Subject: [PATCH 038/373] Removed a redundant buffer constraint --- STM32F1/libraries/WireSlave/src/Wire_slave.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp index 9bb989718..5fb84f5ba 100644 --- a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp @@ -177,10 +177,6 @@ uint8 TwoWire::requestFrom(uint8_t address, uint8_t num_bytes, rxBufferIndex = 0; rxBufferLength = 0; - if (num_bytes > BUFFER_LENGTH) { - num_bytes = BUFFER_LENGTH; - } - itc_msg.addr = address; itc_msg.flags = I2C_MSG_READ; itc_msg.length = num_bytes; @@ -211,8 +207,7 @@ uint8_t TwoWire::requestFrom(int address, int quantity) { (uint8_t) 0, (uint8_t) true); } -uint8_t TwoWire::requestFrom(int address, int quantity, - int sendStop) { +uint8_t TwoWire::requestFrom(int address, int quantity, int sendStop) { return requestFrom((uint8_t) address, (uint8_t) quantity, (uint32_t) 0, (uint8_t) 0, (bool) sendStop); } From 2b6e1398847561b5604b397c245b01535e1168a3 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 1 Dec 2017 11:43:42 +0100 Subject: [PATCH 039/373] According to STM32F103 RM0008: TIMx_CCMR1::CC2S=01 -> channel is configured as input, IC2 is mapped on TI2. --- STM32F1/system/libmaple/include/libmaple/timer.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index 2c83e5e81..ea7484e71 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -394,8 +394,8 @@ extern timer_dev timer14; #define TIMER_CCMR1_IC2PSC (0x3 << 10) #define TIMER_CCMR1_CC2S (0x3 << 8) #define TIMER_CCMR1_CC2S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) -#define TIMER_CCMR1_CC2S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) -#define TIMER_CCMR1_CC2S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) +#define TIMER_CCMR1_CC2S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI2 << 8) +#define TIMER_CCMR1_CC2S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI1 << 8) #define TIMER_CCMR1_CC2S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) #define TIMER_CCMR1_OC1CE (1U << TIMER_CCMR1_OC1CE_BIT) #define TIMER_CCMR1_OC1M (0x3 << 4) From 388995efbba555b742ba7652399c05c1ce1678d3 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Fri, 1 Dec 2017 15:55:27 +0100 Subject: [PATCH 040/373] Adhere to the format of #323 --- STM32F1/system/libmaple/include/libmaple/timer.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index ea7484e71..64f458f1d 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -393,10 +393,10 @@ extern timer_dev timer14; #define TIMER_CCMR1_OC2FE (1U << TIMER_CCMR1_OC2FE_BIT) #define TIMER_CCMR1_IC2PSC (0x3 << 10) #define TIMER_CCMR1_CC2S (0x3 << 8) -#define TIMER_CCMR1_CC2S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) -#define TIMER_CCMR1_CC2S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI2 << 8) -#define TIMER_CCMR1_CC2S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI1 << 8) -#define TIMER_CCMR1_CC2S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) +#define TIMER_CCMR1_CC2S_OUTPUT (0x0 << 8) +#define TIMER_CCMR1_CC2S_INPUT_TI2 (0x1 << 8) +#define TIMER_CCMR1_CC2S_INPUT_TI1 (0x2 << 8) +#define TIMER_CCMR1_CC2S_INPUT_TRC (0x3 << 8) #define TIMER_CCMR1_OC1CE (1U << TIMER_CCMR1_OC1CE_BIT) #define TIMER_CCMR1_OC1M (0x3 << 4) #define TIMER_CCMR1_IC1F (0xF << 4) From 1b8b05c883b9c3713be7ec8210af903220a58667 Mon Sep 17 00:00:00 2001 From: Lacklustrlabs Date: Tue, 23 Jan 2018 13:19:39 +0100 Subject: [PATCH 041/373] Added platform.local.txt and boards.local.txt to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 078faf600..ef5aee566 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ other/maple-bootloader/*~ *.o *.bak *.1 +platform.local.txt +boards.local.txt From 495f3b9cb5787038eb4a1ad066576fd75fa0a0dc Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Wed, 15 Nov 2017 23:23:37 +0100 Subject: [PATCH 042/373] Fixed 'warning: multi-line comment [-Wcomment]' --- STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c index 1f0b626a8..7ebd03b76 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c @@ -62,7 +62,7 @@ #if !(defined(BOARD_maple) || defined(BOARD_maple_RET6) || \ defined(BOARD_maple_mini) || defined(BOARD_maple_native)) -//#warning USB CDC ACM relies on LeafLabs board-specific configuration.\ +//#warning USB CDC ACM relies on LeafLabs board-specific configuration. // You may have problems on non-LeafLabs boards. #endif From 6f1429175cb5723e0bf3ec09c89950ae1f5b9cff Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Wed, 24 Jan 2018 07:39:35 +1100 Subject: [PATCH 043/373] Manually committed RTClock files, due to problems with PR https://github.com/rogerclarkmelbourne/Arduino_STM32/pull/428 --- STM32F1/libraries/RTClock/src/RTClock.cpp | 2 +- STM32F1/libraries/RTClock/src/RTClock.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/RTClock/src/RTClock.cpp b/STM32F1/libraries/RTClock/src/RTClock.cpp index e95bead86..f6907edd1 100755 --- a/STM32F1/libraries/RTClock/src/RTClock.cpp +++ b/STM32F1/libraries/RTClock/src/RTClock.cpp @@ -111,7 +111,7 @@ void RTClock::breakTime(time_t timeInput, tm_t & tmm) time /= 60; // now it is hours tmm.hour = time % 24; time /= 24; // now it is days - tmm.weekday = ((time + 4) % 7); // Monday is day 1 // + 1; // Sunday is day 1 + tmm.weekday = ((time + 3) % 7); // Monday is day 1 year = 0; days = 0; diff --git a/STM32F1/libraries/RTClock/src/RTClock.h b/STM32F1/libraries/RTClock/src/RTClock.h index 71015a586..1988c9eef 100755 --- a/STM32F1/libraries/RTClock/src/RTClock.h +++ b/STM32F1/libraries/RTClock/src/RTClock.h @@ -27,7 +27,7 @@ typedef struct tm_t { uint8_t year; // years since 1970 uint8_t month; // month of a year - [ 1 to 12 ] uint8_t day; // day of a month - [ 1 to 31 ] - uint8_t weekday; // day of a week (first day is Sunday) - [ 0 to 6 ] + uint8_t weekday; // day of a week (first day is Monday) - [ 0 to 6 ] uint8_t pm; // AM: 0, PM: 1 uint8_t hour; // hour of a day - [ 0 to 23 ] uint8_t minute; // minute of an hour - [ 0 to 59 ] From ccd94bd9fabad1c0d980e9b3970e282051c3bf18 Mon Sep 17 00:00:00 2001 From: aster94 Date: Wed, 24 Jan 2018 19:20:06 +0100 Subject: [PATCH 044/373] Add files via upload --- STM32F1/libraries/A_STM32_Examples/keywords.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/STM32F1/libraries/A_STM32_Examples/keywords.txt b/STM32F1/libraries/A_STM32_Examples/keywords.txt index e40a09928..c553422d8 100644 --- a/STM32F1/libraries/A_STM32_Examples/keywords.txt +++ b/STM32F1/libraries/A_STM32_Examples/keywords.txt @@ -10,3 +10,7 @@ # Constants (LITERAL1) ####################################### +OUTPUT_OPEN_DRAIN LITERAL1 +INPUT_ANALOG LITERAL1 +INPUT_PULLDOWN LITERAL1 +PWM LITERAL1 \ No newline at end of file From 632af3ec9ff9e920b2c6bc198cc2f82fd0e14798 Mon Sep 17 00:00:00 2001 From: Vincenzo Gibiino Date: Wed, 24 Jan 2018 20:33:11 +0100 Subject: [PATCH 045/373] stm32duino now uses __IO --- STM32F1/cores/maple/libmaple/adc_f1.c | 4 +- STM32F1/cores/maple/libmaple/bkp_f1.c | 8 +- STM32F1/cores/maple/libmaple/dma.c | 2 +- STM32F1/cores/maple/libmaple/dma_f1.c | 10 +- STM32F1/cores/maple/libmaple/exti.c | 2 +- STM32F1/cores/maple/libmaple/gpio_f1.c | 4 +- STM32F1/cores/maple/libmaple/rcc.c | 4 +- STM32F1/cores/maple/libmaple/rcc_f1.c | 6 +- .../cores/maple/stm32f1/wiring_pulse_f1.cpp | 2 +- STM32F1/libraries/EEPROM/EEPROM.cpp | 42 +++--- STM32F1/libraries/EEPROM/flash_stm32.c | 4 +- .../libraries/RTClock/src/utility/rtc_util.h | 20 +-- .../WireSlave/src/libmaple/i2c_slave.h | 18 +-- STM32F1/system/libmaple/dma_private.h | 2 +- STM32F1/system/libmaple/exti_private.h | 2 +- .../system/libmaple/include/libmaple/adc.h | 40 +++--- .../system/libmaple/include/libmaple/bkp.h | 90 ++++++------ .../system/libmaple/include/libmaple/dma.h | 8 +- .../system/libmaple/include/libmaple/exti.h | 12 +- .../system/libmaple/include/libmaple/fsmc.h | 60 ++++---- .../system/libmaple/include/libmaple/i2c.h | 18 +-- .../system/libmaple/include/libmaple/iwdg.h | 8 +- .../include/libmaple/libmaple_types.h | 2 +- .../system/libmaple/include/libmaple/nvic.h | 14 +- .../system/libmaple/include/libmaple/pwr.h | 4 +- .../libmaple/include/libmaple/ring_buffer.h | 2 +- .../system/libmaple/include/libmaple/scb.h | 38 +++--- .../system/libmaple/include/libmaple/sdio.h | 28 ++-- .../system/libmaple/include/libmaple/spi.h | 18 +-- .../system/libmaple/include/libmaple/syscfg.h | 8 +- .../libmaple/include/libmaple/systick.h | 8 +- .../system/libmaple/include/libmaple/timer.h | 62 ++++----- .../system/libmaple/include/libmaple/usart.h | 14 +- STM32F1/system/libmaple/rcc_private.h | 12 +- .../libmaple/stm32f1/include/series/dac.h | 26 ++-- .../libmaple/stm32f1/include/series/dma.h | 74 +++++----- .../libmaple/stm32f1/include/series/flash.h | 16 +-- .../libmaple/stm32f1/include/series/gpio.h | 30 ++-- .../libmaple/stm32f1/include/series/rcc.h | 20 +-- .../libmaple/stm32f1/include/series/timer.h | 36 ++--- .../libmaple/stm32f2/include/series/adc.h | 6 +- .../libmaple/stm32f2/include/series/dac.h | 28 ++-- .../libmaple/stm32f2/include/series/dma.h | 128 +++++++++--------- .../libmaple/stm32f2/include/series/flash.h | 12 +- .../libmaple/stm32f2/include/series/gpio.h | 20 +-- .../libmaple/stm32f2/include/series/rcc.h | 46 +++---- .../libmaple/stm32f2/include/series/timer.h | 38 +++--- .../system/libmaple/usb/stm32f1/usb_reg_map.h | 54 ++++---- STM32F3/cores/maple/libmaple/bkp.c | 4 +- STM32F3/cores/maple/libmaple/dma.c | 2 +- STM32F3/cores/maple/libmaple/dma_private.h | 2 +- STM32F3/cores/maple/libmaple/exti.c | 2 +- STM32F3/cores/maple/libmaple/exti_private.h | 2 +- .../maple/libmaple/include/libmaple/bkp.h | 2 +- .../maple/libmaple/include/libmaple/dma.h | 8 +- .../maple/libmaple/include/libmaple/exti.h | 12 +- .../maple/libmaple/include/libmaple/fsmc.h | 60 ++++---- .../maple/libmaple/include/libmaple/iwdg.h | 8 +- .../include/libmaple/libmaple_types.h | 2 +- .../maple/libmaple/include/libmaple/nvic.h | 14 +- .../maple/libmaple/include/libmaple/pwr.h | 4 +- .../libmaple/include/libmaple/ring_buffer.h | 2 +- .../maple/libmaple/include/libmaple/scb.h | 38 +++--- .../maple/libmaple/include/libmaple/spi.h | 18 +-- .../maple/libmaple/include/libmaple/systick.h | 8 +- .../maple/libmaple/include/libmaple/timer.h | 62 ++++----- STM32F3/cores/maple/libmaple/rcc.c | 4 +- STM32F3/cores/maple/libmaple/rcc_private.h | 8 +- STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c | 2 +- STM32F3/cores/maple/libmaple/stm32f3/f3_bkp.c | 2 +- STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c | 6 +- .../cores/maple/libmaple/stm32f3/f3_gpio.c | 2 +- STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c | 4 +- STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c | 8 +- .../libmaple/stm32f3/include/series/adc.h | 60 ++++---- .../libmaple/stm32f3/include/series/bkp.h | 32 ++--- .../libmaple/stm32f3/include/series/comp.h | 2 +- .../libmaple/stm32f3/include/series/crc.h | 10 +- .../libmaple/stm32f3/include/series/dac.h | 26 ++-- .../libmaple/stm32f3/include/series/dma.h | 70 +++++----- .../libmaple/stm32f3/include/series/flash.h | 16 +-- .../libmaple/stm32f3/include/series/fpu.h | 8 +- .../libmaple/stm32f3/include/series/gpio.h | 22 +-- .../libmaple/stm32f3/include/series/i2c.h | 22 +-- .../libmaple/stm32f3/include/series/opamp.h | 2 +- .../libmaple/stm32f3/include/series/rcc.h | 26 ++-- .../libmaple/stm32f3/include/series/syscfg.h | 8 +- .../libmaple/stm32f3/include/series/timer.h | 36 ++--- .../libmaple/stm32f3/include/series/usart.h | 22 +-- .../cores/maple/libmaple/usb/usb_reg_map.h | 54 ++++---- STM32F4/cores/maple/libmaple/adc.c | 4 +- STM32F4/cores/maple/libmaple/adc.h | 46 +++---- STM32F4/cores/maple/libmaple/bkp.c | 8 +- STM32F4/cores/maple/libmaple/bkp.h | 90 ++++++------ STM32F4/cores/maple/libmaple/dac.h | 26 ++-- STM32F4/cores/maple/libmaple/dmaF4.h | 26 ++-- STM32F4/cores/maple/libmaple/exti.h | 12 +- STM32F4/cores/maple/libmaple/flash.h | 16 +-- STM32F4/cores/maple/libmaple/fsmc.h | 60 ++++---- STM32F4/cores/maple/libmaple/gpio.h | 2 +- STM32F4/cores/maple/libmaple/gpioF4.c | 2 +- STM32F4/cores/maple/libmaple/gpio_def.h | 34 ++--- STM32F4/cores/maple/libmaple/i2c.h | 18 +-- STM32F4/cores/maple/libmaple/iwdg.h | 8 +- STM32F4/cores/maple/libmaple/libmaple_types.h | 2 +- STM32F4/cores/maple/libmaple/nvic.h | 14 +- STM32F4/cores/maple/libmaple/pwr.h | 4 +- STM32F4/cores/maple/libmaple/rccF4.c | 28 ++-- STM32F4/cores/maple/libmaple/rccF4.h | 46 +++---- STM32F4/cores/maple/libmaple/ring_buffer.h | 2 +- STM32F4/cores/maple/libmaple/scb.h | 38 +++--- STM32F4/cores/maple/libmaple/sdio.h | 28 ++-- STM32F4/cores/maple/libmaple/spi.h | 18 +-- STM32F4/cores/maple/libmaple/systick.h | 8 +- STM32F4/cores/maple/libmaple/timer.h | 98 +++++++------- STM32F4/cores/maple/libmaple/usart.h | 14 +- STM32F4/libraries/RTClock/src/RTClock.h | 40 +++--- tools/win/dfu-util-0.9-win64/dfu-prefix.exe | Bin 178765 -> 178765 bytes tools/win/dfu-util-0.9-win64/dfu-suffix.exe | Bin 179276 -> 179276 bytes .../dfu-util-0.9-win64/dfu-util-static.exe | Bin 799602 -> 799602 bytes tools/win/dfu-util-0.9-win64/dfu-util.exe | Bin 290852 -> 290852 bytes tools/win/dfu-util-0.9-win64/libusb-1.0.dll | Bin 638611 -> 638611 bytes tools/win/dfu-util.exe | Bin 1146937 -> 1146937 bytes tools/win/stlink/ST-LINK_CLI.exe | Bin 267264 -> 267264 bytes tools/win/stm32flash.exe | Bin 160128 -> 160128 bytes 125 files changed, 1252 insertions(+), 1252 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/adc_f1.c b/STM32F1/cores/maple/libmaple/adc_f1.c index 5305b02af..8cb4b4a1a 100644 --- a/STM32F1/cores/maple/libmaple/adc_f1.c +++ b/STM32F1/cores/maple/libmaple/adc_f1.c @@ -175,8 +175,8 @@ void adc_attach_interrupt(adc_dev *dev, * @param dev adc device */ void adc_calibrate(adc_dev *dev) { - __io uint32 *rstcal_bit = bb_perip(&(dev->regs->CR2), 3); - __io uint32 *cal_bit = bb_perip(&(dev->regs->CR2), 2); + __IO uint32 *rstcal_bit = bb_perip(&(dev->regs->CR2), 3); + __IO uint32 *cal_bit = bb_perip(&(dev->regs->CR2), 2); *rstcal_bit = 1; while (*rstcal_bit) diff --git a/STM32F1/cores/maple/libmaple/bkp_f1.c b/STM32F1/cores/maple/libmaple/bkp_f1.c index 01ad419ab..741f5eb90 100644 --- a/STM32F1/cores/maple/libmaple/bkp_f1.c +++ b/STM32F1/cores/maple/libmaple/bkp_f1.c @@ -34,7 +34,7 @@ #include #include -static inline __io uint32* data_register(uint8 reg); +static inline __IO uint32* data_register(uint8 reg); bkp_dev bkp = { .regs = BKP_BASE, @@ -78,7 +78,7 @@ void bkp_disable_writes(void) { * medium-density devices, 42 on high-density devices). */ uint16 bkp_read(uint8 reg) { - __io uint32* dr = data_register(reg); + __IO uint32* dr = data_register(reg); if (!dr) { ASSERT(0); /* nonexistent register */ return 0; @@ -97,7 +97,7 @@ uint16 bkp_read(uint8 reg) { * @see bkp_enable_writes() */ void bkp_write(uint8 reg, uint16 val) { - __io uint32* dr = data_register(reg); + __IO uint32* dr = data_register(reg); if (!dr) { ASSERT(0); /* nonexistent register */ return; @@ -112,7 +112,7 @@ void bkp_write(uint8 reg, uint16 val) { */ #define NR_LOW_DRS 10 -static inline __io uint32* data_register(uint8 reg) { +static inline __IO uint32* data_register(uint8 reg) { if (reg < 1 || reg > BKP_NR_DATA_REGS) { return 0; } diff --git a/STM32F1/cores/maple/libmaple/dma.c b/STM32F1/cores/maple/libmaple/dma.c index d13de1081..1dc875e3b 100644 --- a/STM32F1/cores/maple/libmaple/dma.c +++ b/STM32F1/cores/maple/libmaple/dma.c @@ -52,7 +52,7 @@ void dma_init(dma_dev *dev) { * Private API */ -enum dma_atype _dma_addr_type(__io void *addr) { +enum dma_atype _dma_addr_type(__IO void *addr) { switch (stm32_block_purpose((void*)addr)) { /* Notice we're treating the code block as memory here. That's * correct for addresses in Flash and in [0x0, 0x7FFFFFF] diff --git a/STM32F1/cores/maple/libmaple/dma_f1.c b/STM32F1/cores/maple/libmaple/dma_f1.c index c7c3c0072..33dc0ef77 100644 --- a/STM32F1/cores/maple/libmaple/dma_f1.c +++ b/STM32F1/cores/maple/libmaple/dma_f1.c @@ -86,7 +86,7 @@ static int cfg_dev_ok(dma_dev *dev, dma_tube_config *cfg) { } /* Is addr acceptable for use as DMA src/dst? */ -static int cfg_mem_ok(__io void *addr) { +static int cfg_mem_ok(__IO void *addr) { enum dma_atype atype = _dma_addr_type(addr); return atype == DMA_ATYPE_MEM || atype == DMA_ATYPE_PER; } @@ -293,7 +293,7 @@ dma_irq_cause dma_get_irq_cause(dma_dev *dev, dma_channel channel) { return DMA_TRANSFER_ERROR; } -void dma_set_mem_addr(dma_dev *dev, dma_channel channel, __io void *addr) { +void dma_set_mem_addr(dma_dev *dev, dma_channel channel, __IO void *addr) { dma_channel_reg_map *chan_regs; ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); @@ -302,7 +302,7 @@ void dma_set_mem_addr(dma_dev *dev, dma_channel channel, __io void *addr) { chan_regs->CMAR = (uint32)addr; } -void dma_set_per_addr(dma_dev *dev, dma_channel channel, __io void *addr) { +void dma_set_per_addr(dma_dev *dev, dma_channel channel, __IO void *addr) { dma_channel_reg_map *chan_regs; ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); @@ -343,9 +343,9 @@ void dma_set_per_addr(dma_dev *dev, dma_channel channel, __io void *addr) { */ void dma_setup_transfer(dma_dev *dev, dma_channel channel, - __io void *peripheral_address, + __IO void *peripheral_address, dma_xfer_size peripheral_size, - __io void *memory_address, + __IO void *memory_address, dma_xfer_size memory_size, uint32 mode) { dma_channel_reg_map *channel_regs = dma_channel_regs(dev, channel); diff --git a/STM32F1/cores/maple/libmaple/exti.c b/STM32F1/cores/maple/libmaple/exti.c index 402bec655..c8836a7b0 100644 --- a/STM32F1/cores/maple/libmaple/exti.c +++ b/STM32F1/cores/maple/libmaple/exti.c @@ -200,7 +200,7 @@ void exti_detach_interrupt(exti_num num) { * Private routines */ -void exti_do_select(__io uint32 *exti_cr, exti_num num, exti_cfg port) { +void exti_do_select(__IO uint32 *exti_cr, exti_num num, exti_cfg port) { uint32 shift = 4 * (num % 4); uint32 cr = *exti_cr; cr &= ~(0xF << shift); diff --git a/STM32F1/cores/maple/libmaple/gpio_f1.c b/STM32F1/cores/maple/libmaple/gpio_f1.c index 6de16f55a..464683f09 100644 --- a/STM32F1/cores/maple/libmaple/gpio_f1.c +++ b/STM32F1/cores/maple/libmaple/gpio_f1.c @@ -123,7 +123,7 @@ void gpio_init_all(void) { */ void gpio_set_mode(gpio_dev *dev, uint8 pin, gpio_pin_mode mode) { gpio_reg_map *regs = dev->regs; - __io uint32 *cr = ®s->CRL + (pin >> 3); + __IO uint32 *cr = ®s->CRL + (pin >> 3); uint32 shift = (pin & 0x7) * 4; uint32 tmp = *cr; @@ -140,7 +140,7 @@ void gpio_set_mode(gpio_dev *dev, uint8 pin, gpio_pin_mode mode) { gpio_pin_mode gpio_get_mode(gpio_dev *dev, uint8 pin) { gpio_reg_map *regs = dev->regs; - __io uint32 *cr = ®s->CRL + (pin >> 3); + __IO uint32 *cr = ®s->CRL + (pin >> 3); uint32 shift = (pin & 0x7) * 4; uint32 crMode = (*cr>>shift) & 0x0F; diff --git a/STM32F1/cores/maple/libmaple/rcc.c b/STM32F1/cores/maple/libmaple/rcc.c index 8e7d1ea7d..aba87c006 100644 --- a/STM32F1/cores/maple/libmaple/rcc.c +++ b/STM32F1/cores/maple/libmaple/rcc.c @@ -94,8 +94,8 @@ void rcc_switch_sysclk(rcc_sysclk_src sysclk_src) { * won't work for you. */ /* Returns the RCC register which controls the clock source. */ -static inline __io uint32* rcc_clk_reg(rcc_clk clock) { - return (__io uint32*)((__io uint8*)RCC_BASE + (clock >> 8)); +static inline __IO uint32* rcc_clk_reg(rcc_clk clock) { + return (__IO uint32*)((__IO uint8*)RCC_BASE + (clock >> 8)); } /* Returns a mask in rcc_clk_reg(clock) to be used for turning the diff --git a/STM32F1/cores/maple/libmaple/rcc_f1.c b/STM32F1/cores/maple/libmaple/rcc_f1.c index f45f670e1..ca6792830 100644 --- a/STM32F1/cores/maple/libmaple/rcc_f1.c +++ b/STM32F1/cores/maple/libmaple/rcc_f1.c @@ -136,7 +136,7 @@ void rcc_configure_pll(rcc_pll_cfg *pll_cfg) { } void rcc_clk_enable(rcc_clk_id id) { - static __io uint32* enable_regs[] = { + static __IO uint32* enable_regs[] = { [APB1] = &RCC_BASE->APB1ENR, [APB2] = &RCC_BASE->APB2ENR, [AHB] = &RCC_BASE->AHBENR, @@ -145,7 +145,7 @@ void rcc_clk_enable(rcc_clk_id id) { } void rcc_reset_dev(rcc_clk_id id) { - static __io uint32* reset_regs[] = { + static __IO uint32* reset_regs[] = { [APB1] = &RCC_BASE->APB1RSTR, [APB2] = &RCC_BASE->APB2RSTR, }; @@ -164,7 +164,7 @@ void rcc_set_prescaler(rcc_prescaler prescaler, uint32 divider) { } void rcc_clk_disable(rcc_clk_id id) { - static __io uint32* enable_regs[] = { + static __IO uint32* enable_regs[] = { [APB1] = &RCC_BASE->APB1ENR, [APB2] = &RCC_BASE->APB2ENR, [AHB] = &RCC_BASE->AHBENR, diff --git a/STM32F1/cores/maple/stm32f1/wiring_pulse_f1.cpp b/STM32F1/cores/maple/stm32f1/wiring_pulse_f1.cpp index 5a5d8358e..bb7e2adc4 100644 --- a/STM32F1/cores/maple/stm32f1/wiring_pulse_f1.cpp +++ b/STM32F1/cores/maple/stm32f1/wiring_pulse_f1.cpp @@ -33,7 +33,7 @@ uint32_t pulseIn( uint32_t pin, uint32_t state, uint32_t timeout ) // pulse width measuring loop and achieve finer resolution. calling // digitalRead() instead yields much coarser resolution. - __io uint32_t * const idr = portInputRegister(digitalPinToPort(pin)); + __IO uint32_t * const idr = portInputRegister(digitalPinToPort(pin)); const uint32_t bit = digitalPinToBitMask(pin); const uint32_t stateMask = (state ? bit:0); diff --git a/STM32F1/libraries/EEPROM/EEPROM.cpp b/STM32F1/libraries/EEPROM/EEPROM.cpp index 289a93ad8..ed4d04618 100644 --- a/STM32F1/libraries/EEPROM/EEPROM.cpp +++ b/STM32F1/libraries/EEPROM/EEPROM.cpp @@ -13,10 +13,10 @@ uint16 EEPROMClass::EE_CheckPage(uint32 pageBase, uint16 status) uint32 pageEnd = pageBase + (uint32)PageSize; // Page Status not EEPROM_ERASED and not a "state" - if ((*(__io uint16*)pageBase) != EEPROM_ERASED && (*(__io uint16*)pageBase) != status) + if ((*(__IO uint16*)pageBase) != EEPROM_ERASED && (*(__IO uint16*)pageBase) != status) return EEPROM_BAD_FLASH; for(pageBase += 4; pageBase < pageEnd; pageBase += 4) - if ((*(__io uint32*)pageBase) != 0xFFFFFFFF) // Verify if slot is empty + if ((*(__IO uint32*)pageBase) != 0xFFFFFFFF) // Verify if slot is empty return EEPROM_BAD_FLASH; return EEPROM_OK; } @@ -31,9 +31,9 @@ uint16 EEPROMClass::EE_CheckPage(uint32 pageBase, uint16 status) FLASH_Status EEPROMClass::EE_ErasePage(uint32 pageBase) { FLASH_Status FlashStatus; - uint16 data = (*(__io uint16*)(pageBase)); + uint16 data = (*(__IO uint16*)(pageBase)); if ((data == EEPROM_ERASED) || (data == EEPROM_VALID_PAGE) || (data == EEPROM_RECEIVE_DATA)) - data = (*(__io uint16*)(pageBase + 2)) + 1; + data = (*(__IO uint16*)(pageBase + 2)) + 1; else data = 0; @@ -73,8 +73,8 @@ uint16 EEPROMClass::EE_CheckErasePage(uint32 pageBase, uint16 status) */ uint32 EEPROMClass::EE_FindValidPage(void) { - uint16 status0 = (*(__io uint16*)PageBase0); // Get Page0 actual status - uint16 status1 = (*(__io uint16*)PageBase1); // Get Page1 actual status + uint16 status0 = (*(__IO uint16*)PageBase0); // Get Page0 actual status + uint16 status1 = (*(__IO uint16*)PageBase1); // Get Page1 actual status if (status0 == EEPROM_VALID_PAGE && status1 == EEPROM_ERASED) return PageBase0; @@ -100,14 +100,14 @@ uint16 EEPROMClass::EE_GetVariablesCount(uint32 pageBase, uint16 skipAddress) for (pageBase += 6; pageBase < pageEnd; pageBase += 4) { - varAddress = (*(__io uint16*)pageBase); + varAddress = (*(__IO uint16*)pageBase); if (varAddress == 0xFFFF || varAddress == skipAddress) continue; count++; for(idx = pageBase + 4; idx < pageEnd; idx += 4) { - nextAddress = (*(__io uint16*)idx); + nextAddress = (*(__IO uint16*)idx); if (nextAddress == varAddress) { count--; @@ -140,7 +140,7 @@ uint16 EEPROMClass::EE_PageTransfer(uint32 newPage, uint32 oldPage, uint16 SkipA // Find first free element in new page for (newIdx = newPage + 4; newIdx < newEnd; newIdx += 4) - if ((*(__io uint32*)newIdx) == 0xFFFFFFFF) // Verify if element + if ((*(__IO uint32*)newIdx) == 0xFFFFFFFF) // Verify if element break; // contents are 0xFFFFFFFF if (newIdx >= newEnd) return EEPROM_OUT_SIZE; @@ -150,13 +150,13 @@ uint16 EEPROMClass::EE_PageTransfer(uint32 newPage, uint32 oldPage, uint16 SkipA for (; oldIdx > oldEnd; oldIdx -= 4) { - address = *(__io uint16*)oldIdx; + address = *(__IO uint16*)oldIdx; if (address == 0xFFFF || address == SkipAddress) continue; // it's means that power off after write data found = 0; for (idx = newPage + 6; idx < newIdx; idx += 4) - if ((*(__io uint16*)(idx)) == address) + if ((*(__IO uint16*)(idx)) == address) { found = 1; break; @@ -167,7 +167,7 @@ uint16 EEPROMClass::EE_PageTransfer(uint32 newPage, uint32 oldPage, uint16 SkipA if (newIdx < newEnd) { - data = (*(__io uint16*)(oldIdx - 2)); + data = (*(__IO uint16*)(oldIdx - 2)); FlashStatus = FLASH_ProgramHalfWord(newIdx, data); if (FlashStatus != FLASH_COMPLETE) @@ -223,9 +223,9 @@ uint16 EEPROMClass::EE_VerifyPageFullWriteVariable(uint16 Address, uint16 Data) for (idx = pageEnd - 2; idx > pageBase; idx -= 4) { - if ((*(__io uint16*)idx) == Address) // Find last value for address + if ((*(__IO uint16*)idx) == Address) // Find last value for address { - count = (*(__io uint16*)(idx - 2)); // Read last data + count = (*(__IO uint16*)(idx - 2)); // Read last data if (count == Data) return EEPROM_OK; if (count == 0xFFFF) @@ -240,7 +240,7 @@ uint16 EEPROMClass::EE_VerifyPageFullWriteVariable(uint16 Address, uint16 Data) // Check each active page address starting from begining for (idx = pageBase + 4; idx < pageEnd; idx += 4) - if ((*(__io uint32*)idx) == 0xFFFFFFFF) // Verify if element + if ((*(__IO uint32*)idx) == 0xFFFFFFFF) // Verify if element { // contents are 0xFFFFFFFF FlashStatus = FLASH_ProgramHalfWord(idx, Data); // Set variable data if (FlashStatus != FLASH_COMPLETE) @@ -303,8 +303,8 @@ uint16 EEPROMClass::init(void) FLASH_Unlock(); Status = EEPROM_NO_VALID_PAGE; - status0 = (*(__io uint16 *)PageBase0); - status1 = (*(__io uint16 *)PageBase1); + status0 = (*(__IO uint16 *)PageBase0); + status1 = (*(__IO uint16 *)PageBase1); switch (status0) { @@ -407,7 +407,7 @@ uint16 EEPROMClass::format(void) status = EE_CheckErasePage(PageBase0, EEPROM_VALID_PAGE); if (status != EEPROM_OK) return status; - if ((*(__io uint16*)PageBase0) == EEPROM_ERASED) + if ((*(__IO uint16*)PageBase0) == EEPROM_ERASED) { // Set Page0 as valid page: Write VALID_PAGE at Page0 base address FlashStatus = FLASH_ProgramHalfWord(PageBase0, EEPROM_VALID_PAGE); @@ -437,7 +437,7 @@ uint16 EEPROMClass::erases(uint16 *Erases) if (pageBase == 0) return EEPROM_NO_VALID_PAGE; - *Erases = (*(__io uint16*)pageBase+2); + *Erases = (*(__IO uint16*)pageBase+2); return EEPROM_OK; } @@ -485,9 +485,9 @@ uint16 EEPROMClass::read(uint16 Address, uint16 *Data) // Check each active page address starting from end for (pageBase += 6; pageEnd >= pageBase; pageEnd -= 4) - if ((*(__io uint16*)pageEnd) == Address) // Compare the read address with the virtual address + if ((*(__IO uint16*)pageEnd) == Address) // Compare the read address with the virtual address { - *Data = (*(__io uint16*)(pageEnd - 2)); // Get content of Address-2 which is variable value + *Data = (*(__IO uint16*)(pageEnd - 2)); // Get content of Address-2 which is variable value return EEPROM_OK; } diff --git a/STM32F1/libraries/EEPROM/flash_stm32.c b/STM32F1/libraries/EEPROM/flash_stm32.c index 364e64e7a..5c7a3feb6 100644 --- a/STM32F1/libraries/EEPROM/flash_stm32.c +++ b/STM32F1/libraries/EEPROM/flash_stm32.c @@ -17,7 +17,7 @@ */ static void delay(void) { - __io uint32 i = 0; + __IO uint32 i = 0; for(i = 0xFF; i != 0; i--) { } } @@ -122,7 +122,7 @@ FLASH_Status FLASH_ProgramHalfWord(uint32 Address, uint16 Data) { /* if the previous operation is completed, proceed to program the new data */ FLASH_BASE->CR |= FLASH_CR_PG; - *(__io uint16*)Address = Data; + *(__IO uint16*)Address = Data; /* Wait for last operation to be completed */ status = FLASH_WaitForLastOperation(ProgramTimeout); if(status != FLASH_TIMEOUT) diff --git a/STM32F1/libraries/RTClock/src/utility/rtc_util.h b/STM32F1/libraries/RTClock/src/utility/rtc_util.h index 7084b0d55..5432de3a5 100644 --- a/STM32F1/libraries/RTClock/src/utility/rtc_util.h +++ b/STM32F1/libraries/RTClock/src/utility/rtc_util.h @@ -52,16 +52,16 @@ extern "C" { #endif typedef struct rtc_reg_map { - __io uint32 CRH; /**< Control register high */ - __io uint32 CRL; /**< Control register high */ - __io uint32 PRLH; /**< Prescaler load register high */ - __io uint32 PRLL; /**< Prescaler load register low */ - __io uint32 DIVH; /**< Prescaler divider register high */ - __io uint32 DIVL; /**< Prescaler divider register low */ - __io uint32 CNTH; /**< Counter register high */ - __io uint32 CNTL; /**< Counter register low */ - __io uint32 ALRH; /**< Alarm register high */ - __io uint32 ALRL; /**< Alarm register low */ + __IO uint32 CRH; /**< Control register high */ + __IO uint32 CRL; /**< Control register high */ + __IO uint32 PRLH; /**< Prescaler load register high */ + __IO uint32 PRLL; /**< Prescaler load register low */ + __IO uint32 DIVH; /**< Prescaler divider register high */ + __IO uint32 DIVL; /**< Prescaler divider register low */ + __IO uint32 CNTH; /**< Counter register high */ + __IO uint32 CNTL; /**< Counter register low */ + __IO uint32 ALRH; /**< Alarm register high */ + __IO uint32 ALRL; /**< Alarm register low */ } rtc_reg_map; /** RTC register map base pointer */ diff --git a/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h b/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h index 1f290c2a6..cdc38586f 100644 --- a/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h +++ b/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h @@ -84,15 +84,15 @@ extern "C" { /** I2C register map type */ typedef struct i2c_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 OAR1; /**< Own address register 1 */ - __io uint32 OAR2; /**< Own address register 2 */ - __io uint32 DR; /**< Data register */ - __io uint32 SR1; /**< Status register 1 */ - __io uint32 SR2; /**< Status register 2 */ - __io uint32 CCR; /**< Clock control register */ - __io uint32 TRISE; /**< TRISE (rise time) register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 OAR1; /**< Own address register 1 */ + __IO uint32 OAR2; /**< Own address register 2 */ + __IO uint32 DR; /**< Data register */ + __IO uint32 SR1; /**< Status register 1 */ + __IO uint32 SR2; /**< Status register 2 */ + __IO uint32 CCR; /**< Clock control register */ + __IO uint32 TRISE; /**< TRISE (rise time) register */ } i2c_reg_map; /** diff --git a/STM32F1/system/libmaple/dma_private.h b/STM32F1/system/libmaple/dma_private.h index f3765fcff..063d15756 100644 --- a/STM32F1/system/libmaple/dma_private.h +++ b/STM32F1/system/libmaple/dma_private.h @@ -57,6 +57,6 @@ enum dma_atype { DMA_ATYPE_OTHER, }; -enum dma_atype _dma_addr_type(__io void *addr); +enum dma_atype _dma_addr_type(__IO void *addr); #endif diff --git a/STM32F1/system/libmaple/exti_private.h b/STM32F1/system/libmaple/exti_private.h index 4f0a4cf9c..221cae454 100644 --- a/STM32F1/system/libmaple/exti_private.h +++ b/STM32F1/system/libmaple/exti_private.h @@ -29,6 +29,6 @@ #include -void exti_do_select(__io uint32 *exti_cr, exti_num num, exti_cfg port); +void exti_do_select(__IO uint32 *exti_cr, exti_num num, exti_cfg port); #endif diff --git a/STM32F1/system/libmaple/include/libmaple/adc.h b/STM32F1/system/libmaple/include/libmaple/adc.h index 21efaf55b..9190099cd 100644 --- a/STM32F1/system/libmaple/include/libmaple/adc.h +++ b/STM32F1/system/libmaple/include/libmaple/adc.h @@ -52,26 +52,26 @@ extern "C"{ /** ADC register map type. */ typedef struct adc_reg_map { - __io uint32 SR; ///< Status register - __io uint32 CR1; ///< Control register 1 - __io uint32 CR2; ///< Control register 2 - __io uint32 SMPR1; ///< Sample time register 1 - __io uint32 SMPR2; ///< Sample time register 2 - __io uint32 JOFR1; ///< Injected channel data offset register 1 - __io uint32 JOFR2; ///< Injected channel data offset register 2 - __io uint32 JOFR3; ///< Injected channel data offset register 3 - __io uint32 JOFR4; ///< Injected channel data offset register 4 - __io uint32 HTR; ///< Watchdog high threshold register - __io uint32 LTR; ///< Watchdog low threshold register - __io uint32 SQR1; ///< Regular sequence register 1 - __io uint32 SQR2; ///< Regular sequence register 2 - __io uint32 SQR3; ///< Regular sequence register 3 - __io uint32 JSQR; ///< Injected sequence register - __io uint32 JDR1; ///< Injected data register 1 - __io uint32 JDR2; ///< Injected data register 2 - __io uint32 JDR3; ///< Injected data register 3 - __io uint32 JDR4; ///< Injected data register 4 - __io uint32 DR; ///< Regular data register + __IO uint32 SR; ///< Status register + __IO uint32 CR1; ///< Control register 1 + __IO uint32 CR2; ///< Control register 2 + __IO uint32 SMPR1; ///< Sample time register 1 + __IO uint32 SMPR2; ///< Sample time register 2 + __IO uint32 JOFR1; ///< Injected channel data offset register 1 + __IO uint32 JOFR2; ///< Injected channel data offset register 2 + __IO uint32 JOFR3; ///< Injected channel data offset register 3 + __IO uint32 JOFR4; ///< Injected channel data offset register 4 + __IO uint32 HTR; ///< Watchdog high threshold register + __IO uint32 LTR; ///< Watchdog low threshold register + __IO uint32 SQR1; ///< Regular sequence register 1 + __IO uint32 SQR2; ///< Regular sequence register 2 + __IO uint32 SQR3; ///< Regular sequence register 3 + __IO uint32 JSQR; ///< Injected sequence register + __IO uint32 JDR1; ///< Injected data register 1 + __IO uint32 JDR2; ///< Injected data register 2 + __IO uint32 JDR3; ///< Injected data register 3 + __IO uint32 JDR4; ///< Injected data register 4 + __IO uint32 DR; ///< Regular data register } adc_reg_map; diff --git a/STM32F1/system/libmaple/include/libmaple/bkp.h b/STM32F1/system/libmaple/include/libmaple/bkp.h index bb63a2ffd..f57235a6a 100644 --- a/STM32F1/system/libmaple/include/libmaple/bkp.h +++ b/STM32F1/system/libmaple/include/libmaple/bkp.h @@ -47,54 +47,54 @@ extern "C" { /** Backup peripheral register map type. */ typedef struct bkp_reg_map { const uint32 RESERVED1; ///< Reserved - __io uint32 DR1; ///< Data register 1 - __io uint32 DR2; ///< Data register 2 - __io uint32 DR3; ///< Data register 3 - __io uint32 DR4; ///< Data register 4 - __io uint32 DR5; ///< Data register 5 - __io uint32 DR6; ///< Data register 6 - __io uint32 DR7; ///< Data register 7 - __io uint32 DR8; ///< Data register 8 - __io uint32 DR9; ///< Data register 9 - __io uint32 DR10; ///< Data register 10 - __io uint32 RTCCR; ///< RTC control register - __io uint32 CR; ///< Control register - __io uint32 CSR; ///< Control and status register + __IO uint32 DR1; ///< Data register 1 + __IO uint32 DR2; ///< Data register 2 + __IO uint32 DR3; ///< Data register 3 + __IO uint32 DR4; ///< Data register 4 + __IO uint32 DR5; ///< Data register 5 + __IO uint32 DR6; ///< Data register 6 + __IO uint32 DR7; ///< Data register 7 + __IO uint32 DR8; ///< Data register 8 + __IO uint32 DR9; ///< Data register 9 + __IO uint32 DR10; ///< Data register 10 + __IO uint32 RTCCR; ///< RTC control register + __IO uint32 CR; ///< Control register + __IO uint32 CSR; ///< Control and status register #if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) const uint32 RESERVED2; ///< Reserved const uint32 RESERVED3; ///< Reserved - __io uint32 DR11; ///< Data register 11 - __io uint32 DR12; ///< Data register 12 - __io uint32 DR13; ///< Data register 13 - __io uint32 DR14; ///< Data register 14 - __io uint32 DR15; ///< Data register 15 - __io uint32 DR16; ///< Data register 16 - __io uint32 DR17; ///< Data register 17 - __io uint32 DR18; ///< Data register 18 - __io uint32 DR19; ///< Data register 19 - __io uint32 DR20; ///< Data register 20 - __io uint32 DR21; ///< Data register 21 - __io uint32 DR22; ///< Data register 22 - __io uint32 DR23; ///< Data register 23 - __io uint32 DR24; ///< Data register 24 - __io uint32 DR25; ///< Data register 25 - __io uint32 DR26; ///< Data register 26 - __io uint32 DR27; ///< Data register 27 - __io uint32 DR28; ///< Data register 28 - __io uint32 DR29; ///< Data register 29 - __io uint32 DR30; ///< Data register 30 - __io uint32 DR31; ///< Data register 31 - __io uint32 DR32; ///< Data register 32 - __io uint32 DR33; ///< Data register 33 - __io uint32 DR34; ///< Data register 34 - __io uint32 DR35; ///< Data register 35 - __io uint32 DR36; ///< Data register 36 - __io uint32 DR37; ///< Data register 37 - __io uint32 DR38; ///< Data register 38 - __io uint32 DR39; ///< Data register 39 - __io uint32 DR40; ///< Data register 40 - __io uint32 DR41; ///< Data register 41 - __io uint32 DR42; ///< Data register 42 + __IO uint32 DR11; ///< Data register 11 + __IO uint32 DR12; ///< Data register 12 + __IO uint32 DR13; ///< Data register 13 + __IO uint32 DR14; ///< Data register 14 + __IO uint32 DR15; ///< Data register 15 + __IO uint32 DR16; ///< Data register 16 + __IO uint32 DR17; ///< Data register 17 + __IO uint32 DR18; ///< Data register 18 + __IO uint32 DR19; ///< Data register 19 + __IO uint32 DR20; ///< Data register 20 + __IO uint32 DR21; ///< Data register 21 + __IO uint32 DR22; ///< Data register 22 + __IO uint32 DR23; ///< Data register 23 + __IO uint32 DR24; ///< Data register 24 + __IO uint32 DR25; ///< Data register 25 + __IO uint32 DR26; ///< Data register 26 + __IO uint32 DR27; ///< Data register 27 + __IO uint32 DR28; ///< Data register 28 + __IO uint32 DR29; ///< Data register 29 + __IO uint32 DR30; ///< Data register 30 + __IO uint32 DR31; ///< Data register 31 + __IO uint32 DR32; ///< Data register 32 + __IO uint32 DR33; ///< Data register 33 + __IO uint32 DR34; ///< Data register 34 + __IO uint32 DR35; ///< Data register 35 + __IO uint32 DR36; ///< Data register 36 + __IO uint32 DR37; ///< Data register 37 + __IO uint32 DR38; ///< Data register 38 + __IO uint32 DR39; ///< Data register 39 + __IO uint32 DR40; ///< Data register 40 + __IO uint32 DR41; ///< Data register 41 + __IO uint32 DR42; ///< Data register 42 #endif } bkp_reg_map; diff --git a/STM32F1/system/libmaple/include/libmaple/dma.h b/STM32F1/system/libmaple/include/libmaple/dma.h index a75b3140b..87e184010 100644 --- a/STM32F1/system/libmaple/include/libmaple/dma.h +++ b/STM32F1/system/libmaple/include/libmaple/dma.h @@ -139,12 +139,12 @@ void dma_init(dma_dev *dev); */ typedef struct dma_tube_config { /** Source of data */ - __io void *tube_src; + __IO void *tube_src; /** Source transfer size */ dma_xfer_size tube_src_size; /** Destination of data */ - __io void *tube_dst; + __IO void *tube_dst; /** Destination transfer size */ dma_xfer_size tube_dst_size; @@ -283,7 +283,7 @@ extern void dma_set_num_transfers(dma_dev *dev, dma_tube tube, * @param tube Tube whose base memory address to set. * @param address Memory base address to use. */ -extern void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __io void *address); +extern void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __IO void *address); /** * @brief Set the base peripheral address where data will be read from @@ -299,7 +299,7 @@ extern void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __io void *address); * @param tube Tube whose peripheral data register base address to set. * @param address Peripheral memory base address to use. */ -extern void dma_set_per_addr(dma_dev *dev, dma_tube tube, __io void *address); +extern void dma_set_per_addr(dma_dev *dev, dma_tube tube, __IO void *address); /* Interrupt handling */ diff --git a/STM32F1/system/libmaple/include/libmaple/exti.h b/STM32F1/system/libmaple/include/libmaple/exti.h index 69362d689..3e914be0b 100644 --- a/STM32F1/system/libmaple/include/libmaple/exti.h +++ b/STM32F1/system/libmaple/include/libmaple/exti.h @@ -48,12 +48,12 @@ extern "C"{ /** EXTI register map type */ typedef struct exti_reg_map { - __io uint32 IMR; /**< Interrupt mask register */ - __io uint32 EMR; /**< Event mask register */ - __io uint32 RTSR; /**< Rising trigger selection register */ - __io uint32 FTSR; /**< Falling trigger selection register */ - __io uint32 SWIER; /**< Software interrupt event register */ - __io uint32 PR; /**< Pending register */ + __IO uint32 IMR; /**< Interrupt mask register */ + __IO uint32 EMR; /**< Event mask register */ + __IO uint32 RTSR; /**< Rising trigger selection register */ + __IO uint32 FTSR; /**< Falling trigger selection register */ + __IO uint32 SWIER; /**< Software interrupt event register */ + __IO uint32 PR; /**< Pending register */ } exti_reg_map; /* diff --git a/STM32F1/system/libmaple/include/libmaple/fsmc.h b/STM32F1/system/libmaple/include/libmaple/fsmc.h index 6225feedc..9dd8a7255 100644 --- a/STM32F1/system/libmaple/include/libmaple/fsmc.h +++ b/STM32F1/system/libmaple/include/libmaple/fsmc.h @@ -53,42 +53,42 @@ extern "C"{ /** FSMC register map type */ typedef struct fsmc_reg_map { - __io uint32 BCR1; /**< SRAM/NOR-Flash chip-select control register 1 */ - __io uint32 BTR1; /**< SRAM/NOR-Flash chip-select timing register 1 */ - __io uint32 BCR2; /**< SRAM/NOR-Flash chip-select control register 2 */ - __io uint32 BTR2; /**< SRAM/NOR-Flash chip-select timing register 2 */ - __io uint32 BCR3; /**< SRAM/NOR-Flash chip-select control register 3 */ - __io uint32 BTR3; /**< SRAM/NOR-Flash chip-select timing register 3 */ - __io uint32 BCR4; /**< SRAM/NOR-Flash chip-select control register 4 */ - __io uint32 BTR4; /**< SRAM/NOR-Flash chip-select timing register 4 */ + __IO uint32 BCR1; /**< SRAM/NOR-Flash chip-select control register 1 */ + __IO uint32 BTR1; /**< SRAM/NOR-Flash chip-select timing register 1 */ + __IO uint32 BCR2; /**< SRAM/NOR-Flash chip-select control register 2 */ + __IO uint32 BTR2; /**< SRAM/NOR-Flash chip-select timing register 2 */ + __IO uint32 BCR3; /**< SRAM/NOR-Flash chip-select control register 3 */ + __IO uint32 BTR3; /**< SRAM/NOR-Flash chip-select timing register 3 */ + __IO uint32 BCR4; /**< SRAM/NOR-Flash chip-select control register 4 */ + __IO uint32 BTR4; /**< SRAM/NOR-Flash chip-select timing register 4 */ const uint8 RESERVED1[64]; /**< Reserved */ - __io uint32 PCR2; /**< PC Card/NAND Flash control register 2 */ - __io uint32 SR2; /**< FIFO status and interrupt register 2 */ - __io uint32 PMEM2; /**< Common memory space timing register 2 */ - __io uint32 PATT2; /**< Attribute memory space timing register 2 */ + __IO uint32 PCR2; /**< PC Card/NAND Flash control register 2 */ + __IO uint32 SR2; /**< FIFO status and interrupt register 2 */ + __IO uint32 PMEM2; /**< Common memory space timing register 2 */ + __IO uint32 PATT2; /**< Attribute memory space timing register 2 */ const uint8 RESERVED2[4]; /**< Reserved */ - __io uint32 ECCR2; /**< ECC result register 2 */ + __IO uint32 ECCR2; /**< ECC result register 2 */ const uint8 RESERVED3[2]; - __io uint32 PCR3; /**< PC Card/NAND Flash control register 3 */ - __io uint32 SR3; /**< FIFO status and interrupt register 3 */ - __io uint32 PMEM3; /**< Common memory space timing register 3 */ - __io uint32 PATT3; /**< Attribute memory space timing register 3 */ + __IO uint32 PCR3; /**< PC Card/NAND Flash control register 3 */ + __IO uint32 SR3; /**< FIFO status and interrupt register 3 */ + __IO uint32 PMEM3; /**< Common memory space timing register 3 */ + __IO uint32 PATT3; /**< Attribute memory space timing register 3 */ const uint32 RESERVED4; /**< Reserved */ - __io uint32 ECCR3; /**< ECC result register 3 */ + __IO uint32 ECCR3; /**< ECC result register 3 */ const uint8 RESERVED5[8]; /**< Reserved */ - __io uint32 PCR4; /**< PC Card/NAND Flash control register 4 */ - __io uint32 SR4; /**< FIFO status and interrupt register 4 */ - __io uint32 PMEM4; /**< Common memory space timing register 4 */ - __io uint32 PATT4; /**< Attribute memory space timing register 4 */ - __io uint32 PIO4; /**< I/O space timing register 4 */ + __IO uint32 PCR4; /**< PC Card/NAND Flash control register 4 */ + __IO uint32 SR4; /**< FIFO status and interrupt register 4 */ + __IO uint32 PMEM4; /**< Common memory space timing register 4 */ + __IO uint32 PATT4; /**< Attribute memory space timing register 4 */ + __IO uint32 PIO4; /**< I/O space timing register 4 */ const uint8 RESERVED6[80]; /**< Reserved */ - __io uint32 BWTR1; /**< SRAM/NOR-Flash write timing register 1 */ + __IO uint32 BWTR1; /**< SRAM/NOR-Flash write timing register 1 */ const uint32 RESERVED7; /**< Reserved */ - __io uint32 BWTR2; /**< SRAM/NOR-Flash write timing register 2 */ + __IO uint32 BWTR2; /**< SRAM/NOR-Flash write timing register 2 */ const uint32 RESERVED8; /**< Reserved */ - __io uint32 BWTR3; /**< SRAM/NOR-Flash write timing register 3 */ + __IO uint32 BWTR3; /**< SRAM/NOR-Flash write timing register 3 */ const uint32 RESERVED9; /**< Reserved */ - __io uint32 BWTR4; /**< SRAM/NOR-Flash write timing register 4 */ + __IO uint32 BWTR4; /**< SRAM/NOR-Flash write timing register 4 */ } __attribute__((packed)) fsmc_reg_map; #define __FSMCB 0xA0000000 @@ -98,10 +98,10 @@ typedef struct fsmc_reg_map { /** FSMC NOR/PSRAM register map type */ typedef struct fsmc_nor_psram_reg_map { - __io uint32 BCR; /**< Chip-select control register */ - __io uint32 BTR; /**< Chip-select timing register */ + __IO uint32 BCR; /**< Chip-select control register */ + __IO uint32 BTR; /**< Chip-select timing register */ const uint8 RESERVED[252]; /**< Reserved */ - __io uint32 BWTR; /**< Write timing register */ + __IO uint32 BWTR; /**< Write timing register */ } fsmc_nor_psram_reg_map; /** FSMC NOR/PSRAM base pointer 1 */ diff --git a/STM32F1/system/libmaple/include/libmaple/i2c.h b/STM32F1/system/libmaple/include/libmaple/i2c.h index 92ec29e36..a44f6af3e 100644 --- a/STM32F1/system/libmaple/include/libmaple/i2c.h +++ b/STM32F1/system/libmaple/include/libmaple/i2c.h @@ -75,15 +75,15 @@ extern "C" { /** I2C register map type */ typedef struct i2c_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 OAR1; /**< Own address register 1 */ - __io uint32 OAR2; /**< Own address register 2 */ - __io uint32 DR; /**< Data register */ - __io uint32 SR1; /**< Status register 1 */ - __io uint32 SR2; /**< Status register 2 */ - __io uint32 CCR; /**< Clock control register */ - __io uint32 TRISE; /**< TRISE (rise time) register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 OAR1; /**< Own address register 1 */ + __IO uint32 OAR2; /**< Own address register 2 */ + __IO uint32 DR; /**< Data register */ + __IO uint32 SR1; /**< Status register 1 */ + __IO uint32 SR2; /**< Status register 2 */ + __IO uint32 CCR; /**< Clock control register */ + __IO uint32 TRISE; /**< TRISE (rise time) register */ } i2c_reg_map; /** diff --git a/STM32F1/system/libmaple/include/libmaple/iwdg.h b/STM32F1/system/libmaple/include/libmaple/iwdg.h index 3a16c5500..f99943986 100644 --- a/STM32F1/system/libmaple/include/libmaple/iwdg.h +++ b/STM32F1/system/libmaple/include/libmaple/iwdg.h @@ -53,10 +53,10 @@ extern "C"{ /** Independent watchdog register map type. */ typedef struct iwdg_reg_map { - __io uint32 KR; /**< Key register. */ - __io uint32 PR; /**< Prescaler register. */ - __io uint32 RLR; /**< Reload register. */ - __io uint32 SR; /**< Status register */ + __IO uint32 KR; /**< Key register. */ + __IO uint32 PR; /**< Prescaler register. */ + __IO uint32 RLR; /**< Reload register. */ + __IO uint32 SR; /**< Status register */ } iwdg_reg_map; /** Independent watchdog base pointer */ diff --git a/STM32F1/system/libmaple/include/libmaple/libmaple_types.h b/STM32F1/system/libmaple/include/libmaple/libmaple_types.h index 398b7052f..62bf4366b 100644 --- a/STM32F1/system/libmaple/include/libmaple/libmaple_types.h +++ b/STM32F1/system/libmaple/include/libmaple/libmaple_types.h @@ -52,7 +52,7 @@ typedef long long int64; typedef void (*voidFuncPtr)(void); typedef void (*voidArgumentFuncPtr)(void *); -#define __io volatile +#define __IO volatile #define __attr_flash __attribute__((section (".USER_FLASH"))) #define __packed __attribute__((__packed__)) #define __deprecated __attribute__((__deprecated__)) diff --git a/STM32F1/system/libmaple/include/libmaple/nvic.h b/STM32F1/system/libmaple/include/libmaple/nvic.h index 69d9a9124..954fd12b0 100644 --- a/STM32F1/system/libmaple/include/libmaple/nvic.h +++ b/STM32F1/system/libmaple/include/libmaple/nvic.h @@ -55,31 +55,31 @@ extern "C"{ /** NVIC register map type. */ typedef struct nvic_reg_map { - __io uint32 ISER[8]; /**< Interrupt Set Enable Registers */ + __IO uint32 ISER[8]; /**< Interrupt Set Enable Registers */ /** Reserved */ uint32 RESERVED0[24]; - __io uint32 ICER[8]; /**< Interrupt Clear Enable Registers */ + __IO uint32 ICER[8]; /**< Interrupt Clear Enable Registers */ /** Reserved */ uint32 RESERVED1[24]; - __io uint32 ISPR[8]; /**< Interrupt Set Pending Registers */ + __IO uint32 ISPR[8]; /**< Interrupt Set Pending Registers */ /** Reserved */ uint32 RESERVED2[24]; - __io uint32 ICPR[8]; /**< Interrupt Clear Pending Registers */ + __IO uint32 ICPR[8]; /**< Interrupt Clear Pending Registers */ /** Reserved */ uint32 RESERVED3[24]; - __io uint32 IABR[8]; /**< Interrupt Active bit Registers */ + __IO uint32 IABR[8]; /**< Interrupt Active bit Registers */ /** Reserved */ uint32 RESERVED4[56]; - __io uint8 IP[240]; /**< Interrupt Priority Registers */ + __IO uint8 IP[240]; /**< Interrupt Priority Registers */ /** Reserved */ uint32 RESERVED5[644]; - __io uint32 STIR; /**< Software Trigger Interrupt Registers */ + __IO uint32 STIR; /**< Software Trigger Interrupt Registers */ } nvic_reg_map; /** NVIC register map base pointer. */ diff --git a/STM32F1/system/libmaple/include/libmaple/pwr.h b/STM32F1/system/libmaple/include/libmaple/pwr.h index f711c7c95..fada6df76 100644 --- a/STM32F1/system/libmaple/include/libmaple/pwr.h +++ b/STM32F1/system/libmaple/include/libmaple/pwr.h @@ -43,8 +43,8 @@ extern "C" { /** Power interface register map. */ typedef struct pwr_reg_map { - __io uint32 CR; /**< Control register */ - __io uint32 CSR; /**< Control and status register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 CSR; /**< Control and status register */ } pwr_reg_map; /** Power peripheral register map base pointer. */ diff --git a/STM32F1/system/libmaple/include/libmaple/ring_buffer.h b/STM32F1/system/libmaple/include/libmaple/ring_buffer.h index e99fe6266..854d58937 100644 --- a/STM32F1/system/libmaple/include/libmaple/ring_buffer.h +++ b/STM32F1/system/libmaple/include/libmaple/ring_buffer.h @@ -81,7 +81,7 @@ static inline void rb_init(ring_buffer *rb, uint16 size, uint8 *buf) { * @param rb Buffer whose elements to count. */ static inline uint16 rb_full_count(ring_buffer *rb) { - __io ring_buffer *arb = rb; + __IO ring_buffer *arb = rb; int32 size = arb->tail - arb->head; if (arb->tail < arb->head) { size += arb->size + 1; diff --git a/STM32F1/system/libmaple/include/libmaple/scb.h b/STM32F1/system/libmaple/include/libmaple/scb.h index c42a0f2a0..0b01480bf 100644 --- a/STM32F1/system/libmaple/include/libmaple/scb.h +++ b/STM32F1/system/libmaple/include/libmaple/scb.h @@ -49,37 +49,37 @@ extern "C" { /** System control block register map type */ typedef struct scb_reg_map { - __io uint32 CPUID; /**< CPU ID Base Register */ - __io uint32 ICSR; /**< Interrupt Control State Register */ - __io uint32 VTOR; /**< Vector Table Offset Register */ - __io uint32 AIRCR; /**< Application Interrupt / Reset Control Register */ - __io uint32 SCR; /**< System Control Register */ - __io uint32 CCR; /**< Configuration and Control Register */ - __io uint8 SHP[12]; /**< System Handler Priority Registers + __IO uint32 CPUID; /**< CPU ID Base Register */ + __IO uint32 ICSR; /**< Interrupt Control State Register */ + __IO uint32 VTOR; /**< Vector Table Offset Register */ + __IO uint32 AIRCR; /**< Application Interrupt / Reset Control Register */ + __IO uint32 SCR; /**< System Control Register */ + __IO uint32 CCR; /**< Configuration and Control Register */ + __IO uint8 SHP[12]; /**< System Handler Priority Registers (4-7, 8-11, 12-15) */ - __io uint32 SHCSR; /**< System Handler Control and State Register */ - __io uint32 CFSR; /**< Configurable Fault Status Register */ - __io uint32 HFSR; /**< Hard Fault Status Register */ + __IO uint32 SHCSR; /**< System Handler Control and State Register */ + __IO uint32 CFSR; /**< Configurable Fault Status Register */ + __IO uint32 HFSR; /**< Hard Fault Status Register */ /* DFSR is not documented by ST in PM0056 (as of Revision 4), but * there's a 4 byte hole in the SCB register map docs right where * it belongs. Since it's specified as "always implemented" in * the ARM v7-M ARM, I'm assuming its absence is a bug in the ST * doc, but I haven't proven it. [mbolivar] */ - __io uint32 DFSR; /**< Debug Fault Status Register */ - __io uint32 MMFAR; /**< Mem Manage Address Register */ - __io uint32 BFAR; /**< Bus Fault Address Register */ + __IO uint32 DFSR; /**< Debug Fault Status Register */ + __IO uint32 MMFAR; /**< Mem Manage Address Register */ + __IO uint32 BFAR; /**< Bus Fault Address Register */ #if 0 /* The following registers are implementation-defined according to * ARM v7-M, and I can't find evidence of their existence in ST's * docs. I'm removing them. Feel free to yell at me if they do * exist. [mbolivar] */ - __io uint32 AFSR; /**< Auxiliary Fault Status Register */ - __io uint32 PFR[2]; /**< Processor Feature Register */ - __io uint32 DFR; /**< Debug Feature Register */ - __io uint32 AFR; /**< Auxiliary Feature Register */ - __io uint32 MMFR[4]; /**< Memory Model Feature Register */ - __io uint32 ISAR[5]; /**< ISA Feature Register */ + __IO uint32 AFSR; /**< Auxiliary Fault Status Register */ + __IO uint32 PFR[2]; /**< Processor Feature Register */ + __IO uint32 DFR; /**< Debug Feature Register */ + __IO uint32 AFR; /**< Auxiliary Feature Register */ + __IO uint32 MMFR[4]; /**< Memory Model Feature Register */ + __IO uint32 ISAR[5]; /**< ISA Feature Register */ #endif } scb_reg_map; diff --git a/STM32F1/system/libmaple/include/libmaple/sdio.h b/STM32F1/system/libmaple/include/libmaple/sdio.h index dec31c8b7..a9ffc5c89 100644 --- a/STM32F1/system/libmaple/include/libmaple/sdio.h +++ b/STM32F1/system/libmaple/include/libmaple/sdio.h @@ -52,23 +52,23 @@ extern "C" { // SDIO register map type typedef struct sdio_reg_map { - __io uint32 POWER; // 0x00 - __io uint32 CLKCR; // 0x04 - __io uint32 ARG; // 0x08 - __io uint32 CMD; // 0x0C - __io uint32 RESPCMD; // 0x10 (0x3F) + __IO uint32 POWER; // 0x00 + __IO uint32 CLKCR; // 0x04 + __IO uint32 ARG; // 0x08 + __IO uint32 CMD; // 0x0C + __IO uint32 RESPCMD; // 0x10 (0x3F) const uint32 RESP[4]; // 0x14 - contain the card status, which is part of the received response. - __io uint32 DTIMER; // 0x24 - contains the data timeout period, in card bus clock periods. - __io uint32 DLEN; // 0x28 (0x01FF FFFF) - contains the number of data bytes to be transferred - __io uint32 DCTRL; // 0x2C - __io uint32 DCOUNT; // 0x30 (0x01FF FFFF) - __io uint32 STA; // 0x34 - __io uint32 ICR; // 0x38 - __io uint32 MASK; // 0x3C + __IO uint32 DTIMER; // 0x24 - contains the data timeout period, in card bus clock periods. + __IO uint32 DLEN; // 0x28 (0x01FF FFFF) - contains the number of data bytes to be transferred + __IO uint32 DCTRL; // 0x2C + __IO uint32 DCOUNT; // 0x30 (0x01FF FFFF) + __IO uint32 STA; // 0x34 + __IO uint32 ICR; // 0x38 + __IO uint32 MASK; // 0x3C const uint32 RESERVED1[2]; - __io uint32 FIFOCNT; // 0x48 (0x01FF FFFF) + __IO uint32 FIFOCNT; // 0x48 (0x01FF FFFF) const uint32 RESERVED2[13]; - __io uint32 FIFO; // 0x80 + __IO uint32 FIFO; // 0x80 } sdio_reg_map; #define sdio_dev sdio_reg_map diff --git a/STM32F1/system/libmaple/include/libmaple/spi.h b/STM32F1/system/libmaple/include/libmaple/spi.h index 0da4129f8..5d295bbb4 100644 --- a/STM32F1/system/libmaple/include/libmaple/spi.h +++ b/STM32F1/system/libmaple/include/libmaple/spi.h @@ -54,15 +54,15 @@ extern "C" { /** SPI register map type. */ typedef struct spi_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SR; /**< Status register */ - __io uint32 DR; /**< Data register */ - __io uint32 CRCPR; /**< CRC polynomial register */ - __io uint32 RXCRCR; /**< RX CRC register */ - __io uint32 TXCRCR; /**< TX CRC register */ - __io uint32 I2SCFGR; /**< I2S configuration register */ - __io uint32 I2SPR; /**< I2S prescaler register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SR; /**< Status register */ + __IO uint32 DR; /**< Data register */ + __IO uint32 CRCPR; /**< CRC polynomial register */ + __IO uint32 RXCRCR; /**< RX CRC register */ + __IO uint32 TXCRCR; /**< TX CRC register */ + __IO uint32 I2SCFGR; /**< I2S configuration register */ + __IO uint32 I2SPR; /**< I2S prescaler register */ } spi_reg_map; /* diff --git a/STM32F1/system/libmaple/include/libmaple/syscfg.h b/STM32F1/system/libmaple/include/libmaple/syscfg.h index 6b375d346..e39d0b7f3 100644 --- a/STM32F1/system/libmaple/include/libmaple/syscfg.h +++ b/STM32F1/system/libmaple/include/libmaple/syscfg.h @@ -48,12 +48,12 @@ extern "C" { * @brief SYSCFG register map type. */ typedef struct syscfg_reg_map { - __io uint32 MEMRMP; /**< Memory remap register */ - __io uint32 PMC; /**< Peripheral mode configuration */ - __io uint32 EXTICR[4]; /**< External interrupt configuration registers */ + __IO uint32 MEMRMP; /**< Memory remap register */ + __IO uint32 PMC; /**< Peripheral mode configuration */ + __IO uint32 EXTICR[4]; /**< External interrupt configuration registers */ const uint32 RESERVED1; const uint32 RESERVED2; - __io uint32 CMPCR; /**< Compensation cell control register */ + __IO uint32 CMPCR; /**< Compensation cell control register */ } syscfg_reg_map; /** SYSCFG register map base pointer */ diff --git a/STM32F1/system/libmaple/include/libmaple/systick.h b/STM32F1/system/libmaple/include/libmaple/systick.h index 51d0c567f..3f6bd5f59 100644 --- a/STM32F1/system/libmaple/include/libmaple/systick.h +++ b/STM32F1/system/libmaple/include/libmaple/systick.h @@ -41,10 +41,10 @@ extern "C"{ /** SysTick register map type */ typedef struct systick_reg_map { - __io uint32 CSR; /**< Control and status register */ - __io uint32 RVR; /**< Reload value register */ - __io uint32 CNT; /**< Current value register ("count") */ - __io uint32 CVR; /**< Calibration value register */ + __IO uint32 CSR; /**< Control and status register */ + __IO uint32 RVR; /**< Reload value register */ + __IO uint32 CNT; /**< Current value register ("count") */ + __IO uint32 CVR; /**< Calibration value register */ } systick_reg_map; /** SysTick register map base pointer */ diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index 64f458f1d..4d6fd4626 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -50,26 +50,26 @@ extern "C"{ /** Advanced control timer register map type */ typedef struct timer_adv_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SMCR; /**< Slave mode control register */ - __io uint32 DIER; /**< DMA/interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ - __io uint32 CCMR1; /**< Capture/compare mode register 1 */ - __io uint32 CCMR2; /**< Capture/compare mode register 2 */ - __io uint32 CCER; /**< Capture/compare enable register */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ - __io uint32 RCR; /**< Repetition counter register */ - __io uint32 CCR1; /**< Capture/compare register 1 */ - __io uint32 CCR2; /**< Capture/compare register 2 */ - __io uint32 CCR3; /**< Capture/compare register 3 */ - __io uint32 CCR4; /**< Capture/compare register 4 */ - __io uint32 BDTR; /**< Break and dead-time register */ - __io uint32 DCR; /**< DMA control register */ - __io uint32 DMAR; /**< DMA address for full transfer */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SMCR; /**< Slave mode control register */ + __IO uint32 DIER; /**< DMA/interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ + __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ + __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ + __IO uint32 CCER; /**< Capture/compare enable register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ + __IO uint32 RCR; /**< Repetition counter register */ + __IO uint32 CCR1; /**< Capture/compare register 1 */ + __IO uint32 CCR2; /**< Capture/compare register 2 */ + __IO uint32 CCR3; /**< Capture/compare register 3 */ + __IO uint32 CCR4; /**< Capture/compare register 4 */ + __IO uint32 BDTR; /**< Break and dead-time register */ + __IO uint32 DCR; /**< DMA control register */ + __IO uint32 DMAR; /**< DMA address for full transfer */ } timer_adv_reg_map; /* General purpose timer register map type: intentionally omitted. @@ -79,18 +79,18 @@ typedef struct timer_adv_reg_map { /** Basic timer register map type */ typedef struct timer_bas_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 DIER; /**< DMA/interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ + __IO uint32 DIER; /**< DMA/interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ const uint32 RESERVED2; /**< Reserved */ const uint32 RESERVED3; /**< Reserved */ const uint32 RESERVED4; /**< Reserved */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ } timer_bas_reg_map; /* @@ -738,7 +738,7 @@ static inline void timer_set_reload(timer_dev *dev, uint16 arr) { * @param channel Channel whose compare value to get. */ static inline uint16 timer_get_compare(timer_dev *dev, uint8 channel) { - __io uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); + __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); return *ccr; } @@ -751,7 +751,7 @@ static inline uint16 timer_get_compare(timer_dev *dev, uint8 channel) { static inline void timer_set_compare(timer_dev *dev, uint8 channel, uint16 value) { - __io uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); + __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); *ccr = value; } @@ -1065,7 +1065,7 @@ static inline void timer_oc_set_mode(timer_dev *dev, timer_oc_mode mode, uint8 flags) { /* channel == 1,2 -> CCMR1; channel == 3,4 -> CCMR2 */ - __io uint32 *ccmr = &(dev->regs).gen->CCMR1 + (((channel - 1) >> 1) & 1); + __IO uint32 *ccmr = &(dev->regs).gen->CCMR1 + (((channel - 1) >> 1) & 1); /* channel == 1,3 -> shift = 0, channel == 2,4 -> shift = 8 */ uint8 shift = 8 * (1 - (channel & 1)); diff --git a/STM32F1/system/libmaple/include/libmaple/usart.h b/STM32F1/system/libmaple/include/libmaple/usart.h index 245ddab16..9a868df43 100644 --- a/STM32F1/system/libmaple/include/libmaple/usart.h +++ b/STM32F1/system/libmaple/include/libmaple/usart.h @@ -53,13 +53,13 @@ extern "C"{ /** USART register map type */ typedef struct usart_reg_map { - __io uint32 SR; /**< Status register */ - __io uint32 DR; /**< Data register */ - __io uint32 BRR; /**< Baud rate register */ - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 CR3; /**< Control register 3 */ - __io uint32 GTPR; /**< Guard time and prescaler register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 DR; /**< Data register */ + __IO uint32 BRR; /**< Baud rate register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 CR3; /**< Control register 3 */ + __IO uint32 GTPR; /**< Guard time and prescaler register */ } usart_reg_map; /* diff --git a/STM32F1/system/libmaple/rcc_private.h b/STM32F1/system/libmaple/rcc_private.h index afb8a3145..a47afca1a 100644 --- a/STM32F1/system/libmaple/rcc_private.h +++ b/STM32F1/system/libmaple/rcc_private.h @@ -40,16 +40,16 @@ struct rcc_dev_info { extern const struct rcc_dev_info rcc_dev_table[]; -static inline void rcc_do_clk_enable(__io uint32** enable_regs, +static inline void rcc_do_clk_enable(__IO uint32** enable_regs, rcc_clk_id id) { - __io uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; + __IO uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; uint8 line_num = rcc_dev_table[id].line_num; bb_peri_set_bit(enable_reg, line_num, 1); } -static inline void rcc_do_reset_dev(__io uint32** reset_regs, +static inline void rcc_do_reset_dev(__IO uint32** reset_regs, rcc_clk_id id) { - __io uint32 *reset_reg = reset_regs[rcc_dev_clk(id)]; + __IO uint32 *reset_reg = reset_regs[rcc_dev_clk(id)]; uint8 line_num = rcc_dev_table[id].line_num; bb_peri_set_bit(reset_reg, line_num, 1); bb_peri_set_bit(reset_reg, line_num, 0); @@ -64,9 +64,9 @@ static inline void rcc_do_set_prescaler(const uint32 *masks, RCC_BASE->CFGR = cfgr; } -static inline void rcc_do_clk_disable(__io uint32** enable_regs, +static inline void rcc_do_clk_disable(__IO uint32** enable_regs, rcc_clk_id id) { - __io uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; + __IO uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; uint8 line_num = rcc_dev_table[id].line_num; bb_peri_set_bit(enable_reg, line_num, 0); } diff --git a/STM32F1/system/libmaple/stm32f1/include/series/dac.h b/STM32F1/system/libmaple/stm32f1/include/series/dac.h index c0d026b4a..5bf4b9e08 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/dac.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/dac.h @@ -40,28 +40,28 @@ extern "C"{ /** STM32F1 DAC register map type. */ typedef struct dac_reg_map { - __io uint32 CR; /**< Control register */ - __io uint32 SWTRIGR; /**< Software trigger register */ - __io uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data + __IO uint32 CR; /**< Control register */ + __IO uint32 SWTRIGR; /**< Software trigger register */ + __IO uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data holding register */ - __io uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data + __IO uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data holding register */ - __io uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data + __IO uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data holding register */ - __io uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data + __IO uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data holding register */ - __io uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data + __IO uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data holding register */ - __io uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data + __IO uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data holding register */ - __io uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data + __IO uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data holding register */ - __io uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data + __IO uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data holding register */ - __io uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding + __IO uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding register */ - __io uint32 DOR1; /**< Channel 1 data output register */ - __io uint32 DOR2; /**< Channel 2 data output register */ + __IO uint32 DOR1; /**< Channel 1 data output register */ + __IO uint32 DOR2; /**< Channel 2 data output register */ } dac_reg_map; #ifdef __cplusplus diff --git a/STM32F1/system/libmaple/stm32f1/include/series/dma.h b/STM32F1/system/libmaple/stm32f1/include/series/dma.h index 56e559ba9..84fd22888 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/dma.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/dma.h @@ -57,42 +57,42 @@ extern "C"{ * only supports channels 1--5. */ typedef struct dma_reg_map { - __io uint32 ISR; /**< Interrupt status register */ - __io uint32 IFCR; /**< Interrupt flag clear register */ - __io uint32 CCR1; /**< Channel 1 configuration register */ - __io uint32 CNDTR1; /**< Channel 1 number of data register */ - __io uint32 CPAR1; /**< Channel 1 peripheral address register */ - __io uint32 CMAR1; /**< Channel 1 memory address register */ + __IO uint32 ISR; /**< Interrupt status register */ + __IO uint32 IFCR; /**< Interrupt flag clear register */ + __IO uint32 CCR1; /**< Channel 1 configuration register */ + __IO uint32 CNDTR1; /**< Channel 1 number of data register */ + __IO uint32 CPAR1; /**< Channel 1 peripheral address register */ + __IO uint32 CMAR1; /**< Channel 1 memory address register */ const uint32 RESERVED1; /**< Reserved. */ - __io uint32 CCR2; /**< Channel 2 configuration register */ - __io uint32 CNDTR2; /**< Channel 2 number of data register */ - __io uint32 CPAR2; /**< Channel 2 peripheral address register */ - __io uint32 CMAR2; /**< Channel 2 memory address register */ + __IO uint32 CCR2; /**< Channel 2 configuration register */ + __IO uint32 CNDTR2; /**< Channel 2 number of data register */ + __IO uint32 CPAR2; /**< Channel 2 peripheral address register */ + __IO uint32 CMAR2; /**< Channel 2 memory address register */ const uint32 RESERVED2; /**< Reserved. */ - __io uint32 CCR3; /**< Channel 3 configuration register */ - __io uint32 CNDTR3; /**< Channel 3 number of data register */ - __io uint32 CPAR3; /**< Channel 3 peripheral address register */ - __io uint32 CMAR3; /**< Channel 3 memory address register */ + __IO uint32 CCR3; /**< Channel 3 configuration register */ + __IO uint32 CNDTR3; /**< Channel 3 number of data register */ + __IO uint32 CPAR3; /**< Channel 3 peripheral address register */ + __IO uint32 CMAR3; /**< Channel 3 memory address register */ const uint32 RESERVED3; /**< Reserved. */ - __io uint32 CCR4; /**< Channel 4 configuration register */ - __io uint32 CNDTR4; /**< Channel 4 number of data register */ - __io uint32 CPAR4; /**< Channel 4 peripheral address register */ - __io uint32 CMAR4; /**< Channel 4 memory address register */ + __IO uint32 CCR4; /**< Channel 4 configuration register */ + __IO uint32 CNDTR4; /**< Channel 4 number of data register */ + __IO uint32 CPAR4; /**< Channel 4 peripheral address register */ + __IO uint32 CMAR4; /**< Channel 4 memory address register */ const uint32 RESERVED4; /**< Reserved. */ - __io uint32 CCR5; /**< Channel 5 configuration register */ - __io uint32 CNDTR5; /**< Channel 5 number of data register */ - __io uint32 CPAR5; /**< Channel 5 peripheral address register */ - __io uint32 CMAR5; /**< Channel 5 memory address register */ + __IO uint32 CCR5; /**< Channel 5 configuration register */ + __IO uint32 CNDTR5; /**< Channel 5 number of data register */ + __IO uint32 CPAR5; /**< Channel 5 peripheral address register */ + __IO uint32 CMAR5; /**< Channel 5 memory address register */ const uint32 RESERVED5; /**< Reserved. */ - __io uint32 CCR6; /**< Channel 6 configuration register */ - __io uint32 CNDTR6; /**< Channel 6 number of data register */ - __io uint32 CPAR6; /**< Channel 6 peripheral address register */ - __io uint32 CMAR6; /**< Channel 6 memory address register */ + __IO uint32 CCR6; /**< Channel 6 configuration register */ + __IO uint32 CNDTR6; /**< Channel 6 number of data register */ + __IO uint32 CPAR6; /**< Channel 6 peripheral address register */ + __IO uint32 CMAR6; /**< Channel 6 memory address register */ const uint32 RESERVED6; /**< Reserved. */ - __io uint32 CCR7; /**< Channel 7 configuration register */ - __io uint32 CNDTR7; /**< Channel 7 number of data register */ - __io uint32 CPAR7; /**< Channel 7 peripheral address register */ - __io uint32 CMAR7; /**< Channel 7 memory address register */ + __IO uint32 CCR7; /**< Channel 7 configuration register */ + __IO uint32 CNDTR7; /**< Channel 7 number of data register */ + __IO uint32 CPAR7; /**< Channel 7 peripheral address register */ + __IO uint32 CMAR7; /**< Channel 7 memory address register */ const uint32 RESERVED7; /**< Reserved. */ } dma_reg_map; @@ -107,10 +107,10 @@ typedef struct dma_reg_map { * @see dma_tube_regs() */ typedef struct dma_tube_reg_map { - __io uint32 CCR; /**< Channel configuration register */ - __io uint32 CNDTR; /**< Channel number of data register */ - __io uint32 CPAR; /**< Channel peripheral address register */ - __io uint32 CMAR; /**< Channel memory address register */ + __IO uint32 CCR; /**< Channel configuration register */ + __IO uint32 CNDTR; /**< Channel number of data register */ + __IO uint32 CPAR; /**< Channel peripheral address register */ + __IO uint32 CMAR; /**< Channel memory address register */ } dma_tube_reg_map; /** DMA1 channel 1 register map base pointer */ @@ -516,7 +516,7 @@ typedef enum dma_request_src { #define DMA_CHANNEL_NREGS 5 /* accounts for reserved word */ static inline dma_tube_reg_map* dma_tube_regs(dma_dev *dev, dma_tube tube) { - __io uint32 *ccr1 = &dev->regs->CCR1; + __IO uint32 *ccr1 = &dev->regs->CCR1; return (dma_channel_reg_map*)(ccr1 + DMA_CHANNEL_NREGS * (tube - 1)); } @@ -561,9 +561,9 @@ typedef enum dma_mode_flags { * this information, so this interface is too tied to the F1.) */ void dma_setup_transfer(dma_dev *dev, dma_channel channel, - __io void *peripheral_address, + __IO void *peripheral_address, dma_xfer_size peripheral_size, - __io void *memory_address, + __IO void *memory_address, dma_xfer_size memory_size, uint32 mode); diff --git a/STM32F1/system/libmaple/stm32f1/include/series/flash.h b/STM32F1/system/libmaple/stm32f1/include/series/flash.h index 24efb0bd7..a0bcd8219 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/flash.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/flash.h @@ -48,14 +48,14 @@ extern "C"{ /** @brief STM32F1 Flash register map type */ typedef struct flash_reg_map { - __io uint32 ACR; /**< Access control register */ - __io uint32 KEYR; /**< Key register */ - __io uint32 OPTKEYR; /**< OPTKEY register */ - __io uint32 SR; /**< Status register */ - __io uint32 CR; /**< Control register */ - __io uint32 AR; /**< Address register */ - __io uint32 OBR; /**< Option byte register */ - __io uint32 WRPR; /**< Write protection register */ + __IO uint32 ACR; /**< Access control register */ + __IO uint32 KEYR; /**< Key register */ + __IO uint32 OPTKEYR; /**< OPTKEY register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 AR; /**< Address register */ + __IO uint32 OBR; /**< Option byte register */ + __IO uint32 WRPR; /**< Write protection register */ } flash_reg_map; #define FLASH_BASE ((struct flash_reg_map*)0x40022000) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h index aff639b4b..803e2ed5a 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h @@ -48,13 +48,13 @@ extern "C"{ /** GPIO register map type */ typedef struct gpio_reg_map { - __io uint32 CRL; /**< Port configuration register low */ - __io uint32 CRH; /**< Port configuration register high */ - __io uint32 IDR; /**< Port input data register */ - __io uint32 ODR; /**< Port output data register */ - __io uint32 BSRR; /**< Port bit set/reset register */ - __io uint32 BRR; /**< Port bit reset register */ - __io uint32 LCKR; /**< Port configuration lock register */ + __IO uint32 CRL; /**< Port configuration register low */ + __IO uint32 CRH; /**< Port configuration register high */ + __IO uint32 IDR; /**< Port input data register */ + __IO uint32 ODR; /**< Port output data register */ + __IO uint32 BSRR; /**< Port bit set/reset register */ + __IO uint32 BRR; /**< Port bit reset register */ + __IO uint32 LCKR; /**< Port configuration lock register */ } gpio_reg_map; struct gpio_dev; @@ -145,13 +145,13 @@ typedef enum gpio_pin_mode { /** AFIO register map */ typedef struct afio_reg_map { - __io uint32 EVCR; /**< Event control register. */ - __io uint32 MAPR; /**< AF remap and debug I/O configuration register. */ - __io uint32 EXTICR1; /**< External interrupt configuration register 1. */ - __io uint32 EXTICR2; /**< External interrupt configuration register 2. */ - __io uint32 EXTICR3; /**< External interrupt configuration register 3. */ - __io uint32 EXTICR4; /**< External interrupt configuration register 4. */ - __io uint32 MAPR2; /**< + __IO uint32 EVCR; /**< Event control register. */ + __IO uint32 MAPR; /**< AF remap and debug I/O configuration register. */ + __IO uint32 EXTICR1; /**< External interrupt configuration register 1. */ + __IO uint32 EXTICR2; /**< External interrupt configuration register 2. */ + __IO uint32 EXTICR3; /**< External interrupt configuration register 3. */ + __IO uint32 EXTICR4; /**< External interrupt configuration register 4. */ + __IO uint32 MAPR2; /**< * AF remap and debug I/O configuration register 2. */ } afio_reg_map; @@ -404,7 +404,7 @@ typedef enum afio_debug_cfg { * @see afio_debug_cfg */ static inline void afio_cfg_debug_ports(afio_debug_cfg config) { - __io uint32 *mapr = &AFIO_BASE->MAPR; + __IO uint32 *mapr = &AFIO_BASE->MAPR; *mapr = (*mapr & ~AFIO_MAPR_SWJ_CFG) | config; } diff --git a/STM32F1/system/libmaple/stm32f1/include/series/rcc.h b/STM32F1/system/libmaple/stm32f1/include/series/rcc.h index f40dcbaba..e6a4a5b20 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/rcc.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/rcc.h @@ -46,16 +46,16 @@ extern "C"{ /** STM32F1 RCC register map type */ typedef struct rcc_reg_map { - __io uint32 CR; /**< Clock control register */ - __io uint32 CFGR; /**< Clock configuration register */ - __io uint32 CIR; /**< Clock interrupt register */ - __io uint32 APB2RSTR; /**< APB2 peripheral reset register */ - __io uint32 APB1RSTR; /**< APB1 peripheral reset register */ - __io uint32 AHBENR; /**< AHB peripheral clock enable register */ - __io uint32 APB2ENR; /**< APB2 peripheral clock enable register */ - __io uint32 APB1ENR; /**< APB1 peripheral clock enable register */ - __io uint32 BDCR; /**< Backup domain control register */ - __io uint32 CSR; /**< Control/status register */ + __IO uint32 CR; /**< Clock control register */ + __IO uint32 CFGR; /**< Clock configuration register */ + __IO uint32 CIR; /**< Clock interrupt register */ + __IO uint32 APB2RSTR; /**< APB2 peripheral reset register */ + __IO uint32 APB1RSTR; /**< APB1 peripheral reset register */ + __IO uint32 AHBENR; /**< AHB peripheral clock enable register */ + __IO uint32 APB2ENR; /**< APB2 peripheral clock enable register */ + __IO uint32 APB1ENR; /**< APB1 peripheral clock enable register */ + __IO uint32 BDCR; /**< Backup domain control register */ + __IO uint32 CSR; /**< Control/status register */ } rcc_reg_map; #define RCC_BASE ((struct rcc_reg_map*)0x40021000) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/timer.h b/STM32F1/system/libmaple/stm32f1/include/series/timer.h index 8c1f8f4d9..c07b7b470 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/timer.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/timer.h @@ -41,26 +41,26 @@ /** STM32F1 general purpose timer register map type */ typedef struct timer_gen_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SMCR; /**< Slave mode control register */ - __io uint32 DIER; /**< DMA/Interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ - __io uint32 CCMR1; /**< Capture/compare mode register 1 */ - __io uint32 CCMR2; /**< Capture/compare mode register 2 */ - __io uint32 CCER; /**< Capture/compare enable register */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SMCR; /**< Slave mode control register */ + __IO uint32 DIER; /**< DMA/Interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ + __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ + __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ + __IO uint32 CCER; /**< Capture/compare enable register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 CCR1; /**< Capture/compare register 1 */ - __io uint32 CCR2; /**< Capture/compare register 2 */ - __io uint32 CCR3; /**< Capture/compare register 3 */ - __io uint32 CCR4; /**< Capture/compare register 4 */ + __IO uint32 CCR1; /**< Capture/compare register 1 */ + __IO uint32 CCR2; /**< Capture/compare register 2 */ + __IO uint32 CCR3; /**< Capture/compare register 3 */ + __IO uint32 CCR4; /**< Capture/compare register 4 */ const uint32 RESERVED2; /**< Reserved */ - __io uint32 DCR; /**< DMA control register */ - __io uint32 DMAR; /**< DMA address for full transfer */ + __IO uint32 DCR; /**< DMA control register */ + __IO uint32 DMAR; /**< DMA address for full transfer */ } timer_gen_reg_map; struct timer_adv_reg_map; diff --git a/STM32F1/system/libmaple/stm32f2/include/series/adc.h b/STM32F1/system/libmaple/stm32f2/include/series/adc.h index 175fe112f..3bfa2cc5a 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/adc.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/adc.h @@ -49,9 +49,9 @@ extern const struct adc_dev *ADC3; /** ADC common register map type */ typedef struct adc_common_reg_map { - __io uint32 CSR; /**< Common status register */ - __io uint32 CCR; /**< Common control register */ - __io uint32 CDR; /**< + __IO uint32 CSR; /**< Common status register */ + __IO uint32 CCR; /**< Common control register */ + __IO uint32 CDR; /**< * @brief Common regular data register * for dual and triple modes */ } adc_common_reg_map; diff --git a/STM32F1/system/libmaple/stm32f2/include/series/dac.h b/STM32F1/system/libmaple/stm32f2/include/series/dac.h index 0a578ca7f..0d74a168e 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/dac.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/dac.h @@ -44,29 +44,29 @@ extern "C"{ /** STM32F2 DAC register map type. */ typedef struct dac_reg_map { - __io uint32 CR; /**< Control register */ - __io uint32 SWTRIGR; /**< Software trigger register */ - __io uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data + __IO uint32 CR; /**< Control register */ + __IO uint32 SWTRIGR; /**< Software trigger register */ + __IO uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data holding register */ - __io uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data + __IO uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data holding register */ - __io uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data + __IO uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data holding register */ - __io uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data + __IO uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data holding register */ - __io uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data + __IO uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data holding register */ - __io uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data + __IO uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data holding register */ - __io uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data + __IO uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data holding register */ - __io uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data + __IO uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data holding register */ - __io uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding + __IO uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding register */ - __io uint32 DOR1; /**< Channel 1 data output register */ - __io uint32 DOR2; /**< Channel 2 data output register */ - __io uint32 SR; /**< Status register */ + __IO uint32 DOR1; /**< Channel 1 data output register */ + __IO uint32 DOR2; /**< Channel 2 data output register */ + __IO uint32 SR; /**< Status register */ } dac_reg_map; /* diff --git a/STM32F1/system/libmaple/stm32f2/include/series/dma.h b/STM32F1/system/libmaple/stm32f2/include/series/dma.h index 56725e5e4..4c864431e 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/dma.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/dma.h @@ -51,66 +51,66 @@ typedef struct dma_reg_map { /* Isn't it nice how on F1, it's CCR1, but on F2, it's S1CR? */ /* Global DMA registers */ - __io uint32 LISR; /**< Low interrupt status register */ - __io uint32 HISR; /**< High interrupt status register */ - __io uint32 LIFCR; /**< Low interrupt flag clear register */ - __io uint32 HIFCR; /**< High interrupt flag clear register */ + __IO uint32 LISR; /**< Low interrupt status register */ + __IO uint32 HISR; /**< High interrupt status register */ + __IO uint32 LIFCR; /**< Low interrupt flag clear register */ + __IO uint32 HIFCR; /**< High interrupt flag clear register */ /* Stream 0 registers */ - __io uint32 S0CR; /**< Stream 0 control register */ - __io uint32 S0NDTR; /**< Stream 0 number of data register */ - __io uint32 S0PAR; /**< Stream 0 peripheral address register */ - __io uint32 S0M0AR; /**< Stream 0 memory 0 address register */ - __io uint32 S0M1AR; /**< Stream 0 memory 1 address register */ - __io uint32 S0FCR; /**< Stream 0 FIFO control register */ + __IO uint32 S0CR; /**< Stream 0 control register */ + __IO uint32 S0NDTR; /**< Stream 0 number of data register */ + __IO uint32 S0PAR; /**< Stream 0 peripheral address register */ + __IO uint32 S0M0AR; /**< Stream 0 memory 0 address register */ + __IO uint32 S0M1AR; /**< Stream 0 memory 1 address register */ + __IO uint32 S0FCR; /**< Stream 0 FIFO control register */ /* Stream 1 registers */ - __io uint32 S1CR; /**< Stream 1 control register */ - __io uint32 S1NDTR; /**< Stream 1 number of data register */ - __io uint32 S1PAR; /**< Stream 1 peripheral address register */ - __io uint32 S1M0AR; /**< Stream 1 memory 0 address register */ - __io uint32 S1M1AR; /**< Stream 1 memory 1 address register */ - __io uint32 S1FCR; /**< Stream 1 FIFO control register */ + __IO uint32 S1CR; /**< Stream 1 control register */ + __IO uint32 S1NDTR; /**< Stream 1 number of data register */ + __IO uint32 S1PAR; /**< Stream 1 peripheral address register */ + __IO uint32 S1M0AR; /**< Stream 1 memory 0 address register */ + __IO uint32 S1M1AR; /**< Stream 1 memory 1 address register */ + __IO uint32 S1FCR; /**< Stream 1 FIFO control register */ /* Stream 2 registers */ - __io uint32 S2CR; /**< Stream 2 control register */ - __io uint32 S2NDTR; /**< Stream 2 number of data register */ - __io uint32 S2PAR; /**< Stream 2 peripheral address register */ - __io uint32 S2M0AR; /**< Stream 2 memory 0 address register */ - __io uint32 S2M1AR; /**< Stream 2 memory 1 address register */ - __io uint32 S2FCR; /**< Stream 2 FIFO control register */ + __IO uint32 S2CR; /**< Stream 2 control register */ + __IO uint32 S2NDTR; /**< Stream 2 number of data register */ + __IO uint32 S2PAR; /**< Stream 2 peripheral address register */ + __IO uint32 S2M0AR; /**< Stream 2 memory 0 address register */ + __IO uint32 S2M1AR; /**< Stream 2 memory 1 address register */ + __IO uint32 S2FCR; /**< Stream 2 FIFO control register */ /* Stream 3 registers */ - __io uint32 S3CR; /**< Stream 3 control register */ - __io uint32 S3NDTR; /**< Stream 3 number of data register */ - __io uint32 S3PAR; /**< Stream 3 peripheral address register */ - __io uint32 S3M0AR; /**< Stream 3 memory 0 address register */ - __io uint32 S3M1AR; /**< Stream 3 memory 1 address register */ - __io uint32 S3FCR; /**< Stream 3 FIFO control register */ + __IO uint32 S3CR; /**< Stream 3 control register */ + __IO uint32 S3NDTR; /**< Stream 3 number of data register */ + __IO uint32 S3PAR; /**< Stream 3 peripheral address register */ + __IO uint32 S3M0AR; /**< Stream 3 memory 0 address register */ + __IO uint32 S3M1AR; /**< Stream 3 memory 1 address register */ + __IO uint32 S3FCR; /**< Stream 3 FIFO control register */ /* Stream 4 registers */ - __io uint32 S4CR; /**< Stream 4 control register */ - __io uint32 S4NDTR; /**< Stream 4 number of data register */ - __io uint32 S4PAR; /**< Stream 4 peripheral address register */ - __io uint32 S4M0AR; /**< Stream 4 memory 0 address register */ - __io uint32 S4M1AR; /**< Stream 4 memory 1 address register */ - __io uint32 S4FCR; /**< Stream 4 FIFO control register */ + __IO uint32 S4CR; /**< Stream 4 control register */ + __IO uint32 S4NDTR; /**< Stream 4 number of data register */ + __IO uint32 S4PAR; /**< Stream 4 peripheral address register */ + __IO uint32 S4M0AR; /**< Stream 4 memory 0 address register */ + __IO uint32 S4M1AR; /**< Stream 4 memory 1 address register */ + __IO uint32 S4FCR; /**< Stream 4 FIFO control register */ /* Stream 5 registers */ - __io uint32 S5CR; /**< Stream 5 control register */ - __io uint32 S5NDTR; /**< Stream 5 number of data register */ - __io uint32 S5PAR; /**< Stream 5 peripheral address register */ - __io uint32 S5M0AR; /**< Stream 5 memory 0 address register */ - __io uint32 S5M1AR; /**< Stream 5 memory 1 address register */ - __io uint32 S5FCR; /**< Stream 5 FIFO control register */ + __IO uint32 S5CR; /**< Stream 5 control register */ + __IO uint32 S5NDTR; /**< Stream 5 number of data register */ + __IO uint32 S5PAR; /**< Stream 5 peripheral address register */ + __IO uint32 S5M0AR; /**< Stream 5 memory 0 address register */ + __IO uint32 S5M1AR; /**< Stream 5 memory 1 address register */ + __IO uint32 S5FCR; /**< Stream 5 FIFO control register */ /* Stream 6 registers */ - __io uint32 S6CR; /**< Stream 6 control register */ - __io uint32 S6NDTR; /**< Stream 6 number of data register */ - __io uint32 S6PAR; /**< Stream 6 peripheral address register */ - __io uint32 S6M0AR; /**< Stream 6 memory 0 address register */ - __io uint32 S6M1AR; /**< Stream 6 memory 1 address register */ - __io uint32 S6FCR; /**< Stream 6 FIFO control register */ + __IO uint32 S6CR; /**< Stream 6 control register */ + __IO uint32 S6NDTR; /**< Stream 6 number of data register */ + __IO uint32 S6PAR; /**< Stream 6 peripheral address register */ + __IO uint32 S6M0AR; /**< Stream 6 memory 0 address register */ + __IO uint32 S6M1AR; /**< Stream 6 memory 1 address register */ + __IO uint32 S6FCR; /**< Stream 6 FIFO control register */ /* Stream 7 registers */ - __io uint32 S7CR; /**< Stream 7 control register */ - __io uint32 S7NDTR; /**< Stream 7 number of data register */ - __io uint32 S7PAR; /**< Stream 7 peripheral address register */ - __io uint32 S7M0AR; /**< Stream 7 memory 0 address register */ - __io uint32 S7M1AR; /**< Stream 7 memory 1 address register */ - __io uint32 S7FCR; /**< Stream 7 FIFO control register */ + __IO uint32 S7CR; /**< Stream 7 control register */ + __IO uint32 S7NDTR; /**< Stream 7 number of data register */ + __IO uint32 S7PAR; /**< Stream 7 peripheral address register */ + __IO uint32 S7M0AR; /**< Stream 7 memory 0 address register */ + __IO uint32 S7M1AR; /**< Stream 7 memory 1 address register */ + __IO uint32 S7FCR; /**< Stream 7 FIFO control register */ } dma_reg_map; /** DMA controller 1 register map base pointer */ @@ -124,12 +124,12 @@ typedef struct dma_reg_map { * @see dma_tube_regs() */ typedef struct dma_tube_reg_map { - __io uint32 SCR; /**< Stream configuration register */ - __io uint32 SNDTR; /**< Stream number of data register */ - __io uint32 SPAR; /**< Stream peripheral address register */ - __io uint32 SM0AR; /**< Stream memory 0 address register */ - __io uint32 SM1AR; /**< Stream memory 1 address register */ - __io uint32 SFCR; /**< Stream FIFO control register */ + __IO uint32 SCR; /**< Stream configuration register */ + __IO uint32 SNDTR; /**< Stream number of data register */ + __IO uint32 SPAR; /**< Stream peripheral address register */ + __IO uint32 SM0AR; /**< Stream memory 0 address register */ + __IO uint32 SM1AR; /**< Stream memory 1 address register */ + __IO uint32 SFCR; /**< Stream FIFO control register */ } dma_tube_reg_map; /** DMA1 stream 0 register map base pointer */ @@ -697,7 +697,7 @@ static inline uint8 dma_is_enabled(dma_dev *dev, dma_tube tube) { /* F2-only; available because of double-buffering. */ void dma_set_mem_n_addr(dma_dev *dev, dma_tube tube, int n, - __io void *address); + __IO void *address); /** * @brief Set memory 0 address. @@ -708,7 +708,7 @@ void dma_set_mem_n_addr(dma_dev *dev, dma_tube tube, int n, * @param addr Address to use as memory 0 */ static inline __always_inline void -dma_set_mem0_addr(dma_dev *dev, dma_tube tube, __io void *addr) { +dma_set_mem0_addr(dma_dev *dev, dma_tube tube, __IO void *addr) { dma_set_mem_n_addr(dev, tube, 0, addr); } @@ -721,13 +721,13 @@ dma_set_mem0_addr(dma_dev *dev, dma_tube tube, __io void *addr) { * @param addr Address to use as memory 1 */ static inline __always_inline void -dma_set_mem1_addr(dma_dev *dev, dma_tube tube, __io void *addr) { +dma_set_mem1_addr(dma_dev *dev, dma_tube tube, __IO void *addr) { dma_set_mem_n_addr(dev, tube, 1, addr); } /* Assume the user means SM0AR in a non-double-buffered configuration. */ static inline __always_inline void -dma_set_mem_addr(dma_dev *dev, dma_tube tube, __io void *addr) { +dma_set_mem_addr(dma_dev *dev, dma_tube tube, __IO void *addr) { dma_set_mem0_addr(dev, tube, addr); } @@ -791,13 +791,13 @@ static inline __always_inline uint32 _dma_sr_fcr_shift(dma_tube tube) { static inline uint8 dma_get_isr_bits(dma_dev *dev, dma_tube tube) { dma_reg_map *regs = dev->regs; - __io uint32 *isr = tube > DMA_S3 ? ®s->HISR : ®s->LISR; + __IO uint32 *isr = tube > DMA_S3 ? ®s->HISR : ®s->LISR; return (*isr >> _dma_sr_fcr_shift(tube)) & 0x3D; } static inline void dma_clear_isr_bits(dma_dev *dev, dma_tube tube) { dma_reg_map *regs = dev->regs; - __io uint32 *ifcr = tube > DMA_S3 ? ®s->HIFCR : ®s->LIFCR; + __IO uint32 *ifcr = tube > DMA_S3 ? ®s->HIFCR : ®s->LIFCR; *ifcr = (0x3D << _dma_sr_fcr_shift(tube)); } diff --git a/STM32F1/system/libmaple/stm32f2/include/series/flash.h b/STM32F1/system/libmaple/stm32f2/include/series/flash.h index a3c393307..a02d4cac9 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/flash.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/flash.h @@ -48,12 +48,12 @@ extern "C"{ /** @brief STM32F2 Flash register map type */ typedef struct flash_reg_map { - __io uint32 ACR; /**< Access control register */ - __io uint32 KEYR; /**< Key register */ - __io uint32 OPTKEYR; /**< Option key register */ - __io uint32 SR; /**< Status register */ - __io uint32 CR; /**< Control register */ - __io uint32 OPTCR; /**< Option control register */ + __IO uint32 ACR; /**< Access control register */ + __IO uint32 KEYR; /**< Key register */ + __IO uint32 OPTKEYR; /**< Option key register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 OPTCR; /**< Option control register */ } flash_reg_map; #define FLASH_BASE ((struct flash_reg_map*)0x40023C00) diff --git a/STM32F1/system/libmaple/stm32f2/include/series/gpio.h b/STM32F1/system/libmaple/stm32f2/include/series/gpio.h index 4d0d98cc8..13d83662d 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/gpio.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/gpio.h @@ -44,16 +44,16 @@ extern "C"{ /** GPIO register map type */ typedef struct gpio_reg_map { - __io uint32 MODER; /**< Mode register */ - __io uint32 OTYPER; /**< Output type register */ - __io uint32 OSPEEDR; /**< Output speed register */ - __io uint32 PUPDR; /**< Pull-up/pull-down register */ - __io uint32 IDR; /**< Input data register */ - __io uint32 ODR; /**< Output data register */ - __io uint32 BSRR; /**< Bit set/reset register */ - __io uint32 LCKR; /**< Configuration lock register */ - __io uint32 AFRL; /**< Alternate function low register */ - __io uint32 AFRH; /**< Alternate function high register */ + __IO uint32 MODER; /**< Mode register */ + __IO uint32 OTYPER; /**< Output type register */ + __IO uint32 OSPEEDR; /**< Output speed register */ + __IO uint32 PUPDR; /**< Pull-up/pull-down register */ + __IO uint32 IDR; /**< Input data register */ + __IO uint32 ODR; /**< Output data register */ + __IO uint32 BSRR; /**< Bit set/reset register */ + __IO uint32 LCKR; /**< Configuration lock register */ + __IO uint32 AFRL; /**< Alternate function low register */ + __IO uint32 AFRH; /**< Alternate function high register */ } gpio_reg_map; /** GPIO port A register map base pointer */ diff --git a/STM32F1/system/libmaple/stm32f2/include/series/rcc.h b/STM32F1/system/libmaple/stm32f2/include/series/rcc.h index 441a5a80d..eae4d4223 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/rcc.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/rcc.h @@ -44,46 +44,46 @@ extern "C"{ /** STM32F2 RCC register map type */ typedef struct rcc_reg_map { - __io uint32 CR; /**< Clock control register */ - __io uint32 PLLCFGR; /**< PLL configuration register */ - __io uint32 CFGR; /**< Clock configuration register */ - __io uint32 CIR; /**< Clock interrupt register */ - __io uint32 AHB1RSTR; /**< AHB1 peripheral reset register */ - __io uint32 AHB2RSTR; /**< AHB2 peripheral reset register */ - __io uint32 AHB3RSTR; /**< AHB3 peripheral reset register */ + __IO uint32 CR; /**< Clock control register */ + __IO uint32 PLLCFGR; /**< PLL configuration register */ + __IO uint32 CFGR; /**< Clock configuration register */ + __IO uint32 CIR; /**< Clock interrupt register */ + __IO uint32 AHB1RSTR; /**< AHB1 peripheral reset register */ + __IO uint32 AHB2RSTR; /**< AHB2 peripheral reset register */ + __IO uint32 AHB3RSTR; /**< AHB3 peripheral reset register */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 APB1RSTR; /**< APB1 peripheral reset register */ - __io uint32 APB2RSTR; /**< APB2 peripheral reset register */ + __IO uint32 APB1RSTR; /**< APB1 peripheral reset register */ + __IO uint32 APB2RSTR; /**< APB2 peripheral reset register */ const uint32 RESERVED2; /**< Reserved */ const uint32 RESERVED3; /**< Reserved */ - __io uint32 AHB1ENR; /**< AHB1 peripheral clock enable register */ - __io uint32 AHB2ENR; /**< AHB2 peripheral clock enable register */ - __io uint32 AHB3ENR; /**< AHB3 peripheral clock enable register */ + __IO uint32 AHB1ENR; /**< AHB1 peripheral clock enable register */ + __IO uint32 AHB2ENR; /**< AHB2 peripheral clock enable register */ + __IO uint32 AHB3ENR; /**< AHB3 peripheral clock enable register */ const uint32 RESERVED4; /**< Reserved */ - __io uint32 APB1ENR; /**< APB1 peripheral clock enable register */ - __io uint32 APB2ENR; /**< APB2 peripheral clock enable register */ + __IO uint32 APB1ENR; /**< APB1 peripheral clock enable register */ + __IO uint32 APB2ENR; /**< APB2 peripheral clock enable register */ const uint32 RESERVED5; /**< Reserved */ const uint32 RESERVED6; /**< Reserved */ - __io uint32 AHB1LPENR; /**< AHB1 peripheral clock enable in + __IO uint32 AHB1LPENR; /**< AHB1 peripheral clock enable in low power mode register */ - __io uint32 AHB2LPENR; /**< AHB2 peripheral clock enable in + __IO uint32 AHB2LPENR; /**< AHB2 peripheral clock enable in low power mode register */ - __io uint32 AHB3LPENR; /**< AHB3 peripheral clock enable in + __IO uint32 AHB3LPENR; /**< AHB3 peripheral clock enable in low power mode register */ const uint32 RESERVED7; /**< Reserved */ - __io uint32 APB1LPENR; /**< APB1 peripheral clock enable in + __IO uint32 APB1LPENR; /**< APB1 peripheral clock enable in low power mode register */ - __io uint32 APB2LPENR; /**< APB2 peripheral clock enable in + __IO uint32 APB2LPENR; /**< APB2 peripheral clock enable in low power mode register */ const uint32 RESERVED8; /**< Reserved */ const uint32 RESERVED9; /**< Reserved */ - __io uint32 BDCR; /**< Backup domain control register */ - __io uint32 CSR; /**< Clock control and status register */ + __IO uint32 BDCR; /**< Backup domain control register */ + __IO uint32 CSR; /**< Clock control and status register */ const uint32 RESERVED10; /**< Reserved */ const uint32 RESERVED11; /**< Reserved */ - __io uint32 SSCGR; /**< Spread spectrum clock generation + __IO uint32 SSCGR; /**< Spread spectrum clock generation register */ - __io uint32 PLLI2SCFGR; /**< PLLI2S configuration register */ + __IO uint32 PLLI2SCFGR; /**< PLLI2S configuration register */ } rcc_reg_map; #define RCC_BASE ((struct rcc_reg_map*)0x40023800) diff --git a/STM32F1/system/libmaple/stm32f2/include/series/timer.h b/STM32F1/system/libmaple/stm32f2/include/series/timer.h index a7ac27640..94f654756 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/timer.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/timer.h @@ -47,27 +47,27 @@ * registers. Consult your chip's reference manual for the details. */ typedef struct timer_gen_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SMCR; /**< Slave mode control register */ - __io uint32 DIER; /**< DMA/Interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ - __io uint32 CCMR1; /**< Capture/compare mode register 1 */ - __io uint32 CCMR2; /**< Capture/compare mode register 2 */ - __io uint32 CCER; /**< Capture/compare enable register */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SMCR; /**< Slave mode control register */ + __IO uint32 DIER; /**< DMA/Interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ + __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ + __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ + __IO uint32 CCER; /**< Capture/compare enable register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 CCR1; /**< Capture/compare register 1 */ - __io uint32 CCR2; /**< Capture/compare register 2 */ - __io uint32 CCR3; /**< Capture/compare register 3 */ - __io uint32 CCR4; /**< Capture/compare register 4 */ + __IO uint32 CCR1; /**< Capture/compare register 1 */ + __IO uint32 CCR2; /**< Capture/compare register 2 */ + __IO uint32 CCR3; /**< Capture/compare register 3 */ + __IO uint32 CCR4; /**< Capture/compare register 4 */ const uint32 RESERVED2; /**< Reserved */ - __io uint32 DCR; /**< DMA control register */ - __io uint32 DMAR; /**< DMA address for full transfer */ - __io uint32 OR; /**< Option register. */ + __IO uint32 DCR; /**< DMA control register */ + __IO uint32 DMAR; /**< DMA address for full transfer */ + __IO uint32 OR; /**< Option register. */ } timer_gen_reg_map; struct timer_adv_reg_map; diff --git a/STM32F1/system/libmaple/usb/stm32f1/usb_reg_map.h b/STM32F1/system/libmaple/usb/stm32f1/usb_reg_map.h index d0423fc11..cdb7422b9 100644 --- a/STM32F1/system/libmaple/usb/stm32f1/usb_reg_map.h +++ b/STM32F1/system/libmaple/usb/stm32f1/usb_reg_map.h @@ -42,13 +42,13 @@ /** USB register map type */ typedef struct usb_reg_map { - __io uint32 EP[USB_NR_EP_REGS]; /**< Endpoint registers */ + __IO uint32 EP[USB_NR_EP_REGS]; /**< Endpoint registers */ const uint32 RESERVED[8]; /**< Reserved */ - __io uint32 CNTR; /**< Control register */ - __io uint32 ISTR; /**< Interrupt status register */ - __io uint32 FNR; /**< Frame number register */ - __io uint32 DADDR; /**< Device address */ - __io uint32 BTABLE; /**< @brief Buffer table address + __IO uint32 CNTR; /**< Control register */ + __IO uint32 ISTR; /**< Interrupt status register */ + __IO uint32 FNR; /**< Frame number register */ + __IO uint32 DADDR; /**< Device address */ + __IO uint32 BTABLE; /**< @brief Buffer table address * * Address offset within the USB * packet memory area which points @@ -340,7 +340,7 @@ static inline void usb_clear_status_out(uint8 ep) { * * The USB PMA is SRAM shared between USB and CAN. The USB peripheral * accesses this memory directly via the packet buffer interface. */ -#define USB_PMA_BASE ((__io void*)0x40006000) +#define USB_PMA_BASE ((__IO void*)0x40006000) /* * PMA conveniences @@ -367,42 +367,42 @@ union usb_btable_ent; /* Bidirectional endpoint BTABLE entry */ typedef struct usb_btable_bidi { - __io uint16 addr_tx; const uint16 PAD1; - __io uint16 count_tx; const uint16 PAD2; - __io uint16 addr_rx; const uint16 PAD3; - __io uint16 count_rx; const uint16 PAD4; + __IO uint16 addr_tx; const uint16 PAD1; + __IO uint16 count_tx; const uint16 PAD2; + __IO uint16 addr_rx; const uint16 PAD3; + __IO uint16 count_rx; const uint16 PAD4; } usb_btable_bidi; /* Unidirectional receive-only endpoint BTABLE entry */ typedef struct usb_btable_uni_rx { - __io uint16 empty1; const uint16 PAD1; - __io uint16 empty2; const uint16 PAD2; - __io uint16 addr_rx; const uint16 PAD3; - __io uint16 count_rx; const uint16 PAD4; + __IO uint16 empty1; const uint16 PAD1; + __IO uint16 empty2; const uint16 PAD2; + __IO uint16 addr_rx; const uint16 PAD3; + __IO uint16 count_rx; const uint16 PAD4; } usb_btable_uni_rx; /* Unidirectional transmit-only endpoint BTABLE entry */ typedef struct usb_btable_uni_tx { - __io uint16 addr_tx; const uint16 PAD1; - __io uint16 count_tx; const uint16 PAD2; - __io uint16 empty1; const uint16 PAD3; - __io uint16 empty2; const uint16 PAD4; + __IO uint16 addr_tx; const uint16 PAD1; + __IO uint16 count_tx; const uint16 PAD2; + __IO uint16 empty1; const uint16 PAD3; + __IO uint16 empty2; const uint16 PAD4; } usb_btable_uni_tx; /* Double-buffered transmission endpoint BTABLE entry */ typedef struct usb_btable_dbl_tx { - __io uint16 addr_tx0; const uint16 PAD1; - __io uint16 count_tx0; const uint16 PAD2; - __io uint16 addr_tx1; const uint16 PAD3; - __io uint16 count_tx1; const uint16 PAD4; + __IO uint16 addr_tx0; const uint16 PAD1; + __IO uint16 count_tx0; const uint16 PAD2; + __IO uint16 addr_tx1; const uint16 PAD3; + __IO uint16 count_tx1; const uint16 PAD4; } usb_btable_dbl_tx; /* Double-buffered reception endpoint BTABLE entry */ typedef struct usb_btable_dbl_rx { - __io uint16 addr_rx0; const uint16 PAD1; - __io uint16 count_rx0; const uint16 PAD2; - __io uint16 addr_rx1; const uint16 PAD3; - __io uint16 count_rx1; const uint16 PAD4; + __IO uint16 addr_rx0; const uint16 PAD1; + __IO uint16 count_rx0; const uint16 PAD2; + __IO uint16 addr_rx1; const uint16 PAD3; + __IO uint16 count_rx1; const uint16 PAD4; } usb_btable_dbl_rx; /* TODO isochronous endpoint entries */ diff --git a/STM32F3/cores/maple/libmaple/bkp.c b/STM32F3/cores/maple/libmaple/bkp.c index c8373079b..c48440b06 100644 --- a/STM32F3/cores/maple/libmaple/bkp.c +++ b/STM32F3/cores/maple/libmaple/bkp.c @@ -50,7 +50,7 @@ void bkp_disable_writes(void) { } uint16 bkp_read(uint8 reg) { - __io uint32* dr = bkp_data_register(reg); + __IO uint32* dr = bkp_data_register(reg); if (!dr) { ASSERT(0); /* nonexistent register */ return 0; @@ -59,7 +59,7 @@ uint16 bkp_read(uint8 reg) { } void bkp_write(uint8 reg, uint16 val) { - __io uint32* dr = bkp_data_register(reg); + __IO uint32* dr = bkp_data_register(reg); if (!dr) { ASSERT(0); /* nonexistent register */ return; diff --git a/STM32F3/cores/maple/libmaple/dma.c b/STM32F3/cores/maple/libmaple/dma.c index d13de1081..1dc875e3b 100644 --- a/STM32F3/cores/maple/libmaple/dma.c +++ b/STM32F3/cores/maple/libmaple/dma.c @@ -52,7 +52,7 @@ void dma_init(dma_dev *dev) { * Private API */ -enum dma_atype _dma_addr_type(__io void *addr) { +enum dma_atype _dma_addr_type(__IO void *addr) { switch (stm32_block_purpose((void*)addr)) { /* Notice we're treating the code block as memory here. That's * correct for addresses in Flash and in [0x0, 0x7FFFFFF] diff --git a/STM32F3/cores/maple/libmaple/dma_private.h b/STM32F3/cores/maple/libmaple/dma_private.h index b25ded2b9..93385255c 100644 --- a/STM32F3/cores/maple/libmaple/dma_private.h +++ b/STM32F3/cores/maple/libmaple/dma_private.h @@ -56,6 +56,6 @@ enum dma_atype { DMA_ATYPE_OTHER, }; -enum dma_atype _dma_addr_type(__io void *addr); +enum dma_atype _dma_addr_type(__IO void *addr); #endif diff --git a/STM32F3/cores/maple/libmaple/exti.c b/STM32F3/cores/maple/libmaple/exti.c index c35072ca3..f59c0eb0d 100644 --- a/STM32F3/cores/maple/libmaple/exti.c +++ b/STM32F3/cores/maple/libmaple/exti.c @@ -200,7 +200,7 @@ void exti_detach_interrupt(exti_num num) { * Private routines */ -void exti_do_select(__io uint32 *exti_cr, exti_num num, exti_cfg port) { +void exti_do_select(__IO uint32 *exti_cr, exti_num num, exti_cfg port) { uint32 shift = 4 * (num % 4); uint32 cr = *exti_cr; cr &= ~(0xF << shift); diff --git a/STM32F3/cores/maple/libmaple/exti_private.h b/STM32F3/cores/maple/libmaple/exti_private.h index 4f0a4cf9c..221cae454 100644 --- a/STM32F3/cores/maple/libmaple/exti_private.h +++ b/STM32F3/cores/maple/libmaple/exti_private.h @@ -29,6 +29,6 @@ #include -void exti_do_select(__io uint32 *exti_cr, exti_num num, exti_cfg port); +void exti_do_select(__IO uint32 *exti_cr, exti_num num, exti_cfg port); #endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/bkp.h b/STM32F3/cores/maple/libmaple/include/libmaple/bkp.h index 7e795ddf2..9b0047029 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/bkp.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/bkp.h @@ -52,7 +52,7 @@ extern const struct bkp_dev *BKP; /* * this function needs to be implemented for each series separately */ -extern inline __io uint32* bkp_data_register(uint8 reg); +extern inline __IO uint32* bkp_data_register(uint8 reg); /** * @brief Initialize backup interface. diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/dma.h b/STM32F3/cores/maple/libmaple/include/libmaple/dma.h index e22cdaf5a..329e90773 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/dma.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/dma.h @@ -136,12 +136,12 @@ void dma_init(dma_dev *dev); */ typedef struct dma_tube_config { /** Source of data */ - __io void *tube_src; + __IO void *tube_src; /** Source transfer size */ dma_xfer_size tube_src_size; /** Destination of data */ - __io void *tube_dst; + __IO void *tube_dst; /** Destination transfer size */ dma_xfer_size tube_dst_size; @@ -280,7 +280,7 @@ extern void dma_set_num_transfers(dma_dev *dev, dma_tube tube, * @param tube Tube whose base memory address to set. * @param address Memory base address to use. */ -extern void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __io void *address); +extern void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __IO void *address); /** * @brief Set the base peripheral address where data will be read from @@ -296,7 +296,7 @@ extern void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __io void *address); * @param tube Tube whose peripheral data register base address to set. * @param address Peripheral memory base address to use. */ -extern void dma_set_per_addr(dma_dev *dev, dma_tube tube, __io void *address); +extern void dma_set_per_addr(dma_dev *dev, dma_tube tube, __IO void *address); /* Interrupt handling */ diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/exti.h b/STM32F3/cores/maple/libmaple/include/libmaple/exti.h index 1d201ac34..525cdc795 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/exti.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/exti.h @@ -47,12 +47,12 @@ extern "C"{ /** EXTI register map type */ typedef struct exti_reg_map { - __io uint32 IMR; /**< Interrupt mask register */ - __io uint32 EMR; /**< Event mask register */ - __io uint32 RTSR; /**< Rising trigger selection register */ - __io uint32 FTSR; /**< Falling trigger selection register */ - __io uint32 SWIER; /**< Software interrupt event register */ - __io uint32 PR; /**< Pending register */ + __IO uint32 IMR; /**< Interrupt mask register */ + __IO uint32 EMR; /**< Event mask register */ + __IO uint32 RTSR; /**< Rising trigger selection register */ + __IO uint32 FTSR; /**< Falling trigger selection register */ + __IO uint32 SWIER; /**< Software interrupt event register */ + __IO uint32 PR; /**< Pending register */ } exti_reg_map; /* diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h b/STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h index 6225feedc..9dd8a7255 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h @@ -53,42 +53,42 @@ extern "C"{ /** FSMC register map type */ typedef struct fsmc_reg_map { - __io uint32 BCR1; /**< SRAM/NOR-Flash chip-select control register 1 */ - __io uint32 BTR1; /**< SRAM/NOR-Flash chip-select timing register 1 */ - __io uint32 BCR2; /**< SRAM/NOR-Flash chip-select control register 2 */ - __io uint32 BTR2; /**< SRAM/NOR-Flash chip-select timing register 2 */ - __io uint32 BCR3; /**< SRAM/NOR-Flash chip-select control register 3 */ - __io uint32 BTR3; /**< SRAM/NOR-Flash chip-select timing register 3 */ - __io uint32 BCR4; /**< SRAM/NOR-Flash chip-select control register 4 */ - __io uint32 BTR4; /**< SRAM/NOR-Flash chip-select timing register 4 */ + __IO uint32 BCR1; /**< SRAM/NOR-Flash chip-select control register 1 */ + __IO uint32 BTR1; /**< SRAM/NOR-Flash chip-select timing register 1 */ + __IO uint32 BCR2; /**< SRAM/NOR-Flash chip-select control register 2 */ + __IO uint32 BTR2; /**< SRAM/NOR-Flash chip-select timing register 2 */ + __IO uint32 BCR3; /**< SRAM/NOR-Flash chip-select control register 3 */ + __IO uint32 BTR3; /**< SRAM/NOR-Flash chip-select timing register 3 */ + __IO uint32 BCR4; /**< SRAM/NOR-Flash chip-select control register 4 */ + __IO uint32 BTR4; /**< SRAM/NOR-Flash chip-select timing register 4 */ const uint8 RESERVED1[64]; /**< Reserved */ - __io uint32 PCR2; /**< PC Card/NAND Flash control register 2 */ - __io uint32 SR2; /**< FIFO status and interrupt register 2 */ - __io uint32 PMEM2; /**< Common memory space timing register 2 */ - __io uint32 PATT2; /**< Attribute memory space timing register 2 */ + __IO uint32 PCR2; /**< PC Card/NAND Flash control register 2 */ + __IO uint32 SR2; /**< FIFO status and interrupt register 2 */ + __IO uint32 PMEM2; /**< Common memory space timing register 2 */ + __IO uint32 PATT2; /**< Attribute memory space timing register 2 */ const uint8 RESERVED2[4]; /**< Reserved */ - __io uint32 ECCR2; /**< ECC result register 2 */ + __IO uint32 ECCR2; /**< ECC result register 2 */ const uint8 RESERVED3[2]; - __io uint32 PCR3; /**< PC Card/NAND Flash control register 3 */ - __io uint32 SR3; /**< FIFO status and interrupt register 3 */ - __io uint32 PMEM3; /**< Common memory space timing register 3 */ - __io uint32 PATT3; /**< Attribute memory space timing register 3 */ + __IO uint32 PCR3; /**< PC Card/NAND Flash control register 3 */ + __IO uint32 SR3; /**< FIFO status and interrupt register 3 */ + __IO uint32 PMEM3; /**< Common memory space timing register 3 */ + __IO uint32 PATT3; /**< Attribute memory space timing register 3 */ const uint32 RESERVED4; /**< Reserved */ - __io uint32 ECCR3; /**< ECC result register 3 */ + __IO uint32 ECCR3; /**< ECC result register 3 */ const uint8 RESERVED5[8]; /**< Reserved */ - __io uint32 PCR4; /**< PC Card/NAND Flash control register 4 */ - __io uint32 SR4; /**< FIFO status and interrupt register 4 */ - __io uint32 PMEM4; /**< Common memory space timing register 4 */ - __io uint32 PATT4; /**< Attribute memory space timing register 4 */ - __io uint32 PIO4; /**< I/O space timing register 4 */ + __IO uint32 PCR4; /**< PC Card/NAND Flash control register 4 */ + __IO uint32 SR4; /**< FIFO status and interrupt register 4 */ + __IO uint32 PMEM4; /**< Common memory space timing register 4 */ + __IO uint32 PATT4; /**< Attribute memory space timing register 4 */ + __IO uint32 PIO4; /**< I/O space timing register 4 */ const uint8 RESERVED6[80]; /**< Reserved */ - __io uint32 BWTR1; /**< SRAM/NOR-Flash write timing register 1 */ + __IO uint32 BWTR1; /**< SRAM/NOR-Flash write timing register 1 */ const uint32 RESERVED7; /**< Reserved */ - __io uint32 BWTR2; /**< SRAM/NOR-Flash write timing register 2 */ + __IO uint32 BWTR2; /**< SRAM/NOR-Flash write timing register 2 */ const uint32 RESERVED8; /**< Reserved */ - __io uint32 BWTR3; /**< SRAM/NOR-Flash write timing register 3 */ + __IO uint32 BWTR3; /**< SRAM/NOR-Flash write timing register 3 */ const uint32 RESERVED9; /**< Reserved */ - __io uint32 BWTR4; /**< SRAM/NOR-Flash write timing register 4 */ + __IO uint32 BWTR4; /**< SRAM/NOR-Flash write timing register 4 */ } __attribute__((packed)) fsmc_reg_map; #define __FSMCB 0xA0000000 @@ -98,10 +98,10 @@ typedef struct fsmc_reg_map { /** FSMC NOR/PSRAM register map type */ typedef struct fsmc_nor_psram_reg_map { - __io uint32 BCR; /**< Chip-select control register */ - __io uint32 BTR; /**< Chip-select timing register */ + __IO uint32 BCR; /**< Chip-select control register */ + __IO uint32 BTR; /**< Chip-select timing register */ const uint8 RESERVED[252]; /**< Reserved */ - __io uint32 BWTR; /**< Write timing register */ + __IO uint32 BWTR; /**< Write timing register */ } fsmc_nor_psram_reg_map; /** FSMC NOR/PSRAM base pointer 1 */ diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h b/STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h index 3a16c5500..f99943986 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h @@ -53,10 +53,10 @@ extern "C"{ /** Independent watchdog register map type. */ typedef struct iwdg_reg_map { - __io uint32 KR; /**< Key register. */ - __io uint32 PR; /**< Prescaler register. */ - __io uint32 RLR; /**< Reload register. */ - __io uint32 SR; /**< Status register */ + __IO uint32 KR; /**< Key register. */ + __IO uint32 PR; /**< Prescaler register. */ + __IO uint32 RLR; /**< Reload register. */ + __IO uint32 SR; /**< Status register */ } iwdg_reg_map; /** Independent watchdog base pointer */ diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h b/STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h index 60dd2ff22..c0a989a40 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h @@ -50,7 +50,7 @@ typedef long long int64; typedef void (*voidFuncPtr)(void); typedef void (*voidArgumentFuncPtr)(void *); -#define __io volatile +#define __IO volatile #define __attr_flash __attribute__((section (".USER_FLASH"))) #define __packed __attribute__((__packed__)) #define __deprecated __attribute__((__deprecated__)) diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/nvic.h b/STM32F3/cores/maple/libmaple/include/libmaple/nvic.h index ffe385dcd..76996043d 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/nvic.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/nvic.h @@ -55,31 +55,31 @@ extern "C"{ /** NVIC register map type. */ typedef struct nvic_reg_map { - __io uint32 ISER[8]; /**< Interrupt Set Enable Registers */ + __IO uint32 ISER[8]; /**< Interrupt Set Enable Registers */ /** Reserved */ uint32 RESERVED0[24]; - __io uint32 ICER[8]; /**< Interrupt Clear Enable Registers */ + __IO uint32 ICER[8]; /**< Interrupt Clear Enable Registers */ /** Reserved */ uint32 RESERVED1[24]; - __io uint32 ISPR[8]; /**< Interrupt Set Pending Registers */ + __IO uint32 ISPR[8]; /**< Interrupt Set Pending Registers */ /** Reserved */ uint32 RESERVED2[24]; - __io uint32 ICPR[8]; /**< Interrupt Clear Pending Registers */ + __IO uint32 ICPR[8]; /**< Interrupt Clear Pending Registers */ /** Reserved */ uint32 RESERVED3[24]; - __io uint32 IABR[8]; /**< Interrupt Active bit Registers */ + __IO uint32 IABR[8]; /**< Interrupt Active bit Registers */ /** Reserved */ uint32 RESERVED4[56]; - __io uint8 IP[240]; /**< Interrupt Priority Registers */ + __IO uint8 IP[240]; /**< Interrupt Priority Registers */ /** Reserved */ uint32 RESERVED5[644]; - __io uint32 STIR; /**< Software Trigger Interrupt Registers */ + __IO uint32 STIR; /**< Software Trigger Interrupt Registers */ } nvic_reg_map; /** NVIC register map base pointer. */ diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/pwr.h b/STM32F3/cores/maple/libmaple/include/libmaple/pwr.h index e4b5b0d80..6087c9b17 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/pwr.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/pwr.h @@ -41,8 +41,8 @@ extern "C" { /** Power interface register map. */ typedef struct pwr_reg_map { - __io uint32 CR; /**< Control register */ - __io uint32 CSR; /**< Control and status register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 CSR; /**< Control and status register */ } pwr_reg_map; /** Power peripheral register map base pointer. */ diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h b/STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h index e02e6e727..633c29ad3 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h @@ -81,7 +81,7 @@ static inline void rb_init(ring_buffer *rb, uint16 size, uint8 *buf) { * @param rb Buffer whose elements to count. */ static inline uint16 rb_full_count(ring_buffer *rb) { - __io ring_buffer *arb = rb; + __IO ring_buffer *arb = rb; int32 size = arb->tail - arb->head; if (arb->tail < arb->head) { size += arb->size + 1; diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/scb.h b/STM32F3/cores/maple/libmaple/include/libmaple/scb.h index c42a0f2a0..0b01480bf 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/scb.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/scb.h @@ -49,37 +49,37 @@ extern "C" { /** System control block register map type */ typedef struct scb_reg_map { - __io uint32 CPUID; /**< CPU ID Base Register */ - __io uint32 ICSR; /**< Interrupt Control State Register */ - __io uint32 VTOR; /**< Vector Table Offset Register */ - __io uint32 AIRCR; /**< Application Interrupt / Reset Control Register */ - __io uint32 SCR; /**< System Control Register */ - __io uint32 CCR; /**< Configuration and Control Register */ - __io uint8 SHP[12]; /**< System Handler Priority Registers + __IO uint32 CPUID; /**< CPU ID Base Register */ + __IO uint32 ICSR; /**< Interrupt Control State Register */ + __IO uint32 VTOR; /**< Vector Table Offset Register */ + __IO uint32 AIRCR; /**< Application Interrupt / Reset Control Register */ + __IO uint32 SCR; /**< System Control Register */ + __IO uint32 CCR; /**< Configuration and Control Register */ + __IO uint8 SHP[12]; /**< System Handler Priority Registers (4-7, 8-11, 12-15) */ - __io uint32 SHCSR; /**< System Handler Control and State Register */ - __io uint32 CFSR; /**< Configurable Fault Status Register */ - __io uint32 HFSR; /**< Hard Fault Status Register */ + __IO uint32 SHCSR; /**< System Handler Control and State Register */ + __IO uint32 CFSR; /**< Configurable Fault Status Register */ + __IO uint32 HFSR; /**< Hard Fault Status Register */ /* DFSR is not documented by ST in PM0056 (as of Revision 4), but * there's a 4 byte hole in the SCB register map docs right where * it belongs. Since it's specified as "always implemented" in * the ARM v7-M ARM, I'm assuming its absence is a bug in the ST * doc, but I haven't proven it. [mbolivar] */ - __io uint32 DFSR; /**< Debug Fault Status Register */ - __io uint32 MMFAR; /**< Mem Manage Address Register */ - __io uint32 BFAR; /**< Bus Fault Address Register */ + __IO uint32 DFSR; /**< Debug Fault Status Register */ + __IO uint32 MMFAR; /**< Mem Manage Address Register */ + __IO uint32 BFAR; /**< Bus Fault Address Register */ #if 0 /* The following registers are implementation-defined according to * ARM v7-M, and I can't find evidence of their existence in ST's * docs. I'm removing them. Feel free to yell at me if they do * exist. [mbolivar] */ - __io uint32 AFSR; /**< Auxiliary Fault Status Register */ - __io uint32 PFR[2]; /**< Processor Feature Register */ - __io uint32 DFR; /**< Debug Feature Register */ - __io uint32 AFR; /**< Auxiliary Feature Register */ - __io uint32 MMFR[4]; /**< Memory Model Feature Register */ - __io uint32 ISAR[5]; /**< ISA Feature Register */ + __IO uint32 AFSR; /**< Auxiliary Fault Status Register */ + __IO uint32 PFR[2]; /**< Processor Feature Register */ + __IO uint32 DFR; /**< Debug Feature Register */ + __IO uint32 AFR; /**< Auxiliary Feature Register */ + __IO uint32 MMFR[4]; /**< Memory Model Feature Register */ + __IO uint32 ISAR[5]; /**< ISA Feature Register */ #endif } scb_reg_map; diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/spi.h b/STM32F3/cores/maple/libmaple/include/libmaple/spi.h index e688e4f9f..5c0917029 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/spi.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/spi.h @@ -54,15 +54,15 @@ extern "C" { /** SPI register map type. */ typedef struct spi_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SR; /**< Status register */ - __io uint32 DR; /**< Data register */ - __io uint32 CRCPR; /**< CRC polynomial register */ - __io uint32 RXCRCR; /**< RX CRC register */ - __io uint32 TXCRCR; /**< TX CRC register */ - __io uint32 I2SCFGR; /**< I2S configuration register */ - __io uint32 I2SPR; /**< I2S prescaler register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SR; /**< Status register */ + __IO uint32 DR; /**< Data register */ + __IO uint32 CRCPR; /**< CRC polynomial register */ + __IO uint32 RXCRCR; /**< RX CRC register */ + __IO uint32 TXCRCR; /**< TX CRC register */ + __IO uint32 I2SCFGR; /**< I2S configuration register */ + __IO uint32 I2SPR; /**< I2S prescaler register */ } spi_reg_map; /* diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/systick.h b/STM32F3/cores/maple/libmaple/include/libmaple/systick.h index 551f8000a..815a1c3d6 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/systick.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/systick.h @@ -41,10 +41,10 @@ extern "C"{ /** SysTick register map type */ typedef struct systick_reg_map { - __io uint32 CSR; /**< Control and status register */ - __io uint32 RVR; /**< Reload value register */ - __io uint32 CNT; /**< Current value register ("count") */ - __io uint32 CVR; /**< Calibration value register */ + __IO uint32 CSR; /**< Control and status register */ + __IO uint32 RVR; /**< Reload value register */ + __IO uint32 CNT; /**< Current value register ("count") */ + __IO uint32 CVR; /**< Calibration value register */ } systick_reg_map; /** SysTick register map base pointer */ diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/timer.h b/STM32F3/cores/maple/libmaple/include/libmaple/timer.h index 9167f7d7e..51a56239c 100644 --- a/STM32F3/cores/maple/libmaple/include/libmaple/timer.h +++ b/STM32F3/cores/maple/libmaple/include/libmaple/timer.h @@ -49,26 +49,26 @@ extern "C"{ /** Advanced control timer register map type */ typedef struct timer_adv_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SMCR; /**< Slave mode control register */ - __io uint32 DIER; /**< DMA/interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ - __io uint32 CCMR1; /**< Capture/compare mode register 1 */ - __io uint32 CCMR2; /**< Capture/compare mode register 2 */ - __io uint32 CCER; /**< Capture/compare enable register */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ - __io uint32 RCR; /**< Repetition counter register */ - __io uint32 CCR1; /**< Capture/compare register 1 */ - __io uint32 CCR2; /**< Capture/compare register 2 */ - __io uint32 CCR3; /**< Capture/compare register 3 */ - __io uint32 CCR4; /**< Capture/compare register 4 */ - __io uint32 BDTR; /**< Break and dead-time register */ - __io uint32 DCR; /**< DMA control register */ - __io uint32 DMAR; /**< DMA address for full transfer */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SMCR; /**< Slave mode control register */ + __IO uint32 DIER; /**< DMA/interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ + __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ + __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ + __IO uint32 CCER; /**< Capture/compare enable register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ + __IO uint32 RCR; /**< Repetition counter register */ + __IO uint32 CCR1; /**< Capture/compare register 1 */ + __IO uint32 CCR2; /**< Capture/compare register 2 */ + __IO uint32 CCR3; /**< Capture/compare register 3 */ + __IO uint32 CCR4; /**< Capture/compare register 4 */ + __IO uint32 BDTR; /**< Break and dead-time register */ + __IO uint32 DCR; /**< DMA control register */ + __IO uint32 DMAR; /**< DMA address for full transfer */ } timer_adv_reg_map; /* General purpose timer register map type: intentionally omitted. @@ -78,18 +78,18 @@ typedef struct timer_adv_reg_map { /** Basic timer register map type */ typedef struct timer_bas_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 DIER; /**< DMA/interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ + __IO uint32 DIER; /**< DMA/interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ const uint32 RESERVED2; /**< Reserved */ const uint32 RESERVED3; /**< Reserved */ const uint32 RESERVED4; /**< Reserved */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ } timer_bas_reg_map; /* @@ -725,7 +725,7 @@ static inline void timer_set_reload(timer_dev *dev, uint16 arr) { * @param channel Channel whose compare value to get. */ static inline uint16 timer_get_compare(timer_dev *dev, uint8 channel) { - __io uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); + __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); return *ccr; } @@ -738,7 +738,7 @@ static inline uint16 timer_get_compare(timer_dev *dev, uint8 channel) { static inline void timer_set_compare(timer_dev *dev, uint8 channel, uint16 value) { - __io uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); + __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); *ccr = value; } @@ -1035,7 +1035,7 @@ static inline void timer_oc_set_mode(timer_dev *dev, timer_oc_mode mode, uint8 flags) { /* channel == 1,2 -> CCMR1; channel == 3,4 -> CCMR2 */ - __io uint32 *ccmr = &(dev->regs).gen->CCMR1 + (((channel - 1) >> 1) & 1); + __IO uint32 *ccmr = &(dev->regs).gen->CCMR1 + (((channel - 1) >> 1) & 1); /* channel == 1,3 -> shift = 0, channel == 2,4 -> shift = 8 */ uint8 shift = 8 * (1 - (channel & 1)); diff --git a/STM32F3/cores/maple/libmaple/rcc.c b/STM32F3/cores/maple/libmaple/rcc.c index 8e7d1ea7d..aba87c006 100644 --- a/STM32F3/cores/maple/libmaple/rcc.c +++ b/STM32F3/cores/maple/libmaple/rcc.c @@ -94,8 +94,8 @@ void rcc_switch_sysclk(rcc_sysclk_src sysclk_src) { * won't work for you. */ /* Returns the RCC register which controls the clock source. */ -static inline __io uint32* rcc_clk_reg(rcc_clk clock) { - return (__io uint32*)((__io uint8*)RCC_BASE + (clock >> 8)); +static inline __IO uint32* rcc_clk_reg(rcc_clk clock) { + return (__IO uint32*)((__IO uint8*)RCC_BASE + (clock >> 8)); } /* Returns a mask in rcc_clk_reg(clock) to be used for turning the diff --git a/STM32F3/cores/maple/libmaple/rcc_private.h b/STM32F3/cores/maple/libmaple/rcc_private.h index 66eaf00da..b20a2c5d2 100644 --- a/STM32F3/cores/maple/libmaple/rcc_private.h +++ b/STM32F3/cores/maple/libmaple/rcc_private.h @@ -40,16 +40,16 @@ struct rcc_dev_info { extern const struct rcc_dev_info rcc_dev_table[]; -static inline void rcc_do_clk_enable(__io uint32** enable_regs, +static inline void rcc_do_clk_enable(__IO uint32** enable_regs, rcc_clk_id id) { - __io uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; + __IO uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; uint8 line_num = rcc_dev_table[id].line_num; bb_peri_set_bit(enable_reg, line_num, 1); } -static inline void rcc_do_reset_dev(__io uint32** reset_regs, +static inline void rcc_do_reset_dev(__IO uint32** reset_regs, rcc_clk_id id) { - __io uint32 *reset_reg = reset_regs[rcc_dev_clk(id)]; + __IO uint32 *reset_reg = reset_regs[rcc_dev_clk(id)]; uint8 line_num = rcc_dev_table[id].line_num; bb_peri_set_bit(reset_reg, line_num, 1); bb_peri_set_bit(reset_reg, line_num, 0); diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c index 982d6ea44..23a3b9603 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c +++ b/STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c @@ -164,7 +164,7 @@ void adc_set_conv_seq(const adc_dev *dev, const uint8 *channels, uint8 len) { uint8 i; uint32 val = 0; uint8 lshift; - __io uint32 *sqr = &dev->regs->SQR1; + __IO uint32 *sqr = &dev->regs->SQR1; for (i=0; i BKP_NR_DATA_REGS) return NULL; else diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c index 317c28385..10ba37f9c 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c +++ b/STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c @@ -86,7 +86,7 @@ static int cfg_dev_ok(dma_dev *dev, dma_tube_config *cfg) { } /* Is addr acceptable for use as DMA src/dst? */ -static int cfg_mem_ok(__io void *addr) { +static int cfg_mem_ok(__IO void *addr) { enum dma_atype atype = _dma_addr_type(addr); return atype == DMA_ATYPE_MEM || atype == DMA_ATYPE_PER; } @@ -293,7 +293,7 @@ dma_irq_cause dma_get_irq_cause(dma_dev *dev, dma_channel channel) { return DMA_TRANSFER_ERROR; } -void dma_set_mem_addr(dma_dev *dev, dma_channel channel, __io void *addr) { +void dma_set_mem_addr(dma_dev *dev, dma_channel channel, __IO void *addr) { dma_channel_reg_map *chan_regs; ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); @@ -302,7 +302,7 @@ void dma_set_mem_addr(dma_dev *dev, dma_channel channel, __io void *addr) { chan_regs->CMAR = (uint32)addr; } -void dma_set_per_addr(dma_dev *dev, dma_channel channel, __io void *addr) { +void dma_set_per_addr(dma_dev *dev, dma_channel channel, __IO void *addr) { dma_channel_reg_map *chan_regs; ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c index 45992a411..7ca982a9f 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c +++ b/STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c @@ -152,7 +152,7 @@ void gpio_set_modef(gpio_dev *dev, * @see gpio_set_modef() */ void gpio_set_af(gpio_dev *dev, uint8 bit, gpio_af af) { - __io uint32 *afr; + __IO uint32 *afr; unsigned shift; uint32 tmp; if (bit >= 8) { diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c index 4099e8001..5ebe2ad34 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c +++ b/STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c @@ -121,7 +121,7 @@ void rcc_configure_pll(rcc_pll_cfg *pll_cfg) { } void rcc_clk_enable(rcc_clk_id id) { - static __io uint32* enable_regs[] = { + static __IO uint32* enable_regs[] = { [APB1] = &RCC_BASE->APB1ENR, [APB2] = &RCC_BASE->APB2ENR, [AHB] = &RCC_BASE->AHBENR, @@ -130,7 +130,7 @@ void rcc_clk_enable(rcc_clk_id id) { } void rcc_reset_dev(rcc_clk_id id) { - static __io uint32* reset_regs[] = { + static __IO uint32* reset_regs[] = { [APB1] = &RCC_BASE->APB1RSTR, [APB2] = &RCC_BASE->APB2RSTR, [AHB] = &RCC_BASE->AHBRSTR, diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c index 3fafa5217..d5c38a0a9 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c +++ b/STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c @@ -119,10 +119,10 @@ void spi_reconfigure(spi_dev *dev, uint32 cr1_config) { uint16 spi_rx_reg(spi_dev *dev) { uint8 byte_frame = (dev->regs->CR2 & SPI_CR2_DS) <= SPI_DATA_SIZE_8_BIT; if (byte_frame) { - __io uint8 *dr8 = (__io uint8 *)&dev->regs->DR; /* we need to access as byte */ + __IO uint8 *dr8 = (__IO uint8 *)&dev->regs->DR; /* we need to access as byte */ return (uint16)*dr8; } else { - __io uint16 *dr16 = (__io uint16 *)&dev->regs->DR; /* we need to access as half-word */ + __IO uint16 *dr16 = (__IO uint16 *)&dev->regs->DR; /* we need to access as half-word */ return (uint16)*dr16; } } @@ -132,10 +132,10 @@ uint32 spi_tx(spi_dev *dev, const void *buf, uint32 len) { uint8 byte_frame = (dev->regs->CR2 & SPI_CR2_DS) <= SPI_DATA_SIZE_8_BIT; while (spi_is_tx_empty(dev) && (txed < len)) { if (byte_frame) { - __io uint8 *dr8 = (__io uint8 *)&dev->regs->DR; /* we need to access as byte */ + __IO uint8 *dr8 = (__IO uint8 *)&dev->regs->DR; /* we need to access as byte */ *dr8 = ((const uint8 *)buf)[txed++]; } else { - __io uint16 *dr16 = (__io uint16 *)&dev->regs->DR; /* we need to access as half-word */ + __IO uint16 *dr16 = (__IO uint16 *)&dev->regs->DR; /* we need to access as half-word */ *dr16 = ((const uint16 *)buf)[txed++]; } } diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h index 76422f63f..8f4edde54 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h @@ -45,51 +45,51 @@ * ADC individual register map type. */ typedef struct adc_reg_map { - __io uint32 ISR; /**< */ - __io uint32 IER; /**< */ - __io uint32 CR; /**< */ - __io uint32 CFGR; /**< */ + __IO uint32 ISR; /**< */ + __IO uint32 IER; /**< */ + __IO uint32 CR; /**< */ + __IO uint32 CFGR; /**< */ uint32 reserved1; - __io uint32 SMPR1; /**< */ - __io uint32 SMPR2; /**< */ + __IO uint32 SMPR1; /**< */ + __IO uint32 SMPR2; /**< */ uint32 reserved2; - __io uint32 TR1; /**< */ - __io uint32 TR2; /**< */ - __io uint32 TR3; /**< */ + __IO uint32 TR1; /**< */ + __IO uint32 TR2; /**< */ + __IO uint32 TR3; /**< */ uint32 reserved3; - __io uint32 SQR1; /**< */ - __io uint32 SQR2; /**< */ - __io uint32 SQR3; /**< */ - __io uint32 SQR4; /**< */ - __io uint32 DR; /**< */ + __IO uint32 SQR1; /**< */ + __IO uint32 SQR2; /**< */ + __IO uint32 SQR3; /**< */ + __IO uint32 SQR4; /**< */ + __IO uint32 DR; /**< */ uint32 reserved4 [2]; - __io uint32 JSQR; /**< */ + __IO uint32 JSQR; /**< */ uint32 reserved5 [4]; - __io uint32 OFR1; /**< */ - __io uint32 OFR2; /**< */ - __io uint32 OFR3; /**< */ - __io uint32 OFR4; /**< */ + __IO uint32 OFR1; /**< */ + __IO uint32 OFR2; /**< */ + __IO uint32 OFR3; /**< */ + __IO uint32 OFR4; /**< */ uint32 reserved6 [4]; - __io uint32 JDR1; /**< */ - __io uint32 JDR2; /**< */ - __io uint32 JDR3; /**< */ - __io uint32 JDR4; /**< */ + __IO uint32 JDR1; /**< */ + __IO uint32 JDR2; /**< */ + __IO uint32 JDR3; /**< */ + __IO uint32 JDR4; /**< */ uint32 reserved7 [4]; - __io uint32 AWD2CR; /**< */ - __io uint32 AWD3CR; /**< */ + __IO uint32 AWD2CR; /**< */ + __IO uint32 AWD3CR; /**< */ uint32 reserved8 [2]; - __io uint32 DIFSEL; /**< */ - __io uint32 CALFACT; /**< */ + __IO uint32 DIFSEL; /**< */ + __IO uint32 CALFACT; /**< */ } adc_reg_map; /* * ADC master and slave common register map type. */ typedef struct adc_common_reg_map { - __io uint32 CSR; /**< */ + __IO uint32 CSR; /**< */ uint32 reserved; - __io uint32 CCR; /**< */ - __io uint32 CDR; /**< */ + __IO uint32 CCR; /**< */ + __IO uint32 CDR; /**< */ } adc_common_reg_map; /** ADC device type. */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h index 3a49a4160..21ab1c162 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h @@ -38,22 +38,22 @@ /** Backup peripheral register map type. */ typedef struct bkp_reg_map { - __io uint32 DR0; ///< Data register 0 - __io uint32 DR1; ///< Data register 1 - __io uint32 DR2; ///< Data register 2 - __io uint32 DR3; ///< Data register 3 - __io uint32 DR4; ///< Data register 4 - __io uint32 DR5; ///< Data register 5 - __io uint32 DR6; ///< Data register 6 - __io uint32 DR7; ///< Data register 7 - __io uint32 DR8; ///< Data register 8 - __io uint32 DR9; ///< Data register 9 - __io uint32 DR10; ///< Data register 10 - __io uint32 DR11; ///< Data register 11 - __io uint32 DR12; ///< Data register 12 - __io uint32 DR13; ///< Data register 13 - __io uint32 DR14; ///< Data register 14 - __io uint32 DR15; ///< Data register 15 + __IO uint32 DR0; ///< Data register 0 + __IO uint32 DR1; ///< Data register 1 + __IO uint32 DR2; ///< Data register 2 + __IO uint32 DR3; ///< Data register 3 + __IO uint32 DR4; ///< Data register 4 + __IO uint32 DR5; ///< Data register 5 + __IO uint32 DR6; ///< Data register 6 + __IO uint32 DR7; ///< Data register 7 + __IO uint32 DR8; ///< Data register 8 + __IO uint32 DR9; ///< Data register 9 + __IO uint32 DR10; ///< Data register 10 + __IO uint32 DR11; ///< Data register 11 + __IO uint32 DR12; ///< Data register 12 + __IO uint32 DR13; ///< Data register 13 + __IO uint32 DR14; ///< Data register 14 + __IO uint32 DR15; ///< Data register 15 } bkp_reg_map; /** Backup peripheral register map base pointer. */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h index ca40a96c5..161f43969 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h @@ -47,7 +47,7 @@ extern "C"{ * COMP individual register map type. */ typedef struct comp_reg_map { - __io uint32 CSR; /**< */ + __IO uint32 CSR; /**< */ } comp_reg_map; /** COMP device type. */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h index 72e7995a2..fa10aa4e4 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h @@ -43,12 +43,12 @@ extern "C"{ /** CRC register map type */ typedef struct crc_reg_map { - __io uint32 DR; /**< Data register */ - __io uint32 IDR; /**< Independent data register */ - __io uint32 CR; /**< Control register */ + __IO uint32 DR; /**< Data register */ + __IO uint32 IDR; /**< Independent data register */ + __IO uint32 CR; /**< Control register */ uint32 reserved; - __io uint32 INIT; /**< Initial data register */ - __io uint32 POL; /**< Polynomial register */ + __IO uint32 INIT; /**< Initial data register */ + __IO uint32 POL; /**< Polynomial register */ } crc_reg_map; /* diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h index 7c5e8f5a0..890e34c22 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h @@ -40,28 +40,28 @@ extern "C"{ /** STM32F3 DAC register map type. */ typedef struct dac_reg_map { - __io uint32 CR; /**< Control register */ - __io uint32 SWTRIGR; /**< Software trigger register */ - __io uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data + __IO uint32 CR; /**< Control register */ + __IO uint32 SWTRIGR; /**< Software trigger register */ + __IO uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data holding register */ - __io uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data + __IO uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data holding register */ - __io uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data + __IO uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data holding register */ - __io uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data + __IO uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data holding register */ - __io uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data + __IO uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data holding register */ - __io uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data + __IO uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data holding register */ - __io uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data + __IO uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data holding register */ - __io uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data + __IO uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data holding register */ - __io uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding + __IO uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding register */ - __io uint32 DOR1; /**< Channel 1 data output register */ - __io uint32 DOR2; /**< Channel 2 data output register */ + __IO uint32 DOR1; /**< Channel 1 data output register */ + __IO uint32 DOR2; /**< Channel 2 data output register */ } dac_reg_map; //#define DAC1_BASE ((struct dac_reg_map*)0x40007400) diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h index 9bb3b1b33..1c7374855 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h @@ -55,42 +55,42 @@ extern "C"{ * only supports channels 1--5. */ typedef struct dma_reg_map { - __io uint32 ISR; /**< Interrupt status register */ - __io uint32 IFCR; /**< Interrupt flag clear register */ - __io uint32 CCR1; /**< Channel 1 configuration register */ - __io uint32 CNDTR1; /**< Channel 1 number of data register */ - __io uint32 CPAR1; /**< Channel 1 peripheral address register */ - __io uint32 CMAR1; /**< Channel 1 memory address register */ + __IO uint32 ISR; /**< Interrupt status register */ + __IO uint32 IFCR; /**< Interrupt flag clear register */ + __IO uint32 CCR1; /**< Channel 1 configuration register */ + __IO uint32 CNDTR1; /**< Channel 1 number of data register */ + __IO uint32 CPAR1; /**< Channel 1 peripheral address register */ + __IO uint32 CMAR1; /**< Channel 1 memory address register */ const uint32 RESERVED1; /**< Reserved. */ - __io uint32 CCR2; /**< Channel 2 configuration register */ - __io uint32 CNDTR2; /**< Channel 2 number of data register */ - __io uint32 CPAR2; /**< Channel 2 peripheral address register */ - __io uint32 CMAR2; /**< Channel 2 memory address register */ + __IO uint32 CCR2; /**< Channel 2 configuration register */ + __IO uint32 CNDTR2; /**< Channel 2 number of data register */ + __IO uint32 CPAR2; /**< Channel 2 peripheral address register */ + __IO uint32 CMAR2; /**< Channel 2 memory address register */ const uint32 RESERVED2; /**< Reserved. */ - __io uint32 CCR3; /**< Channel 3 configuration register */ - __io uint32 CNDTR3; /**< Channel 3 number of data register */ - __io uint32 CPAR3; /**< Channel 3 peripheral address register */ - __io uint32 CMAR3; /**< Channel 3 memory address register */ + __IO uint32 CCR3; /**< Channel 3 configuration register */ + __IO uint32 CNDTR3; /**< Channel 3 number of data register */ + __IO uint32 CPAR3; /**< Channel 3 peripheral address register */ + __IO uint32 CMAR3; /**< Channel 3 memory address register */ const uint32 RESERVED3; /**< Reserved. */ - __io uint32 CCR4; /**< Channel 4 configuration register */ - __io uint32 CNDTR4; /**< Channel 4 number of data register */ - __io uint32 CPAR4; /**< Channel 4 peripheral address register */ - __io uint32 CMAR4; /**< Channel 4 memory address register */ + __IO uint32 CCR4; /**< Channel 4 configuration register */ + __IO uint32 CNDTR4; /**< Channel 4 number of data register */ + __IO uint32 CPAR4; /**< Channel 4 peripheral address register */ + __IO uint32 CMAR4; /**< Channel 4 memory address register */ const uint32 RESERVED4; /**< Reserved. */ - __io uint32 CCR5; /**< Channel 5 configuration register */ - __io uint32 CNDTR5; /**< Channel 5 number of data register */ - __io uint32 CPAR5; /**< Channel 5 peripheral address register */ - __io uint32 CMAR5; /**< Channel 5 memory address register */ + __IO uint32 CCR5; /**< Channel 5 configuration register */ + __IO uint32 CNDTR5; /**< Channel 5 number of data register */ + __IO uint32 CPAR5; /**< Channel 5 peripheral address register */ + __IO uint32 CMAR5; /**< Channel 5 memory address register */ const uint32 RESERVED5; /**< Reserved. */ - __io uint32 CCR6; /**< Channel 6 configuration register */ - __io uint32 CNDTR6; /**< Channel 6 number of data register */ - __io uint32 CPAR6; /**< Channel 6 peripheral address register */ - __io uint32 CMAR6; /**< Channel 6 memory address register */ + __IO uint32 CCR6; /**< Channel 6 configuration register */ + __IO uint32 CNDTR6; /**< Channel 6 number of data register */ + __IO uint32 CPAR6; /**< Channel 6 peripheral address register */ + __IO uint32 CMAR6; /**< Channel 6 memory address register */ const uint32 RESERVED6; /**< Reserved. */ - __io uint32 CCR7; /**< Channel 7 configuration register */ - __io uint32 CNDTR7; /**< Channel 7 number of data register */ - __io uint32 CPAR7; /**< Channel 7 peripheral address register */ - __io uint32 CMAR7; /**< Channel 7 memory address register */ + __IO uint32 CCR7; /**< Channel 7 configuration register */ + __IO uint32 CNDTR7; /**< Channel 7 number of data register */ + __IO uint32 CPAR7; /**< Channel 7 peripheral address register */ + __IO uint32 CMAR7; /**< Channel 7 memory address register */ const uint32 RESERVED7; /**< Reserved. */ } dma_reg_map; @@ -105,10 +105,10 @@ typedef struct dma_reg_map { * @see dma_tube_regs() */ typedef struct dma_tube_reg_map { - __io uint32 CCR; /**< Channel configuration register */ - __io uint32 CNDTR; /**< Channel number of data register */ - __io uint32 CPAR; /**< Channel peripheral address register */ - __io uint32 CMAR; /**< Channel memory address register */ + __IO uint32 CCR; /**< Channel configuration register */ + __IO uint32 CNDTR; /**< Channel number of data register */ + __IO uint32 CPAR; /**< Channel peripheral address register */ + __IO uint32 CMAR; /**< Channel memory address register */ } dma_tube_reg_map; /** DMA1 channel 1 register map base pointer */ @@ -528,7 +528,7 @@ typedef enum dma_request_src { #define DMA_CHANNEL_NREGS 5 /* accounts for reserved word */ static inline dma_tube_reg_map* dma_tube_regs(dma_dev *dev, dma_tube tube) { - __io uint32 *ccr1 = &dev->regs->CCR1; + __IO uint32 *ccr1 = &dev->regs->CCR1; return (dma_channel_reg_map*)(ccr1 + DMA_CHANNEL_NREGS * (tube - 1)); } diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h index 85baf9b3c..8bc6114eb 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h @@ -50,14 +50,14 @@ extern "C"{ /** @brief STM32F3 Flash register map type */ typedef struct flash_reg_map { - __io uint32 ACR; /**< Access control register */ - __io uint32 KEYR; /**< Key register */ - __io uint32 OPTKEYR; /**< OPTKEY register */ - __io uint32 SR; /**< Status register */ - __io uint32 CR; /**< Control register */ - __io uint32 AR; /**< Address register */ - __io uint32 OBR; /**< Option byte register */ - __io uint32 WRPR; /**< Write protection register */ + __IO uint32 ACR; /**< Access control register */ + __IO uint32 KEYR; /**< Key register */ + __IO uint32 OPTKEYR; /**< OPTKEY register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 AR; /**< Address register */ + __IO uint32 OBR; /**< Option byte register */ + __IO uint32 WRPR; /**< Write protection register */ } flash_reg_map; #define FLASH_BASE ((struct flash_reg_map*)0x40022000) diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h index dc5d4aba0..ee5d5c1b5 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h @@ -46,10 +46,10 @@ extern "C"{ /** FPU register map type */ typedef struct fpu_reg_map { - __io uint32 CPACR; /**< coprocessor access control register */ - __io uint32 FPCCR; /**< floating-point context control register */ - __io uint32 FPCAR; /**< floating-point context address register */ - __io uint32 FPDSCR; /**< floating-point default status control register */ + __IO uint32 CPACR; /**< coprocessor access control register */ + __IO uint32 FPCCR; /**< floating-point context control register */ + __IO uint32 FPCAR; /**< floating-point context address register */ + __IO uint32 FPDSCR; /**< floating-point default status control register */ } fpu_reg_map; #define FPU_BASE ((struct fpu_reg_map*)(SCB_BASE + 0x88)) diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h index 50e8c091e..268c9c2f5 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h @@ -46,17 +46,17 @@ extern "C"{ /** GPIO register map type */ typedef struct gpio_reg_map { - __io uint32 MODER; /**< Mode register */ - __io uint32 OTYPER; /**< Output type register */ - __io uint32 OSPEEDR; /**< Output speed register */ - __io uint32 PUPDR; /**< Pull-up/pull-down register */ - __io uint32 IDR; /**< Input data register */ - __io uint32 ODR; /**< Output data register */ - __io uint32 BSRR; /**< Bit set/reset register */ - __io uint32 LCKR; /**< Configuration lock register */ - __io uint32 AFRL; /**< Alternate function low register */ - __io uint32 AFRH; /**< Alternate function high register */ - __io uint32 BRR; /**< Port bit reset register */ + __IO uint32 MODER; /**< Mode register */ + __IO uint32 OTYPER; /**< Output type register */ + __IO uint32 OSPEEDR; /**< Output speed register */ + __IO uint32 PUPDR; /**< Pull-up/pull-down register */ + __IO uint32 IDR; /**< Input data register */ + __IO uint32 ODR; /**< Output data register */ + __IO uint32 BSRR; /**< Bit set/reset register */ + __IO uint32 LCKR; /**< Configuration lock register */ + __IO uint32 AFRL; /**< Alternate function low register */ + __IO uint32 AFRH; /**< Alternate function high register */ + __IO uint32 BRR; /**< Port bit reset register */ } gpio_reg_map; /** GPIO port A register map base pointer */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h index c7be377fc..ef1b0ff5e 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h @@ -47,17 +47,17 @@ extern "C"{ /** I2C register map type */ typedef struct i2c_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 OAR1; /**< Own address register 1 */ - __io uint32 OAR2; /**< Own address register 2 */ - __io uint32 TIMINGR; /**< Timing register */ - __io uint32 TIMEOUTR; /**< Timeout register */ - __io uint32 ISR; /**< Interrupt and status register */ - __io uint32 ICR; /**< Interrupt clear register */ - __io uint32 PECR; /**< PEC register */ - __io uint32 RXDR; /**< Receive data register */ - __io uint32 TXDR; /**< Transmit data register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 OAR1; /**< Own address register 1 */ + __IO uint32 OAR2; /**< Own address register 2 */ + __IO uint32 TIMINGR; /**< Timing register */ + __IO uint32 TIMEOUTR; /**< Timeout register */ + __IO uint32 ISR; /**< Interrupt and status register */ + __IO uint32 ICR; /**< Interrupt clear register */ + __IO uint32 PECR; /**< PEC register */ + __IO uint32 RXDR; /**< Receive data register */ + __IO uint32 TXDR; /**< Transmit data register */ } i2c_reg_map; extern i2c_dev* const I2C1; diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h index 858f1d86e..a5c627bef 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h @@ -47,7 +47,7 @@ extern "C"{ * OpAmp individual register map type. */ typedef struct opamp_reg_map { - __io uint32 CSR; /**< */ + __IO uint32 CSR; /**< */ } opamp_reg_map; /** OpAmp device type. */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h index 80577e963..b8f4b3491 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h @@ -47,19 +47,19 @@ extern "C"{ /** STM32F3 RCC register map type */ typedef struct rcc_reg_map { - __io uint32 CR; /**< Clock control register */ - __io uint32 CFGR; /**< Clock configuration register */ - __io uint32 CIR; /**< Clock interrupt register */ - __io uint32 APB2RSTR; /**< APB2 peripheral reset register */ - __io uint32 APB1RSTR; /**< APB1 peripheral reset register */ - __io uint32 AHBENR; /**< AHB peripheral clock enable register */ - __io uint32 APB2ENR; /**< APB2 peripheral clock enable register */ - __io uint32 APB1ENR; /**< APB1 peripheral clock enable register */ - __io uint32 BDCR; /**< Backup domain control register */ - __io uint32 CSR; /**< Control/status register */ - __io uint32 AHBRSTR; /**< AHB peripheral reset register */ - __io uint32 CFGR2; /**< Control/status register 2 */ - __io uint32 CFGR3; /**< Control/status register 3 */ + __IO uint32 CR; /**< Clock control register */ + __IO uint32 CFGR; /**< Clock configuration register */ + __IO uint32 CIR; /**< Clock interrupt register */ + __IO uint32 APB2RSTR; /**< APB2 peripheral reset register */ + __IO uint32 APB1RSTR; /**< APB1 peripheral reset register */ + __IO uint32 AHBENR; /**< AHB peripheral clock enable register */ + __IO uint32 APB2ENR; /**< APB2 peripheral clock enable register */ + __IO uint32 APB1ENR; /**< APB1 peripheral clock enable register */ + __IO uint32 BDCR; /**< Backup domain control register */ + __IO uint32 CSR; /**< Control/status register */ + __IO uint32 AHBRSTR; /**< AHB peripheral reset register */ + __IO uint32 CFGR2; /**< Control/status register 2 */ + __IO uint32 CFGR3; /**< Control/status register 3 */ } rcc_reg_map; #define RCC_BASE ((struct rcc_reg_map*)0x40021000) diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h index 3519e78fc..2565290f1 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h @@ -47,10 +47,10 @@ extern "C" { * @brief SYSCFG register map type. */ typedef struct syscfg_reg_map { - __io uint32 CFGR1; /**< Configuration register 1*/ - __io uint32 RCR; /**< CCM SRAM protection register */ - __io uint32 EXTICR[4]; /**< External Interrupt configuration register */ - __io uint32 CFGR2; /**< Configuration register 2 */ + __IO uint32 CFGR1; /**< Configuration register 1*/ + __IO uint32 RCR; /**< CCM SRAM protection register */ + __IO uint32 EXTICR[4]; /**< External Interrupt configuration register */ + __IO uint32 CFGR2; /**< Configuration register 2 */ } syscfg_reg_map; /** SYSCFG register map base pointer */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h index fe13e4cb4..01e2c88d5 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h @@ -44,26 +44,26 @@ /** STM32F1 general purpose timer register map type */ typedef struct timer_gen_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SMCR; /**< Slave mode control register */ - __io uint32 DIER; /**< DMA/Interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ - __io uint32 CCMR1; /**< Capture/compare mode register 1 */ - __io uint32 CCMR2; /**< Capture/compare mode register 2 */ - __io uint32 CCER; /**< Capture/compare enable register */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SMCR; /**< Slave mode control register */ + __IO uint32 DIER; /**< DMA/Interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ + __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ + __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ + __IO uint32 CCER; /**< Capture/compare enable register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 CCR1; /**< Capture/compare register 1 */ - __io uint32 CCR2; /**< Capture/compare register 2 */ - __io uint32 CCR3; /**< Capture/compare register 3 */ - __io uint32 CCR4; /**< Capture/compare register 4 */ + __IO uint32 CCR1; /**< Capture/compare register 1 */ + __IO uint32 CCR2; /**< Capture/compare register 2 */ + __IO uint32 CCR3; /**< Capture/compare register 3 */ + __IO uint32 CCR4; /**< Capture/compare register 4 */ const uint32 RESERVED2; /**< Reserved */ - __io uint32 DCR; /**< DMA control register */ - __io uint32 DMAR; /**< DMA address for full transfer */ + __IO uint32 DCR; /**< DMA control register */ + __IO uint32 DMAR; /**< DMA address for full transfer */ } timer_gen_reg_map; struct timer_adv_reg_map; diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h index d7edcb6b4..94a25d961 100644 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h +++ b/STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h @@ -45,18 +45,18 @@ extern "C"{ /** USART register map type */ typedef struct usart_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 CR3; /**< Control register 3 */ - __io uint32 BRR; /**< Baud rate register */ - __io uint32 GTPR; /**< Guard time and prescaler register */ - __io uint32 RTOR; /**< Receiver timeout register */ - __io uint32 RQR; /**< Request register */ - __io uint32 SR; /**< ISR Interrupt and status register */ - __io uint32 ICR; /**< Interrupt clear register */ - __io uint16 RDR; /**< Receive data register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 CR3; /**< Control register 3 */ + __IO uint32 BRR; /**< Baud rate register */ + __IO uint32 GTPR; /**< Guard time and prescaler register */ + __IO uint32 RTOR; /**< Receiver timeout register */ + __IO uint32 RQR; /**< Request register */ + __IO uint32 SR; /**< ISR Interrupt and status register */ + __IO uint32 ICR; /**< Interrupt clear register */ + __IO uint16 RDR; /**< Receive data register */ uint16 RESERVED1; - __io uint16 TDR; /**< Transmit data register */ + __IO uint16 TDR; /**< Transmit data register */ uint16 RESERVED2; } usart_reg_map; diff --git a/STM32F3/cores/maple/libmaple/usb/usb_reg_map.h b/STM32F3/cores/maple/libmaple/usb/usb_reg_map.h index 2e3f6bc17..2cd5e3531 100644 --- a/STM32F3/cores/maple/libmaple/usb/usb_reg_map.h +++ b/STM32F3/cores/maple/libmaple/usb/usb_reg_map.h @@ -42,13 +42,13 @@ /** USB register map type */ typedef struct usb_reg_map { - __io uint32 EP[USB_NR_EP_REGS]; /**< Endpoint registers */ + __IO uint32 EP[USB_NR_EP_REGS]; /**< Endpoint registers */ const uint32 RESERVED[8]; /**< Reserved */ - __io uint32 CNTR; /**< Control register */ - __io uint32 ISTR; /**< Interrupt status register */ - __io uint32 FNR; /**< Frame number register */ - __io uint32 DADDR; /**< Device address */ - __io uint32 BTABLE; /**< @brief Buffer table address + __IO uint32 CNTR; /**< Control register */ + __IO uint32 ISTR; /**< Interrupt status register */ + __IO uint32 FNR; /**< Frame number register */ + __IO uint32 DADDR; /**< Device address */ + __IO uint32 BTABLE; /**< @brief Buffer table address * * Address offset within the USB * packet memory area which points @@ -340,7 +340,7 @@ static inline void usb_clear_status_out(uint8 ep) { * * The USB PMA is SRAM shared between USB and CAN. The USB peripheral * accesses this memory directly via the packet buffer interface. */ -#define USB_PMA_BASE ((__io void*)0x40006000) +#define USB_PMA_BASE ((__IO void*)0x40006000) /* * PMA conveniences @@ -367,42 +367,42 @@ union usb_btable_ent; /* Bidirectional endpoint BTABLE entry */ typedef struct usb_btable_bidi { - __io uint16 addr_tx; const uint16 PAD1; - __io uint16 count_tx; const uint16 PAD2; - __io uint16 addr_rx; const uint16 PAD3; - __io uint16 count_rx; const uint16 PAD4; + __IO uint16 addr_tx; const uint16 PAD1; + __IO uint16 count_tx; const uint16 PAD2; + __IO uint16 addr_rx; const uint16 PAD3; + __IO uint16 count_rx; const uint16 PAD4; } usb_btable_bidi; /* Unidirectional receive-only endpoint BTABLE entry */ typedef struct usb_btable_uni_rx { - __io uint16 empty1; const uint16 PAD1; - __io uint16 empty2; const uint16 PAD2; - __io uint16 addr_rx; const uint16 PAD3; - __io uint16 count_rx; const uint16 PAD4; + __IO uint16 empty1; const uint16 PAD1; + __IO uint16 empty2; const uint16 PAD2; + __IO uint16 addr_rx; const uint16 PAD3; + __IO uint16 count_rx; const uint16 PAD4; } usb_btable_uni_rx; /* Unidirectional transmit-only endpoint BTABLE entry */ typedef struct usb_btable_uni_tx { - __io uint16 addr_tx; const uint16 PAD1; - __io uint16 count_tx; const uint16 PAD2; - __io uint16 empty1; const uint16 PAD3; - __io uint16 empty2; const uint16 PAD4; + __IO uint16 addr_tx; const uint16 PAD1; + __IO uint16 count_tx; const uint16 PAD2; + __IO uint16 empty1; const uint16 PAD3; + __IO uint16 empty2; const uint16 PAD4; } usb_btable_uni_tx; /* Double-buffered transmission endpoint BTABLE entry */ typedef struct usb_btable_dbl_tx { - __io uint16 addr_tx0; const uint16 PAD1; - __io uint16 count_tx0; const uint16 PAD2; - __io uint16 addr_tx1; const uint16 PAD3; - __io uint16 count_tx1; const uint16 PAD4; + __IO uint16 addr_tx0; const uint16 PAD1; + __IO uint16 count_tx0; const uint16 PAD2; + __IO uint16 addr_tx1; const uint16 PAD3; + __IO uint16 count_tx1; const uint16 PAD4; } usb_btable_dbl_tx; /* Double-buffered reception endpoint BTABLE entry */ typedef struct usb_btable_dbl_rx { - __io uint16 addr_rx0; const uint16 PAD1; - __io uint16 count_rx0; const uint16 PAD2; - __io uint16 addr_rx1; const uint16 PAD3; - __io uint16 count_rx1; const uint16 PAD4; + __IO uint16 addr_rx0; const uint16 PAD1; + __IO uint16 count_rx0; const uint16 PAD2; + __IO uint16 addr_rx1; const uint16 PAD3; + __IO uint16 count_rx1; const uint16 PAD4; } usb_btable_dbl_rx; /* TODO isochronous endpoint entries */ diff --git a/STM32F4/cores/maple/libmaple/adc.c b/STM32F4/cores/maple/libmaple/adc.c index 0f4c02c3c..f44156d63 100644 --- a/STM32F4/cores/maple/libmaple/adc.c +++ b/STM32F4/cores/maple/libmaple/adc.c @@ -137,8 +137,8 @@ void adc_calibrate(const adc_dev *dev) { /* #ifndef STM32F2 - __io uint32 *rstcal_bit = bb_perip(&(dev->regs->CR2), 3); - __io uint32 *cal_bit = bb_perip(&(dev->regs->CR2), 2); + __IO uint32 *rstcal_bit = bb_perip(&(dev->regs->CR2), 3); + __IO uint32 *cal_bit = bb_perip(&(dev->regs->CR2), 2); *rstcal_bit = 1; while (*rstcal_bit) diff --git a/STM32F4/cores/maple/libmaple/adc.h b/STM32F4/cores/maple/libmaple/adc.h index a4c11ffec..398c242df 100644 --- a/STM32F4/cores/maple/libmaple/adc.h +++ b/STM32F4/cores/maple/libmaple/adc.h @@ -44,9 +44,9 @@ extern "C"{ typedef struct { - __io uint32 CSR; /*!< ADC Common status register, Address offset: ADC1 base address + 0x300 */ - __io uint32 CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */ - __io uint32 CDR; /*!< ADC common regular data register for dual + __IO uint32 CSR; /*!< ADC Common status register, Address offset: ADC1 base address + 0x300 */ + __IO uint32 CCR; /*!< ADC common control register, Address offset: ADC1 base address + 0x304 */ + __IO uint32 CDR; /*!< ADC common regular data register for dual AND triple modes, Address offset: ADC1 base address + 0x308 */ } ADC_Common_TypeDef; #define ADC_COMMON ((ADC_Common_TypeDef *) 0x40012300) @@ -54,26 +54,26 @@ typedef struct /** ADC register map type. */ typedef struct adc_reg_map { - __io uint32 SR; ///< Status register - __io uint32 CR1; ///< Control register 1 - __io uint32 CR2; ///< Control register 2 - __io uint32 SMPR1; ///< Sample time register 1 - __io uint32 SMPR2; ///< Sample time register 2 - __io uint32 JOFR1; ///< Injected channel data offset register 1 - __io uint32 JOFR2; ///< Injected channel data offset register 2 - __io uint32 JOFR3; ///< Injected channel data offset register 3 - __io uint32 JOFR4; ///< Injected channel data offset register 4 - __io uint32 HTR; ///< Watchdog high threshold register - __io uint32 LTR; ///< Watchdog low threshold register - __io uint32 SQR1; ///< Regular sequence register 1 - __io uint32 SQR2; ///< Regular sequence register 2 - __io uint32 SQR3; ///< Regular sequence register 3 - __io uint32 JSQR; ///< Injected sequence register - __io uint32 JDR1; ///< Injected data register 1 - __io uint32 JDR2; ///< Injected data register 2 - __io uint32 JDR3; ///< Injected data register 3 - __io uint32 JDR4; ///< Injected data register 4 - __io uint32 DR; ///< Regular data register + __IO uint32 SR; ///< Status register + __IO uint32 CR1; ///< Control register 1 + __IO uint32 CR2; ///< Control register 2 + __IO uint32 SMPR1; ///< Sample time register 1 + __IO uint32 SMPR2; ///< Sample time register 2 + __IO uint32 JOFR1; ///< Injected channel data offset register 1 + __IO uint32 JOFR2; ///< Injected channel data offset register 2 + __IO uint32 JOFR3; ///< Injected channel data offset register 3 + __IO uint32 JOFR4; ///< Injected channel data offset register 4 + __IO uint32 HTR; ///< Watchdog high threshold register + __IO uint32 LTR; ///< Watchdog low threshold register + __IO uint32 SQR1; ///< Regular sequence register 1 + __IO uint32 SQR2; ///< Regular sequence register 2 + __IO uint32 SQR3; ///< Regular sequence register 3 + __IO uint32 JSQR; ///< Injected sequence register + __IO uint32 JDR1; ///< Injected data register 1 + __IO uint32 JDR2; ///< Injected data register 2 + __IO uint32 JDR3; ///< Injected data register 3 + __IO uint32 JDR4; ///< Injected data register 4 + __IO uint32 DR; ///< Regular data register } adc_reg_map; /** ADC device type. */ diff --git a/STM32F4/cores/maple/libmaple/bkp.c b/STM32F4/cores/maple/libmaple/bkp.c index 7d1ad7f01..a923e7799 100644 --- a/STM32F4/cores/maple/libmaple/bkp.c +++ b/STM32F4/cores/maple/libmaple/bkp.c @@ -34,7 +34,7 @@ #include "rcc.h" #include "bitband.h" -static inline __io uint32* data_register(uint8 reg); +static inline __IO uint32* data_register(uint8 reg); bkp_dev bkp = { .regs = BKP_BASE, @@ -78,7 +78,7 @@ void bkp_disable_writes(void) { * medium-density devices, 42 on high-density devices). */ uint16 bkp_read(uint8 reg) { - __io uint32* dr = data_register(reg); + __IO uint32* dr = data_register(reg); if (!dr) { ASSERT(0); /* nonexistent register */ return 0; @@ -97,7 +97,7 @@ uint16 bkp_read(uint8 reg) { * @see bkp_enable_writes() */ void bkp_write(uint8 reg, uint16 val) { - __io uint32* dr = data_register(reg); + __IO uint32* dr = data_register(reg); if (!dr) { ASSERT(0); /* nonexistent register */ return; @@ -112,7 +112,7 @@ void bkp_write(uint8 reg, uint16 val) { */ #define NR_LOW_DRS 10 -static inline __io uint32* data_register(uint8 reg) { +static inline __IO uint32* data_register(uint8 reg) { if (reg < 1 || reg > BKP_NR_DATA_REGS) { return 0; } diff --git a/STM32F4/cores/maple/libmaple/bkp.h b/STM32F4/cores/maple/libmaple/bkp.h index a81267d14..dd378b4f2 100644 --- a/STM32F4/cores/maple/libmaple/bkp.h +++ b/STM32F4/cores/maple/libmaple/bkp.h @@ -47,54 +47,54 @@ extern "C" { /** Backup peripheral register map type. */ typedef struct bkp_reg_map { const uint32 RESERVED1; ///< Reserved - __io uint32 DR1; ///< Data register 1 - __io uint32 DR2; ///< Data register 2 - __io uint32 DR3; ///< Data register 3 - __io uint32 DR4; ///< Data register 4 - __io uint32 DR5; ///< Data register 5 - __io uint32 DR6; ///< Data register 6 - __io uint32 DR7; ///< Data register 7 - __io uint32 DR8; ///< Data register 8 - __io uint32 DR9; ///< Data register 9 - __io uint32 DR10; ///< Data register 10 - __io uint32 RTCCR; ///< RTC control register - __io uint32 CR; ///< Control register - __io uint32 CSR; ///< Control and status register + __IO uint32 DR1; ///< Data register 1 + __IO uint32 DR2; ///< Data register 2 + __IO uint32 DR3; ///< Data register 3 + __IO uint32 DR4; ///< Data register 4 + __IO uint32 DR5; ///< Data register 5 + __IO uint32 DR6; ///< Data register 6 + __IO uint32 DR7; ///< Data register 7 + __IO uint32 DR8; ///< Data register 8 + __IO uint32 DR9; ///< Data register 9 + __IO uint32 DR10; ///< Data register 10 + __IO uint32 RTCCR; ///< RTC control register + __IO uint32 CR; ///< Control register + __IO uint32 CSR; ///< Control and status register #ifdef STM32_HIGH_DENSITY const uint32 RESERVED2; ///< Reserved const uint32 RESERVED3; ///< Reserved - __io uint32 DR11; ///< Data register 11 - __io uint32 DR12; ///< Data register 12 - __io uint32 DR13; ///< Data register 13 - __io uint32 DR14; ///< Data register 14 - __io uint32 DR15; ///< Data register 15 - __io uint32 DR16; ///< Data register 16 - __io uint32 DR17; ///< Data register 17 - __io uint32 DR18; ///< Data register 18 - __io uint32 DR19; ///< Data register 19 - __io uint32 DR20; ///< Data register 20 - __io uint32 DR21; ///< Data register 21 - __io uint32 DR22; ///< Data register 22 - __io uint32 DR23; ///< Data register 23 - __io uint32 DR24; ///< Data register 24 - __io uint32 DR25; ///< Data register 25 - __io uint32 DR26; ///< Data register 26 - __io uint32 DR27; ///< Data register 27 - __io uint32 DR28; ///< Data register 28 - __io uint32 DR29; ///< Data register 29 - __io uint32 DR30; ///< Data register 30 - __io uint32 DR31; ///< Data register 31 - __io uint32 DR32; ///< Data register 32 - __io uint32 DR33; ///< Data register 33 - __io uint32 DR34; ///< Data register 34 - __io uint32 DR35; ///< Data register 35 - __io uint32 DR36; ///< Data register 36 - __io uint32 DR37; ///< Data register 37 - __io uint32 DR38; ///< Data register 38 - __io uint32 DR39; ///< Data register 39 - __io uint32 DR40; ///< Data register 40 - __io uint32 DR41; ///< Data register 41 - __io uint32 DR42; ///< Data register 42 + __IO uint32 DR11; ///< Data register 11 + __IO uint32 DR12; ///< Data register 12 + __IO uint32 DR13; ///< Data register 13 + __IO uint32 DR14; ///< Data register 14 + __IO uint32 DR15; ///< Data register 15 + __IO uint32 DR16; ///< Data register 16 + __IO uint32 DR17; ///< Data register 17 + __IO uint32 DR18; ///< Data register 18 + __IO uint32 DR19; ///< Data register 19 + __IO uint32 DR20; ///< Data register 20 + __IO uint32 DR21; ///< Data register 21 + __IO uint32 DR22; ///< Data register 22 + __IO uint32 DR23; ///< Data register 23 + __IO uint32 DR24; ///< Data register 24 + __IO uint32 DR25; ///< Data register 25 + __IO uint32 DR26; ///< Data register 26 + __IO uint32 DR27; ///< Data register 27 + __IO uint32 DR28; ///< Data register 28 + __IO uint32 DR29; ///< Data register 29 + __IO uint32 DR30; ///< Data register 30 + __IO uint32 DR31; ///< Data register 31 + __IO uint32 DR32; ///< Data register 32 + __IO uint32 DR33; ///< Data register 33 + __IO uint32 DR34; ///< Data register 34 + __IO uint32 DR35; ///< Data register 35 + __IO uint32 DR36; ///< Data register 36 + __IO uint32 DR37; ///< Data register 37 + __IO uint32 DR38; ///< Data register 38 + __IO uint32 DR39; ///< Data register 39 + __IO uint32 DR40; ///< Data register 40 + __IO uint32 DR41; ///< Data register 41 + __IO uint32 DR42; ///< Data register 42 #endif } bkp_reg_map; diff --git a/STM32F4/cores/maple/libmaple/dac.h b/STM32F4/cores/maple/libmaple/dac.h index dd1b22bda..6c5f2e8c1 100644 --- a/STM32F4/cores/maple/libmaple/dac.h +++ b/STM32F4/cores/maple/libmaple/dac.h @@ -46,28 +46,28 @@ extern "C"{ /** DAC register map. */ typedef struct dac_reg_map { - __io uint32 CR; /**< Control register */ - __io uint32 SWTRIGR; /**< Software trigger register */ - __io uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data + __IO uint32 CR; /**< Control register */ + __IO uint32 SWTRIGR; /**< Software trigger register */ + __IO uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data holding register */ - __io uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data + __IO uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data holding register */ - __io uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data + __IO uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data holding register */ - __io uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data + __IO uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data holding register */ - __io uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data + __IO uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data holding register */ - __io uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data + __IO uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data holding register */ - __io uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data + __IO uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data holding register */ - __io uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data + __IO uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data holding register */ - __io uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding + __IO uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding register */ - __io uint32 DOR1; /**< Channel 1 data output register */ - __io uint32 DOR2; /**< Channel 2 data output register */ + __IO uint32 DOR1; /**< Channel 1 data output register */ + __IO uint32 DOR2; /**< Channel 2 data output register */ } dac_reg_map; /** DAC register map base address */ diff --git a/STM32F4/cores/maple/libmaple/dmaF4.h b/STM32F4/cores/maple/libmaple/dmaF4.h index cb2376069..388c64b8e 100644 --- a/STM32F4/cores/maple/libmaple/dmaF4.h +++ b/STM32F4/cores/maple/libmaple/dmaF4.h @@ -57,22 +57,22 @@ extern "C"{ * */ typedef struct dma_stream_t { - __io uint32 CR; /**< Stream configuration register */ - __io uint32 NDTR; /**< Stream number of data register */ - __io uint32 PAR; /**< Stream peripheral address register */ - __io uint32 M0AR; /**< Stream memory address register 0 */ - __io uint32 M1AR; /**< Stream memory address register 1 */ - __io uint32 FCR; /**< Stream FIFO configuration register */ + __IO uint32 CR; /**< Stream configuration register */ + __IO uint32 NDTR; /**< Stream number of data register */ + __IO uint32 PAR; /**< Stream peripheral address register */ + __IO uint32 M0AR; /**< Stream memory address register 0 */ + __IO uint32 M1AR; /**< Stream memory address register 1 */ + __IO uint32 FCR; /**< Stream FIFO configuration register */ } dma_stream_t; /** * @brief DMA register map type. * */ typedef struct dma_reg_map { - __io uint32 LISR; /**< Low interrupt status register */ - __io uint32 HISR; /**< High interrupt status register */ - __io uint32 LIFCR; /**< Low interrupt flag clear register */ - __io uint32 HIFCR; /**< High interrupt flag clear register */ + __IO uint32 LISR; /**< Low interrupt status register */ + __IO uint32 HISR; /**< High interrupt status register */ + __IO uint32 LIFCR; /**< Low interrupt flag clear register */ + __IO uint32 HIFCR; /**< High interrupt flag clear register */ dma_stream_t STREAM[8]; } dma_reg_map; @@ -255,9 +255,9 @@ static inline void dma_setup_transfer(dma_dev *dev, dma_stream stream, dma_channel channel, dma_xfer_size trx_size, - __io void *peripheral_address, - __io void *memory_address0, - __io void *memory_address1, + __IO void *peripheral_address, + __IO void *memory_address0, + __IO void *memory_address1, uint32 flags) { dev->regs->STREAM[stream].CR &= ~DMA_CR_EN; // disable diff --git a/STM32F4/cores/maple/libmaple/exti.h b/STM32F4/cores/maple/libmaple/exti.h index 063f2d7f1..83a3cc24d 100644 --- a/STM32F4/cores/maple/libmaple/exti.h +++ b/STM32F4/cores/maple/libmaple/exti.h @@ -43,12 +43,12 @@ extern "C"{ /** EXTI register map type */ typedef struct exti_reg_map { - __io uint32 IMR; /**< Interrupt mask register */ - __io uint32 EMR; /**< Event mask register */ - __io uint32 RTSR; /**< Rising trigger selection register */ - __io uint32 FTSR; /**< Falling trigger selection register */ - __io uint32 SWIER; /**< Software interrupt event register */ - __io uint32 PR; /**< Pending register */ + __IO uint32 IMR; /**< Interrupt mask register */ + __IO uint32 EMR; /**< Event mask register */ + __IO uint32 RTSR; /**< Rising trigger selection register */ + __IO uint32 FTSR; /**< Falling trigger selection register */ + __IO uint32 SWIER; /**< Software interrupt event register */ + __IO uint32 PR; /**< Pending register */ } exti_reg_map; /** EXTI register map base pointer */ diff --git a/STM32F4/cores/maple/libmaple/flash.h b/STM32F4/cores/maple/libmaple/flash.h index 0b4e49b63..d9730cafc 100644 --- a/STM32F4/cores/maple/libmaple/flash.h +++ b/STM32F4/cores/maple/libmaple/flash.h @@ -41,14 +41,14 @@ extern "C"{ /** Flash register map type */ typedef struct flash_reg_map { - __io uint32 ACR; /**< Access control register */ - __io uint32 KEYR; /**< Key register */ - __io uint32 OPTKEYR; /**< OPTKEY register */ - __io uint32 SR; /**< Status register */ - __io uint32 CR; /**< Control register */ - __io uint32 AR; /**< Address register */ - __io uint32 OBR; /**< Option byte register */ - __io uint32 WRPR; /**< Write protection register */ + __IO uint32 ACR; /**< Access control register */ + __IO uint32 KEYR; /**< Key register */ + __IO uint32 OPTKEYR; /**< OPTKEY register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 AR; /**< Address register */ + __IO uint32 OBR; /**< Option byte register */ + __IO uint32 WRPR; /**< Write protection register */ } flash_reg_map; /** Flash register map base pointer */ diff --git a/STM32F4/cores/maple/libmaple/fsmc.h b/STM32F4/cores/maple/libmaple/fsmc.h index 03a6acfce..d38494600 100644 --- a/STM32F4/cores/maple/libmaple/fsmc.h +++ b/STM32F4/cores/maple/libmaple/fsmc.h @@ -55,42 +55,42 @@ extern "C"{ /** FSMC register map type */ typedef struct fsmc_reg_map { - __io uint32 BCR1; /**< SRAM/NOR-Flash chip-select control register 1 */ - __io uint32 BTR1; /**< SRAM/NOR-Flash chip-select timing register 1 */ - __io uint32 BCR2; /**< SRAM/NOR-Flash chip-select control register 2 */ - __io uint32 BTR2; /**< SRAM/NOR-Flash chip-select timing register 2 */ - __io uint32 BCR3; /**< SRAM/NOR-Flash chip-select control register 3 */ - __io uint32 BTR3; /**< SRAM/NOR-Flash chip-select timing register 3 */ - __io uint32 BCR4; /**< SRAM/NOR-Flash chip-select control register 4 */ - __io uint32 BTR4; /**< SRAM/NOR-Flash chip-select timing register 4 */ + __IO uint32 BCR1; /**< SRAM/NOR-Flash chip-select control register 1 */ + __IO uint32 BTR1; /**< SRAM/NOR-Flash chip-select timing register 1 */ + __IO uint32 BCR2; /**< SRAM/NOR-Flash chip-select control register 2 */ + __IO uint32 BTR2; /**< SRAM/NOR-Flash chip-select timing register 2 */ + __IO uint32 BCR3; /**< SRAM/NOR-Flash chip-select control register 3 */ + __IO uint32 BTR3; /**< SRAM/NOR-Flash chip-select timing register 3 */ + __IO uint32 BCR4; /**< SRAM/NOR-Flash chip-select control register 4 */ + __IO uint32 BTR4; /**< SRAM/NOR-Flash chip-select timing register 4 */ const uint32 RESERVED1[16]; /**< Reserved */ - __io uint32 PCR2; /**< PC Card/NAND Flash control register 2 */ - __io uint32 SR2; /**< FIFO status and interrupt register 2 */ - __io uint32 PMEM2; /**< Common memory space timing register 2 */ - __io uint32 PATT2; /**< Attribute memory space timing register 2 */ + __IO uint32 PCR2; /**< PC Card/NAND Flash control register 2 */ + __IO uint32 SR2; /**< FIFO status and interrupt register 2 */ + __IO uint32 PMEM2; /**< Common memory space timing register 2 */ + __IO uint32 PATT2; /**< Attribute memory space timing register 2 */ const uint32 RESERVED2; /**< Reserved */ - __io uint32 ECCR2; /**< ECC result register 2 */ + __IO uint32 ECCR2; /**< ECC result register 2 */ const uint32 RESERVED3[2]; /**< Reserved */ - __io uint32 PCR3; /**< PC Card/NAND Flash control register 3 */ - __io uint32 SR3; /**< FIFO status and interrupt register 3 */ - __io uint32 PMEM3; /**< Common memory space timing register 3 */ - __io uint32 PATT3; /**< Attribute memory space timing register 3 */ + __IO uint32 PCR3; /**< PC Card/NAND Flash control register 3 */ + __IO uint32 SR3; /**< FIFO status and interrupt register 3 */ + __IO uint32 PMEM3; /**< Common memory space timing register 3 */ + __IO uint32 PATT3; /**< Attribute memory space timing register 3 */ const uint32 RESERVED4; /**< Reserved */ - __io uint32 ECCR3; /**< ECC result register 3 */ + __IO uint32 ECCR3; /**< ECC result register 3 */ const uint32 RESERVED5[2]; /**< Reserved */ - __io uint32 PCR4; /**< PC Card/NAND Flash control register 4 */ - __io uint32 SR4; /**< FIFO status and interrupt register 4 */ - __io uint32 PMEM4; /**< Common memory space timing register 4 */ - __io uint32 PATT4; /**< Attribute memory space timing register 4 */ - __io uint32 PIO4; /**< I/O space timing register 4 */ + __IO uint32 PCR4; /**< PC Card/NAND Flash control register 4 */ + __IO uint32 SR4; /**< FIFO status and interrupt register 4 */ + __IO uint32 PMEM4; /**< Common memory space timing register 4 */ + __IO uint32 PATT4; /**< Attribute memory space timing register 4 */ + __IO uint32 PIO4; /**< I/O space timing register 4 */ const uint32 RESERVED6[20]; /**< Reserved */ - __io uint32 BWTR1; /**< SRAM/NOR-Flash write timing register 1 */ + __IO uint32 BWTR1; /**< SRAM/NOR-Flash write timing register 1 */ const uint32 RESERVED7; /**< Reserved */ - __io uint32 BWTR2; /**< SRAM/NOR-Flash write timing register 2 */ + __IO uint32 BWTR2; /**< SRAM/NOR-Flash write timing register 2 */ const uint32 RESERVED8; /**< Reserved */ - __io uint32 BWTR3; /**< SRAM/NOR-Flash write timing register 3 */ + __IO uint32 BWTR3; /**< SRAM/NOR-Flash write timing register 3 */ const uint32 RESERVED9; /**< Reserved */ - __io uint32 BWTR4; /**< SRAM/NOR-Flash write timing register 4 */ + __IO uint32 BWTR4; /**< SRAM/NOR-Flash write timing register 4 */ } __attribute__((packed)) fsmc_reg_map; #define __FSMCB 0xA0000000 @@ -100,10 +100,10 @@ typedef struct fsmc_reg_map { /** FSMC NOR/PSRAM register map type */ typedef struct fsmc_nor_psram_reg_map { - __io uint32 BCR; /**< Chip-select control register */ - __io uint32 BTR; /**< Chip-select timing register */ + __IO uint32 BCR; /**< Chip-select control register */ + __IO uint32 BTR; /**< Chip-select timing register */ const uint32 RESERVED[63]; /**< Reserved */ - __io uint32 BWTR; /**< Write timing register */ + __IO uint32 BWTR; /**< Write timing register */ } fsmc_nor_psram_reg_map; /** FSMC NOR/PSRAM base pointer 1 */ diff --git a/STM32F4/cores/maple/libmaple/gpio.h b/STM32F4/cores/maple/libmaple/gpio.h index f1a141fee..79ce7d398 100644 --- a/STM32F4/cores/maple/libmaple/gpio.h +++ b/STM32F4/cores/maple/libmaple/gpio.h @@ -120,7 +120,7 @@ extern void afio_remap(afio_remap_peripheral p); * @see afio_debug_cfg */ static inline void afio_cfg_debug_ports(afio_debug_cfg config) { - //__io uint32 *mapr = &AFIO_BASE->MAPR; + //__IO uint32 *mapr = &AFIO_BASE->MAPR; //*mapr = (*mapr & ~AFIO_MAPR_SWJ_CFG) | config; } diff --git a/STM32F4/cores/maple/libmaple/gpioF4.c b/STM32F4/cores/maple/libmaple/gpioF4.c index af839ebea..0409bcc4e 100644 --- a/STM32F4/cores/maple/libmaple/gpioF4.c +++ b/STM32F4/cores/maple/libmaple/gpioF4.c @@ -194,7 +194,7 @@ void afio_init(void) { * @see afio_exti_port */ void afio_exti_select(afio_exti_num exti, afio_exti_port gpio_port) { - __io uint32 *exti_cr = &SYSCFG_BASE->EXTICR1 + exti / 4; + __IO uint32 *exti_cr = &SYSCFG_BASE->EXTICR1 + exti / 4; uint32 shift = 4 * (exti % 4); uint32 cr = *exti_cr; diff --git a/STM32F4/cores/maple/libmaple/gpio_def.h b/STM32F4/cores/maple/libmaple/gpio_def.h index 4a8e61e26..416896908 100644 --- a/STM32F4/cores/maple/libmaple/gpio_def.h +++ b/STM32F4/cores/maple/libmaple/gpio_def.h @@ -47,16 +47,16 @@ extern "C"{ /** GPIO register map type */ typedef struct gpio_reg_map { - __io uint32 MODER; /*!< GPIO port mode register, Address offset: 0x00 */ - __io uint32 OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ - __io uint32 OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ - __io uint32 PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ - __io uint32 IDR; /*!< GPIO port input data register, Address offset: 0x10 */ - __io uint32 ODR; /*!< GPIO port output data register, Address offset: 0x14 */ - __io uint16 BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */ - __io uint16 BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */ - __io uint32 LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ - __io uint32 AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x24-0x28 */ + __IO uint32 MODER; /*!< GPIO port mode register, Address offset: 0x00 */ + __IO uint32 OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ + __IO uint32 OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ + __IO uint32 PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ + __IO uint32 IDR; /*!< GPIO port input data register, Address offset: 0x10 */ + __IO uint32 ODR; /*!< GPIO port output data register, Address offset: 0x14 */ + __IO uint16 BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */ + __IO uint16 BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */ + __IO uint32 LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ + __IO uint32 AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x24-0x28 */ } gpio_reg_map; @@ -200,13 +200,13 @@ typedef enum gpio_pin_mode { /** AFIO register map */ typedef struct syscfg_reg_map { - __io uint32 MEMRM; /**< memory remap register */ - __io uint32 PMC; /**< peripheral mode configuration register */ - __io uint32 EXTICR1; /**< External interrupt configuration register 1. */ - __io uint32 EXTICR2; /**< External interrupt configuration register 2. */ - __io uint32 EXTICR3; /**< External interrupt configuration register 3. */ - __io uint32 EXTICR4; /**< External interrupt configuration register 4. */ - __io uint32 CMPCR; /**< Compensation cell control register */ + __IO uint32 MEMRM; /**< memory remap register */ + __IO uint32 PMC; /**< peripheral mode configuration register */ + __IO uint32 EXTICR1; /**< External interrupt configuration register 1. */ + __IO uint32 EXTICR2; /**< External interrupt configuration register 2. */ + __IO uint32 EXTICR3; /**< External interrupt configuration register 3. */ + __IO uint32 EXTICR4; /**< External interrupt configuration register 4. */ + __IO uint32 CMPCR; /**< Compensation cell control register */ } syscfg_reg_map; /** AFIO register map base pointer. */ diff --git a/STM32F4/cores/maple/libmaple/i2c.h b/STM32F4/cores/maple/libmaple/i2c.h index 28819a35b..674dd3592 100644 --- a/STM32F4/cores/maple/libmaple/i2c.h +++ b/STM32F4/cores/maple/libmaple/i2c.h @@ -39,15 +39,15 @@ /** I2C register map type */ typedef struct i2c_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 OAR1; /**< Own address register 1 */ - __io uint32 OAR2; /**< Own address register 2 */ - __io uint32 DR; /**< Data register */ - __io uint32 SR1; /**< Status register 1 */ - __io uint32 SR2; /**< Status register 2 */ - __io uint32 CCR; /**< Clock control register */ - __io uint32 TRISE; /**< TRISE (rise time) register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 OAR1; /**< Own address register 1 */ + __IO uint32 OAR2; /**< Own address register 2 */ + __IO uint32 DR; /**< Data register */ + __IO uint32 SR1; /**< Status register 1 */ + __IO uint32 SR2; /**< Status register 2 */ + __IO uint32 CCR; /**< Clock control register */ + __IO uint32 TRISE; /**< TRISE (rise time) register */ } i2c_reg_map; /** I2C device states */ diff --git a/STM32F4/cores/maple/libmaple/iwdg.h b/STM32F4/cores/maple/libmaple/iwdg.h index 59e8e18f1..3673e6959 100644 --- a/STM32F4/cores/maple/libmaple/iwdg.h +++ b/STM32F4/cores/maple/libmaple/iwdg.h @@ -54,10 +54,10 @@ extern "C"{ /** Independent watchdog register map type. */ typedef struct iwdg_reg_map { - __io uint32 KR; /**< Key register. */ - __io uint32 PR; /**< Prescaler register. */ - __io uint32 RLR; /**< Reload register. */ - __io uint32 SR; /**< Status register */ + __IO uint32 KR; /**< Key register. */ + __IO uint32 PR; /**< Prescaler register. */ + __IO uint32 RLR; /**< Reload register. */ + __IO uint32 SR; /**< Status register */ } iwdg_reg_map; /** Independent watchdog base pointer */ diff --git a/STM32F4/cores/maple/libmaple/libmaple_types.h b/STM32F4/cores/maple/libmaple/libmaple_types.h index 8e765b435..4a6b3ec7d 100644 --- a/STM32F4/cores/maple/libmaple/libmaple_types.h +++ b/STM32F4/cores/maple/libmaple/libmaple_types.h @@ -47,7 +47,7 @@ typedef long long int64; typedef void (*voidFuncPtr)(void); -#define __io volatile +#define __IO volatile #define __IO volatile #ifndef __attr_flash #define __attr_flash __attribute__((section (".USER_FLASH"))) diff --git a/STM32F4/cores/maple/libmaple/nvic.h b/STM32F4/cores/maple/libmaple/nvic.h index e3b052d5d..ace2701c9 100644 --- a/STM32F4/cores/maple/libmaple/nvic.h +++ b/STM32F4/cores/maple/libmaple/nvic.h @@ -55,19 +55,19 @@ extern "C"{ /** NVIC register map type. */ typedef struct nvic_reg_map { - __io uint32 ISER[8]; /**< Interrupt Set Enable Registers */ + __IO uint32 ISER[8]; /**< Interrupt Set Enable Registers */ uint32 RESERVED0[24]; /**< Reserved */ - __io uint32 ICER[8]; /**< Interrupt Clear Enable Registers */ + __IO uint32 ICER[8]; /**< Interrupt Clear Enable Registers */ uint32 RSERVED1[24]; /**< Reserved */ - __io uint32 ISPR[8]; /**< Interrupt Set Pending Registers */ + __IO uint32 ISPR[8]; /**< Interrupt Set Pending Registers */ uint32 RESERVED2[24]; /**< Reserved */ - __io uint32 ICPR[8]; /**< Interrupt Clear Pending Registers */ + __IO uint32 ICPR[8]; /**< Interrupt Clear Pending Registers */ uint32 RESERVED3[24]; /**< Reserved */ - __io uint32 IABR[8]; /**< Interrupt Active bit Registers */ + __IO uint32 IABR[8]; /**< Interrupt Active bit Registers */ uint32 RESERVED4[56]; /**< Reserved */ - __io uint8 IP[240]; /**< Interrupt Priority Registers */ + __IO uint8 IP[240]; /**< Interrupt Priority Registers */ uint32 RESERVED5[644]; /**< Reserved */ - __io uint32 STIR; /**< Software Trigger Interrupt Registers */ + __IO uint32 STIR; /**< Software Trigger Interrupt Registers */ } nvic_reg_map; /** NVIC register map base pointer. */ diff --git a/STM32F4/cores/maple/libmaple/pwr.h b/STM32F4/cores/maple/libmaple/pwr.h index 88b49c046..c8c489911 100644 --- a/STM32F4/cores/maple/libmaple/pwr.h +++ b/STM32F4/cores/maple/libmaple/pwr.h @@ -37,8 +37,8 @@ extern "C" { /** Power interface register map. */ typedef struct pwr_reg_map { - __io uint32 CR; /**< Control register */ - __io uint32 CSR; /**< Control and status register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 CSR; /**< Control and status register */ } pwr_reg_map; /** Power peripheral register map base pointer. */ diff --git a/STM32F4/cores/maple/libmaple/rccF4.c b/STM32F4/cores/maple/libmaple/rccF4.c index c4ff30dc4..54cef70f0 100644 --- a/STM32F4/cores/maple/libmaple/rccF4.c +++ b/STM32F4/cores/maple/libmaple/rccF4.c @@ -144,8 +144,8 @@ static const struct rcc_dev_info rcc_dev_table[] = { typedef struct { - __io uint32 CR; /*!< PWR power control register, Address offset: 0x00 */ - __io uint32 CSR; /*!< PWR power control/status register, Address offset: 0x04 */ + __IO uint32 CR; /*!< PWR power control register, Address offset: 0x00 */ + __IO uint32 CSR; /*!< PWR power control/status register, Address offset: 0x04 */ } PWR_TypeDef; #define PWR_BASE (0x40007000) @@ -154,12 +154,12 @@ typedef struct typedef struct { - __io uint32 ACR; /*!< FLASH access control register, Address offset: 0x00 */ - __io uint32 KEYR; /*!< FLASH key register, Address offset: 0x04 */ - __io uint32 OPTKEYR; /*!< FLASH option key register, Address offset: 0x08 */ - __io uint32 SR; /*!< FLASH status register, Address offset: 0x0C */ - __io uint32 CR; /*!< FLASH control register, Address offset: 0x10 */ - __io uint32 OPTCR; /*!< FLASH option control register, Address offset: 0x14 */ + __IO uint32 ACR; /*!< FLASH access control register, Address offset: 0x00 */ + __IO uint32 KEYR; /*!< FLASH key register, Address offset: 0x04 */ + __IO uint32 OPTKEYR; /*!< FLASH option key register, Address offset: 0x08 */ + __IO uint32 SR; /*!< FLASH status register, Address offset: 0x0C */ + __IO uint32 CR; /*!< FLASH control register, Address offset: 0x10 */ + __IO uint32 OPTCR; /*!< FLASH option control register, Address offset: 0x14 */ } FLASH_TypeDef; #define FLASH_R_BASE (0x40023C00) @@ -598,7 +598,7 @@ void rcc_clk_init2(rcc_sysclk_src sysclk_src, * @param id Clock ID of the peripheral to turn on. */ void rcc_clk_enable(rcc_clk_id id) { - static const __io uint32* enable_regs[] = { + static const __IO uint32* enable_regs[] = { [APB1] = &RCC_BASE->APB1ENR, [APB2] = &RCC_BASE->APB2ENR, [AHB1] = &RCC_BASE->AHB1ENR, @@ -607,7 +607,7 @@ void rcc_clk_enable(rcc_clk_id id) { }; rcc_clk_domain clk_domain = rcc_dev_clk(id); - __io uint32* enr = (__io uint32*)enable_regs[clk_domain]; + __IO uint32* enr = (__IO uint32*)enable_regs[clk_domain]; uint8 lnum = rcc_dev_table[id].line_num; bb_peri_set_bit(enr, lnum, 1); @@ -618,7 +618,7 @@ void rcc_clk_enable(rcc_clk_id id) { * @param id Clock ID of the peripheral to turn on. */ void rcc_clk_disable(rcc_clk_id id) { - static const __io uint32* enable_regs[] = { + static const __IO uint32* enable_regs[] = { [APB1] = &RCC_BASE->APB1ENR, [APB2] = &RCC_BASE->APB2ENR, [AHB1] = &RCC_BASE->AHB1ENR, @@ -627,7 +627,7 @@ void rcc_clk_disable(rcc_clk_id id) { }; rcc_clk_domain clk_domain = rcc_dev_clk(id); - __io uint32* enr = (__io uint32*)enable_regs[clk_domain]; + __IO uint32* enr = (__IO uint32*)enable_regs[clk_domain]; uint8 lnum = rcc_dev_table[id].line_num; bb_peri_set_bit(enr, lnum, 0); @@ -638,7 +638,7 @@ void rcc_clk_disable(rcc_clk_id id) { * @param id Clock ID of the peripheral to reset. */ void rcc_reset_dev(rcc_clk_id id) { - static const __io uint32* reset_regs[] = { + static const __IO uint32* reset_regs[] = { [APB1] = &RCC_BASE->APB1RSTR, [APB2] = &RCC_BASE->APB2RSTR, [AHB1] = &RCC_BASE->AHB1RSTR, @@ -647,7 +647,7 @@ void rcc_reset_dev(rcc_clk_id id) { }; rcc_clk_domain clk_domain = rcc_dev_clk(id); - __io void* addr = (__io void*)reset_regs[clk_domain]; + __IO void* addr = (__IO void*)reset_regs[clk_domain]; uint8 lnum = rcc_dev_table[id].line_num; bb_peri_set_bit(addr, lnum, 1); diff --git a/STM32F4/cores/maple/libmaple/rccF4.h b/STM32F4/cores/maple/libmaple/rccF4.h index 99c5ff25d..1558bc86a 100644 --- a/STM32F4/cores/maple/libmaple/rccF4.h +++ b/STM32F4/cores/maple/libmaple/rccF4.h @@ -42,36 +42,36 @@ extern "C"{ /** RCC register map type */ typedef struct { - __io uint32 CR; /*!< RCC clock control register, Address offset: 0x00 */ - __io uint32 PLLCFGR; /*!< RCC PLL configuration register, Address offset: 0x04 */ - __io uint32 CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ - __io uint32 CIR; /*!< RCC clock interrupt register, Address offset: 0x0C */ - __io uint32 AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x10 */ - __io uint32 AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x14 */ - __io uint32 AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x18 */ + __IO uint32 CR; /*!< RCC clock control register, Address offset: 0x00 */ + __IO uint32 PLLCFGR; /*!< RCC PLL configuration register, Address offset: 0x04 */ + __IO uint32 CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */ + __IO uint32 CIR; /*!< RCC clock interrupt register, Address offset: 0x0C */ + __IO uint32 AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x10 */ + __IO uint32 AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x14 */ + __IO uint32 AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x18 */ uint32 RESERVED0; /*!< Reserved, 0x1C */ - __io uint32 APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x20 */ - __io uint32 APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x24 */ + __IO uint32 APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x20 */ + __IO uint32 APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x24 */ uint32 RESERVED1[2]; /*!< Reserved, 0x28-0x2C */ - __io uint32 AHB1ENR; /*!< RCC AHB1 peripheral clock register, Address offset: 0x30 */ - __io uint32 AHB2ENR; /*!< RCC AHB2 peripheral clock register, Address offset: 0x34 */ - __io uint32 AHB3ENR; /*!< RCC AHB3 peripheral clock register, Address offset: 0x38 */ + __IO uint32 AHB1ENR; /*!< RCC AHB1 peripheral clock register, Address offset: 0x30 */ + __IO uint32 AHB2ENR; /*!< RCC AHB2 peripheral clock register, Address offset: 0x34 */ + __IO uint32 AHB3ENR; /*!< RCC AHB3 peripheral clock register, Address offset: 0x38 */ uint32 RESERVED2; /*!< Reserved, 0x3C */ - __io uint32 APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x40 */ - __io uint32 APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x44 */ + __IO uint32 APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x40 */ + __IO uint32 APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x44 */ uint32 RESERVED3[2]; /*!< Reserved, 0x48-0x4C */ - __io uint32 AHB1LPENR; /*!< RCC AHB1 peripheral clock enable in low power mode register, Address offset: 0x50 */ - __io uint32 AHB2LPENR; /*!< RCC AHB2 peripheral clock enable in low power mode register, Address offset: 0x54 */ - __io uint32 AHB3LPENR; /*!< RCC AHB3 peripheral clock enable in low power mode register, Address offset: 0x58 */ + __IO uint32 AHB1LPENR; /*!< RCC AHB1 peripheral clock enable in low power mode register, Address offset: 0x50 */ + __IO uint32 AHB2LPENR; /*!< RCC AHB2 peripheral clock enable in low power mode register, Address offset: 0x54 */ + __IO uint32 AHB3LPENR; /*!< RCC AHB3 peripheral clock enable in low power mode register, Address offset: 0x58 */ uint32 RESERVED4; /*!< Reserved, 0x5C */ - __io uint32 APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x60 */ - __io uint32 APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x64 */ + __IO uint32 APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x60 */ + __IO uint32 APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x64 */ uint32 RESERVED5[2]; /*!< Reserved, 0x68-0x6C */ - __io uint32 BDCR; /*!< RCC Backup domain control register, Address offset: 0x70 */ - __io uint32 CSR; /*!< RCC clock control & status register, Address offset: 0x74 */ + __IO uint32 BDCR; /*!< RCC Backup domain control register, Address offset: 0x70 */ + __IO uint32 CSR; /*!< RCC clock control & status register, Address offset: 0x74 */ uint32 RESERVED6[2]; /*!< Reserved, 0x78-0x7C */ - __io uint32 SSCGR; /*!< RCC spread spectrum clock generation register, Address offset: 0x80 */ - __io uint32 PLLI2SCFGR; /*!< RCC PLLI2S configuration register, Address offset: 0x84 */ + __IO uint32 SSCGR; /*!< RCC spread spectrum clock generation register, Address offset: 0x80 */ + __IO uint32 PLLI2SCFGR; /*!< RCC PLLI2S configuration register, Address offset: 0x84 */ } rcc_reg_map; /** RCC register map base pointer */ diff --git a/STM32F4/cores/maple/libmaple/ring_buffer.h b/STM32F4/cores/maple/libmaple/ring_buffer.h index b0185223a..fbe9f4a4a 100644 --- a/STM32F4/cores/maple/libmaple/ring_buffer.h +++ b/STM32F4/cores/maple/libmaple/ring_buffer.h @@ -81,7 +81,7 @@ static inline void rb_init(ring_buffer *rb, uint16 size, uint8 *buf) { * @param rb Buffer whose elements to count. */ static inline uint16 rb_full_count(ring_buffer *rb) { - __io ring_buffer *arb = rb; + __IO ring_buffer *arb = rb; int32 size = arb->tail - arb->head; if (arb->tail < arb->head) { size += arb->size + 1; diff --git a/STM32F4/cores/maple/libmaple/scb.h b/STM32F4/cores/maple/libmaple/scb.h index d9cd8c920..b8c46284c 100644 --- a/STM32F4/cores/maple/libmaple/scb.h +++ b/STM32F4/cores/maple/libmaple/scb.h @@ -36,26 +36,26 @@ /** System control block register map type */ typedef struct scb_reg_map { - __io uint32 CPUID; /**< CPU ID Base Register */ - __io uint32 ICSR; /**< Interrupt Control State Register */ - __io uint32 VTOR; /**< Vector Table Offset Register */ - __io uint32 AIRCR; /**< Application Interrupt / Reset Control Register */ - __io uint32 SCR; /**< System Control Register */ - __io uint32 CCR; /**< Configuration Control Register */ - __io uint8 SHP[12]; /**< System Handlers Priority Registers + __IO uint32 CPUID; /**< CPU ID Base Register */ + __IO uint32 ICSR; /**< Interrupt Control State Register */ + __IO uint32 VTOR; /**< Vector Table Offset Register */ + __IO uint32 AIRCR; /**< Application Interrupt / Reset Control Register */ + __IO uint32 SCR; /**< System Control Register */ + __IO uint32 CCR; /**< Configuration Control Register */ + __IO uint8 SHP[12]; /**< System Handlers Priority Registers (4-7, 8-11, 12-15) */ - __io uint32 SHCSR; /**< System Handler Control and State Register */ - __io uint32 CFSR; /**< Configurable Fault Status Register */ - __io uint32 HFSR; /**< Hard Fault Status Register */ - __io uint32 DFSR; /**< Debug Fault Status Register */ - __io uint32 MMFAR; /**< Mem Manage Address Register */ - __io uint32 BFAR; /**< Bus Fault Address Register */ - __io uint32 AFSR; /**< Auxiliary Fault Status Register */ - __io uint32 PFR[2]; /**< Processor Feature Register */ - __io uint32 DFR; /**< Debug Feature Register */ - __io uint32 ADR; /**< Auxiliary Feature Register */ - __io uint32 MMFR[4]; /**< Memory Model Feature Register */ - __io uint32 ISAR[5]; /**< ISA Feature Register */ + __IO uint32 SHCSR; /**< System Handler Control and State Register */ + __IO uint32 CFSR; /**< Configurable Fault Status Register */ + __IO uint32 HFSR; /**< Hard Fault Status Register */ + __IO uint32 DFSR; /**< Debug Fault Status Register */ + __IO uint32 MMFAR; /**< Mem Manage Address Register */ + __IO uint32 BFAR; /**< Bus Fault Address Register */ + __IO uint32 AFSR; /**< Auxiliary Fault Status Register */ + __IO uint32 PFR[2]; /**< Processor Feature Register */ + __IO uint32 DFR; /**< Debug Feature Register */ + __IO uint32 ADR; /**< Auxiliary Feature Register */ + __IO uint32 MMFR[4]; /**< Memory Model Feature Register */ + __IO uint32 ISAR[5]; /**< ISA Feature Register */ } scb_reg_map; /** System control block register map base pointer */ diff --git a/STM32F4/cores/maple/libmaple/sdio.h b/STM32F4/cores/maple/libmaple/sdio.h index f0afaa163..4096224d7 100644 --- a/STM32F4/cores/maple/libmaple/sdio.h +++ b/STM32F4/cores/maple/libmaple/sdio.h @@ -34,23 +34,23 @@ extern "C"{ // SDIO register map type typedef struct sdio_reg_map { - __io uint32 POWER; // 0x00 - __io uint32 CLKCR; // 0x04 - __io uint32 ARG; // 0x08 - __io uint32 CMD; // 0x0C - __io uint32 RESPCMD; // 0x10 (0x3F) + __IO uint32 POWER; // 0x00 + __IO uint32 CLKCR; // 0x04 + __IO uint32 ARG; // 0x08 + __IO uint32 CMD; // 0x0C + __IO uint32 RESPCMD; // 0x10 (0x3F) const uint32 RESP[4]; // 0x14 - contain the card status, which is part of the received response. - __io uint32 DTIMER; // 0x24 - contains the data timeout period, in card bus clock periods. - __io uint32 DLEN; // 0x28 (0x01FF FFFF) - contains the number of data bytes to be transferred - __io uint32 DCTRL; // 0x2C - __io uint32 DCOUNT; // 0x30 (0x01FF FFFF) - __io uint32 STA; // 0x34 - __io uint32 ICR; // 0x38 - __io uint32 MASK; // 0x3C + __IO uint32 DTIMER; // 0x24 - contains the data timeout period, in card bus clock periods. + __IO uint32 DLEN; // 0x28 (0x01FF FFFF) - contains the number of data bytes to be transferred + __IO uint32 DCTRL; // 0x2C + __IO uint32 DCOUNT; // 0x30 (0x01FF FFFF) + __IO uint32 STA; // 0x34 + __IO uint32 ICR; // 0x38 + __IO uint32 MASK; // 0x3C const uint32 RESERVED1[2]; - __io uint32 FIFOCNT; // 0x48 (0x01FF FFFF) + __IO uint32 FIFOCNT; // 0x48 (0x01FF FFFF) const uint32 RESERVED2[13]; - __io uint32 FIFO; // 0x80 + __IO uint32 FIFO; // 0x80 } sdio_reg_map; #define sdio_dev sdio_reg_map diff --git a/STM32F4/cores/maple/libmaple/spi.h b/STM32F4/cores/maple/libmaple/spi.h index abed68c12..3a18a2e52 100644 --- a/STM32F4/cores/maple/libmaple/spi.h +++ b/STM32F4/cores/maple/libmaple/spi.h @@ -53,15 +53,15 @@ extern "C" { /** SPI register map type. */ typedef struct spi_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SR; /**< Status register */ - __io uint32 DR; /**< Data register */ - __io uint32 CRCPR; /**< CRC polynomial register */ - __io uint32 RXCRCR; /**< RX CRC register */ - __io uint32 TXCRCR; /**< TX CRC register */ - __io uint32 I2SCFGR; /**< I2S configuration register */ - __io uint32 I2SPR; /**< I2S prescaler register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SR; /**< Status register */ + __IO uint32 DR; /**< Data register */ + __IO uint32 CRCPR; /**< CRC polynomial register */ + __IO uint32 RXCRCR; /**< RX CRC register */ + __IO uint32 TXCRCR; /**< TX CRC register */ + __IO uint32 I2SCFGR; /**< I2S configuration register */ + __IO uint32 I2SPR; /**< I2S prescaler register */ } spi_reg_map; /* diff --git a/STM32F4/cores/maple/libmaple/systick.h b/STM32F4/cores/maple/libmaple/systick.h index 6ec33644c..8db8ec0f5 100644 --- a/STM32F4/cores/maple/libmaple/systick.h +++ b/STM32F4/cores/maple/libmaple/systick.h @@ -42,10 +42,10 @@ extern "C"{ /** SysTick register map type */ typedef struct systick_reg_map { - __io uint32 CSR; /**< Control and status register */ - __io uint32 RVR; /**< Reload value register */ - __io uint32 CNT; /**< Current value register ("count") */ - __io uint32 CVR; /**< Calibration value register */ + __IO uint32 CSR; /**< Control and status register */ + __IO uint32 RVR; /**< Reload value register */ + __IO uint32 CNT; /**< Current value register ("count") */ + __IO uint32 CVR; /**< Calibration value register */ } systick_reg_map; /** SysTick register map base pointer */ diff --git a/STM32F4/cores/maple/libmaple/timer.h b/STM32F4/cores/maple/libmaple/timer.h index 79b7d2996..4336397e1 100644 --- a/STM32F4/cores/maple/libmaple/timer.h +++ b/STM32F4/cores/maple/libmaple/timer.h @@ -50,66 +50,66 @@ extern "C"{ /** Advanced control timer register map type */ typedef struct timer_adv_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SMCR; /**< Slave mode control register */ - __io uint32 DIER; /**< DMA/Interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ - __io uint32 CCMR1; /**< Capture/compare mode register 1 */ - __io uint32 CCMR2; /**< Capture/compare mode register 2 */ - __io uint32 CCER; /**< Capture/compare enable register */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ - __io uint32 RCR; /**< Repetition counter register */ - __io uint32 CCR1; /**< Capture/compare register 1 */ - __io uint32 CCR2; /**< Capture/compare register 2 */ - __io uint32 CCR3; /**< Capture/compare register 3 */ - __io uint32 CCR4; /**< Capture/compare register 4 */ - __io uint32 BDTR; /**< Break and dead-time register */ - __io uint32 DCR; /**< DMA control register */ - __io uint32 DMAR; /**< DMA address for full transfer */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SMCR; /**< Slave mode control register */ + __IO uint32 DIER; /**< DMA/Interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ + __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ + __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ + __IO uint32 CCER; /**< Capture/compare enable register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ + __IO uint32 RCR; /**< Repetition counter register */ + __IO uint32 CCR1; /**< Capture/compare register 1 */ + __IO uint32 CCR2; /**< Capture/compare register 2 */ + __IO uint32 CCR3; /**< Capture/compare register 3 */ + __IO uint32 CCR4; /**< Capture/compare register 4 */ + __IO uint32 BDTR; /**< Break and dead-time register */ + __IO uint32 DCR; /**< DMA control register */ + __IO uint32 DMAR; /**< DMA address for full transfer */ } timer_adv_reg_map; /** General purpose timer register map type */ typedef struct timer_gen_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 SMCR; /**< Slave mode control register */ - __io uint32 DIER; /**< DMA/Interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ - __io uint32 CCMR1; /**< Capture/compare mode register 1 */ - __io uint32 CCMR2; /**< Capture/compare mode register 2 */ - __io uint32 CCER; /**< Capture/compare enable register */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 SMCR; /**< Slave mode control register */ + __IO uint32 DIER; /**< DMA/Interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ + __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ + __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ + __IO uint32 CCER; /**< Capture/compare enable register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 CCR1; /**< Capture/compare register 1 */ - __io uint32 CCR2; /**< Capture/compare register 2 */ - __io uint32 CCR3; /**< Capture/compare register 3 */ - __io uint32 CCR4; /**< Capture/compare register 4 */ + __IO uint32 CCR1; /**< Capture/compare register 1 */ + __IO uint32 CCR2; /**< Capture/compare register 2 */ + __IO uint32 CCR3; /**< Capture/compare register 3 */ + __IO uint32 CCR4; /**< Capture/compare register 4 */ const uint32 RESERVED2; /**< Reserved */ - __io uint32 DCR; /**< DMA control register */ - __io uint32 DMAR; /**< DMA address for full transfer */ + __IO uint32 DCR; /**< DMA control register */ + __IO uint32 DMAR; /**< DMA address for full transfer */ } timer_gen_reg_map; /** Basic timer register map type */ typedef struct timer_bas_reg_map { - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ const uint32 RESERVED1; /**< Reserved */ - __io uint32 DIER; /**< DMA/Interrupt enable register */ - __io uint32 SR; /**< Status register */ - __io uint32 EGR; /**< Event generation register */ + __IO uint32 DIER; /**< DMA/Interrupt enable register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 EGR; /**< Event generation register */ const uint32 RESERVED2; /**< Reserved */ const uint32 RESERVED3; /**< Reserved */ const uint32 RESERVED4; /**< Reserved */ - __io uint32 CNT; /**< Counter */ - __io uint32 PSC; /**< Prescaler */ - __io uint32 ARR; /**< Auto-reload register */ + __IO uint32 CNT; /**< Counter */ + __IO uint32 PSC; /**< Prescaler */ + __IO uint32 ARR; /**< Auto-reload register */ } timer_bas_reg_map; @@ -695,7 +695,7 @@ static inline void timer_set_reload(timer_dev *dev, uint16 arr) { * @param channel Channel whose compare value to get. */ static inline uint16 timer_get_compare(timer_dev *dev, uint8 channel) { - __io uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); + __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); return *ccr; } @@ -708,7 +708,7 @@ static inline uint16 timer_get_compare(timer_dev *dev, uint8 channel) { static inline void timer_set_compare(timer_dev *dev, uint8 channel, uint16 value) { - __io uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); + __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); *ccr = value; } @@ -999,7 +999,7 @@ static inline void timer_oc_set_mode(timer_dev *dev, //uint8 bit1 = (channel >> 1) & 1; // original uint8 bit1 = ((channel-1) >> 1) & 1; // fixed /* channel == 1,2 -> CCMR1; channel == 3,4 -> CCMR2 */ - __io uint32 *ccmr = &(dev->regs).gen->CCMR1 + bit1; + __IO uint32 *ccmr = &(dev->regs).gen->CCMR1 + bit1; /* channel == 1,3 -> shift = 0, channel == 2,4 -> shift = 8 */ uint8 shift = 8 * (1 - bit0); diff --git a/STM32F4/cores/maple/libmaple/usart.h b/STM32F4/cores/maple/libmaple/usart.h index 282293a17..fddb5f2c7 100644 --- a/STM32F4/cores/maple/libmaple/usart.h +++ b/STM32F4/cores/maple/libmaple/usart.h @@ -52,13 +52,13 @@ extern "C"{ /** USART register map type */ typedef struct usart_reg_map { - __io uint32 SR; /**< Status register */ - __io uint32 DR; /**< Data register */ - __io uint32 BRR; /**< Baud rate register */ - __io uint32 CR1; /**< Control register 1 */ - __io uint32 CR2; /**< Control register 2 */ - __io uint32 CR3; /**< Control register 3 */ - __io uint32 GTPR; /**< Guard time and prescaler register */ + __IO uint32 SR; /**< Status register */ + __IO uint32 DR; /**< Data register */ + __IO uint32 BRR; /**< Baud rate register */ + __IO uint32 CR1; /**< Control register 1 */ + __IO uint32 CR2; /**< Control register 2 */ + __IO uint32 CR3; /**< Control register 3 */ + __IO uint32 GTPR; /**< Guard time and prescaler register */ } usart_reg_map; /** USART1 register map base pointer */ diff --git a/STM32F4/libraries/RTClock/src/RTClock.h b/STM32F4/libraries/RTClock/src/RTClock.h index c13bf5f52..e5b788d89 100644 --- a/STM32F4/libraries/RTClock/src/RTClock.h +++ b/STM32F4/libraries/RTClock/src/RTClock.h @@ -45,26 +45,26 @@ static const unsigned char monthDays[]={31,28,31,30,31,30,31,31,30,31,30,31}; / typedef struct rtc_reg_map { - __io uint32 TR; /**< Time register */ - __io uint32 DR; /**< Date register */ - __io uint32 CR; /**< Control register */ - __io uint32 ISR; /**< Init Status register */ - __io uint32 PRER; /**< Prescaler register */ - __io uint32 WUTR; /**< Wakeup Timer register */ - __io uint32 CALIBR; /**< Calibration register */ - __io uint32 ALRMAR; /**< Alarm A register */ - __io uint32 ALRMBR; /**< Alarm B register */ - __io uint32 WPR; /**< Write Protect register */ - __io uint32 SSR; /**< SubSecond register */ - __io uint32 SHIFTR; /**< Shift Control register */ - __io uint32 TSTR; /**< TimeStamp Time register */ - __io uint32 TSDR; /**< TimeStamp Date register */ - __io uint32 TSSSR; /**< TimeStamp SubSecond register */ - __io uint32 CALR; /**< Calibration register */ - __io uint32 TAFCR; /**< Tamper and Alternate Function Config register */ - __io uint32 ALRMASSR; /**< Alarm A subSecond register */ - __io uint32 ALRMBSSR; /**< Alarm B subSecond register */ - __io uint32 BKPxR; /**< Backup registers */ + __IO uint32 TR; /**< Time register */ + __IO uint32 DR; /**< Date register */ + __IO uint32 CR; /**< Control register */ + __IO uint32 ISR; /**< Init Status register */ + __IO uint32 PRER; /**< Prescaler register */ + __IO uint32 WUTR; /**< Wakeup Timer register */ + __IO uint32 CALIBR; /**< Calibration register */ + __IO uint32 ALRMAR; /**< Alarm A register */ + __IO uint32 ALRMBR; /**< Alarm B register */ + __IO uint32 WPR; /**< Write Protect register */ + __IO uint32 SSR; /**< SubSecond register */ + __IO uint32 SHIFTR; /**< Shift Control register */ + __IO uint32 TSTR; /**< TimeStamp Time register */ + __IO uint32 TSDR; /**< TimeStamp Date register */ + __IO uint32 TSSSR; /**< TimeStamp SubSecond register */ + __IO uint32 CALR; /**< Calibration register */ + __IO uint32 TAFCR; /**< Tamper and Alternate Function Config register */ + __IO uint32 ALRMASSR; /**< Alarm A subSecond register */ + __IO uint32 ALRMBSSR; /**< Alarm B subSecond register */ + __IO uint32 BKPxR; /**< Backup registers */ } rtc_reg_map; /** RTC register map base pointer */ diff --git a/tools/win/dfu-util-0.9-win64/dfu-prefix.exe b/tools/win/dfu-util-0.9-win64/dfu-prefix.exe index 5ae088804979feab4339592abc9c90e694d2b516..11a60c1447c61e7b2633107b3fce693755589a5b 100644 GIT binary patch delta 65 zcmX^6h3o7Wt_@MSOrHMDF}d4gav4|p0NK;ocQHBx>Fqwd7?l}8jKbZFd)|W>`m33A MctDKU?Mxq-07ust0{{R3 delta 65 zcmX^6h3o7Wt_@MSOqu!3F}d4gav4|p0NK;ocQHBx>Fqwd7?l}8jKbZFd)|W>`m33A MctDKU?Mxq-0Cg7`g8%>k diff --git a/tools/win/dfu-util-0.9-win64/dfu-suffix.exe b/tools/win/dfu-util-0.9-win64/dfu-suffix.exe index e54eb25d97c6508377c8c808a261e98292560a02..1357b06a3e8d7b978019903b83eecd2adfedae20 100644 GIT binary patch delta 74 zcmX@}gX_!>t_@N7OrHMDG5OnL@)_s)0NK-j?`Cuc(%T*OFe)>0c={*Brt_@N7Oqu!3G5OnL@)_s)0NK-j?`Cuc(%T*OFe)>0WacNur?XYc delta 103 zcmZ4TKyb+e!3`QWnKJX6wQja+-DKRZb(6`78OWcWcZbQDBQrlKKCLt_d3tRai`?|< ucbNXeg(e#|E4AHY+IEk5XDv|u_TAAe8Uma!4Ghx*UNA~*XUSnvU;zNDtSCJI diff --git a/tools/win/dfu-util-0.9-win64/libusb-1.0.dll b/tools/win/dfu-util-0.9-win64/libusb-1.0.dll index c8d77172b4c60ae807aaaafd5391acd0066d43c8..d0f1cd78a8983c09f7101db8f5ffc40ad3a8bad3 100644 GIT binary patch delta 85 zcmbRIS8eiNwT2ePElj((m^}U4_i!-*F*6Xe05R+KJzQ+1K0t}-#^G%5K?+nN*npTF ch&i^aL~!PW00p;CTElso7sQC)#c9F<0228eivR!s delta 85 zcmbRIS8eiNwT2ePElj((m@@O*_i!-*F*6Xe05R+KJzQ+1K0t}-#^G%5K?+nN*npTF ch&i^aL~!PW00p;CTElso7sQC)#c9F<06$qB%K!iX diff --git a/tools/win/dfu-util.exe b/tools/win/dfu-util.exe index f735c03f30bcfa8e55361a883b2bb9e94239119e..3ba993938a7f899e80737efda8a38748bcf65ceb 100644 GIT binary patch delta 52 zcmdnl;I^~Dt)Ydng{g(Pg{6hHg{_6Xg`|Lw0U H1pU|n*+UVB delta 52 zcmdnl;I^~Dt)Ydng{g(Pg{6hHg{_6Xg`eFnRiKe_+C_a32733kfU$ delta 24 ecmZozAeFlFX%e_+C_a3274>j`WC diff --git a/tools/win/stm32flash.exe b/tools/win/stm32flash.exe index 911c0cc058b8b9d40cb95e9d83223b998c9f673a..f5cc7eb840a962454df4c3eedda0968cb02b46c2 100644 GIT binary patch delta 22 ccmZp8%-H}$EsR^3rlv7@`fs0}#`Ka40Baiv(f|Me delta 22 ccmZp8%-H}$EsR^3rlv7v=5L>##`Ka40BrjS5&!@I From 37907052efe8f3a5a3f81ad03f9e2cc593bbf9db Mon Sep 17 00:00:00 2001 From: aster94 Date: Thu, 25 Jan 2018 15:20:34 +0100 Subject: [PATCH 046/373] Add files via upload --- tools/win/dfu-util-0.9-win64/dfu-prefix.exe | Bin 178765 -> 178765 bytes tools/win/dfu-util-0.9-win64/dfu-suffix.exe | Bin 179276 -> 179276 bytes .../dfu-util-0.9-win64/dfu-util-static.exe | Bin 799602 -> 799602 bytes tools/win/dfu-util-0.9-win64/dfu-util.exe | Bin 290852 -> 290852 bytes tools/win/dfu-util-0.9-win64/libusb-1.0.dll | Bin 638611 -> 638611 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/win/dfu-util-0.9-win64/dfu-prefix.exe b/tools/win/dfu-util-0.9-win64/dfu-prefix.exe index 11a60c1447c61e7b2633107b3fce693755589a5b..5ae088804979feab4339592abc9c90e694d2b516 100644 GIT binary patch delta 65 zcmX^6h3o7Wt_@MSOqu!3F}d4gav4|p0NK;ocQHBx>Fqwd7?l}8jKbZFd)|W>`m33A MctDKU?Mxq-0Cg7`g8%>k delta 65 zcmX^6h3o7Wt_@MSOrHMDF}d4gav4|p0NK;ocQHBx>Fqwd7?l}8jKbZFd)|W>`m33A MctDKU?Mxq-07ust0{{R3 diff --git a/tools/win/dfu-util-0.9-win64/dfu-suffix.exe b/tools/win/dfu-util-0.9-win64/dfu-suffix.exe index 1357b06a3e8d7b978019903b83eecd2adfedae20..e54eb25d97c6508377c8c808a261e98292560a02 100644 GIT binary patch delta 74 zcmX@}gX_!>t_@N7Oqu!3G5OnL@)_s)0NK-j?`Cuc(%T*OFe)>0WacNurt_@N7OrHMDG5OnL@)_s)0NK-j?`Cuc(%T*OFe)>0c={*Br?XYc diff --git a/tools/win/dfu-util-0.9-win64/libusb-1.0.dll b/tools/win/dfu-util-0.9-win64/libusb-1.0.dll index d0f1cd78a8983c09f7101db8f5ffc40ad3a8bad3..c8d77172b4c60ae807aaaafd5391acd0066d43c8 100644 GIT binary patch delta 85 zcmbRIS8eiNwT2ePElj((m@@O*_i!-*F*6Xe05R+KJzQ+1K0t}-#^G%5K?+nN*npTF ch&i^aL~!PW00p;CTElso7sQC)#c9F<06$qB%K!iX delta 85 zcmbRIS8eiNwT2ePElj((m^}U4_i!-*F*6Xe05R+KJzQ+1K0t}-#^G%5K?+nN*npTF ch&i^aL~!PW00p;CTElso7sQC)#c9F<0228eivR!s From 3e1adc26625d24842aaf8ef01b8c469265364b12 Mon Sep 17 00:00:00 2001 From: aster94 Date: Thu, 25 Jan 2018 15:22:03 +0100 Subject: [PATCH 047/373] Add files via upload --- tools/win/dfu-util.exe | Bin 1146937 -> 1146937 bytes tools/win/stm32flash.exe | Bin 160128 -> 160128 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/win/dfu-util.exe b/tools/win/dfu-util.exe index 3ba993938a7f899e80737efda8a38748bcf65ceb..f735c03f30bcfa8e55361a883b2bb9e94239119e 100644 GIT binary patch delta 52 zcmdnl;I^~Dt)Ydng{g(Pg{6hHg{_6Xg`|Lw0U H1pU|n*+UVB diff --git a/tools/win/stm32flash.exe b/tools/win/stm32flash.exe index f5cc7eb840a962454df4c3eedda0968cb02b46c2..911c0cc058b8b9d40cb95e9d83223b998c9f673a 100644 GIT binary patch delta 22 ccmZp8%-H}$EsR^3rlv7v=5L>##`Ka40BrjS5&!@I delta 22 ccmZp8%-H}$EsR^3rlv7@`fs0}#`Ka40Baiv(f|Me From eede5aba0e8b89ec86326edc731b1bd33d4e85ca Mon Sep 17 00:00:00 2001 From: aster94 Date: Thu, 25 Jan 2018 15:24:53 +0100 Subject: [PATCH 048/373] Add files via upload --- tools/win/stlink/ST-LINK_CLI.exe | Bin 267264 -> 267264 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tools/win/stlink/ST-LINK_CLI.exe b/tools/win/stlink/ST-LINK_CLI.exe index 99fca9b28f7863603f783377baaae36214c4b04c..a9452e81a9912d5ce15d250f2c687c33f031bb62 100644 GIT binary patch delta 24 ecmZozAeFlFX%e_+C_a3274>j`WC delta 24 ecmZozAeFnRiKe_+C_a32733kfU$ From 4b6a6e8077e9471a612db51d979628f63660b929 Mon Sep 17 00:00:00 2001 From: Ken Willmott Date: Wed, 31 Jan 2018 08:38:14 -0500 Subject: [PATCH 049/373] Update BluePill-RTClock-test.ino Clarify English documentation by changing all occurrences of "10 bits" to "10 digits", referring to Epoch time. --- .../BluePill-RTClock-test/BluePill-RTClock-test.ino | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index d49025a1d..397b72d40 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -8,12 +8,12 @@ 3. Serial output on(41s) or off(21s) by creatAlarm 4. change to your timezone in the sketch; . 3. get Unix epoch time from https://www.epochconverter.com/ ; - 4. last step input the 10 bits number( example: 1503945555) to Serialport ; + 4. last step input the 10 digit number( example: 1503945555) to Serialport ; 5. the clock will be reset to you wanted. - ## Why the 10 bits Unix epoch time be used? + ## Why the 10 digit Unix epoch time be used? ****Because I wanna connect to NTP server by ESP-8266. -****in the library. getNtpTime() will return this 10 bits Unix epoch time. +****in the library. getNtpTime() will return this 10 digit Unix epoch time. * * 嗨!朋友们, 这是一个STM32F10x系列的RTC应用的例子,希望对你的编码有所帮助 * 这个程序基于https://github.com/rogerclarkmelbourne/Arduino_STM32 , 感谢所有贡献者的付出。 From 42a5e9f9073e1f3b2a479abc4145a32b8e8c9339 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 2 Feb 2018 09:16:51 +1100 Subject: [PATCH 050/373] Update BOARD_NR_GPIO_PINS for STM32F103V This fixes problem caused by https://github.com/rogerclarkmelbourne/Arduino_STM32/commit/951d0acf178b28d52919fb777874d90603c88883#diff-3df511e94e3cba57d187bb1322b9f6c6 --- STM32F1/variants/generic_stm32f103v/board/board.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/STM32F1/variants/generic_stm32f103v/board/board.h b/STM32F1/variants/generic_stm32f103v/board/board.h index ccd5ecf84..e4bd0896c 100644 --- a/STM32F1/variants/generic_stm32f103v/board/board.h +++ b/STM32F1/variants/generic_stm32f103v/board/board.h @@ -90,8 +90,9 @@ #define BOARD_SPI3_MOSI_PIN PB5 -/* GPIO A to E = 5 * 16 - BOOT1 not used = 79*/ -#define BOARD_NR_GPIO_PINS 79 +/* GPIO A to E = 5 * 16 = 80*/ +/* value is now 80 as boo1 was added via PR to the pinmap but this value was not increased*/ +#define BOARD_NR_GPIO_PINS 80 /* Note: NOT 19. The missing one is D38 a.k.a. BOARD_BUTTON_PIN, which * isn't broken out to a header and is thus unusable for PWM. */ #define BOARD_NR_PWM_PINS 19 From 35e0a6453a845acf22ec6e6d6e09a630bb3232e9 Mon Sep 17 00:00:00 2001 From: Jiri Bilek Date: Sat, 3 Feb 2018 13:15:56 +0100 Subject: [PATCH 051/373] Fixing now() function The now() function was defined using the #define directive. That is wrong as it prevents using the keyword "now" in other situations. --- STM32F1/libraries/RTClock/src/RTClock.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/RTClock/src/RTClock.h b/STM32F1/libraries/RTClock/src/RTClock.h index 1988c9eef..a3ff65334 100755 --- a/STM32F1/libraries/RTClock/src/RTClock.h +++ b/STM32F1/libraries/RTClock/src/RTClock.h @@ -52,7 +52,9 @@ class RTClock { time_t getTime(); void getTime(tm_t & tmm ); - #define now getTime + + time_t now() { return getTime(); } + void now(tm_t & tmm ) { getTime(tmm); } // non-standard use of now() function, added for compatibility with previous versions of the library uint8_t year(void) { getTime(tmm); return tmm.year; } uint8_t month(void) { getTime(tmm); return tmm.month; } @@ -100,4 +102,4 @@ class RTClock { #endif // _RTCLOCK_H_ - \ No newline at end of file + From 85e0c9b602e2c5b86a7fe25cc159c9f05dc2f089 Mon Sep 17 00:00:00 2001 From: Jiri Bilek Date: Sat, 3 Feb 2018 13:41:59 +0100 Subject: [PATCH 052/373] Fixing now() in RTClock.h in STMF4 library --- STM32F4/libraries/RTClock/src/RTClock.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/STM32F4/libraries/RTClock/src/RTClock.h b/STM32F4/libraries/RTClock/src/RTClock.h index c13bf5f52..27597a5ce 100644 --- a/STM32F4/libraries/RTClock/src/RTClock.h +++ b/STM32F4/libraries/RTClock/src/RTClock.h @@ -184,7 +184,9 @@ class RTClock { time_t getTime(); void getTime(tm_t & tm); - #define now getTime + + time_t now() { return getTime(); } + void now(tm_t & tmm ) { getTime(tmm); } // non-standard use of now() function, added for compatibility with previous versions of the library uint8_t year(void) { getTime(tm); return tm.year; } uint8_t month(void) { getTime(tm); return tm.month; } From 2536e6dbec89e1e8636f03c7d6e8d8eb03f6ba83 Mon Sep 17 00:00:00 2001 From: Lacklustrlabs Date: Sat, 27 Jan 2018 17:48:34 +0100 Subject: [PATCH 053/373] Fixed 'warning: comparison between signed and unsigned integer expressions [-Wsign-compare] --- STM32F1/cores/maple/libmaple/rcc.c | 2 +- STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c | 6 +++--- STM32F1/libraries/OLED_I2C/OLED_I2C.cpp | 6 +++--- STM32F1/variants/STM32VLD/wirish/syscalls.c | 2 +- STM32F1/variants/generic_gd32f103c/wirish/syscalls.c | 2 +- STM32F1/variants/generic_stm32f103c/wirish/syscalls.c | 2 +- STM32F1/variants/generic_stm32f103r8/wirish/syscalls.c | 2 +- STM32F1/variants/generic_stm32f103t/wirish/syscalls.c | 2 +- STM32F1/variants/generic_stm32f103v/wirish/syscalls.c | 2 +- STM32F1/variants/generic_stm32f103z/wirish/syscalls.c | 2 +- STM32F1/variants/hytiny_stm32f103t/wirish/syscalls.c | 2 +- STM32F1/variants/maple/wirish/syscalls.c | 2 +- STM32F1/variants/maple_mini/wirish/syscalls.c | 2 +- STM32F1/variants/maple_ret6/wirish/syscalls.c | 2 +- STM32F1/variants/microduino/wirish/syscalls.c | 2 +- STM32F1/variants/nucleo_f103rb/wirish/syscalls.c | 2 +- STM32F3/cores/maple/libmaple/rcc.c | 2 +- 17 files changed, 21 insertions(+), 21 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/rcc.c b/STM32F1/cores/maple/libmaple/rcc.c index 8e7d1ea7d..c81f68e3c 100644 --- a/STM32F1/cores/maple/libmaple/rcc.c +++ b/STM32F1/cores/maple/libmaple/rcc.c @@ -61,7 +61,7 @@ void rcc_switch_sysclk(rcc_sysclk_src sysclk_src) { RCC_BASE->CFGR = cfgr; /* Wait for new source to come into use. */ - while ((RCC_BASE->CFGR & RCC_CFGR_SWS) != (sysclk_src << 2)) + while ((RCC_BASE->CFGR & RCC_CFGR_SWS) != (unsigned int)(sysclk_src << 2)) ; } diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c index 7ebd03b76..76e2bfb0f 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c @@ -487,7 +487,7 @@ uint32 usb_cdcacm_rx(uint8* buf, uint32 len) * Looks at unread bytes without marking them as read. */ uint32 usb_cdcacm_peek(uint8* buf, uint32 len) { - int i; + uint32 i; uint32 tail = rx_tail; uint32 rx_unread = (rx_head-tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; @@ -505,7 +505,7 @@ uint32 usb_cdcacm_peek(uint8* buf, uint32 len) uint32 usb_cdcacm_peek_ex(uint8* buf, uint32 offset, uint32 len) { - int i; + uint32 i; uint32 tail = (rx_tail + offset) & CDC_SERIAL_RX_BUFFER_SIZE_MASK ; uint32 rx_unread = (rx_head-tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; @@ -583,7 +583,7 @@ static void vcomDataTxCb(void) uint32 *dst = usb_pma_ptr(USB_CDCACM_TX_ADDR); uint16 tmp = 0; uint16 val; - int i; + uint32 i; for (i = 0; i < tx_unsent; i++) { val = vcomBufferTx[tail]; tail = (tail + 1) & CDC_SERIAL_TX_BUFFER_SIZE_MASK; diff --git a/STM32F1/libraries/OLED_I2C/OLED_I2C.cpp b/STM32F1/libraries/OLED_I2C/OLED_I2C.cpp index 8b59f9d8c..fbdefb651 100644 --- a/STM32F1/libraries/OLED_I2C/OLED_I2C.cpp +++ b/STM32F1/libraries/OLED_I2C/OLED_I2C.cpp @@ -283,7 +283,7 @@ void OLED::printNumF(double num, byte dec, int x, int y, char divider, int lengt if (divider != '.') { - for (int i=0; iCFGR = cfgr; /* Wait for new source to come into use. */ - while ((RCC_BASE->CFGR & RCC_CFGR_SWS) != (sysclk_src << 2)) + while ((RCC_BASE->CFGR & RCC_CFGR_SWS) != (unsigned int)(sysclk_src << 2)) ; } From 5ca1b192d533fe9dd9295a499c85149e2b2af75b Mon Sep 17 00:00:00 2001 From: Lacklustrlabs Date: Tue, 23 Jan 2018 12:43:11 +0100 Subject: [PATCH 054/373] Fixing the ASSERT_FAULT(channel > 0 && channel <= 4) bug in the example --- .../Sensors/HardTimerAsEncoder/HardTimerAsEncoder.ino | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardTimerAsEncoder/HardTimerAsEncoder.ino b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardTimerAsEncoder/HardTimerAsEncoder.ino index 9febe1aee..679891627 100644 --- a/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardTimerAsEncoder/HardTimerAsEncoder.ino +++ b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardTimerAsEncoder/HardTimerAsEncoder.ino @@ -66,13 +66,13 @@ void setup() { pinMode(D3, INPUT_PULLUP); //channel B //configure timer as encoder - timer.setMode(0, TIMER_ENCODER); //set mode, the channel is not used when in this mode. + timer.setMode(1, TIMER_ENCODER); //set mode, the channel is not used when in this mode (but it must be [1..4]). timer.pause(); //stop... timer.setPrescaleFactor(1); //normal for encoder to have the lowest or no prescaler. timer.setOverflow(PPR); //use this to match the number of pulse per revolution of the encoder. Most industrial use 1024 single channel steps. timer.setCount(0); //reset the counter. timer.setEdgeCounting(TIMER_SMCR_SMS_ENCODER3); //or TIMER_SMCR_SMS_ENCODER1 or TIMER_SMCR_SMS_ENCODER2. This uses both channels to count and ascertain direction. - timer.attachInterrupt(0, func); //channel doesn't mean much here either. + timer.attachInterrupt(0, func); //channel must be 0 here timer.resume(); //start the encoder... //Setup encoder simulator From 5f6c8ef670e99a2fc04a599bd1e00642efef9321 Mon Sep 17 00:00:00 2001 From: Jiri Bilek Date: Sat, 3 Feb 2018 14:07:05 +0100 Subject: [PATCH 055/373] Fixed indentation --- STM32F1/libraries/RTClock/src/RTClock.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/RTClock/src/RTClock.h b/STM32F1/libraries/RTClock/src/RTClock.h index a3ff65334..a225c949a 100755 --- a/STM32F1/libraries/RTClock/src/RTClock.h +++ b/STM32F1/libraries/RTClock/src/RTClock.h @@ -53,7 +53,7 @@ class RTClock { time_t getTime(); void getTime(tm_t & tmm ); - time_t now() { return getTime(); } + time_t now() { return getTime(); } void now(tm_t & tmm ) { getTime(tmm); } // non-standard use of now() function, added for compatibility with previous versions of the library uint8_t year(void) { getTime(tmm); return tmm.year; } From 771be821c288f74f4106768aca0042d05c0d038d Mon Sep 17 00:00:00 2001 From: victorpv Date: Wed, 20 Dec 2017 18:44:58 -0600 Subject: [PATCH 056/373] Hardware serial corrections --- STM32F1/cores/maple/HardwareSerial.cpp | 2 +- STM32F1/cores/maple/HardwareSerial.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/cores/maple/HardwareSerial.cpp b/STM32F1/cores/maple/HardwareSerial.cpp index 024efbc7d..fe73339c9 100644 --- a/STM32F1/cores/maple/HardwareSerial.cpp +++ b/STM32F1/cores/maple/HardwareSerial.cpp @@ -187,7 +187,7 @@ int HardwareSerial::availableForWrite(void) return 1; } -size_t HardwareSerial::write(unsigned char ch) { +size_t HardwareSerial::write(uint8_t ch) { usart_putc(this->usart_device, ch); return 1; diff --git a/STM32F1/cores/maple/HardwareSerial.h b/STM32F1/cores/maple/HardwareSerial.h index b8b8dd6fd..108d525c7 100644 --- a/STM32F1/cores/maple/HardwareSerial.h +++ b/STM32F1/cores/maple/HardwareSerial.h @@ -138,7 +138,7 @@ class HardwareSerial : public Stream { virtual int read(void); int availableForWrite(void); virtual void flush(void); - virtual size_t write(uint8_t); + virtual size_t write(uint8_t ch); inline size_t write(unsigned long n) { return write((uint8_t)n); } inline size_t write(long n) { return write((uint8_t)n); } inline size_t write(unsigned int n) { return write((uint8_t)n); } From 36bd1be38738b9e8bd857ee4e1ef6c06d38298ec Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sat, 10 Feb 2018 14:47:33 +1100 Subject: [PATCH 057/373] Added Timer 'Input Capture' support and example --- STM32F1/cores/maple/libmaple/timer.c | 10 ++- .../HardwareTimerInputCapture.ino | 68 +++++++++++++++++++ .../system/libmaple/include/libmaple/timer.h | 4 +- .../libmaple/stm32f1/include/series/gpio.h | 3 +- 4 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino diff --git a/STM32F1/cores/maple/libmaple/timer.c b/STM32F1/cores/maple/libmaple/timer.c index 70e20654c..4c972fe25 100644 --- a/STM32F1/cores/maple/libmaple/timer.c +++ b/STM32F1/cores/maple/libmaple/timer.c @@ -39,6 +39,7 @@ static void disable_channel(timer_dev *dev, uint8 channel); static void pwm_mode(timer_dev *dev, uint8 channel); static void output_compare_mode(timer_dev *dev, uint8 channel); static void encoder_mode(timer_dev *dev, uint8 channel) ;//CARLOS +static void input_capture_mode(timer_dev *dev, uint8 channel);//@Cesco static inline void enable_irq(timer_dev *dev, timer_interrupt_id iid); @@ -236,6 +237,9 @@ void timer_set_mode(timer_dev *dev, uint8 channel, timer_mode mode) { case TIMER_ENCODER: encoder_mode(dev, channel); //find a way to pass all the needed stuff on the 8bit var break; + case TIMER_INPUT_CAPTURE:// code from @Cesco + input_capture_mode(dev, channel); + break; } } @@ -349,7 +353,11 @@ static void encoder_mode(timer_dev *dev, uint8 channel __attribute__((unused))) timer_resume(dev); } - +// Code supplied by @Cesco (on the forum) +static void input_capture_mode(timer_dev *dev, uint8 channel) { + timer_oc_set_mode(dev, channel, 0, TIMER_CCMR_CCS_INPUT_TI1); + timer_cc_enable(dev, channel); +} static void enable_adv_irq(timer_dev *dev, timer_interrupt_id id); static void enable_bas_gen_irq(timer_dev *dev); diff --git a/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino new file mode 100644 index 000000000..e628d6913 --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino @@ -0,0 +1,68 @@ +/* Example of the Timer Input Capture mode + * + * Thanks to @cesco on the stm32duino.com + * + * This example uses Timer2. Other timers also support this mode, bnt on the F103C + * only Timer 2 has usable external trigger pins. PA0 and PA15 + * Because the only other usable pin on the F103C is one of the USB pins. + * + * Upload to your favourite F103Cx + * Open the Serial plotter + * Put your finger on either PA0 or PA15 (depenidng whether you USE the pin remapping) + * + * Observe your local mains frequency in terms of pulse width time. + * + */ + +/* Timer2 external trigger can be ether PA0 or PA15. + To use use afio_remap(FIO_REMAP_TIM2_PARTIAL_1) or afio_remap(AFIO_REMAP_TIM2_FULL) + Note. using afio_remap also changes the pins used by Timer2 CH1,CH2,CH3 amd CH4 + * See page 184 of the STM32F10x Refernce manual (PDF downloadable from ST.com + */ + +//#define USE_REMAP_PIN +#ifdef USE_REMAP_PIN +const int timer2ExternalTriggerPin = PA15; +#else +const int timer2ExternalTriggerPin = PA0; +#endif + +volatile boolean hasCapture; +volatile uint16_t captureValue; +volatile uint16_t lastCaptureValue=0; +volatile uint16_t captureDifference=0; + +void captureCallback(void) { + + hasCapture=true; + captureValue = Timer2.getCompare(1); + captureDifference = captureValue-lastCaptureValue; + lastCaptureValue=captureValue; +} + +void setup() { + + pinMode(timer2ExternalTriggerPin,INPUT); + + #ifdef USE_REMAP_PIN + afio_remap(AFIO_REMAP_TIM2_PARTIAL_1); + #endif + + hasCapture = false; + + Timer2.setPrescaleFactor(72); // prescaler to count 72,000,000 / 72 counts per second. i.e count microseconds + Timer2.setMode(TIMER_CH1, TIMER_INPUT_CAPTURE); + Timer2.attachCompare1Interrupt(captureCallback); + +} + +void loop() { + + // Printing inside the callback is not a good idea. + // Hence the capture callback sets a flag , which is detected here + if (hasCapture) + { + Serial.println(captureDifference); + hasCapture=false; + } +} \ No newline at end of file diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index 64f458f1d..c915f4ed0 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -564,13 +564,15 @@ typedef enum timer_mode { * values, the corresponding interrupt is fired. */ TIMER_OUTPUT_COMPARE, - /* TIMER_INPUT_CAPTURE, TODO: In this mode, the timer can measure the + + /* TIMER_INPUT_CAPTURE, UNDER DEVELOPMENT: In this mode, the timer can measure the * pulse lengths of input signals */ /* TIMER_ONE_PULSE, TODO: In this mode, the timer can generate a single * pulse on a GPIO pin for a specified amount of * time. */ TIMER_ENCODER, //CARLOS Change + TIMER_INPUT_CAPTURE,// code from @cesco } timer_mode; /** Timer channel numbers */ diff --git a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h index aff639b4b..a20c021d3 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h @@ -351,7 +351,8 @@ typedef enum afio_remap_peripheral { * Timer 2 partial remapping 2 (CH1 and ETR on PA0, CH2 on PA1, * CH3 on PB10, CH4 on PB11) */ AFIO_REMAP_TIM2_PARTIAL_2 = AFIO_MAPR_TIM2_REMAP_PA0_PA1_PB10_PB11, - /** Timer 2 full remapping */ + /** Timer 2 full remapping + (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ AFIO_REMAP_TIM2_FULL = AFIO_MAPR_TIM2_REMAP_FULL, /** USART 3 part remapping */ AFIO_REMAP_USART3_PARTIAL = AFIO_MAPR_USART3_REMAP_PARTIAL, From 66092e6e39648f1800011c84b9219d2a4fff8abe Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 10 Feb 2018 18:45:03 +0100 Subject: [PATCH 058/373] Update timer.h corrected mask for OCxM bits in CCMR1/2 registers (see RM0008 rev.16 p. 413) --- STM32F1/system/libmaple/include/libmaple/timer.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index c915f4ed0..3d91a2da3 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -387,7 +387,7 @@ extern timer_dev timer14; #define TIMER_CCMR1_OC1FE_BIT 2 #define TIMER_CCMR1_OC2CE (1U << TIMER_CCMR1_OC2CE_BIT) -#define TIMER_CCMR1_OC2M (0x3 << 12) +#define TIMER_CCMR1_OC2M (0x7 << 12) #define TIMER_CCMR1_IC2F (0xF << 12) #define TIMER_CCMR1_OC2PE (1U << TIMER_CCMR1_OC2PE_BIT) #define TIMER_CCMR1_OC2FE (1U << TIMER_CCMR1_OC2FE_BIT) @@ -398,7 +398,7 @@ extern timer_dev timer14; #define TIMER_CCMR1_CC2S_INPUT_TI1 (0x2 << 8) #define TIMER_CCMR1_CC2S_INPUT_TRC (0x3 << 8) #define TIMER_CCMR1_OC1CE (1U << TIMER_CCMR1_OC1CE_BIT) -#define TIMER_CCMR1_OC1M (0x3 << 4) +#define TIMER_CCMR1_OC1M (0x7 << 4) #define TIMER_CCMR1_IC1F (0xF << 4) #define TIMER_CCMR1_OC1PE (1U << TIMER_CCMR1_OC1PE_BIT) #define TIMER_CCMR1_OC1FE (1U << TIMER_CCMR1_OC1FE_BIT) @@ -419,7 +419,7 @@ extern timer_dev timer14; #define TIMER_CCMR2_OC3FE_BIT 2 #define TIMER_CCMR2_OC4CE (1U << TIMER_CCMR2_OC4CE_BIT) -#define TIMER_CCMR2_OC4M (0x3 << 12) +#define TIMER_CCMR2_OC4M (0x7 << 12) #define TIMER_CCMR2_IC4F (0xF << 12) #define TIMER_CCMR2_OC4PE (1U << TIMER_CCMR2_OC4PE_BIT) #define TIMER_CCMR2_OC4FE (1U << TIMER_CCMR2_OC4FE_BIT) @@ -430,7 +430,7 @@ extern timer_dev timer14; #define TIMER_CCMR2_CC4S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) #define TIMER_CCMR2_CC4S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) #define TIMER_CCMR2_OC3CE (1U << TIMER_CCMR2_OC3CE_BIT) -#define TIMER_CCMR2_OC3M (0x3 << 4) +#define TIMER_CCMR2_OC3M (0x7 << 4) #define TIMER_CCMR2_IC3F (0xF << 4) #define TIMER_CCMR2_OC3PE (1U << TIMER_CCMR2_OC3PE_BIT) #define TIMER_CCMR2_OC3FE (1U << TIMER_CCMR2_OC3FE_BIT) From c6ef07affed27af470504f5cf85f248f3c781ef1 Mon Sep 17 00:00:00 2001 From: Ken Willmott Date: Sat, 10 Feb 2018 18:52:15 -0500 Subject: [PATCH 059/373] Update rtc_util.c Modify rtc_get_count() and rtc_get_divider() to fix non-atomic accesses to RTC counter registers --- STM32F1/libraries/RTClock/src/utility/rtc_util.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/STM32F1/libraries/RTClock/src/utility/rtc_util.c b/STM32F1/libraries/RTClock/src/utility/rtc_util.c index 3c8b7d518..c730ba111 100644 --- a/STM32F1/libraries/RTClock/src/utility/rtc_util.c +++ b/STM32F1/libraries/RTClock/src/utility/rtc_util.c @@ -182,8 +182,10 @@ void rtc_set_count(uint32 value) { rtc_wait_sync(); rtc_wait_finished(); rtc_enter_config_mode(); - RTC->regs->CNTH = (value >> 16) & 0xffff; - RTC->regs->CNTL = value & 0xffff; + do { + h = RTC->regs->CNTH & 0xffff; + l = RTC->regs->CNTL & 0xffff; + } while (h ^ (RTC->regs->CNTH & 0xffff)); rtc_exit_config_mode(); rtc_wait_finished(); } @@ -211,8 +213,10 @@ uint32 rtc_get_divider() { rtc_clear_sync(); rtc_wait_sync(); rtc_wait_finished(); - h = RTC->regs->DIVH & 0x000f; - l = RTC->regs->DIVL & 0xffff; + do { + h = RTC->regs->DIVH & 0x000f; + l = RTC->regs->DIVL & 0xffff; + } while (h ^ (RTC->regs->DIVH & 0x000f)); return (h << 16) | l; } @@ -229,4 +233,4 @@ void rtc_set_alarm(uint32 value) { RTC->regs->ALRL = value & 0xffff; rtc_exit_config_mode(); rtc_wait_finished(); -} \ No newline at end of file +} From c063a916fddee6b38257d69893bb6c28517b8495 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 11 Feb 2018 21:35:31 +1100 Subject: [PATCH 060/373] Revert "Added Timer 'Input Capture' support and example" This reverts commit 36bd1be38738b9e8bd857ee4e1ef6c06d38298ec. --- STM32F1/cores/maple/libmaple/timer.c | 10 +-- .../HardwareTimerInputCapture.ino | 68 ------------------- .../system/libmaple/include/libmaple/timer.h | 4 +- .../libmaple/stm32f1/include/series/gpio.h | 3 +- 4 files changed, 3 insertions(+), 82 deletions(-) delete mode 100644 STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino diff --git a/STM32F1/cores/maple/libmaple/timer.c b/STM32F1/cores/maple/libmaple/timer.c index 4c972fe25..70e20654c 100644 --- a/STM32F1/cores/maple/libmaple/timer.c +++ b/STM32F1/cores/maple/libmaple/timer.c @@ -39,7 +39,6 @@ static void disable_channel(timer_dev *dev, uint8 channel); static void pwm_mode(timer_dev *dev, uint8 channel); static void output_compare_mode(timer_dev *dev, uint8 channel); static void encoder_mode(timer_dev *dev, uint8 channel) ;//CARLOS -static void input_capture_mode(timer_dev *dev, uint8 channel);//@Cesco static inline void enable_irq(timer_dev *dev, timer_interrupt_id iid); @@ -237,9 +236,6 @@ void timer_set_mode(timer_dev *dev, uint8 channel, timer_mode mode) { case TIMER_ENCODER: encoder_mode(dev, channel); //find a way to pass all the needed stuff on the 8bit var break; - case TIMER_INPUT_CAPTURE:// code from @Cesco - input_capture_mode(dev, channel); - break; } } @@ -353,11 +349,7 @@ static void encoder_mode(timer_dev *dev, uint8 channel __attribute__((unused))) timer_resume(dev); } -// Code supplied by @Cesco (on the forum) -static void input_capture_mode(timer_dev *dev, uint8 channel) { - timer_oc_set_mode(dev, channel, 0, TIMER_CCMR_CCS_INPUT_TI1); - timer_cc_enable(dev, channel); -} + static void enable_adv_irq(timer_dev *dev, timer_interrupt_id id); static void enable_bas_gen_irq(timer_dev *dev); diff --git a/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino deleted file mode 100644 index e628d6913..000000000 --- a/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerInputCapture/HardwareTimerInputCapture.ino +++ /dev/null @@ -1,68 +0,0 @@ -/* Example of the Timer Input Capture mode - * - * Thanks to @cesco on the stm32duino.com - * - * This example uses Timer2. Other timers also support this mode, bnt on the F103C - * only Timer 2 has usable external trigger pins. PA0 and PA15 - * Because the only other usable pin on the F103C is one of the USB pins. - * - * Upload to your favourite F103Cx - * Open the Serial plotter - * Put your finger on either PA0 or PA15 (depenidng whether you USE the pin remapping) - * - * Observe your local mains frequency in terms of pulse width time. - * - */ - -/* Timer2 external trigger can be ether PA0 or PA15. - To use use afio_remap(FIO_REMAP_TIM2_PARTIAL_1) or afio_remap(AFIO_REMAP_TIM2_FULL) - Note. using afio_remap also changes the pins used by Timer2 CH1,CH2,CH3 amd CH4 - * See page 184 of the STM32F10x Refernce manual (PDF downloadable from ST.com - */ - -//#define USE_REMAP_PIN -#ifdef USE_REMAP_PIN -const int timer2ExternalTriggerPin = PA15; -#else -const int timer2ExternalTriggerPin = PA0; -#endif - -volatile boolean hasCapture; -volatile uint16_t captureValue; -volatile uint16_t lastCaptureValue=0; -volatile uint16_t captureDifference=0; - -void captureCallback(void) { - - hasCapture=true; - captureValue = Timer2.getCompare(1); - captureDifference = captureValue-lastCaptureValue; - lastCaptureValue=captureValue; -} - -void setup() { - - pinMode(timer2ExternalTriggerPin,INPUT); - - #ifdef USE_REMAP_PIN - afio_remap(AFIO_REMAP_TIM2_PARTIAL_1); - #endif - - hasCapture = false; - - Timer2.setPrescaleFactor(72); // prescaler to count 72,000,000 / 72 counts per second. i.e count microseconds - Timer2.setMode(TIMER_CH1, TIMER_INPUT_CAPTURE); - Timer2.attachCompare1Interrupt(captureCallback); - -} - -void loop() { - - // Printing inside the callback is not a good idea. - // Hence the capture callback sets a flag , which is detected here - if (hasCapture) - { - Serial.println(captureDifference); - hasCapture=false; - } -} \ No newline at end of file diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index c915f4ed0..64f458f1d 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -564,15 +564,13 @@ typedef enum timer_mode { * values, the corresponding interrupt is fired. */ TIMER_OUTPUT_COMPARE, - - /* TIMER_INPUT_CAPTURE, UNDER DEVELOPMENT: In this mode, the timer can measure the + /* TIMER_INPUT_CAPTURE, TODO: In this mode, the timer can measure the * pulse lengths of input signals */ /* TIMER_ONE_PULSE, TODO: In this mode, the timer can generate a single * pulse on a GPIO pin for a specified amount of * time. */ TIMER_ENCODER, //CARLOS Change - TIMER_INPUT_CAPTURE,// code from @cesco } timer_mode; /** Timer channel numbers */ diff --git a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h index a20c021d3..aff639b4b 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h @@ -351,8 +351,7 @@ typedef enum afio_remap_peripheral { * Timer 2 partial remapping 2 (CH1 and ETR on PA0, CH2 on PA1, * CH3 on PB10, CH4 on PB11) */ AFIO_REMAP_TIM2_PARTIAL_2 = AFIO_MAPR_TIM2_REMAP_PA0_PA1_PB10_PB11, - /** Timer 2 full remapping - (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) */ + /** Timer 2 full remapping */ AFIO_REMAP_TIM2_FULL = AFIO_MAPR_TIM2_REMAP_FULL, /** USART 3 part remapping */ AFIO_REMAP_USART3_PARTIAL = AFIO_MAPR_USART3_REMAP_PARTIAL, From f928acf19336e1d1f1ae146d3f9f9d8d18e19033 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Tue, 13 Feb 2018 18:34:15 +1100 Subject: [PATCH 061/373] Add InputCapture and OnePulse functionality from @stevestrong --- STM32F1/cores/maple/HardwareTimer.cpp | 23 +--- STM32F1/cores/maple/HardwareTimer.h | 47 +++++-- STM32F1/cores/maple/libmaple/timer.c | 9 +- .../HardwareTimerOnePulseMode.ino | 67 ++++++++++ .../HardwareTimerPWMInput.ino | 77 +++++++++++ .../system/libmaple/include/libmaple/timer.h | 121 ++++++------------ 6 files changed, 226 insertions(+), 118 deletions(-) create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerOnePulseMode/HardwareTimerOnePulseMode.ino create mode 100644 STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerPWMInput/HardwareTimerPWMInput.ino diff --git a/STM32F1/cores/maple/HardwareTimer.cpp b/STM32F1/cores/maple/HardwareTimer.cpp index abf1e623f..dd96d0512 100644 --- a/STM32F1/cores/maple/HardwareTimer.cpp +++ b/STM32F1/cores/maple/HardwareTimer.cpp @@ -30,6 +30,7 @@ #include "ext_interrupts.h" // for noInterrupts(), interrupts() #include "wirish_math.h" #include // for CYCLES_PER_MICROSECOND +#include // TODO [0.1.0] Remove deprecated pieces @@ -138,7 +139,6 @@ void HardwareTimer::detachInterrupt(int channel) { timer_detach_interrupt(this->dev, (uint8)channel); } - void HardwareTimer::enableDMA(int channel) { timer_dma_enable_req(this->dev, (uint8)channel); } @@ -156,28 +156,7 @@ void HardwareTimer::setMasterModeTrGo(uint32_t mode) { this->dev->regs.bas->CR2 |= mode; } -/* CARLOS Changes to add encoder mode.*/ - -//direction of movement. (to be better described). - uint8 HardwareTimer::getDirection(){ - return get_direction(this->dev); - } - -//set if the encoder will count edges on one, which or both channels. - void HardwareTimer::setEdgeCounting(uint32 counting) { - (dev->regs).gen->SMCR = counting;//TIMER_SMCR_SMS_ENCODER3; //choose encoder 3, counting on - - } - uint8 HardwareTimer::getEdgeCounting() { - return (dev->regs).gen->SMCR; - } - - - -//set the polarity of counting... not sure how interesting this is.. - void HardwareTimer::setPolarity(){} - /* -- Deprecated predefined instances -------------------------------------- */ HardwareTimer Timer1(1); diff --git a/STM32F1/cores/maple/HardwareTimer.h b/STM32F1/cores/maple/HardwareTimer.h index bb40dba0f..f715bbc1c 100644 --- a/STM32F1/cores/maple/HardwareTimer.h +++ b/STM32F1/cores/maple/HardwareTimer.h @@ -227,32 +227,53 @@ class HardwareTimer { * TIMER_CR2_MMS_COMPARE_OC4REF */ void setMasterModeTrGo(uint32_t mode); - + + void setSlaveFlags(uint32 flags) { + ((this->dev)->regs).gen->SMCR = flags; + } + //CARLOS. /* added these functions to make sense for the encoder mode. */ //direction of movement. (to be better described). - uint8 getDirection(); - + uint8 getDirection() { + return get_direction(this->dev); + } + //set if the encoder will count edges on one, which or both channels. - void setEdgeCounting(uint32 counting); - uint8 getEdgeCounting(); //not sure if needed. + void setEdgeCounting(uint32 counting) { + setSlaveFlags(counting); + } //set the polarity of counting... not sure how interesting this is.. - void setPolarity(); - + void setPolarity(uint8 channel, uint8 pol) { + timer_cc_set_pol(this->dev, channel, pol); + } + + void setInputCaptureMode(uint8 channel, timer_ic_input_select input) { + input_capture_mode(this->dev, channel, input); + } + + uint8_t getInputCaptureFlag(uint8 channel) { + return ( timer_get_status(this->dev) >> channel ) & 0x1; + } + + uint8_t getInputCaptureFlagOverflow(uint8 channel) { + uint8 ret = ( timer_get_status(this->dev) >> (8+channel) ) & 0x1; + if ( ret ) timer_reset_status_bit(this->dev, (8+channel)); // clear flag + return ret; + } + //add the filtering definition for the input channel. - /* Escape hatch */ - - /** + /** * @brief Enable/disable DMA request for the input channel. */ - void enableDMA(int channel); - void disableDMA(int channel); - + void enableDMA(int channel); + void disableDMA(int channel); + /** * @brief Get a pointer to the underlying libmaple timer_dev for * this HardwareTimer instance. diff --git a/STM32F1/cores/maple/libmaple/timer.c b/STM32F1/cores/maple/libmaple/timer.c index 70e20654c..fa50c200d 100644 --- a/STM32F1/cores/maple/libmaple/timer.c +++ b/STM32F1/cores/maple/libmaple/timer.c @@ -40,7 +40,6 @@ static void pwm_mode(timer_dev *dev, uint8 channel); static void output_compare_mode(timer_dev *dev, uint8 channel); static void encoder_mode(timer_dev *dev, uint8 channel) ;//CARLOS - static inline void enable_irq(timer_dev *dev, timer_interrupt_id iid); /* @@ -236,6 +235,9 @@ void timer_set_mode(timer_dev *dev, uint8 channel, timer_mode mode) { case TIMER_ENCODER: encoder_mode(dev, channel); //find a way to pass all the needed stuff on the 8bit var break; + case TIMER_INPUT_CAPTURE:// code from @Cesco + input_capture_mode(dev, channel, TIMER_IC_INPUT_DEFAULT); + break; } } @@ -349,7 +351,10 @@ static void encoder_mode(timer_dev *dev, uint8 channel __attribute__((unused))) timer_resume(dev); } - +void input_capture_mode(timer_dev *dev, uint8 channel, timer_ic_input_select input) { + timer_oc_set_mode(dev, channel, 0, input); + timer_cc_enable(dev, channel); +} static void enable_adv_irq(timer_dev *dev, timer_interrupt_id id); static void enable_bas_gen_irq(timer_dev *dev); diff --git a/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerOnePulseMode/HardwareTimerOnePulseMode.ino b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerOnePulseMode/HardwareTimerOnePulseMode.ino new file mode 100644 index 000000000..348e32145 --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerOnePulseMode/HardwareTimerOnePulseMode.ino @@ -0,0 +1,67 @@ +/* + * Example of the Timer Input Capture mode combined with one pulse mode + * + * This example uses: + * - Timer2 channel 1 as capture input + * - Timer2 channel 2 to generate the pulses, + * - Timer 3 to generate a PWM trigger signal for capture input + */ + +#include + +const uint16_t pulseDelay = 200; +const uint16_t pulseWidth = 200; +//----------------------------------------------------------------------------- +void toggle_led() +{ + digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); +} +//----------------------------------------------------------------------------- +void setup() +{ + // setup PA1 (Timer2 channel 2) to PWM (one pulse mode) + pinMode(PA1, PWM); + // setup PA0 (Timer 2 channel 1) as input (capture input mode) + pinMode(PA0, INPUT); + + // stop the timers before configuring them + Timer2.pause(); + + Timer2.setPrescaleFactor(72); // 1 µs resolution + Timer2.setCompare(TIMER_CH2, pulseDelay); + Timer2.setOverflow(pulseWidth + pulseDelay-1); + + // counter setup in one pulse mode, as slave triggered by TI1 + TIMER2_BASE->CR1 = ( TIMER_CR1_OPM ); // one pulse mode + Timer2.setSlaveFlags( TIMER_SMCR_TS_TI1FP1 | TIMER_SMCR_SMS_TRIGGER ); + + // channel 1: capture input on rising edge + Timer2.setMode(TIMER_CH1, TIMER_INPUT_CAPTURE); + //Timer2.setPolarity(TIMER_CH1, 1); // trigger on falling edge + // channel 2: invert polarity (we want low for CNT=1000 ) + { + t = millis(); + toggle_led(); + } +} diff --git a/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerPWMInput/HardwareTimerPWMInput.ino b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerPWMInput/HardwareTimerPWMInput.ino new file mode 100644 index 000000000..2cc962a09 --- /dev/null +++ b/STM32F1/libraries/A_STM32_Examples/examples/Sensors/HardwareTimerPWMInput/HardwareTimerPWMInput.ino @@ -0,0 +1,77 @@ +/* + * Example of the Timer Input Capture mode to measure PWM pulse width and period. + * + * This example uses: + * - Timer2 channel 1 as capture input + * - Timer3 to generate a PWM trigger signal for capture input + */ + +#include + +const uint8_t pwmPulse = 20; // ms +const uint8_t pwmPeriod = 50; // ms +//----------------------------------------------------------------------------- +void toggle_led() +{ + digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); +} +//----------------------------------------------------------------------------- +void setup() +{ + pinMode(LED_BUILTIN, OUTPUT); + + // setup PA0 (Timer 2 channel 1) as input capture mode + pinMode(PA0, INPUT); + + while (!Serial); delay(1000); + + Serial << "Example of the Timer Input Capture mode to measure PWM pulse width and period\n\n"; + + // stop the timers before configuring them + Timer2.pause(); + Timer3.pause(); + + Timer2.setPrescaleFactor(72); // 1 microsecond resolution + + // setup timer 2 channel 1 capture on rising edge + Timer2.setInputCaptureMode(TIMER_CH1, TIMER_IC_INPUT_DEFAULT); // use default input TI1 + // setup timer 2 channel 2 capture on falling edge + Timer2.setInputCaptureMode(TIMER_CH2, TIMER_IC_INPUT_SWITCH); // use switched input TI1 + Timer2.setPolarity(TIMER_CH2, 1); // trigger on falling edge + + // counter setup as slave triggered by TI1 in reset mode + Timer2.setSlaveFlags( TIMER_SMCR_TS_TI1FP1 | TIMER_SMCR_SMS_RESET ); + + Timer2.refresh(); + Timer2.getCompare(TIMER_CH1); // clear capture flag + Timer2.getCompare(TIMER_CH2); // clear capture flag + Timer2.resume(); // let timer 2 run + + // setup PA6 (Timer3 channel 1) to generate 1 ms period PWM with 10% DC + pinMode(PA6, PWM); + Timer3.setPrescaleFactor(72); // 1 µs resolution + Timer3.setCompare(TIMER_CH1, pwmPulse*1000); + Timer3.setOverflow(pwmPeriod*1000); + Timer3.refresh(); + + Timer3.resume(); // let timer 3 run + + // discard first reading + // wait for first period end + while ( !Timer2.getInputCaptureFlag(TIMER_CH1) ); + Timer2.getCompare(TIMER_CH1); // clear capture flag +} +//----------------------------------------------------------------------------- +void loop() +{ + if ( Timer2.getInputCaptureFlag(TIMER_CH2) ) // high pulse end + { + Serial << "PWM pulse width: " << Timer2.getCompare(TIMER_CH2); + } + if ( Timer2.getInputCaptureFlag(TIMER_CH1) ) // period end + { + Serial << ", period: " << Timer2.getCompare(TIMER_CH1) << endl; + toggle_led(); + //delay(500); // read the values only 2 times per second + } +} diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index 64f458f1d..07764c6d6 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -372,7 +372,6 @@ extern timer_dev timer14; /* Capture/compare mode registers, common values */ -#define TIMER_CCMR_CCS_OUTPUT 0x0 #define TIMER_CCMR_CCS_INPUT_TI1 0x1 #define TIMER_CCMR_CCS_INPUT_TI2 0x2 #define TIMER_CCMR_CCS_INPUT_TRC 0x3 @@ -387,7 +386,7 @@ extern timer_dev timer14; #define TIMER_CCMR1_OC1FE_BIT 2 #define TIMER_CCMR1_OC2CE (1U << TIMER_CCMR1_OC2CE_BIT) -#define TIMER_CCMR1_OC2M (0x3 << 12) +#define TIMER_CCMR1_OC2M (0x7 << 12) #define TIMER_CCMR1_IC2F (0xF << 12) #define TIMER_CCMR1_OC2PE (1U << TIMER_CCMR1_OC2PE_BIT) #define TIMER_CCMR1_OC2FE (1U << TIMER_CCMR1_OC2FE_BIT) @@ -398,16 +397,16 @@ extern timer_dev timer14; #define TIMER_CCMR1_CC2S_INPUT_TI1 (0x2 << 8) #define TIMER_CCMR1_CC2S_INPUT_TRC (0x3 << 8) #define TIMER_CCMR1_OC1CE (1U << TIMER_CCMR1_OC1CE_BIT) -#define TIMER_CCMR1_OC1M (0x3 << 4) +#define TIMER_CCMR1_OC1M (0x7 << 4) #define TIMER_CCMR1_IC1F (0xF << 4) #define TIMER_CCMR1_OC1PE (1U << TIMER_CCMR1_OC1PE_BIT) #define TIMER_CCMR1_OC1FE (1U << TIMER_CCMR1_OC1FE_BIT) #define TIMER_CCMR1_IC1PSC (0x3 << 2) #define TIMER_CCMR1_CC1S 0x3 -#define TIMER_CCMR1_CC1S_OUTPUT TIMER_CCMR_CCS_OUTPUT -#define TIMER_CCMR1_CC1S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 -#define TIMER_CCMR1_CC1S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 -#define TIMER_CCMR1_CC1S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC +#define TIMER_CCMR1_CC1S_OUTPUT 0x0 +#define TIMER_CCMR1_CC1S_INPUT_TI1 0x1 +#define TIMER_CCMR1_CC1S_INPUT_TI2 0x2 +#define TIMER_CCMR1_CC1S_INPUT_TRC 0x3 /* Capture/compare mode register 2 (CCMR2) */ @@ -425,10 +424,10 @@ extern timer_dev timer14; #define TIMER_CCMR2_OC4FE (1U << TIMER_CCMR2_OC4FE_BIT) #define TIMER_CCMR2_IC4PSC (0x3 << 10) #define TIMER_CCMR2_CC4S (0x3 << 8) -#define TIMER_CCMR2_CC4S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) -#define TIMER_CCMR2_CC4S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) -#define TIMER_CCMR2_CC4S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) -#define TIMER_CCMR2_CC4S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) +#define TIMER_CCMR2_CC4S_OUTPUT (0x0 << 8) +#define TIMER_CCMR2_CC4S_INPUT_TI4 (0x1 << 8) +#define TIMER_CCMR2_CC4S_INPUT_TI3 (0x2 << 8) +#define TIMER_CCMR2_CC4S_INPUT_TRC (0x3 << 8) #define TIMER_CCMR2_OC3CE (1U << TIMER_CCMR2_OC3CE_BIT) #define TIMER_CCMR2_OC3M (0x3 << 4) #define TIMER_CCMR2_IC3F (0xF << 4) @@ -436,10 +435,10 @@ extern timer_dev timer14; #define TIMER_CCMR2_OC3FE (1U << TIMER_CCMR2_OC3FE_BIT) #define TIMER_CCMR2_IC3PSC (0x3 << 2) #define TIMER_CCMR2_CC3S 0x3 -#define TIMER_CCMR2_CC3S_OUTPUT TIMER_CCMR_CCS_OUTPUT -#define TIMER_CCMR2_CC3S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 -#define TIMER_CCMR2_CC3S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 -#define TIMER_CCMR2_CC3S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC +#define TIMER_CCMR2_CC3S_OUTPUT 0x0 +#define TIMER_CCMR2_CC3S_INPUT_TI3 0x1 +#define TIMER_CCMR2_CC3S_INPUT_TI4 0x2 +#define TIMER_CCMR2_CC3S_INPUT_TRC 0x3 /* Capture/compare enable register (CCER) */ @@ -564,13 +563,15 @@ typedef enum timer_mode { * values, the corresponding interrupt is fired. */ TIMER_OUTPUT_COMPARE, - /* TIMER_INPUT_CAPTURE, TODO: In this mode, the timer can measure the + + /* TIMER_INPUT_CAPTURE, UNDER DEVELOPMENT: In this mode, the timer can measure the * pulse lengths of input signals */ /* TIMER_ONE_PULSE, TODO: In this mode, the timer can generate a single * pulse on a GPIO pin for a specified amount of * time. */ TIMER_ENCODER, //CARLOS Change + TIMER_INPUT_CAPTURE,// code from @cesco } timer_mode; /** Timer channel numbers */ @@ -663,6 +664,19 @@ static inline void timer_resume(timer_dev *dev) { *bb_perip(&(dev->regs).bas->CR1, TIMER_CR1_CEN_BIT) = 1; } +/** + * @brief Get the status register. + * @param dev Timer device + * @return Status register value (16bits). + */ +static inline uint16 timer_get_status(timer_dev *dev) { + return (dev->regs).gen->SR; +} + +static inline void timer_reset_status_bit(timer_dev *dev, uint8 bit) { + *bb_perip(&(dev->regs).gen->SR, bit) = 0; +} + /** * @brief Returns the timer's counter value. * @@ -1071,76 +1085,21 @@ static inline void timer_oc_set_mode(timer_dev *dev, uint32 tmp = *ccmr; tmp &= ~(0xFF << shift); - tmp |= (mode | flags | TIMER_CCMR_CCS_OUTPUT) << shift; + tmp |= (mode | flags) << shift; *ccmr = tmp; } -/* - * Old, erroneous bit definitions from previous releases, kept for - * backwards compatibility: +/** + * Timer output compare modes. */ +typedef enum timer_ic_input_select { + TIMER_IC_INPUT_DEFAULT = TIMER_CCMR_CCS_INPUT_TI1, + TIMER_IC_INPUT_SWITCH = TIMER_CCMR_CCS_INPUT_TI2, + TIMER_IC_INPUT_TRC = TIMER_CCMR_CCS_INPUT_TRC, +} timer_ic_input_select; + +extern void input_capture_mode(timer_dev *dev, uint8 channel, timer_ic_input_select input); -/** Deprecated. Use TIMER_CCMR1_CC4S_OUTPUT instead. */ -#define TIMER_CCMR1_CC4S_OUTPUT TIMER_CCMR2_CC4S_OUTPUT -/** Deprecated. Use TIMER_CCMR1_CC4S_INPUT_TI1 instead. */ -#define TIMER_CCMR1_CC4S_INPUT_TI1 TIMER_CCMR2_CC4S_INPUT_TI1 -/** Deprecated. Use TIMER_CCMR1_CC4S_INPUT_TI2 instead. */ -#define TIMER_CCMR1_CC4S_INPUT_TI2 TIMER_CCMR2_CC4S_INPUT_TI2 -/** Deprecated. Use TIMER_CCMR1_CC4S_INPUT_TRC instead. */ -#define TIMER_CCMR1_CC4S_INPUT_TRC TIMER_CCMR2_CC4S_INPUT_TRC -/** Deprecated. Use TIMER_CCMR2_IC4F instead. */ -#define TIMER_CCMR2_IC2F TIMER_CCMR2_IC4F -/** Deprecated. Use TIMER_CCMR2_IC4PSC instead. */ -#define TIMER_CCMR2_IC2PSC TIMER_CCMR2_IC4PSC -/** Deprecated. Use TIMER_CCMR2_IC3F instead. */ -#define TIMER_CCMR2_IC1F TIMER_CCMR2_IC3F -/** Deprecated. Use TIMER_CCMR2_IC3PSC instead. */ -#define TIMER_CCMR2_IC1PSC TIMER_CCMR2_IC3PSC -/** Deprecated. Use TIMER_CCMR1_CC3S_OUTPUT instead. */ -#define TIMER_CCMR1_CC3S_OUTPUT TIMER_CCMR2_CC3S_OUTPUT -/** Deprecated. Use TIMER_CCMR1_CC3S_INPUT_TI1 instead. */ -#define TIMER_CCMR1_CC3S_INPUT_TI1 TIMER_CCMR2_CC3S_INPUT_TI1 -/** Deprecated. Use TIMER_CCMR1_CC3S_INPUT_TI2 instead. */ -#define TIMER_CCMR1_CC3S_INPUT_TI2 TIMER_CCMR2_CC3S_INPUT_TI2 -/** Deprecated. Use TIMER_CCMR1_CC3S_INPUT_TRC instead. */ -#define TIMER_CCMR1_CC3S_INPUT_TRC TIMER_CCMR2_CC3S_INPUT_TRC - -/** Deprecated. Use TIMER_DCR_DBL_1_XFER instead. */ -#define TIMER_DCR_DBL_1BYTE TIMER_DCR_DBL_1_XFER -/** Deprecated. Use TIMER_DCR_DBL_2_XFER instead. */ -#define TIMER_DCR_DBL_2BYTE TIMER_DCR_DBL_2_XFER -/** Deprecated. Use TIMER_DCR_DBL_3_XFER instead. */ -#define TIMER_DCR_DBL_3BYTE TIMER_DCR_DBL_3_XFER -/** Deprecated. Use TIMER_DCR_DBL_4_XFER instead. */ -#define TIMER_DCR_DBL_4BYTE TIMER_DCR_DBL_4_XFER -/** Deprecated. Use TIMER_DCR_DBL_5_XFER instead. */ -#define TIMER_DCR_DBL_5BYTE TIMER_DCR_DBL_5_XFER -/** Deprecated. Use TIMER_DCR_DBL_6_XFER instead. */ -#define TIMER_DCR_DBL_6BYTE TIMER_DCR_DBL_6_XFER -/** Deprecated. Use TIMER_DCR_DBL_7_XFER instead. */ -#define TIMER_DCR_DBL_7BYTE TIMER_DCR_DBL_7_XFER -/** Deprecated. Use TIMER_DCR_DBL_8_XFER instead. */ -#define TIMER_DCR_DBL_8BYTE TIMER_DCR_DBL_8_XFER -/** Deprecated. Use TIMER_DCR_DBL_9_XFER instead. */ -#define TIMER_DCR_DBL_9BYTE TIMER_DCR_DBL_9_XFER -/** Deprecated. Use TIMER_DCR_DBL_10_XFER instead. */ -#define TIMER_DCR_DBL_10BYTE TIMER_DCR_DBL_10_XFER -/** Deprecated. Use TIMER_DCR_DBL_11_XFER instead. */ -#define TIMER_DCR_DBL_11BYTE TIMER_DCR_DBL_11_XFER -/** Deprecated. Use TIMER_DCR_DBL_12_XFER instead. */ -#define TIMER_DCR_DBL_12BYTE TIMER_DCR_DBL_12_XFER -/** Deprecated. Use TIMER_DCR_DBL_13_XFER instead. */ -#define TIMER_DCR_DBL_13BYTE TIMER_DCR_DBL_13_XFER -/** Deprecated. Use TIMER_DCR_DBL_14_XFER instead. */ -#define TIMER_DCR_DBL_14BYTE TIMER_DCR_DBL_14_XFER -/** Deprecated. Use TIMER_DCR_DBL_15_XFER instead. */ -#define TIMER_DCR_DBL_15BYTE TIMER_DCR_DBL_15_XFER -/** Deprecated. Use TIMER_DCR_DBL_16_XFER instead. */ -#define TIMER_DCR_DBL_16BYTE TIMER_DCR_DBL_16_XFER -/** Deprecated. Use TIMER_DCR_DBL_17_XFER instead. */ -#define TIMER_DCR_DBL_17BYTE TIMER_DCR_DBL_17_XFER -/** Deprecated. Use TIMER_DCR_DBL_18_XFER instead. */ -#define TIMER_DCR_DBL_18BYTE TIMER_DCR_DBL_18_XFER #ifdef __cplusplus } // extern "C" From 5dcd97070b4709c8d9da3d02d900a0c6fe456c15 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 6 Feb 2018 03:34:17 -0800 Subject: [PATCH 062/373] upload-reset: fix/rewrite The code in upload-reset did not work for me, and quick googling shows I'm not the only one. I tried to fix it (and succeeded) and in the process I rewrote it to be way simpler/cleaner. Most probably the code was not working because TIOCMGET and then TIOCMSET were used, which is slower than use a direct ioctl command to set/clear a flag. Maybe there were something else. Anyway, the new code is working almost always for my Blue Pill. Signed-off-by: Kir Kolyshkin --- tools/linux/src/upload-reset/upload-reset.c | 165 ++++++-------------- tools/linux/upload-reset | Bin 7946 -> 5460 bytes 2 files changed, 49 insertions(+), 116 deletions(-) diff --git a/tools/linux/src/upload-reset/upload-reset.c b/tools/linux/src/upload-reset/upload-reset.c index 1d03bff51..bab193af0 100644 --- a/tools/linux/src/upload-reset/upload-reset.c +++ b/tools/linux/src/upload-reset/upload-reset.c @@ -11,17 +11,7 @@ * * * - * Terminal control code by Heiko Noordhof (see copyright below) - */ - - - -/* Copyright (C) 2003 Heiko Noordhof - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. + * Terminal control code by Kir Kolyshkin */ #include @@ -32,130 +22,73 @@ #include #include #include -#include - -/* Function prototypes (belong in a seperate header file) */ -int openserial(char *devicename); -void closeserial(void); -int setDTR(unsigned short level); -int setRTS(unsigned short level); - - -/* Two globals for use by this module only */ -static int fd; -static struct termios oldterminfo; - - -void closeserial(void) -{ - tcsetattr(fd, TCSANOW, &oldterminfo); - close(fd); -} +static int fd = -1; int openserial(char *devicename) { - struct termios attr; - - if ((fd = open(devicename, O_RDWR)) == -1) return 0; /* Error */ - atexit(closeserial); - - if (tcgetattr(fd, &oldterminfo) == -1) return 0; /* Error */ - attr = oldterminfo; - attr.c_cflag |= CRTSCTS | CLOCAL; - attr.c_oflag = 0; - if (tcflush(fd, TCIOFLUSH) == -1) return 0; /* Error */ - if (tcsetattr(fd, TCSANOW, &attr) == -1) return 0; /* Error */ + if ((fd = open(devicename, O_RDWR | O_NOCTTY)) == -1) { + fprintf(stderr, "Can't open %s: %m\n\r", devicename); + return -1; + } - /* Set the lines to a known state, and */ - /* finally return non-zero is successful. */ - return setRTS(0) && setDTR(0); + return 0; // all good } -/* For the two functions below: - * level=0 to set line to LOW - * level=1 to set line to HIGH +/* flag can be TIOCM_RTS or TIOCM_DTR + * level can be 1 (set) or 0 (clear) */ - -int setRTS(unsigned short level) +int setFlag(int flag, short level) { - int status; - - if (ioctl(fd, TIOCMGET, &status) == -1) { - perror("setRTS(): TIOCMGET"); - return 0; - } - if (level) status |= TIOCM_RTS; - else status &= ~TIOCM_RTS; - if (ioctl(fd, TIOCMSET, &status) == -1) { - perror("setRTS(): TIOCMSET"); - return 0; - } - return 1; -} + int op = TIOCMBIC; + if (level) + op = TIOCMBIS; + if (ioctl(fd, op, &flag) == -1) { + perror("setFlag(): ioctl failed"); + return -1; + } -int setDTR(unsigned short level) -{ - int status; - - if (ioctl(fd, TIOCMGET, &status) == -1) { - perror("setDTR(): TIOCMGET"); - return 0; - } - if (level) status |= TIOCM_DTR; - else status &= ~TIOCM_DTR; - if (ioctl(fd, TIOCMSET, &status) == -1) { - perror("setDTR: TIOCMSET"); - return 0; - } - return 1; + return 0; // all good } -/* This portion of code was written by Roger Clark - * It was informed by various other pieces of code written by Leaflabs to reset their - * Maple and Maple mini boards +/* This portion of code was written by Roger Clark. + * It was informed by various other pieces of code written + * by Leaflabs to reset their Maple and Maple mini boards. + * For example, see https://goo.gl/qJi16x */ - -main(int argc, char *argv[]) +int main(int argc, char *argv[]) { - - if (argc<2 || argc >3) - { - printf("Usage upload-reset \n\r"); - return; + if (argc < 2 || argc > 3) { + printf("Usage: upload-reset []\n\r"); + return 1; } - if (openserial(argv[1])) - { - // Send magic sequence of DTR and RTS followed by the magic word "1EAF" - setRTS(false); - setDTR(false); - setDTR(true); - - usleep(50000L); - - setDTR(false); - setRTS(true); - setDTR(true); - - usleep(50000L); - - setDTR(false); - - usleep(50000L); + if (openserial(argv[1]) < 0) { + fprintf(stderr, "Can't open serial %s\n\r", argv[1]); + return 1; + } - write(fd,"1EAF",4); - - closeserial(); - if (argc==3) - { - usleep(atol(argv[2])*1000L); - } + // Old style magic sequence + setFlag(TIOCM_RTS, 0); + setFlag(TIOCM_DTR, 0); + setFlag(TIOCM_DTR, 1); + usleep(50000L); + setFlag(TIOCM_DTR, 0); + + // New style + setFlag(TIOCM_RTS, 1); + setFlag(TIOCM_DTR, 1); + usleep(50000L); + setFlag(TIOCM_DTR, 0); + if (write(fd, "1EAF", 4) != 4) { + perror("write()"); } - else - { - printf("Failed to open serial device.\n\r"); + + if (argc == 3) { + usleep(atol(argv[2])*1000L); } + + return 0; } diff --git a/tools/linux/upload-reset b/tools/linux/upload-reset index 26985b857674d0c8d4999d53999a80f988591b96..4449c3ba3ef2eabbe8436e907b4cd5224a127a69 100755 GIT binary patch literal 5460 zcmeHLU2qfE6~2Rm3EaEeEG1g*j(A!;G#&ahi*g)ANtRbq~q zEzo4Ov7M07fhdD60Un?kwu47t6Kq4Z1&I4)%Tyr<_7~-L`)R)rr$1wZes%(k%XT+J z9_@Lw6XUQ6wlfA11>eC2*o4y-x~aA2A41Xl zF|~DBtbJ)rji-A9sYGD8-NwFbZ`js?t36M=7Z&!d062GSe{<8fpZUd&_o^EXs#jk5 z;rlQAOuEuW?sR}Yththf4ArW8{h1qi>ZN6{#E_w{DY3b%btU%0(07;E^Pw*)vDv

j%`>PY|&;)z-1UoRn{%wgZLr2PpC0Ikw-3+b_=Dm&c{iFzQ z{&F~_wX5-PI;FIWaJVO_#Olo2BOyQ}sfD{EYFzA3s+uAiwrpNs7hWD%5vaYd*92DF*Q+tE z=B;5wQaaU?rX-uU*2NNWr8&|Xqu0*vM7-!VY*Rm$h}*>;a3fcEwRLJzF#}!2JtF2FyX; zM8`mGOQoa_kC`vtZOPnxc1KgA(S@1qFU-eg&_`!xS7l$6at-(Nao4_wbNY!9(`;-E zb-9dV@OA5R`l!#`CmFSv8~t4Qk^F&$Iei!$REDxT&*mdxI=E~smvUX&_Bm{j9W_e^uwPK&X~VMxYYsHi1*MhW>O$nZgT zA0Sjt{}4mb&-uEfka;SEu*REUU?BRqq~UJF`>;lRA*0i-uDPn4p7ea{ro5S!VdGWQ zt9b({l#wcpMp)UFVf4=_W0|2{d!7&P%|-4OYX16s<}aATQ1fAU%Au8G7z8ud6O;pUxiUDkJY6 z!BXj?6^-T)#_~>KAg3)9e=p>ijKVm9OaI$#=-*Q6VDY8Q&8D;C?o2@+mCoLp=eqv; zajhcz@&>xRs!c(PhZ@bRaG2eD_nkuKPVS6#{32A7@hsM_zc3v>(Yfyp4oIXIW%ZTp zoY!V>#!hX4Vf^@C)&v`$M~@3SiLQ_M+dD#k*^0`7opLp%aR;-~U-gywhsqwqz?_uWb3aCUcJ901V#bX6G8=DiHyZ7h?8e)-+%ckUJu33{RbwRHRc`EvI{8iAej>qynD2CZ#0RNDR+_eQKMsR^GFwU5P~wgz=>6 zR%070(C5|gWHAckk>WGCrRHxy^K1Zey@FCn#Uo9-&^nZ zeQEksP3jd-&wlEO<(2cxQN0eRLM-YmJOP<{Kfx64WJS>LJ>p(Jt*q`P&rwM)b8jmI zF9a_J&m)eE=04yGxVs?lbA!6a-F&_Pishf%>KevThjEDwK9^`HFLS3w{d7;dXHxlO zcluEIBzL;E+~ZDbo+n&q!3Y+k)X~Q#bTfcF;_QXA;{^S_mpnm#`B5q8uh7f3`DN8# zxxrtx!M`NvuiomH8~hc)g1a5Ikr3xOwrdSD080Zc4?C3TW) zjmK=Lt6MEswX~+=T3Y@>V0oZ=>B_WatypZ^LIhILl$O*Yts;OADka$?0`Y{V1cK`~ zFV!NQMXNKO4z#9Kd;_cPB0wt|Nkv7V{Xjf*pxc&O(r($OBvWc4{$EBIZAm3YzOD4c zGzL_0g&OEgK+%+5T=7w+f|F>EXb}-mqT!BYq+1C`+u_2o?5^QRG8s8w_i%Ish;*xM z7?IVzHI)*9wnTTg64xfq*eBb}6|N<7qx3%yrw7|um=k zn5c9}kPfdF`W@sA{V|sb8M?Ey|rgKJKLyK;C+Qdya5; zcu%wLgS&v#0AJgY1?BuHm`-!Jkwe^uZSKlm8lt0lbB|Fj&c;zoP($ zLmtoC({R2Cx>KCE*HPi{gbV`{%k$qU&RGA93i_o#pA3NKw4uuKL3yL7SJOZt?{QnT Tu8ie?zMQfQyiv!1B!}hS!mRte literal 7946 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 I$I+hrKXKN%tN;K2 From ae33c88c3c26fe1ca7065dd1f098681268ae32d3 Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Tue, 6 Feb 2018 03:44:45 -0800 Subject: [PATCH 063/373] maple_upload: better error handing 1. If upload-reset failed, keep going but warn a user and give them a hint that RESET butting might need to be used instead of autoreset. 2. If dfu-util failed, report it and skip the wait. 3. If waiting for device was unsuccesful, report it. 4. Check dfu-util presense earlier in the code. Signed-off-by: Kir Kolyshkin --- tools/linux/maple_upload | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/tools/linux/maple_upload b/tools/linux/maple_upload index 50d2ae557..2eb237125 100755 --- a/tools/linux/maple_upload +++ b/tools/linux/maple_upload @@ -19,6 +19,14 @@ fi # Get the directory where the script is running. DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) +#DFU_UTIL=$(dirname $0)/dfu-util/dfu-util +#DFU_UTIL=/usr/bin/dfu-util +DFU_UTIL=${DIR}/dfu-util/dfu-util +if [ ! -x "${DFU_UTIL}" ]; then + echo "$0: error: cannot find ${DFU_UTIL}" >&2 + exit 2 +fi + # ----------------- IMPORTANT ----------------- # The 2nd parameter to upload-reset is the delay after resetting before it exits # This value is in milliseonds @@ -26,18 +34,15 @@ DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) # 750ms to 1500ms seems to work on my Mac -"${DIR}/upload-reset" ${dummy_port_fullpath} 750 +"${DIR}/upload-reset" ${dummy_port_fullpath} 750 || { + # ignore the error but give a useful hint + echo -e "\n*** autoreset failed; you need to use RESET button" 1>&2 +} - -#DFU_UTIL=$(dirname $0)/dfu-util/dfu-util -DFU_UTIL=/usr/bin/dfu-util -DFU_UTIL=${DIR}/dfu-util/dfu-util -if [ ! -x "${DFU_UTIL}" ]; then - echo "$0: error: cannot find ${DFU_UTIL}" >&2 - exit 2 -fi - -"${DFU_UTIL}" -d ${usbID} -a ${altID} -D ${binfile} ${dfuse_addr} -R +"${DFU_UTIL}" -d ${usbID} -a ${altID} -D ${binfile} ${dfuse_addr} -R || { + echo -e "\nUpload failed :(" 1>&2 + exit 1 +} echo -n Waiting for ${dummy_port_fullpath} serial... @@ -46,4 +51,8 @@ while [ ! -r ${dummy_port_fullpath} ] && ((COUNTER++ < 40)); do sleep 0.1 done -echo Done +if [ ! -r ${dummy_port_fullpath} ]; then + echo " TIMEOUT :(" +else + echo " DONE :)" +fi From 33736462f657436b1d42807c10cbd20b4efc409a Mon Sep 17 00:00:00 2001 From: MackPi Date: Thu, 15 Feb 2018 22:36:42 -0800 Subject: [PATCH 064/373] Added Variant STM32F103VB Added Board Varient STM32F103B. Replaced #ifdef STM32_HIGH_DENSITY with #if STM32_NR_PORTS > 4 Where it makes sense for High Pin count medium density parts like the STM32F103VB. --- STM32F1/boards.txt | 12 +- STM32F1/cores/maple/libmaple/gpio_f1.c | 4 +- STM32F1/cores/maple/libmaple/rcc_f1.c | 4 +- .../libmaple/stm32f1/include/series/gpio.h | 4 +- .../variants/generic_stm32f103vb/board.cpp | 190 +++++++++++++++ .../generic_stm32f103vb/board/board.h | 84 +++++++ .../generic_stm32f103vb/ld/bootloader.ld | 18 ++ .../generic_stm32f103vb/ld/bootloader_20.ld | 30 +++ .../generic_stm32f103vb/ld/common.inc | 220 +++++++++++++++++ .../generic_stm32f103vb/ld/extra_libs.inc | 7 + .../variants/generic_stm32f103vb/ld/flash.ld | 26 ++ .../generic_stm32f103vb/ld/flash_c8.ld | 33 +++ .../variants/generic_stm32f103vb/ld/jtag.ld | 31 +++ .../generic_stm32f103vb/ld/jtag_c8.ld | 36 +++ .../generic_stm32f103vb/ld/mem-flash.inc | 5 + .../generic_stm32f103vb/ld/mem-jtag.inc | 5 + .../generic_stm32f103vb/ld/mem-ram.inc | 5 + .../variants/generic_stm32f103vb/ld/ram.ld | 25 ++ .../variants/generic_stm32f103vb/ld/ram_c8.ld | 31 +++ .../generic_stm32f103vb/ld/stm32f103vb.ld | 30 +++ .../generic_stm32f103vb/ld/vector_symbols.inc | 78 ++++++ .../generic_stm32f103vb/pins_arduino.h | 6 + .../variants/generic_stm32f103vb/variant.h | 20 ++ .../generic_stm32f103vb/wirish/boards.cpp | 229 ++++++++++++++++++ .../wirish/boards_setup.cpp | 111 +++++++++ .../generic_stm32f103vb/wirish/start.S | 57 +++++ .../generic_stm32f103vb/wirish/start_c.c | 95 ++++++++ .../generic_stm32f103vb/wirish/syscalls.c | 176 ++++++++++++++ 28 files changed, 1567 insertions(+), 5 deletions(-) create mode 100644 STM32F1/variants/generic_stm32f103vb/board.cpp create mode 100644 STM32F1/variants/generic_stm32f103vb/board/board.h create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/bootloader.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/bootloader_20.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/common.inc create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/extra_libs.inc create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/flash.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/jtag.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/mem-flash.inc create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/mem-jtag.inc create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/mem-ram.inc create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/ram.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/stm32f103vb.ld create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/vector_symbols.inc create mode 100644 STM32F1/variants/generic_stm32f103vb/pins_arduino.h create mode 100644 STM32F1/variants/generic_stm32f103vb/variant.h create mode 100644 STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp create mode 100644 STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp create mode 100644 STM32F1/variants/generic_stm32f103vb/wirish/start.S create mode 100644 STM32F1/variants/generic_stm32f103vb/wirish/start_c.c create mode 100644 STM32F1/variants/generic_stm32f103vb/wirish/syscalls.c diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index cb9416a9c..75d456219 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -648,7 +648,7 @@ genericSTM32F103T.menu.opt.ogstd.build.flags.ldspecs= genericSTM32F103V.name=Generic STM32F103V series genericSTM32F103V.vid.0=0x1EAF genericSTM32F103V.pid.0=0x0004 -genericSTM32F103V.build.variant=generic_stm32f103v +#genericSTM32F103V.build.variant=generic_stm32f103v genericSTM32F103V.build.vect=VECT_TAB_ADDR=0x8000000 genericSTM32F103V.build.core=maple genericSTM32F103V.build.board=GENERIC_STM32F103V @@ -661,19 +661,29 @@ genericSTM32F103V.upload.protocol=maple_dfu genericSTM32F103V.build.error_led_port=GPIOE genericSTM32F103V.build.error_led_pin=6 +genericSTM32F103V.menu.device_variant.STM32F103VB=STM32F103VB +genericSTM32F103V.menu.device_variant.STM32F103VB.build.variant=generic_stm32f103vb +genericSTM32F103V.menu.device_variant.STM32F103VB.build.cpu_flags=-DMCU_STM32F103VB +genericSTM32F103V.menu.device_variant.STM32F103VB.upload.maximum_size=131072 +genericSTM32F103V.menu.device_variant.STM32F103VB.upload.maximum_data_size=20480 +genericSTM32F103V.menu.device_variant.STM32F103VB.build.ldscript=ld/stm32f103vb.ld + genericSTM32F103V.menu.device_variant.STM32F103VC=STM32F103VC +genericSTM32F103V.menu.device_variant.STM32F103VC.build.variant=generic_stm32f103v genericSTM32F103V.menu.device_variant.STM32F103VC.build.cpu_flags=-DMCU_STM32F103VC genericSTM32F103V.menu.device_variant.STM32F103VC.upload.maximum_size=262144 genericSTM32F103V.menu.device_variant.STM32F103VC.upload.maximum_data_size=49152 genericSTM32F103V.menu.device_variant.STM32F103VC.build.ldscript=ld/stm32f103vc.ld genericSTM32F103V.menu.device_variant.STM32F103VD=STM32F103VD +genericSTM32F103V.menu.device_variant.STM32F103VD.build.variant=generic_stm32f103v genericSTM32F103V.menu.device_variant.STM32F103VD.build.cpu_flags=-DMCU_STM32F103VD genericSTM32F103V.menu.device_variant.STM32F103VD.upload.maximum_size=393216 genericSTM32F103V.menu.device_variant.STM32F103VD.upload.maximum_data_size=65536 genericSTM32F103V.menu.device_variant.STM32F103VD.build.ldscript=ld/stm32f103vd.ld genericSTM32F103V.menu.device_variant.STM32F103VE=STM32F103VE +genericSTM32F103V.menu.device_variant.STM32F103VE.build.variant=generic_stm32f103v genericSTM32F103V.menu.device_variant.STM32F103VE.build.cpu_flags=-DMCU_STM32F103VE genericSTM32F103V.menu.device_variant.STM32F103VE.upload.maximum_size=524288 genericSTM32F103V.menu.device_variant.STM32F103VE.upload.maximum_data_size=65536 diff --git a/STM32F1/cores/maple/libmaple/gpio_f1.c b/STM32F1/cores/maple/libmaple/gpio_f1.c index 6de16f55a..3d24c4681 100644 --- a/STM32F1/cores/maple/libmaple/gpio_f1.c +++ b/STM32F1/cores/maple/libmaple/gpio_f1.c @@ -68,7 +68,7 @@ gpio_dev gpiod = { /** GPIO port D device. */ gpio_dev* const GPIOD = &gpiod; -#ifdef STM32_HIGH_DENSITY +#if STM32_NR_GPIO_PORTS > 4 gpio_dev gpioe = { .regs = GPIOE_BASE, .clk_id = RCC_GPIOE, @@ -106,7 +106,7 @@ void gpio_init_all(void) { gpio_init(GPIOB); gpio_init(GPIOC); gpio_init(GPIOD); -#ifdef STM32_HIGH_DENSITY +#if STM32_NR_GPIO_PORTS > 4 gpio_init(GPIOE); gpio_init(GPIOF); gpio_init(GPIOG); diff --git a/STM32F1/cores/maple/libmaple/rcc_f1.c b/STM32F1/cores/maple/libmaple/rcc_f1.c index f45f670e1..e52e70957 100644 --- a/STM32F1/cores/maple/libmaple/rcc_f1.c +++ b/STM32F1/cores/maple/libmaple/rcc_f1.c @@ -69,10 +69,12 @@ const struct rcc_dev_info rcc_dev_table[] = { [RCC_FLITF] = { .clk_domain = AHB, .line_num = 4}, [RCC_SRAM] = { .clk_domain = AHB, .line_num = 2}, [RCC_USB] = { .clk_domain = APB1, .line_num = 23}, -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) +#if STM32_NR_GPIO_PORTS > 4 [RCC_GPIOE] = { .clk_domain = APB2, .line_num = 6 }, [RCC_GPIOF] = { .clk_domain = APB2, .line_num = 7 }, [RCC_GPIOG] = { .clk_domain = APB2, .line_num = 8 }, +#endif +#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) [RCC_UART4] = { .clk_domain = APB1, .line_num = 19 }, [RCC_UART5] = { .clk_domain = APB1, .line_num = 20 }, [RCC_TIMER5] = { .clk_domain = APB1, .line_num = 3 }, diff --git a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h index aff639b4b..467128b32 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h @@ -31,6 +31,7 @@ * General purpose I/O (GPIO) and Alternate Function I/O (AFIO). */ + #ifndef _LIBMAPLE_STM32F1_GPIO_H_ #define _LIBMAPLE_STM32F1_GPIO_H_ @@ -57,6 +58,7 @@ typedef struct gpio_reg_map { __io uint32 LCKR; /**< Port configuration lock register */ } gpio_reg_map; + struct gpio_dev; extern struct gpio_dev gpioa; extern struct gpio_dev* const GPIOA; @@ -66,7 +68,7 @@ extern struct gpio_dev gpioc; extern struct gpio_dev* const GPIOC; extern struct gpio_dev gpiod; extern struct gpio_dev* const GPIOD; -#ifdef STM32_HIGH_DENSITY +#if STM32_NR_GPIO_PORTS > 4 extern struct gpio_dev gpioe; extern struct gpio_dev* const GPIOE; extern struct gpio_dev gpiof; diff --git a/STM32F1/variants/generic_stm32f103vb/board.cpp b/STM32F1/variants/generic_stm32f103vb/board.cpp new file mode 100644 index 000000000..e0b03b8f2 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/board.cpp @@ -0,0 +1,190 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ +#warning "vb" +/** + * @file wirish/boards/maple_mini/board.cpp + * @author Marti Bolivar + * @brief Maple Mini board file. + */ + +#include + +#include +#include + +/* Roger Clark. Added next to includes for changes to Serial */ +#include +#include + +#include +#include + +/* Since we want the Serial Wire/JTAG pins as GPIOs, disable both SW + * and JTAG debug support, unless configured otherwise. */ +void boardInit(void) { +#ifndef CONFIG_MAPLE_MINI_NO_DISABLE_DEBUG + disableDebugPorts(); +#endif +} + +// Note. See the enum of pin names in board.h + +extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { + + + {&gpioa, &timer2, &adc1, 0, 1, 0}, /* PA0 */ + {&gpioa, &timer2, &adc1, 1, 2, 1}, /* PA1 */ + {&gpioa, &timer2, &adc1, 2, 3, 2}, /* PA2 */ + {&gpioa, &timer2, &adc1, 3, 4, 3}, /* PA3 */ + {&gpioa, NULL, &adc1, 4, 0, 4}, /* PA4 */ + {&gpioa, NULL, &adc1, 5, 0, 5}, /* PA5 */ + {&gpioa, &timer3, &adc1, 6, 1, 6}, /* PA6 */ + {&gpioa, &timer3, &adc1, 7, 2, 7}, /* PA7 */ + {&gpioa, &timer1, NULL, 8, 1, ADCx}, /* PA8 */ + {&gpioa, &timer1, NULL, 9, 2, ADCx}, /* PA9 */ + {&gpioa, &timer1, NULL, 10, 3, ADCx}, /* PA10 */ + {&gpioa, &timer1, NULL, 11, 4, ADCx}, /* PA11 */ + {&gpioa, NULL, NULL, 12, 0, ADCx}, /* PA12 */ + {&gpioa, NULL, NULL, 13, 0, ADCx}, /* PA13 */ + {&gpioa, NULL, NULL, 14, 0, ADCx}, /* PA14 */ + {&gpioa, NULL, NULL, 15, 0, ADCx}, /* PA15 */ + + {&gpiob, &timer3, &adc1, 0, 3, 8}, /* PB0 */ + {&gpiob, &timer3, &adc1, 1, 4, 9}, /* PB1 */ + {&gpiob, NULL, NULL, 2, 0, ADCx}, /* PB2 */ + {&gpiob, NULL, NULL, 3, 0, ADCx}, /* PB3 */ + {&gpiob, NULL, NULL, 4, 0, ADCx}, /* PB4 */ + {&gpiob, NULL, NULL, 5, 0, ADCx}, /* PB5 */ + {&gpiob, &timer4, NULL, 6, 1, ADCx}, /* PB6 */ + {&gpiob, &timer4, NULL, 7, 2, ADCx}, /* PB7 */ + {&gpiob, &timer4, NULL, 8, 3, ADCx}, /* PB8 */ + {&gpiob, &timer4, NULL, 9, 4, ADCx}, /* PB9 */ + {&gpiob, NULL, NULL, 10, 0, ADCx}, /* PB10 */ + {&gpiob, NULL, NULL, 11, 0, ADCx}, /* PB11 */ + {&gpiob, NULL, NULL, 12, 0, ADCx}, /* PB12 */ + {&gpiob, NULL, NULL, 13, 0, ADCx}, /* PB13 */ + {&gpiob, NULL, NULL, 14, 0, ADCx}, /* PB14 */ + {&gpiob, NULL, NULL, 15, 0, ADCx}, /* PB15 */ + + {&gpioc, NULL, &adc1, 0, 0, 10}, /* PC0 */ + {&gpioc, NULL, &adc1, 1, 0, 11}, /* PC1 */ + {&gpioc, NULL, &adc1, 2, 0, 12}, /* PC2 */ + {&gpioc, NULL, &adc1, 3, 0, 13}, /* PC3 */ + {&gpioc, NULL, &adc1, 4, 0, 14}, /* PC4 */ + {&gpioc, NULL, &adc1, 5, 0, 15}, /* PC5 */ + + {&gpioc, NULL, NULL, 6, 0, ADCx}, /* PC6 */ + {&gpioc, NULL, NULL, 7, 0, ADCx}, /* PC7 */ + {&gpioc, NULL, NULL, 8, 0, ADCx}, /* PC8 */ + {&gpioc, NULL, NULL, 9, 0, ADCx}, /* PC9 */ + + {&gpioc, NULL, NULL, 10, 0, ADCx}, /* PC10 */ + {&gpioc, NULL, NULL, 11, 0, ADCx}, /* PC11 */ + {&gpioc, NULL, NULL, 12, 0, ADCx}, /* PC12 */ + {&gpioc, NULL, NULL, 13, 0, ADCx}, /* PC13 */ + {&gpioc, NULL, NULL, 14, 0, ADCx}, /* PC14 */ + {&gpioc, NULL, NULL, 15, 0, ADCx}, /* PC15 */ + +/* the VB is similar to the RB but exposes more GPIO as follows */ + {&gpiod, NULL, NULL, 0, 0, ADCx} , /* PD0 N */ + {&gpiod, NULL, NULL, 1, 0, ADCx} , /* PD1 */ + {&gpiod, NULL, NULL, 2, 0, ADCx} , /* PD2 TIM3_ETR */ + {&gpiod, NULL, NULL, 3, 0, ADCx} , /* PD3 */ + {&gpiod, NULL, NULL, 4, 0, ADCx} , /* PD4 */ + {&gpiod, NULL, NULL, 5, 0, ADCx} , /* PD5 */ + {&gpiod, NULL, NULL, 6, 0, ADCx} , /* PD6 */ + {&gpiod, NULL, NULL, 7, 0, ADCx} , /* PD7 */ + {&gpiod, NULL, NULL, 8, 0, ADCx} , /* PD8 */ + {&gpiod, NULL, NULL, 9, 0, ADCx} , /* PD9 */ + {&gpiod, NULL, NULL, 10, 0, ADCx} , /* PD10 */ + {&gpiod, NULL, NULL, 11, 0, ADCx} , /* PD11 */ + {&gpiod, NULL, NULL, 12, 0, ADCx} , /* PD12 */ + {&gpiod, NULL, NULL, 13, 0, ADCx} , /* PD13 */ + {&gpiod, NULL, NULL, 14, 0, ADCx} , /* PD14 */ + {&gpiod, NULL, NULL, 15, 0, ADCx} , /* PD15 */ + + {&gpioe, NULL, NULL, 0, 0, ADCx} , /* PE0 TIM4_ETR / FSMC_NBL0 */ + {&gpioe, NULL, NULL, 1, 0, ADCx} , /* PE1 FSMC_NBL1 */ + {&gpioe, NULL, NULL, 2, 0, ADCx} , /* PE2 TRACECK */ + {&gpioe, NULL, NULL, 3, 0, ADCx} , /* PE3 TRACED0 */ + {&gpioe, NULL, NULL, 4, 0, ADCx} , /* PE4 TRACED1 */ + {&gpioe, NULL, NULL, 5, 0, ADCx} , /* PE5 TRACED2 */ + {&gpioe, NULL, NULL, 6, 0, ADCx} , /* PE6 TRACED3 */ + {&gpioe, NULL, NULL, 7, 0, ADCx} , /* PE7 */ + {&gpioe, NULL, NULL, 8, 0, ADCx} , /* PE8 */ + {&gpioe, NULL, NULL, 9, 0, ADCx} , /* PE9 */ + {&gpioe, NULL, NULL, 10, 0, ADCx} , /* PE10 */ + {&gpioe, NULL, NULL, 11, 0, ADCx} , /* PE11 */ + {&gpioe, NULL, NULL, 12, 0, ADCx} , /* PE12 */ + {&gpioe, NULL, NULL, 13, 0, ADCx} , /* PE13 */ + {&gpioe, NULL, NULL, 14, 0, ADCx} , /* PE14 */ + {&gpioe, NULL, NULL, 15, 0, ADCx} , /* PE15 */ + +}; + +extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = { + PB0, PA7, PA6, PA3, PA2, PA1, PA0, PB7, PB6, PA10, PA9, PA8, PC6, PC7, PC8, PC9 +}; + +extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = { + PB0, PA7, PA6 , PA5 , PA4 , PA3 , PA2 , PA1 , PA0 , PC0, PC1, PC2, PC3, PC4, PC5 +}; + +// Note. These defines are not really used by generic boards. They are for Maple Serial USB +#define USB_DP PA12 +#define USB_DM PA11 + +// NOte. These definitions are not really used for generic boards, they only relate to boards modified to behave like Maple boards +extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = { + USB_DP, USB_DM +}; + + +/* + * Roger Clark + * + * 2015/05/28 + * + * Moved definitions for Hardware Serial devices from HardwareSerial.cpp so that each board can define which Arduino "Serial" instance + * Maps to which hardware serial port on the microprocessor + */ + +#ifdef SERIAL_USB + DEFINE_HWSERIAL(Serial1, 1); + + DEFINE_HWSERIAL(Serial2, 2); + + DEFINE_HWSERIAL(Serial3, 3); + +#else + DEFINE_HWSERIAL(Serial, 1); + + DEFINE_HWSERIAL(Serial1, 2); + + DEFINE_HWSERIAL(Serial2, 3); + + +#endif diff --git a/STM32F1/variants/generic_stm32f103vb/board/board.h b/STM32F1/variants/generic_stm32f103vb/board/board.h new file mode 100644 index 000000000..1271bb0a7 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/board/board.h @@ -0,0 +1,84 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file wirish/boards/maple_mini/include/board/board.h + * @author Marti Bolivar + * @brief Maple Mini board header. + * + * See wirish/boards/maple/include/board/board.h for more information + * on these definitions. + */ +#ifndef _BOARD_GENERIC_STM32F103VB_H_ +#define _BOARD_GENERIC_STM32F103VB_H_ + +#define CYCLES_PER_MICROSECOND (F_CPU / 1000000U) +#define SYSTICK_RELOAD_VAL (F_CPU/1000) - 1 /* takes a cycle to reload */ + +#define BOARD_NR_USARTS 3 +#define BOARD_USART1_TX_PIN PA9 +#define BOARD_USART1_RX_PIN PA10 +#define BOARD_USART2_TX_PIN PA2 +#define BOARD_USART2_RX_PIN PA3 +#define BOARD_USART3_TX_PIN PB10 +#define BOARD_USART3_RX_PIN PB11 + +#define BOARD_NR_SPI 2 +#define BOARD_SPI1_NSS_PIN PA4 +#define BOARD_SPI1_MOSI_PIN PA7 +#define BOARD_SPI1_MISO_PIN PA6 +#define BOARD_SPI1_SCK_PIN PA5 + +#define BOARD_SPI2_NSS_PIN PB12 +#define BOARD_SPI2_MOSI_PIN PB15 +#define BOARD_SPI2_MISO_PIN PB14 +#define BOARD_SPI2_SCK_PIN PB13 + +#define BOARD_NR_GPIO_PINS 80 +#define BOARD_NR_PWM_PINS 16 +#define BOARD_NR_ADC_PINS 15 +#define BOARD_NR_USED_PINS 4 + + +#define BOARD_JTMS_SWDIO_PIN 22 +#define BOARD_JTCK_SWCLK_PIN 21 +#define BOARD_JTDI_PIN 20 +#define BOARD_JTDO_PIN 19 +#define BOARD_NJTRST_PIN 18 + +#define BOARD_USB_DISC_DEV NULL +#define BOARD_USB_DISC_BIT NULL + +// Note this needs to match with the PIN_MAP array in board.cpp +enum { + PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, + PB0, PB1, PB2, PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10, PB11, PB12, PB13, PB14, PB15, + PC0, PC1, PC2, PC3, PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, PC13, PC14, PC15, + PD0, PD1, PD2, PD3, PD4, PD5, PD6, PD7, PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, + PE0, PE1, PE2, PE3, PE4, PE5, PE6, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15 +}; + +#endif diff --git a/STM32F1/variants/generic_stm32f103vb/ld/bootloader.ld b/STM32F1/variants/generic_stm32f103vb/ld/bootloader.ld new file mode 100644 index 000000000..348b19c1d --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/bootloader.ld @@ -0,0 +1,18 @@ +/* + * Linker script for Generic STM32F103RE boards, using the generic bootloader (which takes the lower 8k of memory) + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/bootloader_20.ld b/STM32F1/variants/generic_stm32f103vb/ld/bootloader_20.ld new file mode 100644 index 000000000..4de3a0839 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/bootloader_20.ld @@ -0,0 +1,30 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08002000, LENGTH = 120K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/common.inc b/STM32F1/variants/generic_stm32f103vb/ld/common.inc new file mode 100644 index 000000000..e086a58bc --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/common.inc @@ -0,0 +1,220 @@ +/* + * Linker script for libmaple. + * + * Original author "lanchon" from ST forums, with modifications by LeafLabs. + */ + +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") + +/* + * Configure other libraries we want in the link. + * + * libgcc, libc, and libm are common across supported toolchains. + * However, some toolchains require additional archives which aren't + * present everywhere (e.g. ARM's gcc-arm-embedded releases). + * + * To hack around this, we let the build system specify additional + * archives by putting the right extra_libs.inc (in a directory under + * toolchains/) in our search path. + */ +GROUP(libgcc.a libc.a libm.a) +INCLUDE extra_libs.inc + +/* + * These force the linker to search for vector table symbols. + * + * These symbols vary by STM32 family (and also within families). + * It's up to the build system to configure the link's search path + * properly for the target MCU. + */ +INCLUDE vector_symbols.inc + +/* STM32 vector table. */ +EXTERN(__stm32_vector_table) + +/* C runtime initialization function. */ +EXTERN(start_c) + +/* main entry point */ +EXTERN(main) + +/* Initial stack pointer value. */ +EXTERN(__msp_init) +PROVIDE(__msp_init = ORIGIN(ram) + LENGTH(ram)); + +/* Reset vector and chip reset entry point */ +EXTERN(__start__) +ENTRY(__start__) +PROVIDE(__exc_reset = __start__); + +/* Heap boundaries, for libmaple */ +EXTERN(_lm_heap_start); +EXTERN(_lm_heap_end); + +SECTIONS +{ + .text : + { + __text_start__ = .; + /* + * STM32 vector table. Leave this here. Yes, really. + */ + *(.stm32.interrupt_vector) + + /* + * Program code and vague linking + */ + *(.text .text.* .gnu.linkonce.t.*) + *(.plt) + *(.gnu.warning) + *(.glue_7t) *(.glue_7) *(.vfp11_veneer) + + *(.ARM.extab* .gnu.linkonce.armextab.*) + *(.gcc_except_table) + *(.eh_frame_hdr) + *(.eh_frame) + + . = ALIGN(4); + KEEP(*(.init)) + + . = ALIGN(4); + __preinit_array_start = .; + KEEP (*(.preinit_array)) + __preinit_array_end = .; + + . = ALIGN(4); + __init_array_start = .; + KEEP (*(SORT(.init_array.*))) + KEEP (*(.init_array)) + __init_array_end = .; + + . = ALIGN(0x4); + KEEP (*crtbegin.o(.ctors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) + KEEP (*(SORT(.ctors.*))) + KEEP (*crtend.o(.ctors)) + + . = ALIGN(4); + KEEP(*(.fini)) + + . = ALIGN(4); + __fini_array_start = .; + KEEP (*(.fini_array)) + KEEP (*(SORT(.fini_array.*))) + __fini_array_end = .; + + KEEP (*crtbegin.o(.dtors)) + KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) + KEEP (*(SORT(.dtors.*))) + KEEP (*crtend.o(.dtors)) + } > REGION_TEXT + + /* + * End of text + */ + .text.align : + { + . = ALIGN(8); + __text_end__ = .; + } > REGION_TEXT + + /* + * .ARM.exidx exception unwinding; mandated by ARM's C++ ABI + */ + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > REGION_RODATA + __exidx_end = .; + + /* + * .data + */ + .data : + { + __data_start__ = .; + LONG(0) + . = ALIGN(8); + + *(.got.plt) *(.got) + *(.data .data.* .gnu.linkonce.d.*) + + . = ALIGN(8); + __data_end__ = .; + } > REGION_DATA AT> REGION_RODATA + + /* + * Read-only data + */ + .rodata : + { + *(.rodata .rodata.* .gnu.linkonce.r.*) + /* .USER_FLASH: We allow users to allocate into Flash here */ + *(.USER_FLASH) + /* ROM image configuration; for C startup */ + . = ALIGN(4); + _lm_rom_img_cfgp = .; + LONG(LOADADDR(.data)); + /* + * Heap: Linker scripts may choose a custom heap by overriding + * _lm_heap_start and _lm_heap_end. Otherwise, the heap is in + * internal SRAM, beginning after .bss, and growing towards + * the stack. + * + * I'm shoving these here naively; there's probably a cleaner way + * to go about this. [mbolivar] + */ + _lm_heap_start = DEFINED(_lm_heap_start) ? _lm_heap_start : _end; + _lm_heap_end = DEFINED(_lm_heap_end) ? _lm_heap_end : __msp_init; + } > REGION_RODATA + + /* + * .bss + */ + .bss : + { + . = ALIGN(8); + __bss_start__ = .; + *(.bss .bss.* .gnu.linkonce.b.*) + *(COMMON) + . = ALIGN (8); + __bss_end__ = .; + _end = __bss_end__; + } > REGION_BSS + + /* + * Debugging sections + */ + .stab 0 (NOLOAD) : { *(.stab) } + .stabstr 0 (NOLOAD) : { *(.stabstr) } + /* DWARF debug sections. + * Symbols in the DWARF debugging sections are relative to the beginning + * of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + + .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } + .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } + /DISCARD/ : { *(.note.GNU-stack) } +} diff --git a/STM32F1/variants/generic_stm32f103vb/ld/extra_libs.inc b/STM32F1/variants/generic_stm32f103vb/ld/extra_libs.inc new file mode 100644 index 000000000..dd2c84fa4 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/extra_libs.inc @@ -0,0 +1,7 @@ +/* + * Extra archives needed by ARM's GCC ARM Embedded arm-none-eabi- + * releases (https://launchpad.net/gcc-arm-embedded/). + */ + +/* This is for the provided newlib. */ +GROUP(libnosys.a) diff --git a/STM32F1/variants/generic_stm32f103vb/ld/flash.ld b/STM32F1/variants/generic_stm32f103vb/ld/flash.ld new file mode 100644 index 000000000..9e250cd74 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/flash.ld @@ -0,0 +1,26 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +INCLUDE mem-flash.inc + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld b/STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld new file mode 100644 index 000000000..46039238e --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld @@ -0,0 +1,33 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +/*INCLUDE mem-flash.inc*/ + +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 44K +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/jtag.ld b/STM32F1/variants/generic_stm32f103vb/ld/jtag.ld new file mode 100644 index 000000000..0612f9586 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/jtag.ld @@ -0,0 +1,31 @@ +/* + * libmaple linker script for "JTAG" builds. + * + * A "JTAG" build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but links starting at the + * Flash and SRAM starting addresses (0x08000000 and 0x20000000 + * respectively). This will wipe out a Maple bootloader if there's one + * on the board, so only use this if you know what you're doing. + * + * Of course, a "JTAG" build is perfectly usable for upload over SWD, + * the system memory bootloader, etc. The name is just a historical + * artifact. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +INCLUDE mem-jtag.inc + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld b/STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld new file mode 100644 index 000000000..d9d4a0f0f --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld @@ -0,0 +1,36 @@ +/* + * libmaple linker script for "JTAG" builds. + * + * A "JTAG" build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but links starting at the + * Flash and SRAM starting addresses (0x08000000 and 0x20000000 + * respectively). This will wipe out a Maple bootloader if there's one + * on the board, so only use this if you know what you're doing. + * + * Of course, a "JTAG" build is perfectly usable for upload over SWD, + * the system memory bootloader, etc. The name is just a historical + * artifact. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ + +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 64K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/mem-flash.inc b/STM32F1/variants/generic_stm32f103vb/ld/mem-flash.inc new file mode 100644 index 000000000..a9091ca85 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/mem-flash.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08005000, LENGTH = 108K +} diff --git a/STM32F1/variants/generic_stm32f103vb/ld/mem-jtag.inc b/STM32F1/variants/generic_stm32f103vb/ld/mem-jtag.inc new file mode 100644 index 000000000..20fbec056 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/mem-jtag.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K +} diff --git a/STM32F1/variants/generic_stm32f103vb/ld/mem-ram.inc b/STM32F1/variants/generic_stm32f103vb/ld/mem-ram.inc new file mode 100644 index 000000000..f02453b9a --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/mem-ram.inc @@ -0,0 +1,5 @@ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08005000, LENGTH = 0K +} diff --git a/STM32F1/variants/generic_stm32f103vb/ld/ram.ld b/STM32F1/variants/generic_stm32f103vb/ld/ram.ld new file mode 100644 index 000000000..34b468e0a --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/ram.ld @@ -0,0 +1,25 @@ +/* + * libmaple linker script for RAM builds. + * + * A Flash build puts .text, .rodata, and .data/.bss/heap (of course) + * in SRAM, but offsets the sections by enough space to store the + * Maple bootloader, which uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +INCLUDE mem-ram.inc + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", ram); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", ram); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld b/STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld new file mode 100644 index 000000000..71e081e36 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld @@ -0,0 +1,31 @@ +/* + * libmaple linker script for RAM builds. + * + * A Flash build puts .text, .rodata, and .data/.bss/heap (of course) + * in SRAM, but offsets the sections by enough space to store the + * Maple bootloader, which uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +/*INCLUDE mem-ram.inc*/ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K + rom (rx) : ORIGIN = 0x08005000, LENGTH = 0 +} + + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", ram); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", ram); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/stm32f103vb.ld b/STM32F1/variants/generic_stm32f103vb/ld/stm32f103vb.ld new file mode 100644 index 000000000..814d50870 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/stm32f103vb.ld @@ -0,0 +1,30 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/vector_symbols.inc b/STM32F1/variants/generic_stm32f103vb/ld/vector_symbols.inc new file mode 100644 index 000000000..f8519bba4 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/vector_symbols.inc @@ -0,0 +1,78 @@ +EXTERN(__msp_init) +EXTERN(__exc_reset) +EXTERN(__exc_nmi) +EXTERN(__exc_hardfault) +EXTERN(__exc_memmanage) +EXTERN(__exc_busfault) +EXTERN(__exc_usagefault) +EXTERN(__stm32reservedexception7) +EXTERN(__stm32reservedexception8) +EXTERN(__stm32reservedexception9) +EXTERN(__stm32reservedexception10) +EXTERN(__exc_svc) +EXTERN(__exc_debug_monitor) +EXTERN(__stm32reservedexception13) +EXTERN(__exc_pendsv) +EXTERN(__exc_systick) + +EXTERN(__irq_wwdg) +EXTERN(__irq_pvd) +EXTERN(__irq_tamper) +EXTERN(__irq_rtc) +EXTERN(__irq_flash) +EXTERN(__irq_rcc) +EXTERN(__irq_exti0) +EXTERN(__irq_exti1) +EXTERN(__irq_exti2) +EXTERN(__irq_exti3) +EXTERN(__irq_exti4) +EXTERN(__irq_dma1_channel1) +EXTERN(__irq_dma1_channel2) +EXTERN(__irq_dma1_channel3) +EXTERN(__irq_dma1_channel4) +EXTERN(__irq_dma1_channel5) +EXTERN(__irq_dma1_channel6) +EXTERN(__irq_dma1_channel7) +EXTERN(__irq_adc) +EXTERN(__irq_usb_hp_can_tx) +EXTERN(__irq_usb_lp_can_rx0) +EXTERN(__irq_can_rx1) +EXTERN(__irq_can_sce) +EXTERN(__irq_exti9_5) +EXTERN(__irq_tim1_brk) +EXTERN(__irq_tim1_up) +EXTERN(__irq_tim1_trg_com) +EXTERN(__irq_tim1_cc) +EXTERN(__irq_tim2) +EXTERN(__irq_tim3) +EXTERN(__irq_tim4) +EXTERN(__irq_i2c1_ev) +EXTERN(__irq_i2c1_er) +EXTERN(__irq_i2c2_ev) +EXTERN(__irq_i2c2_er) +EXTERN(__irq_spi1) +EXTERN(__irq_spi2) +EXTERN(__irq_usart1) +EXTERN(__irq_usart2) +EXTERN(__irq_usart3) +EXTERN(__irq_exti15_10) +EXTERN(__irq_rtcalarm) +EXTERN(__irq_usbwakeup) + +EXTERN(__irq_tim8_brk) +EXTERN(__irq_tim8_up) +EXTERN(__irq_tim8_trg_com) +EXTERN(__irq_tim8_cc) +EXTERN(__irq_adc3) +EXTERN(__irq_fsmc) +EXTERN(__irq_sdio) +EXTERN(__irq_tim5) +EXTERN(__irq_spi3) +EXTERN(__irq_uart4) +EXTERN(__irq_uart5) +EXTERN(__irq_tim6) +EXTERN(__irq_tim7) +EXTERN(__irq_dma2_channel1) +EXTERN(__irq_dma2_channel2) +EXTERN(__irq_dma2_channel3) +EXTERN(__irq_dma2_channel4_5) diff --git a/STM32F1/variants/generic_stm32f103vb/pins_arduino.h b/STM32F1/variants/generic_stm32f103vb/pins_arduino.h new file mode 100644 index 000000000..3052f2eb2 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/pins_arduino.h @@ -0,0 +1,6 @@ + + + + +// API compatibility +#include "variant.h" \ No newline at end of file diff --git a/STM32F1/variants/generic_stm32f103vb/variant.h b/STM32F1/variants/generic_stm32f103vb/variant.h new file mode 100644 index 000000000..8a88623e7 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/variant.h @@ -0,0 +1,20 @@ +#ifndef _VARIANT_ARDUINO_STM32_ +#define _VARIANT_ARDUINO_STM32_ + +#define digitalPinToPort(P) ( PIN_MAP[P].gpio_device ) +#define digitalPinToBitMask(P) ( BIT(PIN_MAP[P].gpio_bit) ) +#define portOutputRegister(port) ( &(port->regs->ODR) ) +#define portInputRegister(port) ( &(port->regs->IDR) ) + +#define portSetRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BSRR) ) +#define portClearRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->BRR) ) + +#define portConfigRegister(pin) ( &(PIN_MAP[pin].gpio_device->regs->CRL) ) + +static const uint8_t SS = BOARD_SPI1_NSS_PIN; +static const uint8_t SS1 = BOARD_SPI2_NSS_PIN; +static const uint8_t MOSI = BOARD_SPI1_MOSI_PIN; +static const uint8_t MISO = BOARD_SPI1_MISO_PIN; +static const uint8_t SCK = BOARD_SPI1_SCK_PIN; + +#endif /* _VARIANT_ARDUINO_STM32_ */ \ No newline at end of file diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp new file mode 100644 index 000000000..ddeaa57e8 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp @@ -0,0 +1,229 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2011, 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file wirish/boards.cpp + * @brief init() and board routines. + * + * This file is mostly interesting for the init() function, which + * configures Flash, the core clocks, and a variety of other available + * peripherals on the board so the rest of Wirish doesn't have to turn + * things on before using them. + * + * Prior to returning, init() calls boardInit(), which allows boards + * to perform any initialization they need to. This file includes a + * weak no-op definition of boardInit(), so boards that don't need any + * special initialization don't have to define their own. + * + * How init() works is chip-specific. See the boards_setup.cpp files + * under e.g. wirish/stm32f1/, wirish/stmf32f2 for the details, but be + * advised: their contents are unstable, and can/will change without + * notice. + */ + +#include +#include +#include +#include +#include +#include "boards_private.h" + +static void setup_flash(void); +static void setup_clocks(void); +static void setup_nvic(void); +static void setup_adcs(void); +static void setup_timers(void); + +/* + * Exported functions + */ + +void init(void) { + setup_flash(); + setup_clocks(); + setup_nvic(); + systick_init(SYSTICK_RELOAD_VAL); + wirish::priv::board_setup_gpio(); + setup_adcs(); + setup_timers(); + wirish::priv::board_setup_usb(); + wirish::priv::series_init(); + boardInit(); +} + +/* Provide a default no-op boardInit(). */ +__weak void boardInit(void) { +} + +/* You could farm this out to the files in boards/ if e.g. it takes + * too long to test on boards with lots of pins. */ +bool boardUsesPin(uint8 pin) { + for (int i = 0; i < BOARD_NR_USED_PINS; i++) { + if (pin == boardUsedPins[i]) { + return true; + } + } + return false; +} + +/* + * Auxiliary routines + */ + +static void setup_flash(void) { + // Turn on as many Flash "go faster" features as + // possible. flash_enable_features() just ignores any flags it + // can't support. + flash_enable_features(FLASH_PREFETCH | FLASH_ICACHE | FLASH_DCACHE); + // Configure the wait states, assuming we're operating at "close + // enough" to 3.3V. + flash_set_latency(FLASH_SAFE_WAIT_STATES); +} + +static void setup_clocks(void) { + // Turn on HSI. We'll switch to and run off of this while we're + // setting up the main PLL. + rcc_turn_on_clk(RCC_CLK_HSI); + + // Turn off and reset the clock subsystems we'll be using, as well + // as the clock security subsystem (CSS). Note that resetting CFGR + // to its default value of 0 implies a switch to HSI for SYSCLK. + RCC_BASE->CFGR = 0x00000000; + rcc_disable_css(); + rcc_turn_off_clk(RCC_CLK_PLL); + rcc_turn_off_clk(RCC_CLK_HSE); + wirish::priv::board_reset_pll(); + // Clear clock readiness interrupt flags and turn off clock + // readiness interrupts. + RCC_BASE->CIR = 0x00000000; + + // Enable HSE, and wait until it's ready. + rcc_turn_on_clk(RCC_CLK_HSE); + while (!rcc_is_clk_ready(RCC_CLK_HSE)) + ; + + // Configure AHBx, APBx, etc. prescalers and the main PLL. + wirish::priv::board_setup_clock_prescalers(); + rcc_configure_pll(&wirish::priv::w_board_pll_cfg); + +#ifdef XTAL16M + // 16MHz crystal (HSE) + // in this case we additionally set the Bit 17 (PLLXTPRE=1) => then HSE clock is divided by 2 before PLL entry + RCC_BASE->CFGR |= RCC_CFGR_PLLXTPRE; +#endif + + // Enable the PLL, and wait until it's ready. + rcc_turn_on_clk(RCC_CLK_PLL); + while(!rcc_is_clk_ready(RCC_CLK_PLL)) + ; + + // Finally, switch to the now-ready PLL as the main clock source. + rcc_switch_sysclk(RCC_CLKSRC_PLL); +} + +/* + * These addresses are where usercode starts when a bootloader is + * present. If no bootloader is present, the user NVIC usually starts + * at the Flash base address, 0x08000000. + */ +#if defined(BOOTLOADER_maple) + #define USER_ADDR_ROM 0x08005000 +#else + #if defined(BOOTLOADER_robotis) + #define USER_ADDR_ROM 0x08003000 + #else + #define USER_ADDR_ROM 0x08000000 + #endif +#endif +#define USER_ADDR_RAM 0x20000C00 +extern char __text_start__; + +static void setup_nvic(void) { +#ifdef VECT_TAB_FLASH + nvic_init(USER_ADDR_ROM, 0); +#elif defined VECT_TAB_RAM + nvic_init(USER_ADDR_RAM, 0); +#elif defined VECT_TAB_BASE + nvic_init((uint32)0x08000000, 0); +#elif defined VECT_TAB_ADDR + // A numerically supplied value + nvic_init((uint32)VECT_TAB_ADDR, 0); +#else + // Use the __text_start__ value from the linker script; this + // should be the start of the vector table. + nvic_init((uint32)&__text_start__, 0); +#endif +} + +static void adc_default_config(adc_dev *dev) { + adc_enable_single_swstart(dev); + adc_set_sample_rate(dev, wirish::priv::w_adc_smp); +} + +static void setup_adcs(void) { + adc_set_prescaler(wirish::priv::w_adc_pre); + adc_foreach(adc_default_config); +} + +static void timer_default_config(timer_dev *dev) { + timer_adv_reg_map *regs = (dev->regs).adv; + const uint16 full_overflow = 0xFFFF; + const uint16 half_duty = 0x8FFF; + + timer_init(dev); + timer_pause(dev); + + regs->CR1 = TIMER_CR1_ARPE; + regs->PSC = 1; + regs->SR = 0; + regs->DIER = 0; + regs->EGR = TIMER_EGR_UG; + switch (dev->type) { + case TIMER_ADVANCED: + regs->BDTR = TIMER_BDTR_MOE | TIMER_BDTR_LOCK_OFF; + // fall-through + case TIMER_GENERAL: + timer_set_reload(dev, full_overflow); + for (uint8 channel = 1; channel <= 4; channel++) { + if (timer_has_cc_channel(dev, channel)) { + timer_set_compare(dev, channel, half_duty); + timer_oc_set_mode(dev, channel, TIMER_OC_MODE_PWM_1, + TIMER_OC_PE); + } + } + // fall-through + case TIMER_BASIC: + break; + } + + timer_generate_update(dev); + timer_resume(dev); +} + +static void setup_timers(void) { + timer_foreach(timer_default_config); +} diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp new file mode 100644 index 000000000..dba014b91 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp @@ -0,0 +1,111 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*****************************************************************************/ + +/** + * @file wirish/stm32f1/boards_setup.cpp + * @author Marti Bolivar + * @brief STM32F1 chip setup. + * + * This file controls how init() behaves on the STM32F1. Be very + * careful when changing anything here. Many of these values depend + * upon each other. + */ + +#include "boards_private.h" + +#include +#include + +#include +#include + +// Allow boards to provide a PLL multiplier. This is useful for +// e.g. STM32F100 value line MCUs, which use slower multipliers. +// (We're leaving the default to RCC_PLLMUL_9 for now, since that +// works for F103 performance line MCUs, which is all that LeafLabs +// currently officially supports). +#ifndef BOARD_RCC_PLLMUL + #if F_CPU==128000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #elif F_CPU==72000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 + #elif F_CPU==48000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #endif +#endif + +namespace wirish { + namespace priv { + + static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; + __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; + __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; + + __weak void board_reset_pll(void) { + // TODO + } + + __weak void board_setup_clock_prescalers(void) { + rcc_set_prescaler(RCC_PRESCALER_AHB, RCC_AHB_SYSCLK_DIV_1); + rcc_set_prescaler(RCC_PRESCALER_APB1, RCC_APB1_HCLK_DIV_2); + rcc_set_prescaler(RCC_PRESCALER_APB2, RCC_APB2_HCLK_DIV_1); + rcc_clk_disable(RCC_USB); + #if F_CPU == 72000000 + rcc_set_prescaler(RCC_PRESCALER_USB, RCC_USB_SYSCLK_DIV_1_5); + #elif F_CPU == 48000000 + rcc_set_prescaler(RCC_PRESCALER_USB, RCC_USB_SYSCLK_DIV_1); + #endif + } + + __weak void board_setup_gpio(void) { + gpio_init_all(); + } + + __weak void board_setup_usb(void) { +#ifdef SERIAL_USB + + +#ifdef GENERIC_BOOTLOADER + //Reset the USB interface on generic boards - developed by Victor PV + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP); + gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0); + + for(volatile unsigned int i=0;i<512;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING); +#endif + Serial.begin();// Roger Clark. Changed SerialUSB to Serial for Arduino sketch compatibility +#endif + } + + __weak void series_init(void) { + // Initialize AFIO here, too, so peripheral remaps and external + // interrupts work out of the box. + afio_init(); + } + + } +} diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/start.S b/STM32F1/variants/generic_stm32f103vb/wirish/start.S new file mode 100644 index 000000000..8b181aa99 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/wirish/start.S @@ -0,0 +1,57 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/* + * This file is a modified version of a file obtained from + * CodeSourcery Inc. (now part of Mentor Graphics Corp.), in which the + * following text appeared: + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + + .text + .code 16 + .thumb_func + + .globl __start__ + .type __start__, %function +__start__: + .fnstart + ldr r1,=__msp_init + mov sp,r1 + ldr r1,=start_c + bx r1 + .pool + .cantunwind + .fnend diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/start_c.c b/STM32F1/variants/generic_stm32f103vb/wirish/start_c.c new file mode 100644 index 000000000..655fefb88 --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/wirish/start_c.c @@ -0,0 +1,95 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/* + * This file is a modified version of a file obtained from + * CodeSourcery Inc. (now part of Mentor Graphics Corp.), in which the + * following text appeared: + * + * Copyright (c) 2006, 2007 CodeSourcery Inc + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#include + +extern void __libc_init_array(void); + +extern int main(int, char**, char**); + +extern void exit(int) __attribute__((noreturn, weak)); + +/* The linker must ensure that these are at least 4-byte aligned. */ +extern char __data_start__, __data_end__; +extern char __bss_start__, __bss_end__; + +struct rom_img_cfg { + int *img_start; +}; + +extern char _lm_rom_img_cfgp; + +void __attribute__((noreturn)) start_c(void) { + struct rom_img_cfg *img_cfg = (struct rom_img_cfg*)&_lm_rom_img_cfgp; + int *src = img_cfg->img_start; + int *dst = (int*)&__data_start__; + int exit_code; + + /* Initialize .data, if necessary. */ + if (src != dst) { + int *end = (int*)&__data_end__; + while (dst < end) { + *dst++ = *src++; + } + } + + /* Zero .bss. */ + dst = (int*)&__bss_start__; + while (dst < (int*)&__bss_end__) { + *dst++ = 0; + } + + /* Run initializers. */ + __libc_init_array(); + + /* Jump to main. */ + exit_code = main(0, 0, 0); + if (exit) { + exit(exit_code); + } + + /* If exit is NULL, make sure we don't return. */ + for (;;) + continue; +} diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/syscalls.c b/STM32F1/variants/generic_stm32f103vb/wirish/syscalls.c new file mode 100644 index 000000000..ec1c34dba --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/wirish/syscalls.c @@ -0,0 +1,176 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2011, 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file wirish/syscalls.c + * @brief newlib stubs + * + * Low level system routines used by newlib for basic I/O and memory + * allocation. You can override most of these. + */ + +#include + +#include +#include +#include + +/* If CONFIG_HEAP_START (or CONFIG_HEAP_END) isn't defined, then + * assume _lm_heap_start (resp. _lm_heap_end) is appropriately set by + * the linker */ +#ifndef CONFIG_HEAP_START +extern char _lm_heap_start; +#define CONFIG_HEAP_START ((void *)&_lm_heap_start) +#endif +#ifndef CONFIG_HEAP_END +extern char _lm_heap_end; +#define CONFIG_HEAP_END ((void *)&_lm_heap_end) +#endif + +/* + * _sbrk -- Increment the program break. + * + * Get incr bytes more RAM (for use by the heap). malloc() and + * friends call this function behind the scenes. + */ +void *_sbrk(int incr) { + static void * pbreak = NULL; /* current program break */ + void * ret; + + if (pbreak == NULL) { + pbreak = CONFIG_HEAP_START; + } + + if ((CONFIG_HEAP_END - pbreak < incr) || + (pbreak - CONFIG_HEAP_START < -incr)) { + errno = ENOMEM; + return (void *)-1; + } + + ret = pbreak; + pbreak += incr; + return ret; +} + +__weak int _open(const char *path __attribute__((unused)), int flags __attribute__((unused)), ...) { + return 1; +} + +__weak int _close(int fd __attribute__((unused))) { + return 0; +} + +__weak int _fstat(int fd __attribute__((unused)), struct stat *st) { + st->st_mode = S_IFCHR; + return 0; +} + +__weak int _isatty(int fd __attribute__((unused))) { + return 1; +} + +__weak int isatty(int fd __attribute__((unused))) { + return 1; +} + +__weak int _lseek(int fd __attribute__((unused)), off_t pos __attribute__((unused)), int whence __attribute__((unused))) { + return -1; +} + +__weak unsigned char getch(void) { + return 0; +} + + +__weak int _read(int fd __attribute__((unused)), char *buf, size_t cnt __attribute__((unused))) { + *buf = getch(); + + return 1; +} + +__weak void putch(unsigned char c __attribute__((unused))) { +} + +__weak void cgets(char *s, int bufsize) { + char *p; + int c; + int i; + + for (i = 0; i < bufsize; i++) { + *(s+i) = 0; + } +// memset(s, 0, bufsize); + + p = s; + + for (p = s; p < s + bufsize-1;) { + c = getch(); + switch (c) { + case '\r' : + case '\n' : + putch('\r'); + putch('\n'); + *p = '\n'; + return; + + case '\b' : + if (p > s) { + *p-- = 0; + putch('\b'); + putch(' '); + putch('\b'); + } + break; + + default : + putch(c); + *p++ = c; + break; + } + } + return; +} + +__weak int _write(int fd __attribute__((unused)), const char *buf, size_t cnt) { + int i; + + for (i = 0; i < cnt; i++) + putch(buf[i]); + + return cnt; +} + +/* Override fgets() in newlib with a version that does line editing */ +__weak char *fgets(char *s, int bufsize, void *f __attribute__((unused))) { + cgets(s, bufsize); + return s; +} + +__weak void _exit(int exitcode __attribute__((unused))) { + while (1) + ; +} From 5287d8626857ef6145f5bb31023a59da8928e3a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maik=20W=C3=B6hl?= Date: Sun, 25 Feb 2018 14:00:13 +0100 Subject: [PATCH 065/373] Use useradd instead of adduser ``adduser`` isn't available on all linux systems. usermod is available. --- tools/linux64/install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/linux64/install.sh b/tools/linux64/install.sh index 29ddb2f22..9d4caad23 100755 --- a/tools/linux64/install.sh +++ b/tools/linux64/install.sh @@ -17,7 +17,8 @@ if sudo [ -w /etc/udev/rules.d ]; then echo "Reloading udev rules" sudo udevadm control --reload-rules echo "Adding current user to dialout group" - sudo adduser $USER dialout + #sudo adduser $USER dialout + sudo usermod -aG dialout $USER else echo "Couldn't copy to /etc/udev/rules.d/; you probably have to run this script as root? Or your distribution of Linux doesn't include udev; try running the IDE itself as root." fi From 78123aa8fed6a780acb43fb1e50bcb8125c953e0 Mon Sep 17 00:00:00 2001 From: per1234 Date: Mon, 26 Feb 2018 17:36:11 -0800 Subject: [PATCH 066/373] Fix formatting and typos in README.md --- README.md | 39 ++++++++++++++++----------------------- 1 file changed, 16 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 9493be94e..4f6f37755 100644 --- a/README.md +++ b/README.md @@ -1,50 +1,43 @@ -Arduino STM32 -============= +Arduino STM32 +============= ## Notice - This software is experimental and a work in progress. Under no circumstances should these files be used in relation to any critical system(s). Use of these files is at your own risk. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -## Summary: -This repo contains, the "Hardware" files to support STM32 based boards on Arduino version 1.8.x (some older versions may also work) including [LeafLabs Maple, and Maple mini](http://www.leaflabs.com/about-maple/), and other generic STM32F103 boards +## Summary: +This repo contains the "Hardware" files to support STM32 based boards on Arduino version 1.8.x (some older versions may also work) including [LeafLabs Maple, and Maple mini](http://www.leaflabs.com/about-maple/), and other generic STM32F103 boards. ***PRIMARY SUPPORT FORUM: http://www.stm32duino.com/*** ***We are also on Gitter https://gitter.im/stm32duino/Lobby/*** [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/stm32duino/Lobby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -## Background & Support: -* Based on https://github.com/bobc/maple-asp, which is in turn based on LibMaple by Leaflabs +## Background & Support: +* Based on https://github.com/bobc/maple-asp, which is in turn based on LibMaple by Leaflabs * **Please read the wiki (https://github.com/rogerclarkmelbourne/Arduino_STM32/wiki) for full details** -* See also my blog: http://www.rogerclark.net/stm32f103-and-maple-maple-mini-with-arduino-1-5-x-ide/ -* **NEW: Main support site for using STM32 boards with the Arduino IDE: http://www.stm32duino.com/** +* See also my blog: http://www.rogerclark.net/stm32f103-and-maple-maple-mini-with-arduino-1-5-x-ide/ +* **NEW: Main support site for using STM32 boards with the Arduino IDE: http://www.stm32duino.com/** * Original LeafLabs "Docs:" http://docs.leaflabs.com/docs.leaflabs.com/index.html -**YouTube Videos:** +**YouTube Videos:** * 20141116: [Arduino 1.5.8 IDE with STM32 board](https://www.youtube.com/watch?v=-zwGnytGT8M) * 20150413: [STM32 for Arduino 1.6.2 or newer (update)](https://www.youtube.com/watch?v=TePglhSkghg) * 20150419: [Uploading via USB to Serial to STM32F103 boards](https://www.youtube.com/watch?v=G_RF0a0hrak) -## Additional Links & Info: -* https://www.hackster.io/rayburne/4-dollar-90-mips-32-bit-72-mhz-arm-arduino +## Additional Links & Info: +* https://www.hackster.io/rayburne/4-dollar-90-mips-32-bit-72-mhz-arm-arduino -## Purchase info: +## Purchase info: ### Entry level boards - * [Ebay search for "arduino maple"](http://www.ebay.com/sch/i.html?_from=R40&_sacat=0&LH_BIN=1&_nkw=arduino+maple&_sop=15) (currently costs <$5 with shipping) -* [AliExpress search for "leaflabs maple"] (http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20150607085526&SearchText=leaflabs+maple) +* [AliExpress search for "leaflabs maple"](http://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20150607085526&SearchText=leaflabs+maple) ### Bigger boards (You need to load the stm32duino bootloader) - -Some supplier have this board e.g. - -*[ STM32F103VET ](http://www.ebay.com.au/itm/1PCS-STM32F103VET6-ARM-STM32-Minimum-System-Development-Board-Arduino-M77-/301433302819) - -*[There is also a STM32F103ZET board which also works, however they are not always available. They have been listed as "STM32F103ZET6 Minimum System Development Board ARM STM32 Cortex-m3 M75"] -(http://www.ebay.com.au/itm/1pcs-STM32F103ZET6-Minimum-System-Development-Board-ARM-STM32-Cortex-m3-M75-/291305557264) - +Some suppliers have this board e.g. +* [ STM32F103VET ](http://www.ebay.com.au/itm/1PCS-STM32F103VET6-ARM-STM32-Minimum-System-Development-Board-Arduino-M77-/301433302819) +* [There is also a STM32F103ZET board which also works, however they are not always available. They have been listed as "STM32F103ZET6 Minimum System Development Board ARM STM32 Cortex-m3 M75"](http://www.ebay.com.au/itm/1pcs-STM32F103ZET6-Minimum-System-Development-Board-ARM-STM32-Cortex-m3-M75-/291305557264) From 075eae588504184591583cc2ff189cf62874f8e9 Mon Sep 17 00:00:00 2001 From: MackPi Date: Sat, 3 Mar 2018 17:40:14 -0800 Subject: [PATCH 067/373] Added Variant STM32F103VB Added Board Varient STM32F103VB. Replaced #ifdef STM32_HIGH_DENSITY with #if STM32_NR_PORTS > 4 Where it makes sense for High Pin count medium density parts like the STM32F103VB. --- .../generic_stm32f103vb/ld/flash_c8.ld | 33 ----------------- .../generic_stm32f103vb/ld/jtag_c8.ld | 36 ------------------- .../variants/generic_stm32f103vb/ld/ram_c8.ld | 31 ---------------- 3 files changed, 100 deletions(-) delete mode 100644 STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld delete mode 100644 STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld delete mode 100644 STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld diff --git a/STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld b/STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld deleted file mode 100644 index 46039238e..000000000 --- a/STM32F1/variants/generic_stm32f103vb/ld/flash_c8.ld +++ /dev/null @@ -1,33 +0,0 @@ -/* - * libmaple linker script for "Flash" builds. - * - * A Flash build puts .text (and .rodata) in Flash, and - * .data/.bss/heap (of course) in SRAM, but offsets the sections by - * enough space to store the Maple bootloader, which lives in low - * Flash and uses low memory. - */ - -/* - * This pulls in the appropriate MEMORY declaration from the right - * subdirectory of stm32/mem/ (the environment must call ld with the - * right include directory flags to make this happen). Boards can also - * use this file to use any of libmaple's memory-related hooks (like - * where the heap should live). - */ -/*INCLUDE mem-flash.inc*/ - -MEMORY -{ - ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K - rom (rx) : ORIGIN = 0x08000000, LENGTH = 44K -} - - -/* Provide memory region aliases for common.inc */ -REGION_ALIAS("REGION_TEXT", rom); -REGION_ALIAS("REGION_DATA", ram); -REGION_ALIAS("REGION_BSS", ram); -REGION_ALIAS("REGION_RODATA", rom); - -/* Let common.inc handle the real work. */ -INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld b/STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld deleted file mode 100644 index d9d4a0f0f..000000000 --- a/STM32F1/variants/generic_stm32f103vb/ld/jtag_c8.ld +++ /dev/null @@ -1,36 +0,0 @@ -/* - * libmaple linker script for "JTAG" builds. - * - * A "JTAG" build puts .text (and .rodata) in Flash, and - * .data/.bss/heap (of course) in SRAM, but links starting at the - * Flash and SRAM starting addresses (0x08000000 and 0x20000000 - * respectively). This will wipe out a Maple bootloader if there's one - * on the board, so only use this if you know what you're doing. - * - * Of course, a "JTAG" build is perfectly usable for upload over SWD, - * the system memory bootloader, etc. The name is just a historical - * artifact. - */ - -/* - * This pulls in the appropriate MEMORY declaration from the right - * subdirectory of stm32/mem/ (the environment must call ld with the - * right include directory flags to make this happen). Boards can also - * use this file to use any of libmaple's memory-related hooks (like - * where the heap should live). - */ - -MEMORY -{ - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K - rom (rx) : ORIGIN = 0x08000000, LENGTH = 64K -} - -/* Provide memory region aliases for common.inc */ -REGION_ALIAS("REGION_TEXT", rom); -REGION_ALIAS("REGION_DATA", ram); -REGION_ALIAS("REGION_BSS", ram); -REGION_ALIAS("REGION_RODATA", rom); - -/* Let common.inc handle the real work. */ -INCLUDE common.inc diff --git a/STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld b/STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld deleted file mode 100644 index 71e081e36..000000000 --- a/STM32F1/variants/generic_stm32f103vb/ld/ram_c8.ld +++ /dev/null @@ -1,31 +0,0 @@ -/* - * libmaple linker script for RAM builds. - * - * A Flash build puts .text, .rodata, and .data/.bss/heap (of course) - * in SRAM, but offsets the sections by enough space to store the - * Maple bootloader, which uses low memory. - */ - -/* - * This pulls in the appropriate MEMORY declaration from the right - * subdirectory of stm32/mem/ (the environment must call ld with the - * right include directory flags to make this happen). Boards can also - * use this file to use any of libmaple's memory-related hooks (like - * where the heap should live). - */ -/*INCLUDE mem-ram.inc*/ -MEMORY -{ - ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 17K - rom (rx) : ORIGIN = 0x08005000, LENGTH = 0 -} - - -/* Provide memory region aliases for common.inc */ -REGION_ALIAS("REGION_TEXT", ram); -REGION_ALIAS("REGION_DATA", ram); -REGION_ALIAS("REGION_BSS", ram); -REGION_ALIAS("REGION_RODATA", ram); - -/* Let common.inc handle the real work. */ -INCLUDE common.inc From 25e2945cd811af0d5b7cc9893258ef3c6063b216 Mon Sep 17 00:00:00 2001 From: madias123 Date: Mon, 12 Mar 2018 23:46:29 +0100 Subject: [PATCH 068/373] Update TouchButtons.ino Compatibility: Using Serial instead of Serial1 --- .../examples/TouchButtons/TouchButtons.ino | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/STM32F1/libraries/Serasidis_XPT2046_touch/examples/TouchButtons/TouchButtons.ino b/STM32F1/libraries/Serasidis_XPT2046_touch/examples/TouchButtons/TouchButtons.ino index 5ca9606c0..c710c6a5d 100644 --- a/STM32F1/libraries/Serasidis_XPT2046_touch/examples/TouchButtons/TouchButtons.ino +++ b/STM32F1/libraries/Serasidis_XPT2046_touch/examples/TouchButtons/TouchButtons.ino @@ -32,12 +32,12 @@ XPT2046_touch ts(CS_PIN, mySPI); // Chip Select pin, SPI port uint16_t xy[2]; void setup() { - Serial1.begin(9600); - Serial1.println("-------------------------------------------------"); - Serial1.println("XPT2046 touch screen buttons"); - Serial1.println("Copyright (c) 02 Dec 2015 by Vassilis Serasidis"); - Serial1.println("Home: http://www.serasidis.gr"); - Serial1.println("-------------------------------------------------"); + Serial.begin(9600); + Serial.println("-------------------------------------------------"); + Serial.println("XPT2046 touch screen buttons"); + Serial.println("Copyright (c) 02 Dec 2015 by Vassilis Serasidis"); + Serial.println("Home: http://www.serasidis.gr"); + Serial.println("-------------------------------------------------"); ts.begin(); //Begin TouchScreen. ts.setButtonsNumber(COLUMNS, LINES); //Divide the Touch screen area into 4 columns and 2 lines and make them act as buttons. } @@ -46,15 +46,15 @@ void loop() { if(ts.read_XY(xy)){ //If the touch screen is preesed, read the X,Y coordinates and print them on Serial port. uint8_t buttonNumber = ts.getButtonNumber(); if(buttonNumber > 0){ - Serial1.print("Button: "); - Serial1.println(buttonNumber); + Serial.print("Button: "); + Serial.println(buttonNumber); - Serial1.print("X: "); - Serial1.println(xy[0]); //Print X value - Serial1.print("Y: "); - Serial1.println(xy[1]); //Print Y value - Serial1.println(); + Serial.print("X: "); + Serial.println(xy[0]); //Print X value + Serial.print("Y: "); + Serial.println(xy[1]); //Print Y value + Serial.println(); } delay(500); } -} \ No newline at end of file +} From 7e13702bcbf77d29fdfea0a5fe5efdb0b7737984 Mon Sep 17 00:00:00 2001 From: Thomas Friedrichsmeier Date: Tue, 13 Mar 2018 17:48:20 +0100 Subject: [PATCH 069/373] Some updates to the XPT2046 touchscreen library: - Add TS_Point-class and getter for better compatibility with various other touchscreen libraries out there - Add oversampling for better accuracy. Default is seven samples per point - Use SPI.beginTransaction() / endTransaction() to set proper SPI speed (as supported by XPT2046) --- .../src/XPT2046_touch.cpp | 134 ++++++++++-------- .../src/XPT2046_touch.h | 40 +++++- 2 files changed, 111 insertions(+), 63 deletions(-) diff --git a/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp b/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp index d1b0bdf98..71160b1a3 100644 --- a/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp +++ b/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp @@ -8,81 +8,97 @@ #include "Arduino.h" #include "XPT2046_touch.h" +XPT2046_touch::XPT2046_touch(uint8_t _cs_pin, SPIClass _spiChan) : cs_pin(_cs_pin), my_SPI(_spiChan){ + setOversampling(); + setThreshold(); +} -/****************************************************************************/ - XPT2046_touch::XPT2046_touch(uint8_t _cs_pin, SPIClass _spiChan) : cs_pin(_cs_pin), my_SPI(_spiChan){ - } - - -/****************************************************************************/ - - void XPT2046_touch::begin(){ +void XPT2046_touch::begin(){ pinMode(cs_pin, OUTPUT); digitalWrite(cs_pin, HIGH); my_SPI.begin(); - } +} + +uint16_t XPT2046_touch::gatherSamples(uint8_t command) { + uint32_t sample_sum = 0; + uint16_t samples[MAX_OVERSAMPLING]; + + my_SPI.transfer16(command); // discard first reading after switching MUX + for (int i = 0; i < oversampling; ++i) { + samples[i] = my_SPI.transfer16(command); + sample_sum += samples[i]; + } + int32_t avg = sample_sum / oversampling; + if (oversampling < 3) { + return avg >> 3; + } + + // occasionally, we get a reading that is a _far_ outlier. + // checking for, and removing those improves quality a lot. + uint8_t n = oversampling; + for (int i = 0; i < oversampling; ++i) { + if (abs(avg - samples[i]) > 80) { // NOTE: data is left shifted by 3 at this point. I.e. the test is for 10+ pixels deviation from average + sample_sum -= samples[i]; + --n; + } + } + if (n < 2) return avg >> 3; + else return (sample_sum / n) >> 3; +} - /****************************************************************************/ +TS_Point XPT2046_touch::getPoint() { + uint16_t z1, z2; - boolean XPT2046_touch::read_XY(uint16_t *xy){ - int z1, z2, tmpH, tmpL; + my_SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE0)); // max clock freq for XPT2046 digitalWrite(cs_pin, LOW); + TS_Point ret; //Check if touch screen is pressed. - SPI.transfer(B10110011); // Z1 - delay(10); - tmpH = (my_SPI.transfer(0) << 5); - tmpL = (my_SPI.transfer(0) >> 3); - z1 = tmpH | tmpL; - - SPI.transfer(B11000011); // Z2 - delay(10); - tmpH = (my_SPI.transfer(0) << 5); - tmpL = (my_SPI.transfer(0) >> 3); - z2 = tmpH | tmpL; - - if((z2 - z1) < Z_THRESHOLD){ //If the touch screen is pressed, read the X,Y coordinates from XPT2046. - my_SPI.transfer(B11010011); // X - delay(10); - tmpH = (my_SPI.transfer(0) << 5); - tmpL = (my_SPI.transfer(0) >> 3); - xy[0] = tmpH | tmpL; - - my_SPI.transfer(B10010011); // Y - delay(10); - tmpH = (my_SPI.transfer(0) << 5); - tmpL = (my_SPI.transfer(0) >> 3); - xy[1] = tmpH | tmpL; - digitalWrite(cs_pin, HIGH); - return true; + SPI.transfer(B10110011); // trigger Z1 reading + z1 = my_SPI.transfer16(B11000011) >> 3; // read Z1, and trigger Z2 reading + z2 = my_SPI.transfer16(B10010011) >> 3; // read Z2, and trigger Y reading + ret.z = z1 + 4095 - z2; + + if(ret.z >= threshold){ //If the touch screen is pressed, read the X,Y coordinates from XPT2046. + ret.z = z1 + 4095 - z2; + ret.x = gatherSamples(B10010011); + ret.y = gatherSamples(B11010011); + } else { + ret.z = 0; } + digitalWrite(cs_pin, HIGH); - return false; - } - - /****************************************************************************/ - void XPT2046_touch::setButtonsNumber(byte columnButtons, byte rowButtons ){ - _rowButtons = rowButtons; - _columnButtons = columnButtons; - } - - /****************************************************************************/ - uint8_t XPT2046_touch::getButtonNumber(){ + my_SPI.endTransaction(); + return ret; +} + +boolean XPT2046_touch::read_XY(uint16_t *xy) { + TS_Point p = getPoint(); + xy[0] = p.x; + xy[1] = p.y; + return p.z > 0; +} + +////////////////// Buttons //////////////// +void XPT2046_touch::setButtonsNumber(byte columnButtons, byte rowButtons ){ + _rowButtons = rowButtons; + _columnButtons = columnButtons; +} + +uint8_t XPT2046_touch::getButtonNumber(){ uint16_t xy[2]; uint8_t tmp, buttonNum; int div; if(read_XY(xy)){ - - div = (X_MAX + X_MIN) / (_columnButtons + 1); - buttonNum = ((xy[1] / div)); - - div = (Y_MAX + Y_MIN) / _rowButtons; - tmp = ((xy[0] / div)); - - return ((buttonNum * _rowButtons) + tmp + 1); //Return the button number. + div = (X_MAX + X_MIN) / (_columnButtons + 1); + buttonNum = ((xy[1] / div)); + + div = (Y_MAX + Y_MIN) / _rowButtons; + tmp = ((xy[0] / div)); + + return ((buttonNum * _rowButtons) + tmp + 1); //Return the button number. } return 0; //Touch screen is not pressed. - } -/****************************************************************************/ +} diff --git a/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.h b/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.h index 083016295..9fbea6a82 100644 --- a/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.h +++ b/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.h @@ -11,7 +11,8 @@ #include #include -#define Z_THRESHOLD 3000 +#define Z_THRESHOLD 3500 // Note: reversed for backwards compatiblity: 4095-x +#define MAX_OVERSAMPLING 32 // Pre-defined touch screen calibration for using the 2.4" ILI9341 LCD #define X_MIN 830 @@ -19,23 +20,54 @@ #define Y_MIN 550 #define Y_MAX 3550 + +class TS_Point { +public: + TS_Point(void) : x(0), y(0), z(0) {} + TS_Point(int16_t x, int16_t y, int16_t z) : x(x), y(y), z(z) {} + bool operator==(TS_Point p) { return ((p.x == x) && (p.y == y) && (p.z == z)); } + bool operator!=(TS_Point p) { return ((p.x != x) || (p.y != y) || (p.z != z)); } + int16_t x, y, z; +}; + /** * */ - -class XPT2046_touch{ +class XPT2046_touch { private: uint8_t cs_pin; SPIClass my_SPI; uint8_t _rowButtons = 1; uint8_t _columnButtons = 1; + uint8_t oversampling; + uint16_t threshold; + uint16_t gatherSamples(uint8_t command); public: - XPT2046_touch(uint8_t _cs_pin, SPIClass _spiChan); //Contructor. + /** c'tor. Note that no IRQ pin is supported, here. You can easily do that yourself: + * \code if(digitalRead(irq_pin)) { + * // no press: skip + * } else { + * // _may_ be touched, but not necessarily reach the threshold + * TS_Point p = ts.getPoint(); + * if (p.z > 0) { + * // do something + * } + * } + * \endcode */ + XPT2046_touch(uint8_t _cs_pin, SPIClass _spiChan); //Contructor void begin(); void setButtonsNumber(byte rowButtons, byte columnButtons); + /** Number of samples to average per point 0..32 */ + void setOversampling(uint8_t num_readings = 7) { + oversampling = max(1, min(num_readings, MAX_OVERSAMPLING)); + } + void setThreshold(uint16_t threshold = 4095 - Z_THRESHOLD) { + XPT2046_touch::threshold = threshold; + } uint8_t getButtonNumber(); boolean read_XY(uint16_t *xy); + TS_Point getPoint(); }; #endif From 97dbf08a5eee98faf7d5db682219802dffa9c13b Mon Sep 17 00:00:00 2001 From: Thomas Friedrichsmeier Date: Tue, 13 Mar 2018 20:55:45 +0100 Subject: [PATCH 070/373] Small fixes --- .../libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp b/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp index 71160b1a3..f24c67ad5 100644 --- a/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp +++ b/STM32F1/libraries/Serasidis_XPT2046_touch/src/XPT2046_touch.cpp @@ -54,18 +54,18 @@ TS_Point XPT2046_touch::getPoint() { TS_Point ret; //Check if touch screen is pressed. - SPI.transfer(B10110011); // trigger Z1 reading + my_SPI.transfer(B10110011); // trigger Z1 reading z1 = my_SPI.transfer16(B11000011) >> 3; // read Z1, and trigger Z2 reading z2 = my_SPI.transfer16(B10010011) >> 3; // read Z2, and trigger Y reading ret.z = z1 + 4095 - z2; if(ret.z >= threshold){ //If the touch screen is pressed, read the X,Y coordinates from XPT2046. - ret.z = z1 + 4095 - z2; ret.x = gatherSamples(B10010011); ret.y = gatherSamples(B11010011); } else { ret.z = 0; } + my_SPI.transfer(B00000000); // enter power saving (and IRQ enable) digitalWrite(cs_pin, HIGH); my_SPI.endTransaction(); From ca3ead06b3fb50722555754488f89fbe16b5aa45 Mon Sep 17 00:00:00 2001 From: Thomas Friedrichsmeier Date: Wed, 14 Mar 2018 21:45:27 +0100 Subject: [PATCH 071/373] Base Adafruit_GFX_AS on Adafruit_GFX, keeping only the additiona in a derived class. The point of this is to make drivers based on Adafruit_GFX_AS compatible with Adafruit_GFX, without breaking existing code written for Adafruit_GFX_AS. See also http://stm32duino.com/viewtopic.php?f=9&t=3352 --- .../Adafruit_GFX_AS/Adafruit_GFX_AS.cpp | 452 +----------------- .../Adafruit_GFX_AS/Adafruit_GFX_AS.h | 94 +--- .../Adafruit_ILI9341_STM.cpp | 2 +- .../Adafruit_ILI9341_STM.h | 2 +- 4 files changed, 22 insertions(+), 528 deletions(-) diff --git a/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.cpp b/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.cpp index 333b12204..7d561f8da 100644 --- a/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.cpp +++ b/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.cpp @@ -59,451 +59,15 @@ POSSIBILITY OF SUCH DAMAGE. #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) #endif -Adafruit_GFX::Adafruit_GFX(int16_t w, int16_t h): - WIDTH(w), HEIGHT(h) +Adafruit_GFX_AS::Adafruit_GFX_AS(int16_t w, int16_t h): Adafruit_GFX(w, h) { - _width = WIDTH; - _height = HEIGHT; - rotation = 0; - cursor_y = cursor_x = 0; - textsize = 1; - textcolor = textbgcolor = 0xFFFF; - wrap = true; -} - -// Draw a circle outline -void Adafruit_GFX::drawCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) { - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - - drawPixel(x0 , y0+r, color); - drawPixel(x0 , y0-r, color); - drawPixel(x0+r, y0 , color); - drawPixel(x0-r, y0 , color); - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - drawPixel(x0 + x, y0 + y, color); - drawPixel(x0 - x, y0 + y, color); - drawPixel(x0 + x, y0 - y, color); - drawPixel(x0 - x, y0 - y, color); - drawPixel(x0 + y, y0 + x, color); - drawPixel(x0 - y, y0 + x, color); - drawPixel(x0 + y, y0 - x, color); - drawPixel(x0 - y, y0 - x, color); - } -} - -void Adafruit_GFX::drawCircleHelper( int16_t x0, int16_t y0, - int16_t r, uint8_t cornername, uint16_t color) { - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - if (cornername & 0x4) { - drawPixel(x0 + x, y0 + y, color); - drawPixel(x0 + y, y0 + x, color); - } - if (cornername & 0x2) { - drawPixel(x0 + x, y0 - y, color); - drawPixel(x0 + y, y0 - x, color); - } - if (cornername & 0x8) { - drawPixel(x0 - y, y0 + x, color); - drawPixel(x0 - x, y0 + y, color); - } - if (cornername & 0x1) { - drawPixel(x0 - y, y0 - x, color); - drawPixel(x0 - x, y0 - y, color); - } - } -} - -void Adafruit_GFX::fillCircle(int16_t x0, int16_t y0, int16_t r, - uint16_t color) { - drawFastVLine(x0, y0-r, 2*r+1, color); - fillCircleHelper(x0, y0, r, 3, 0, color); -} - -// Used to do circles and roundrects -void Adafruit_GFX::fillCircleHelper(int16_t x0, int16_t y0, int16_t r, - uint8_t cornername, int16_t delta, uint16_t color) { - - int16_t f = 1 - r; - int16_t ddF_x = 1; - int16_t ddF_y = -2 * r; - int16_t x = 0; - int16_t y = r; - - while (x= 0) { - y--; - ddF_y += 2; - f += ddF_y; - } - x++; - ddF_x += 2; - f += ddF_x; - - if (cornername & 0x1) { - drawFastVLine(x0+x, y0-y, 2*y+1+delta, color); - drawFastVLine(x0+y, y0-x, 2*x+1+delta, color); - } - if (cornername & 0x2) { - drawFastVLine(x0-x, y0-y, 2*y+1+delta, color); - drawFastVLine(x0-y, y0-x, 2*x+1+delta, color); - } - } -} - -// Bresenham's algorithm - thx wikpedia -void Adafruit_GFX::drawLine(int16_t x0, int16_t y0, - int16_t x1, int16_t y1, - uint16_t color) { - int16_t steep = abs(y1 - y0) > abs(x1 - x0); - if (steep) { - swap(x0, y0); - swap(x1, y1); - } - - if (x0 > x1) { - swap(x0, x1); - swap(y0, y1); - } - - int16_t dx, dy; - dx = x1 - x0; - dy = abs(y1 - y0); - - int16_t err = dx / 2; - int16_t ystep; - - if (y0 < y1) { - ystep = 1; - } else { - ystep = -1; - } - - for (; x0<=x1; x0++) { - if (steep) { - drawPixel(y0, x0, color); - } else { - drawPixel(x0, y0, color); - } - err -= dy; - if (err < 0) { - y0 += ystep; - err += dx; - } - } -} - -// Draw a rectangle -void Adafruit_GFX::drawRect(int16_t x, int16_t y, - int16_t w, int16_t h, - uint16_t color) { - drawFastHLine(x, y, w, color); - drawFastHLine(x, y+h-1, w, color); - drawFastVLine(x, y, h, color); - drawFastVLine(x+w-1, y, h, color); -} - -void Adafruit_GFX::drawFastVLine(int16_t x, int16_t y, - int16_t h, uint16_t color) { - // Update in subclasses if desired! - drawLine(x, y, x, y+h-1, color); -} - -void Adafruit_GFX::drawFastHLine(int16_t x, int16_t y, - int16_t w, uint16_t color) { - // Update in subclasses if desired! - drawLine(x, y, x+w-1, y, color); -} - -void Adafruit_GFX::fillRect(int16_t x, int16_t y, int16_t w, int16_t h, - uint16_t color) { - // Update in subclasses if desired! - for (int16_t i=x; i= y1 >= y0) - if (y0 > y1) { - swap(y0, y1); swap(x0, x1); - } - if (y1 > y2) { - swap(y2, y1); swap(x2, x1); - } - if (y0 > y1) { - swap(y0, y1); swap(x0, x1); - } - - if(y0 == y2) { // Handle awkward all-on-same-line case as its own thing - a = b = x0; - if(x1 < a) a = x1; - else if(x1 > b) b = x1; - if(x2 < a) a = x2; - else if(x2 > b) b = x2; - drawFastHLine(a, y0, b-a+1, color); - return; - } - - int16_t - dx01 = x1 - x0, - dy01 = y1 - y0, - dx02 = x2 - x0, - dy02 = y2 - y0, - dx12 = x2 - x1, - dy12 = y2 - y1, - sa = 0, - sb = 0; - - // For upper part of triangle, find scanline crossings for segments - // 0-1 and 0-2. If y1=y2 (flat-bottomed triangle), the scanline y1 - // is included here (and second loop will be skipped, avoiding a /0 - // error there), otherwise scanline y1 is skipped here and handled - // in the second loop...which also avoids a /0 error here if y0=y1 - // (flat-topped triangle). - if(y1 == y2) last = y1; // Include y1 scanline - else last = y1-1; // Skip it - - for(y=y0; y<=last; y++) { - a = x0 + sa / dy01; - b = x0 + sb / dy02; - sa += dx01; - sb += dx02; - /* longhand: - a = x0 + (x1 - x0) * (y - y0) / (y1 - y0); - b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); - */ - if(a > b) swap(a,b); - drawFastHLine(a, y, b-a+1, color); - } - - // For lower part of triangle, find scanline crossings for segments - // 0-2 and 1-2. This loop is skipped if y1=y2. - sa = dx12 * (y - y1); - sb = dx02 * (y - y0); - for(; y<=y2; y++) { - a = x1 + sa / dy12; - b = x0 + sb / dy02; - sa += dx12; - sb += dx02; - /* longhand: - a = x1 + (x2 - x1) * (y - y1) / (y2 - y1); - b = x0 + (x2 - x0) * (y - y0) / (y2 - y0); - */ - if(a > b) swap(a,b); - drawFastHLine(a, y, b-a+1, color); - } -} - -void Adafruit_GFX::drawBitmap(int16_t x, int16_t y, - const uint8_t *bitmap, int16_t w, int16_t h, - uint16_t color) { - - int16_t i, j, byteWidth = (w + 7) / 8; - - for(j=0; j> (i & 7))) { - drawPixel(x+i, y+j, color); - } - } - } -} - -//#if ARDUINO >= 100 -size_t Adafruit_GFX::write(uint8_t c) { -//#else -//void Adafruit_GFX::write(uint8_t c) { -//#endif - if (c == '\n') { - cursor_y += textsize*8; - cursor_x = 0; - } else if (c == '\r') { - // skip em - } else { - drawChar(cursor_x, cursor_y, c, textcolor, textbgcolor, textsize); - cursor_x += textsize*6; - if (wrap && (cursor_x > (_width - textsize*6))) { - cursor_y += textsize*8; - cursor_x = 0; - } - } -//#if ARDUINO >= 100 - return 1; -//#endif -} - -// Draw a character -void Adafruit_GFX::drawChar(int16_t x, int16_t y, unsigned char c, - uint16_t color, uint16_t bg, uint8_t size) { -#ifdef LOAD_GLCD - if((x >= _width) || // Clip right - (y >= _height) || // Clip bottom - ((x + 6 * size - 1) < 0) || // Clip left - ((y + 8 * size - 1) < 0)) // Clip top - return; - - for (int8_t i=0; i<6; i++ ) { - uint8_t line; - if (i == 5) - line = 0x0; - else - line = pgm_read_byte(font+(c*5)+i); - for (int8_t j = 0; j<8; j++) { - if (line & 0x1) { - if (size == 1) // default size - drawPixel(x+i, y+j, color); - else { // big size - fillRect(x+(i*size), y+(j*size), size, size, color); - } - } else if (bg != color) { - if (size == 1) // default size - drawPixel(x+i, y+j, bg); - else { // big size - fillRect(x+i*size, y+j*size, size, size, bg); - } - } - line >>= 1; - } - } -#endif -} - -void Adafruit_GFX::setCursor(int16_t x, int16_t y) { - cursor_x = x; - cursor_y = y; -} - -void Adafruit_GFX::setTextSize(uint8_t s) { - textsize = (s > 0) ? s : 1; -} - -void Adafruit_GFX::setTextColor(uint16_t c) { - // For 'transparent' background, we'll set the bg - // to the same as fg instead of using a flag - textcolor = textbgcolor = c; -} - -void Adafruit_GFX::setTextColor(uint16_t c, uint16_t b) { - textcolor = c; - textbgcolor = b; -} - -void Adafruit_GFX::setTextWrap(boolean w) { - wrap = w; -} - -uint8_t Adafruit_GFX::getRotation(void) { - return rotation; -} - -void Adafruit_GFX::setRotation(uint8_t x) { - rotation = (x & 3); - switch(rotation) { - case 0: - case 2: - _width = WIDTH; - _height = HEIGHT; - break; - case 1: - case 3: - _width = HEIGHT; - _height = WIDTH; - break; - } -} - -// Return the size of the display (per current rotation) -int16_t Adafruit_GFX::width(void) { - return _width; -} - -int16_t Adafruit_GFX::height(void) { - return _height; -} - -void Adafruit_GFX::invertDisplay(boolean i) { - // Do nothing, must be subclassed if supported } /*************************************************************************************** ** Function name: drawUnicode ** Descriptions: draw a unicode ***************************************************************************************/ -int16_t Adafruit_GFX::drawUnicode(uint16_t uniCode, int16_t x, int16_t y, int16_t size) +int16_t Adafruit_GFX_AS::drawUnicode(uint16_t uniCode, int16_t x, int16_t y, int16_t size) { if (size) uniCode -= 32; @@ -615,7 +179,7 @@ return (width+gap)*textsize; // x + ** Function name: drawNumber unsigned with size ** Descriptions: drawNumber ***************************************************************************************/ -int16_t Adafruit_GFX::drawNumber(long long_num,int16_t poX, int16_t poY, int16_t size) +int16_t Adafruit_GFX_AS::drawNumber(long long_num,int16_t poX, int16_t poY, int16_t size) { char tmp[10]; if (long_num < 0) sprintf(tmp, "%li", long_num); @@ -627,7 +191,7 @@ int16_t Adafruit_GFX::drawNumber(long long_num,int16_t poX, int16_t poY, int16_t ** Function name: drawChar ** Descriptions: draw char ***************************************************************************************/ -int16_t Adafruit_GFX::drawChar(char c, int16_t x, int16_t y, int16_t size) +int16_t Adafruit_GFX_AS::drawChar(char c, int16_t x, int16_t y, int16_t size) { return drawUnicode(c, x, y, size); } @@ -636,7 +200,7 @@ int16_t Adafruit_GFX::drawChar(char c, int16_t x, int16_t y, int16_t size) ** Function name: drawString ** Descriptions: draw string ***************************************************************************************/ -int16_t Adafruit_GFX::drawString(char *string, int16_t poX, int16_t poY, int16_t size) +int16_t Adafruit_GFX_AS::drawString(char *string, int16_t poX, int16_t poY, int16_t size) { int16_t sumX = 0; @@ -654,7 +218,7 @@ int16_t Adafruit_GFX::drawString(char *string, int16_t poX, int16_t poY, int16_t ** Function name: drawCentreString ** Descriptions: draw string across centre ***************************************************************************************/ -int16_t Adafruit_GFX::drawCentreString(char *string, int16_t dX, int16_t poY, int16_t size) +int16_t Adafruit_GFX_AS::drawCentreString(char *string, int16_t dX, int16_t poY, int16_t size) { int16_t sumX = 0; int16_t len = 0; @@ -703,7 +267,7 @@ int16_t Adafruit_GFX::drawCentreString(char *string, int16_t dX, int16_t poY, in ** Function name: drawRightString ** Descriptions: draw string right justified ***************************************************************************************/ -int16_t Adafruit_GFX::drawRightString(char *string, int16_t dX, int16_t poY, int16_t size) +int16_t Adafruit_GFX_AS::drawRightString(char *string, int16_t dX, int16_t poY, int16_t size) { int16_t sumX = 0; int16_t len = 0; @@ -754,7 +318,7 @@ int16_t Adafruit_GFX::drawRightString(char *string, int16_t dX, int16_t poY, int ** Function name: drawFloat ** Descriptions: drawFloat ***************************************************************************************/ -int16_t Adafruit_GFX::drawFloat(float floatNumber, int16_t decimal, int16_t poX, int16_t poY, int16_t size) +int16_t Adafruit_GFX_AS::drawFloat(float floatNumber, int16_t decimal, int16_t poX, int16_t poY, int16_t size) { unsigned long temp=0; float decy=0.0; diff --git a/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.h b/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.h index 974c47ca0..93055a599 100644 --- a/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.h +++ b/STM32F1/libraries/Adafruit_GFX_AS/Adafruit_GFX_AS.h @@ -1,64 +1,20 @@ -#ifndef _ADAFRUIT_GFX_H -#define _ADAFRUIT_GFX_H +#ifndef _ADAFRUIT_GFX_AS_H +#define _ADAFRUIT_GFX_AS_H #include "Load_fonts.h" -#if ARDUINO >= 100 - #include "Arduino.h" - #include "Print.h" -#else - #include "WProgram.h" -#endif +#include #define swap(a, b) { int16_t t = a; a = b; b = t; } -class Adafruit_GFX : public Print { - - public: - - Adafruit_GFX(int16_t w, int16_t h); // Constructor - - // This MUST be defined by the subclass: - virtual void drawPixel(int16_t x, int16_t y, uint16_t color) = 0; - - // These MAY be overridden by the subclass to provide device-specific - // optimized code. Otherwise 'generic' versions are used. - virtual void - drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color), - drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color), - drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color), - drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), - fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color), - fillScreen(uint16_t color), - invertDisplay(boolean i); - - // These exist only with Adafruit_GFX (no subclass overrides) - void - drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - uint16_t color), - fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color), - fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername, - int16_t delta, uint16_t color), - drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, - int16_t x2, int16_t y2, uint16_t color), - drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, - int16_t radius, uint16_t color), - drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, - int16_t w, int16_t h, uint16_t color), - drawChar(int16_t x, int16_t y, unsigned char c, uint16_t color, - uint16_t bg, uint8_t size), - setCursor(int16_t x, int16_t y), - setTextColor(uint16_t c), - setTextColor(uint16_t c, uint16_t bg), - setTextSize(uint8_t s), - setTextWrap(boolean w), - setRotation(uint8_t r); - +/** This class provides a few extensions to Adafruit_GFX, mostly for compatibility with + * existing code. Note that the fonts ("size" parameter) are not the same ones use as the + * ones provided by Adafruit_GFX. Using any of the functions defined in this class will + * therefore pull additional font tables into flash. If that is an issue, try to stick + * to the base class, or trim down the fonts loaded in Load_fonts.h . */ +class Adafruit_GFX_AS : public Adafruit_GFX { +public: + Adafruit_GFX_AS(int16_t w, int16_t h); // Constructor int16_t drawUnicode(uint16_t uniCode, int16_t x, int16_t y, int16_t size); int16_t drawNumber(long long_num,int16_t poX, int16_t poY, int16_t size); int16_t drawChar(char c, int16_t x, int16_t y, int16_t size); @@ -66,32 +22,6 @@ class Adafruit_GFX : public Print { int16_t drawCentreString(char *string, int16_t dX, int16_t poY, int16_t size); int16_t drawRightString(char *string, int16_t dX, int16_t poY, int16_t size); int16_t drawFloat(float floatNumber,int16_t decimal,int16_t poX, int16_t poY, int16_t size); - -#if ARDUINO >= 100 - virtual size_t write(uint8_t); -#else - virtual void write(uint8_t); -#endif - - int16_t - height(void), - width(void); - - uint8_t getRotation(void); - - protected: - const int16_t - WIDTH, HEIGHT; // This is the 'raw' display w/h - never changes - int16_t - _width, _height, // Display w/h as modified by current rotation - cursor_x, cursor_y; - uint16_t - textcolor, textbgcolor; - uint8_t - textsize, - rotation; - boolean - wrap; // If set, 'wrap' text at right edge of display }; -#endif // _ADAFRUIT_GFX_H +#endif // _ADAFRUIT_GFX_AS_H diff --git a/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.cpp b/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.cpp index 914e4d153..20d434faa 100644 --- a/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.cpp +++ b/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.cpp @@ -8,7 +8,7 @@ Includes DMA transfers on DMA1 CH2 and CH3. // Constructor when using hardware SPI. Faster, but must use SPI pins // specific to each board type (e.g. 11,13 for Uno, 51,52 for Mega, etc.) -Adafruit_ILI9341_STM::Adafruit_ILI9341_STM(int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT) +Adafruit_ILI9341_STM::Adafruit_ILI9341_STM(int8_t cs, int8_t dc, int8_t rst) : Adafruit_GFX_AS(ILI9341_TFTWIDTH, ILI9341_TFTHEIGHT) { _cs = cs; _dc = dc; diff --git a/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.h b/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.h index b77b3562f..692015c5b 100644 --- a/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.h +++ b/STM32F1/libraries/Adafruit_ILI9341_STM/Adafruit_ILI9341_STM.h @@ -95,7 +95,7 @@ This library has been modified for the Maple Mini #define ILI9341_GREENYELLOW 0xAFE5 /* 173, 255, 47 */ #define ILI9341_PINK 0xF81F -class Adafruit_ILI9341_STM : public Adafruit_GFX { +class Adafruit_ILI9341_STM : public Adafruit_GFX_AS { public: From ffc0b29880f24ec7f79955697688bd38c8db06d3 Mon Sep 17 00:00:00 2001 From: Thomas Friedrichsmeier Date: Thu, 15 Mar 2018 08:16:42 +0100 Subject: [PATCH 072/373] Update README --- STM32F1/libraries/Adafruit_GFX_AS/README.txt | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/STM32F1/libraries/Adafruit_GFX_AS/README.txt b/STM32F1/libraries/Adafruit_GFX_AS/README.txt index 43cf08afe..f5ccf000e 100644 --- a/STM32F1/libraries/Adafruit_GFX_AS/README.txt +++ b/STM32F1/libraries/Adafruit_GFX_AS/README.txt @@ -1,14 +1,22 @@ -This library has minor modifications to support STM32. -It also was modified to include additional fonts. +This library adds a few font-related functions on top of the Adafruit_GFX library (which you need to install, separately). -This is the core graphics library for all our displays, providing a common set of graphics primitives (points, lines, circles, etc.). It needs to be paired with a hardware-specific library for each display device we carry (to handle the lower-level functions). +Historically, Adafruit_GFX_AS started as a fork of Adafruit_GFX. Most importantly, it added support for using additional fonts, +before similar functionality became available in Adafruit_GFX. + +Today, the main point of this library is to continue supporting projects that have made use of the functions added in Adafruit_GFX_AS, +while also being fully compatible with Adafruit_GFX (which is used as the base class). It is not recommended to use the functions +provided by the Adafruit_GFX_AS class in newly developed code. + +To use this library with a driver that is not based on Adafruit_GFX_AS, all you will have to do is to replace "Adafrui_GFX" with "Adafruit_GFX_AS" +in your driver code. This will usually be three places: The #include-directive, the base-class declaration, and the call to the base-contstructor. Adafruit invests time and resources providing this open source code, please support Adafruit and open-source hardware by purchasing products from Adafruit! -Written by Limor Fried/Ladyada for Adafruit Industries. +Adafruit_GFX Written by Limor Fried/Ladyada for Adafruit Industries. +Adafruit_GFX_AS funtions added by "Bodmer"(?) BSD license, check license.txt for more information. All text above must be included in any redistribution. -To download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX. Confirm that the Adafruit_GFX folder contains Adafruit_GFX.cpp and Adafruit_GFX.h +To download, click the DOWNLOAD ZIP button, uncompress and rename the uncompressed folder Adafruit_GFX_AS. Confirm that the Adafruit_GFX_AS folder contains Adafruit_GFX_AS.cpp and Adafruit_GFX_AS.h -Place the Adafruit_GFX library folder your /Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. +Place the Adafruit_GFX_AS library folder your /Libraries/ folder. You may need to create the Libraries subfolder if its your first library. Restart the IDE. From ad0090bc1bc76c23dd1e4f5ec45de7f4d87aa8ba Mon Sep 17 00:00:00 2001 From: stevstrong Date: Thu, 15 Mar 2018 19:23:49 +0100 Subject: [PATCH 073/373] Update i2c.c fix for unrecognized devices having ID 0x7.. --- STM32F1/cores/maple/libmaple/i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/libmaple/i2c.c b/STM32F1/cores/maple/libmaple/i2c.c index c4ed2458f..6724d162f 100644 --- a/STM32F1/cores/maple/libmaple/i2c.c +++ b/STM32F1/cores/maple/libmaple/i2c.c @@ -324,7 +324,7 @@ void _i2c_irq_handler(i2c_dev *dev) { /* * EV6: Slave address sent */ - if (sr1 & I2C_SR1_ADDR) { + if (sr1 & (I2C_SR1_ADDR|I2C_SR1_ADD10)) { /* * Special case event EV6_1 for master receiver. * Generate NACK and restart/stop condition after ADDR From 41b165cae0d2c0493f178e0ebfff89a1afe5ed7a Mon Sep 17 00:00:00 2001 From: stevstrong Date: Tue, 20 Mar 2018 11:53:03 +0100 Subject: [PATCH 074/373] Increase tone resolution Small change to increase tone resolution by multiplying before dividing. --- STM32F1/cores/maple/tone.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/cores/maple/tone.cpp b/STM32F1/cores/maple/tone.cpp index b249a784a..9d0b846d0 100644 --- a/STM32F1/cores/maple/tone.cpp +++ b/STM32F1/cores/maple/tone.cpp @@ -60,7 +60,7 @@ uint8_t tone_ntimer = TONE_TIMER; // timer used to generate freque bool tone_state = true; // last pin state for toggling short tone_pin = -1; // pin for outputting sound short tone_freq = 444; // tone frequency (0=pause) -volatile uint32_t tone_nhw = 0; // tone duration in number of half waves +volatile uint32_t tone_nhw = 0; // tone duration in number of half waves uint16_t tone_tcount = 0; // time between handler calls in 1/36 usec uint16_t tone_ncount = 0; // handler call between toggling uint16_t tone_n = 0; // remaining handler calls before toggling @@ -151,7 +151,7 @@ void tone(uint32_t pin, uint32_t freq, uint32_t duration) { tone_ncount = tone_n = (count>>16)+1; // number of 16-bit count chunk tone_tcount = count/tone_ncount; // size of count chunk if(duration > 0) // number of half waves to be generated - tone_nhw = ((duration*freq)/1000)<<1; + tone_nhw = (2*duration*freq)/1000; else // no duration specified, continuous sound until noTone() called tone_nhw = 0; From e76e8adb5254aa48bb04e483a3eb77e032331cea Mon Sep 17 00:00:00 2001 From: stevstrong Date: Fri, 23 Mar 2018 10:55:26 +0100 Subject: [PATCH 075/373] F1 tone resolution: try to force compiler optimisation --- STM32F1/cores/maple/tone.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/tone.cpp b/STM32F1/cores/maple/tone.cpp index 9d0b846d0..c179c348d 100644 --- a/STM32F1/cores/maple/tone.cpp +++ b/STM32F1/cores/maple/tone.cpp @@ -151,7 +151,7 @@ void tone(uint32_t pin, uint32_t freq, uint32_t duration) { tone_ncount = tone_n = (count>>16)+1; // number of 16-bit count chunk tone_tcount = count/tone_ncount; // size of count chunk if(duration > 0) // number of half waves to be generated - tone_nhw = (2*duration*freq)/1000; + tone_nhw = duration*freq*2/1000; else // no duration specified, continuous sound until noTone() called tone_nhw = 0; From 9e19f0ecc34b5500451d7948a8cd78fcb31b9547 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 24 Mar 2018 00:13:27 +0100 Subject: [PATCH 076/373] Update platform.txt cosmetics: remove unnecessary blank space --- STM32F1/platform.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index de1f206dc..5cc1841e9 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -57,7 +57,7 @@ compiler.ar.extra_flags= compiler.elf2hex.extra_flags= -compiler.libs.c.flags="-I{build.system.path}/libmaple" "-I{build.system.path}/libmaple/include" "-I{build.system.path}/libmaple/stm32f1/include" "-I{build.system.path}/libmaple/usb/stm32f1" "-I{build.system.path}/libmaple/usb/usb_lib" +compiler.libs.c.flags="-I{build.system.path}/libmaple" "-I{build.system.path}/libmaple/include" "-I{build.system.path}/libmaple/stm32f1/include" "-I{build.system.path}/libmaple/usb/stm32f1" "-I{build.system.path}/libmaple/usb/usb_lib" @@ -160,4 +160,4 @@ tools.jlink_upload.path.linux={runtime.hardware.path}/tools/linux tools.jlink_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.jlink_upload.upload.params.verbose=-d tools.jlink_upload.upload.params.quiet=n -tools.jlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" \ No newline at end of file +tools.jlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" From 3821c3ab97685fa276d5646e46f7477735633653 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 24 Mar 2018 10:09:47 +0100 Subject: [PATCH 077/373] F4: adds the macro "word" similar to already existing solution for F1 --- STM32F4/cores/maple/wirish_math.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/STM32F4/cores/maple/wirish_math.h b/STM32F4/cores/maple/wirish_math.h index e0373728d..15102735a 100644 --- a/STM32F4/cores/maple/wirish_math.h +++ b/STM32F4/cores/maple/wirish_math.h @@ -149,4 +149,11 @@ double sqrt(double x); */ double pow(double x, double y); +inline uint16_t makeWord( uint16_t w ) { return w; } + +inline uint16_t makeWord( uint8_t h, uint8_t l ) { return (h << 8) | l; } + +#define word(...) makeWord(__VA_ARGS__) + + #endif From 0a88fe3cfa08af4b655620e71d3809ea14fdd948 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Tue, 27 Mar 2018 20:13:04 +0200 Subject: [PATCH 078/373] F1 SPI slave: remove RXONLY flag to enable data transmission see https://github.com/rogerclarkmelbourne/Arduino_STM32/issues/471 --- STM32F1/libraries/SPI/src/SPI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/SPI/src/SPI.cpp b/STM32F1/libraries/SPI/src/SPI.cpp index c07e2ea4a..4d8787d83 100644 --- a/STM32F1/libraries/SPI/src/SPI.cpp +++ b/STM32F1/libraries/SPI/src/SPI.cpp @@ -161,7 +161,7 @@ void SPIClass::begin(void) { void SPIClass::beginSlave(void) { spi_init(_currentSetting->spi_d); configure_gpios(_currentSetting->spi_d, 0); - uint32 flags = ((_currentSetting->bitOrder == MSBFIRST ? SPI_FRAME_MSB : SPI_FRAME_LSB) | _currentSetting->dataSize | SPI_RX_ONLY); + uint32 flags = ((_currentSetting->bitOrder == MSBFIRST ? SPI_FRAME_MSB : SPI_FRAME_LSB) | _currentSetting->dataSize); spi_slave_enable(_currentSetting->spi_d, (spi_mode)_currentSetting->dataMode, flags); // added for DMA callbacks. _currentSetting->state = SPI_STATE_READY; From 7dce451ebc9ec79dd2157913202fa0c03daf74ae Mon Sep 17 00:00:00 2001 From: victorpv Date: Wed, 28 Mar 2018 21:50:49 -0500 Subject: [PATCH 079/373] SDIO updates Increase performance and compatibility with cards. --- STM32F1/cores/maple/sdio.cpp | 51 ++- STM32F1/libraries/SDIO/SdioF1.cpp | 571 +++++++++++++++++++++++------- STM32F1/libraries/SDIO/SdioF1.h | 4 +- 3 files changed, 482 insertions(+), 144 deletions(-) diff --git a/STM32F1/cores/maple/sdio.cpp b/STM32F1/cores/maple/sdio.cpp index 8bd94915b..2edf501de 100644 --- a/STM32F1/cores/maple/sdio.cpp +++ b/STM32F1/cores/maple/sdio.cpp @@ -32,8 +32,8 @@ sdio_dev * SDIO = SDIO_BASE; -#define DELAY_LONG 10 -#define DELAY_SHORT 1 +#define DELAY_LONG 20 +#define DELAY_SHORT 2 uint8_t dly = DELAY_LONG; // microseconds delay after accessing registers @@ -43,9 +43,13 @@ uint8_t dly = DELAY_LONG; // microseconds delay after accessing registers void sdio_gpios_init(void) { gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_AF_OUTPUT_PP); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); +/* gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_AF_OUTPUT_PP); +*/ + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_PU); gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_AF_OUTPUT_PP); /* @@ -63,12 +67,12 @@ void sdio_gpios_init(void) void sdio_gpios_deinit(void) { - gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_INPUT_FLOATING); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_INPUT_PU); /* * Todo just remove it, not needed for F1. @@ -110,19 +114,35 @@ void sdio_power_off(void) void sdio_set_clock(uint32_t clk) { - if (clk>24000000UL) clk = 24000000UL; // limit the SDIO master clock to 24MHz + /* + * limit the SDIO master clock to 8/3 of PCLK2.See RM 22.3 + * Also limited to no more than 48Mhz + */ + clk = min(clk,(SDIOCLK/3)*8); + clk = min(clk,36000000); if (clk<1000000) dly = DELAY_LONG; else dly = DELAY_SHORT; + /* + * round up divider, so we don't run the card over the speed supported. + + */ + uint32 div = SDIOCLK/clk + (SDIOCLK % clk != 0) - 2; + + sdio_disable(); - SDIO->CLKCR = (SDIO->CLKCR & (~(SDIO_CLKCR_CLKDIV|SDIO_CLKCR_BYPASS))) | SDIO_CLKCR_CLKEN | (((SDIOCLK/clk)-2)&SDIO_CLKCR_CLKDIV); + //Serial.println(div,DEC); + SDIO->CLKCR = (SDIO->CLKCR & (~(SDIO_CLKCR_CLKDIV|SDIO_CLKCR_BYPASS))) | SDIO_CLKCR_PWRSAV | SDIO_CLKCR_HWFC_EN | SDIO_CLKCR_CLKEN | (div & SDIO_CLKCR_CLKDIV); delay_us(dly); } void sdio_set_dbus_width(uint16_t bus_w) { SDIO->CLKCR = (SDIO->CLKCR & (~SDIO_CLKCR_WIDBUS)) | bus_w; + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_AF_OUTPUT_PP); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_AF_OUTPUT_PP); delay_us(dly); } @@ -149,9 +169,10 @@ void sdio_disable(void) */ void sdio_begin(void) { - sdio_gpios_init(); + sdio_init(); sdio_power_on(); + sdio_gpios_init(); // Set initial SCK rate. sdio_set_clock(400000); delay_us(200); // generate 80 pulses at 400kHz @@ -162,11 +183,12 @@ void sdio_begin(void) */ void sdio_end(void) { + while ( sdio_cmd_xfer_ongoing() ); sdio_disable(); - while ( sdio_cmd_xfer_ongoing() ); + sdio_gpios_deinit(); sdio_power_off(); rcc_clk_disable(RCC_SDIO); - sdio_gpios_deinit(); + } /** @@ -187,6 +209,7 @@ uint8_t sdio_cmd_send(uint16_t cmd_index_resp_type, uint32_t arg) while ( !(SDIO->STA&(SDIO_STA_CMDREND|SDIO_STA_CMD_ERROR_FLAGS)) ) ; } else break; // no response required if ( SDIO->STA&(SDIO_STA_CMDREND|SDIO_STA_CTIMEOUT) ) + //if ( SDIO->STA&(SDIO_STA_CMDREND) ) break; // response received or timeout // ignore CRC error for CMD5 and ACMD41 if ( ((cmd_index_resp_type&SDIO_CMD_CMDINDEX)==5) || ((cmd_index_resp_type&SDIO_CMD_CMDINDEX)==41) ) diff --git a/STM32F1/libraries/SDIO/SdioF1.cpp b/STM32F1/libraries/SDIO/SdioF1.cpp index 8957b37d3..c0e5eae27 100644 --- a/STM32F1/libraries/SDIO/SdioF1.cpp +++ b/STM32F1/libraries/SDIO/SdioF1.cpp @@ -61,6 +61,12 @@ #define CMD38_XFERTYP (uint16_t)( CMD38 | CMD_RESP_R1b ) #define ACMD41_XFERTYP (uint16_t)( ACMD41 | CMD_RESP_R3 ) +/* + * AMD42 to enable disable CD/D3 pull up. Needed for 4bit mode. + */ +const uint8_t ACMD42 = 0X2A; +#define ACMD42_XFERTYP (uint16_t)( ACMD41 | CMD_RESP_R1 ) + #define CMD55_XFERTYP (uint16_t)( CMD55 | CMD_RESP_R1 ) //============================================================================= @@ -69,14 +75,27 @@ static void initSDHC(void); static bool isBusyCMD13(void); static bool isBusyTransferComplete(void); +static bool isBusyTransferCRC(void); //static bool isBusyCommandComplete(); //static bool isBusyCommandInhibit(); static bool readReg16(uint32_t xfertyp, void* data); //static void setSdclk(uint32_t kHzMax); static bool yieldTimeout(bool (*fcn)(void)); +static bool yieldDmaStatus(void); static bool waitDmaStatus(void); static bool waitTimeout(bool (*fcn)(void)); //----------------------------------------------------------------------------- +static const uint32_t IDLE_STATE = 0; +static const uint32_t READ_STATE = 1; +static const uint32_t WRITE_STATE = 2; +volatile uint32_t m_curLba; +volatile uint32_t m_limitLba; +volatile uint8_t m_curState; +volatile uint64_t m_totalReadLbas = 0; +volatile uint64_t m_readErrors = 0; +volatile uint64_t m_writeErrors = 0; +volatile uint64_t m_totalWriteLbas = 0; + #define TRX_RD 0 #define TRX_WR 1 static uint8_t m_dir = TRX_RD; @@ -97,27 +116,26 @@ static cid_t m_cid; static csd_t m_csd; static uint32_t t = 0; //============================================================================= -/* - * Todo Remove this or change it, but rather remove since this can be checked with debugger. - */ + #if USE_DEBUG_MODE #define DBG_PRINT() { \ Serial.write('_'); Serial.print(__FUNCTION__); Serial.write('_'); Serial.print(__LINE__); Serial.print(": "); \ - Serial.print("DMA->LISR: "); Serial.print(SDIO_DMA_DEV->regs->LISR, HEX); \ + Serial.print("DMA->ISR: 0x"); Serial.print(SDIO_DMA_DEV->regs->ISR, HEX); \ /*Serial.print("DMA->HISR: "); Serial.println(SDIO_DMA_DEV->regs->HISR, HEX);*/ \ - Serial.print(", DMA->CR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].CR, HEX); \ - Serial.print(", DMA->NDTR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].NDTR, HEX); \ - /**/Serial.print(", DMA->PAR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].PAR, HEX); \ - /**/Serial.print(", DMA->M0AR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].M0AR, HEX); \ - Serial.print(", DMA->FCR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].FCR, HEX); \ + Serial.print(", DMA->CCR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CCR4, HEX); \ + Serial.print(", DMA->CNDTR: "); Serial.print(SDIO_DMA_DEV->regs->CNDTR4,DEC); \ + /**/Serial.print(", DMA->CPAR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CPAR4, HEX); \ + /**/Serial.print(", DMA->CMAR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CMAR4, HEX); \ + Serial.print(", DMA->IFCR: 0x"); Serial.print(SDIO_DMA_DEV->regs->IFCR, HEX); \ \ /*Serial.print(" SDIO->POWER: "); Serial.println(SDIO->POWER, HEX);*/ \ - Serial.print(", SDIO->CLKCR: "); Serial.print(SDIO->CLKCR, HEX); \ - Serial.print(", SDIO->DTIMER: "); Serial.print(SDIO->DTIMER, HEX); \ - Serial.print(", SDIO->DCTRL: "); Serial.print(SDIO->DCTRL, HEX); \ + Serial.print(", SDIO->CLKCR: 0x"); Serial.print(SDIO->CLKCR, HEX); \ + Serial.print(", SDIO->DTIMER: 0x"); Serial.print(SDIO->DTIMER, HEX); \ + Serial.print(", SDIO->DCTRL: 0x"); Serial.print(SDIO->DCTRL, HEX); \ /**/Serial.print(", SDIO->DLEN: "); Serial.print(SDIO->DLEN); \ Serial.print(", SDIO->DCOUNT: "); Serial.print(SDIO->DCOUNT); \ - Serial.print(", SDIO->STA: "); Serial.println(SDIO->STA, HEX); \ + Serial.print(", SDIO->STA: 0x"); Serial.println(SDIO->STA, HEX); \ + Serial.print(", SDIO->FIFOCNT: "); Serial.println(SDIO->FIFOCNT); \ /*delay(1);*/ \ } #define DBG_PIN PD0 @@ -131,7 +149,7 @@ static void _panic(const char *message, uint32_t code) { Serial.print(message); Serial.println(code, HEX); //Block the execution with blinky leds - while (1); + while (1) {delay (1);}; /* pinMode(BOARD_LED_PIN, OUTPUT); //pinMode(BOARD_LED2_PIN, OUTPUT); @@ -171,13 +189,14 @@ void yield(void) } val = dma_get_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - if ( val & DMA_ISR_FEIF ) { +/* if ( val & DMA_ISR_FEIF ) { val ^= DMA_ISR_FEIF; dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); } +*/ if ( val ) { if (val & DMA_ISR_TEIF) Serial.print(" TEIF"); - if (val & DMA_ISR_DMEIF) Serial.print(" DMEIF"); + //if (val & DMA_ISR_DMEIF) Serial.print(" DMEIF"); //if (val & DMA_ISR_FEIF) Serial.print(" FEIF"); _panic(" - DMA: Data Transmission Error ", val); } @@ -208,7 +227,7 @@ static bool cardCommand(uint16_t xfertyp, uint32_t arg) #if USE_DEBUG_MODE==2 Serial.print("cardCommand: "); Serial.print(xfertyp&SDIO_CMD_CMDINDEX); Serial.print(", arg: "); Serial.print(arg, HEX); #endif - uint8_t resp = sdio_cmd_send(xfertyp, arg); // returns non-zero if fails, zero if OK + uint8_t resp = sdio_cmd_send(xfertyp, arg); // returns non-zero if OK, zero if it fails #if USE_DEBUG_MODE==2 Serial.print(", resp: "); Serial.print(resp, HEX); Serial.print(", SDIO->STA: "); Serial.print(SDIO->STA, HEX); Serial.print(", cmd_resp: "); Serial.print(SDIO->RESP[0], HEX); @@ -264,19 +283,38 @@ static bool isBusyCMD13(void) { } return !(SDIO->RESP[0] & CARD_STATUS_READY_FOR_DATA); } -/*---------------------------------------------------------------------------*/ + +/* + * Returns False if DMA transfer disabled. + * True otherwise + */ +static bool inline isEnabledDMA(void) +{ + return dma_is_enabled(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); +} + +/* + * Returns False if DMA transfer is completed or in error. + * True otherwise + */ static bool isBusyDMA(void) { + if (!isEnabledDMA()) return false; uint8_t isr = dma_get_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - isr &= DMA_ISR_TCIF | DMA_ISR_TEIF; + isr &= DMA_ISR_TCIF | DMA_ISR_TEIF; //if (isr&DMA_ISR_TCIF) dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return !(isr); // ignore transfer error flag } + /*---------------------------------------------------------------------------*/ +/* + * Returns true while the transfer has not completed + * False when it has completed. + */ static bool isBusyTransferComplete(void) { uint32_t mask = SDIO->STA &(SDIO_STA_DATAEND | SDIO_STA_TRX_ERROR_FLAGS); -#if USE_DEBUG_MODE +//#if USE_DEBUG_MODE if ( mask & SDIO_STA_TRX_ERROR_FLAGS ) { Serial.print("XFER ERROR: SDIO->STA: "); Serial.print(SDIO->STA, HEX); if (mask & SDIO_STA_STBITERR) Serial.print(" STBITERR"); @@ -286,13 +324,43 @@ static bool isBusyTransferComplete(void) if (mask & SDIO_STA_DCRCFAIL) Serial.print(" DCRCFAIL"); Serial.println(); } -#endif +//#endif if (mask) { dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return false; } return true; } + + +/* + * New function, to follow Reference Manual sequence. + * Returns true if still not confirmed DBCKEND: Data block sent/received (CRC check passed) + * False when it has completed the transfer with CRC check. + */ +static bool isBusyTransferCRC(void) +{ + uint32_t mask = SDIO->STA &(SDIO_STA_DBCKEND | SDIO_STA_TRX_ERROR_FLAGS); +#if USE_DEBUG_MODE + if ( mask & SDIO_STA_TRX_ERROR_FLAGS ) { + Serial.print("XFER ERROR: SDIO->STA: "); Serial.print(SDIO->STA, HEX); + if (mask & SDIO_STA_STBITERR) Serial.print(" STBITERR"); + if (mask & SDIO_STA_RXOVERR) Serial.print(" RXOVERR"); + if (mask & SDIO_STA_TXUNDERR) Serial.print(" TXUNDERR"); + if (mask & SDIO_STA_DTIMEOUT) Serial.print(" DTIMEOUT"); + if (mask & SDIO_STA_DCRCFAIL) Serial.print(" DCRCFAIL"); + Serial.println(); + } +#endif + if (mask) { + //dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + //Serial.print("SDIO->STA SDIO_STA_DBCKEND"); Serial.println(SDIO->STA && SDIO_STA_DBCKEND, HEX); + return false; + } + return true; +} + + /*---------------------------------------------------------------------------*/ static void trxStart(uint8_t* buf, uint32_t n, uint8_t dir) { @@ -308,6 +376,12 @@ static bool trxStop() if (!cardCommand(CMD12_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD12); } + /* + * Added this to wait to complete on sync. + */ + if (waitTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } if ( t ) { Serial.print(", in "); Serial.println(millis()-t); t = 0; @@ -315,52 +389,70 @@ static bool trxStop() return true; } /*---------------------------------------------------------------------------*/ -static bool dmaTrxStart(uint8_t* buf, uint32_t n, uint8_t dir) +static bool dmaTrxStart(uint32_t n, uint8_t dir) { - m_dir = dir; - if ((3 & (uint32_t)buf) || n == 0) { // check alignment - _panic("- transferStart: unaligned buffer address ", (uint32_t)buf); - return sdError(SD_CARD_ERROR_DMA); - } - if (dir==TRX_RD && yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - uint32_t flags = (SDIO_BLOCKSIZE_512 | SDIO_DCTRL_DMAEN | SDIO_DCTRL_DTEN); + uint32_t flags = (SDIO_BLOCKSIZE_512 | SDIO_DCTRL_DMAEN | SDIO_DCTRL_DTEN); if (dir==TRX_RD) flags |= SDIO_DIR_RX; // setup SDIO to transfer n blocks of 512 bytes sdio_setup_transfer(0x00FFFFFF, n, flags); - // setup SDIO_DMA_DEV stream 3 channel 4 - /* - * Moved to begin. - */ - //dma_init(SDIO_DMA_DEV); - /* - * Todo. Check this, channel must be disabled to change DMA priority, and seems like channel is not completing transfers - */ - //dma_set_priority(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, DMA_PRIORITY_VERY_HIGH); - flags = (DMA_MINC_MODE); - // not extra flag if read - if (dir!=TRX_RD) flags |= DMA_FROM_MEM;// write - dma_setup_transfer(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, &SDIO->FIFO, DMA_SIZE_32BITS, buf, DMA_SIZE_32BITS, flags); - dma_set_num_transfers(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, n>>2); // F1 DMA controller counts each word as 1 data item. - //dma_set_fifo_flags(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, (DMA_FCR_DMDIS | DMA_FCR_FTH_FULL)); // disable direct mode | threshold FULL - dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - dma_enable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + return true; } + +/* + * This one replaces dmaTrxStart, and will just prepare the DMA part, then a new + * one will enable the DMA reception as per the RM. + */ +static bool dmaTrxPrepare(uint8_t* buf, uint32_t n, uint8_t dir) +{ + uint32_t flags; + m_dir = dir; + if ((3 & (uint32_t)buf) || n == 0) { // check alignment + _panic("- transferStart: unaligned buffer address ", (uint32_t)buf); + return sdError(SD_CARD_ERROR_DMA); + } + /* + * No point to wait here again if we always wait before calling this. + if (dir==TRX_RD && yieldTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + */ + + /* + * Following RM 22.3.2. Setup DMA first, SDIO peripheral next + * + */ + flags = (DMA_MINC_MODE); + // not extra flag if read + if (dir!=TRX_RD) flags |= DMA_FROM_MEM;// write + dma_setup_transfer(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, &SDIO->FIFO, DMA_SIZE_32BITS, buf, DMA_SIZE_32BITS, flags); + dma_set_num_transfers(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, n>>2); // F1 DMA controller counts each word as 1 data item. + //dma_set_fifo_flags(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, (DMA_FCR_DMDIS | DMA_FCR_FTH_FULL)); // disable direct mode | threshold FULL + dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + dma_enable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + + return true; +} + + /*---------------------------------------------------------------------------*/ static bool dmaTrxEnd(bool multi_block) { - if ( !waitDmaStatus() ) { + if(m_curState != READ_STATE){ + if ( yieldTimeout(isBusyTransferComplete) ) { + DBG_PRINT(); + if (m_dir==TRX_RD) + return sdError(SD_CARD_ERROR_READ_CRC); + else + return sdError(SD_CARD_ERROR_WRITE); + } + } + + if ( !yieldDmaStatus() ) { DBG_PRINT(); return sdError(SD_CARD_ERROR_DMA); } - if ( waitTimeout(isBusyTransferComplete) ) { - if (m_dir==TRX_RD) - return sdError(SD_CARD_ERROR_READ_TIMEOUT); - else - return sdError(SD_CARD_ERROR_WRITE_TIMEOUT); - } + if (multi_block) { return trxStop(); } else { @@ -389,21 +481,38 @@ static bool readReg16(uint32_t xfertyp, void* data) /*---------------------------------------------------------------------------*/ // Return true if timeout occurs. static bool yieldTimeout(bool (*fcn)()) { + m_busyFcn = fcn; uint32_t m = millis(); while (fcn()) { if ((millis() - m) > BUSY_TIMEOUT_MILLIS) { + m_busyFcn = 0; return true; } yield(); } + m_busyFcn = 0; return false; // Caller will set errorCode. } /*---------------------------------------------------------------------------*/ -static bool waitDmaStatus(void) +static bool yieldDmaStatus(void) { if (yieldTimeout(isBusyDMA)) { + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return false; // Caller will set errorCode. } + // Did not time out. Disable it and return true. + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + return true; +} +/*---------------------------------------------------------------------------*/ +static bool waitDmaStatus(void) +{ + if (waitTimeout(isBusyDMA)) { + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + return false; // Caller will set errorCode. + } + // Did not time out. Disable it and return true + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return true; } /*---------------------------------------------------------------------------*/ @@ -423,6 +532,8 @@ uint32_t aligned[128]; // temporary buffer for misaligned buffers //============================================================================= bool SdioCard::begin(void) { + + uint32_t arg; m_initDone = false; m_errorCode = SD_CARD_ERROR_NONE; m_highCapacity = false; @@ -447,6 +558,7 @@ delay(100); if (!cardCommand(CMD0_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD0); } + delay(50); //small pause after reset command // Try several times for case of reset delay. for (uint32_t i = 0; i < CMD8_RETRIES; i++) { if (cardCommand(CMD8_XFERTYP, 0X1AA)) { @@ -457,7 +569,7 @@ delay(100); break; } } - uint32_t arg = m_version2 ? 0X40300000 : 0x00300000; + arg = m_version2 ? 0X50300000 : 0x00300000; uint32_t m = millis(); do { if (!cardAcmd(0, ACMD41_XFERTYP, arg) || @@ -478,6 +590,7 @@ delay(100); return sdError(SD_CARD_ERROR_CMD3); } m_rca = SDIO->RESP[0] & 0xFFFF0000; + if (!readReg16(CMD9_XFERTYP, &m_csd)) { return sdError(SD_CARD_ERROR_CMD9); } @@ -487,14 +600,21 @@ delay(100); if (!cardCommand(CMD7_XFERTYP, m_rca)) { return sdError(SD_CARD_ERROR_CMD7); } + + arg = 0x00; //bit 0, Connect[1]/Disconnect[0] the 50 KOhm pull-up resistor on CD/DAT3 + if (!cardAcmd(m_rca, ACMD42_XFERTYP, arg)) { + _panic("*** ACMD42 to disconnect D3 pullup failed! ***", 0); + } + // Set card to bus width four. - /* if (!cardAcmd(m_rca, ACMD6_XFERTYP, 2)) { return sdError(SD_CARD_ERROR_ACMD6); } + + // Set SDHC to bus width four. sdio_set_dbus_width(SDIO_CLKCR_WIDBUS_4BIT); - */ +/* // Determine if High Speed mode is supported and set frequency. uint8_t status[64]; // see "Physical Layer Simplified Specification Version 6.00", chapter 4.3.10, Table 4-13. @@ -502,15 +622,16 @@ delay(100); // Function Selection of Function Group 1: bits 379:376, which is low nibble of byte [16] if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { - //Serial.println("\n*** 50MHz clock supported ***"); + Serial.println("\n*** 50MHz clock supported ***"); + m_sdClkKhz = 24000; // set clock to 24MHz } else { //_panic("*** Only 25MHz clock supported! ***", 0); + m_sdClkKhz = 8000; // set clock to 24MHz } - - /* - * Todo Raise clock to 24Mhz once transfers work - */ - m_sdClkKhz = 24000; // set clock to 24MHz + // delay seems to be needed for cards that take some time to adjust + delay(1); +*/ + m_sdClkKhz = 18000; // set clock to 24MHz sdio_set_clock(m_sdClkKhz*1000); m_initDone = true; @@ -570,55 +691,160 @@ uint32_t SdioCard::kHzSdClk() { return m_sdClkKhz; } /*---------------------------------------------------------------------------*/ -bool SdioCard::readBlock(uint32_t lba, uint8_t* buf) +bool __attribute__((optimize("0"))) SdioCard::readBlock(uint32_t lba, uint8_t* buf) { #if USE_DEBUG_MODE - Serial.print("readBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX); + Serial.print("readBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX); #endif - // prepare SDIO and DMA for data read transfer - dmaTrxStart((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); - // send command to start data transfer - if ( !cardCommand(CMD17_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD17); - } - if ( dmaTrxEnd(0)) { - if ( (uint32_t)buf & 3 ) { - //memcpy(buf, aligned, 512); - register uint8_t * dst = buf; - register uint8_t * src = (uint8_t *)aligned; - register uint16_t i = 64; - while ( i-- ) { // do 8 byte copies, is much faster than single byte copy - *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - } - } - return true; - } - return false; + volatile bool _state = false; + volatile uint16_t retries = 3; + while ( retries-- ){ + /*if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); + } + */ + + if (m_curState != READ_STATE || m_curLba != lba) { +#if USE_DEBUG_MODE + Serial.print("New lba, syncing :"); + Serial.println(lba); +#endif + _state = syncBlocks(); + DBG_PRINT(); + if (!_state) { + return false; + } + m_limitLba = (lba + 1024); //arbitrary limit, tested with 32KB before and worked fine. + // prepare DMA for data read transfer + _state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); + DBG_PRINT(); + + // prepare SDIO data read transfer 0x8000 = 64*512 + _state = dmaTrxStart(512, TRX_RD); + DBG_PRINT(); + + // send command to start data transfer + _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); + DBG_PRINT(); + if ( !_state ) { + return sdError(SD_CARD_ERROR_CMD18); + } + + m_curLba = lba; + m_curState = READ_STATE; + } + else { + // prepare DMA for data read transfer + _state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); + + // prepare SDIO data read transfer + _state = dmaTrxStart(512, TRX_RD); + } + + + _state = dmaTrxEnd(0); + + if ( _state ) { + if ( (uint32_t)buf & 3 ) { + //memcpy(buf, aligned, 512); + register uint8_t * dst = buf; + register uint8_t * src = (uint8_t *)aligned; + register uint16_t i = 64; + while ( i-- ) { // do 8 byte copies, is much faster than single byte copy + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + } + } + m_totalReadLbas++; + m_curLba++; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + sdError(SD_CARD_ERROR_NONE); + return true; + } + syncBlocks(); + m_readErrors++; + + } + DBG_PRINT() + syncBlocks(); + m_readErrors++; + return false; } /*---------------------------------------------------------------------------*/ bool SdioCard::readBlocks(uint32_t lba, uint8_t* buf, size_t n) { #if USE_DEBUG_MODE - Serial.print("readBlocks: "); Serial.print(lba); - //Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX); - Serial.print(", "); Serial.println(n); + Serial.print("readBlocks: "); Serial.print(lba); + //Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX); + Serial.print(", "); Serial.println(n); #endif - if ((uint32_t)buf & 3) { - for (size_t i = 0; i < n; i++, lba++, buf += 512) { - if (!readBlock(lba, buf)) { - return false; // readBlock will set errorCode. - } - } - return true; - } - // prepare SDIO and DMA for data read transfer - dmaTrxStart(buf, 512*n, TRX_RD); - // send command to start data transfer - if ( !cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD18); - } - return dmaTrxEnd(1); + volatile bool _state = false; + volatile uint16_t retries = 3; + while ( retries-- ){ + + if ((uint32_t)buf & 3) { + for (size_t i = 0; i < n; i++, lba++, buf += 512) { + if (!readBlock(lba, buf)) { + return false; // readBlock will set errorCode. + } + } + return true; + } + + if (m_curState != READ_STATE || m_curLba != lba) { + #if USE_DEBUG_MODE + Serial.print("New lba, syncing :"); + Serial.println(lba); + #endif + _state = syncBlocks(); + DBG_PRINT(); + if (!_state) { + return false; + } + m_limitLba = (lba + 1024); //arbitrary limit + // prepare DMA for data read transfer + _state = dmaTrxPrepare(buf, 512*n, TRX_RD); + + // prepare SDIO for data read transfer + _state = dmaTrxStart(512*n, TRX_RD); + + // send command to start data transfer + _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); + if ( !_state ) { + return sdError(SD_CARD_ERROR_CMD18); + } + m_curLba = lba; + m_curState = READ_STATE; + } + + else { + // prepare DMA for data read transfer + _state = dmaTrxPrepare(buf, 512*n, TRX_RD); + + // prepare SDIO data read transfer + _state = dmaTrxStart(512*n, TRX_RD); + } + + _state = dmaTrxEnd(0); + + if (_state){ + m_totalReadLbas += n; + m_curLba += n; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + sdError(SD_CARD_ERROR_NONE); + return true; + } + syncBlocks(); + m_readErrors++; + } + DBG_PRINT() + syncBlocks(); + m_readErrors++; + return false; } //----------------------------------------------------------------------------- bool SdioCard::readCID(void* cid) { @@ -699,13 +925,36 @@ bool SdioCard::readStart(uint32_t lba, uint32_t count) /*---------------------------------------------------------------------------*/ bool SdioCard::readStop() { + + sdio_setup_transfer(0x00FFFFFF, 0, 0); + while ( SDIO->STA & SDIO_STA_RXDAVL) { + volatile uint32 _unused = SDIO->FIFO; + } //Serial.println("readStop."); - m_lba = 0; - m_cnt = 0; - return true; + m_lba = 0; + if (!trxStop()) { + return false; + } + return true; } //----------------------------------------------------------------------------- -bool SdioCard::syncBlocks() { +inline bool SdioCard::syncBlocks() { + if ( isEnabledDMA()){ + waitDmaStatus(); + } + if (m_curState == READ_STATE) { + /* if ( isEnabledDMA()){ + waitDmaStatus(); + } + */ + m_curState = IDLE_STATE; + if (!readStop()) { + return false; + } + } else if (m_curState == WRITE_STATE) { + m_curState = IDLE_STATE; + return writeStop(); + } return true; } //----------------------------------------------------------------------------- @@ -733,17 +982,48 @@ bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf) *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; } } - if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end - return sdError(SD_CARD_ERROR_CMD13); + + + + if (m_curState != WRITE_STATE || m_curLba != lba) { + if (!syncBlocks()) { + return false; + } + + m_limitLba = (lba + 1024); //arbitrary limit + + // prepare DMA for data transfer + dmaTrxPrepare(ptr, 512, TRX_WR); // 1 block, write transfer + + // send command to start data transfer + if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD25); + } + m_curLba = lba; + m_curState = WRITE_STATE; + } - // send command to start data transfer - if ( !cardCommand(CMD24_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD24); + else { + if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); + } + // prepare DMA for data transfer + dmaTrxPrepare(ptr, 512, TRX_WR); // 1 block, write transfer } - // prepare SDIO and DMA for data transfer - dmaTrxStart(ptr, 512, TRX_WR); // 1 block, write transfer - return dmaTrxEnd(0); + // prepare SDIO for data transfer + dmaTrxStart(512, TRX_WR); // 1 block, write transfer + + if (!dmaTrxEnd(0)){ + m_curState = IDLE_STATE; + m_writeErrors++; + return false; + } + m_curLba++; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + return true; } /*---------------------------------------------------------------------------*/ bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) @@ -770,14 +1050,43 @@ bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) return sdError(SD_CARD_ERROR_ACMD23); } #endif - // send command to start data transfer - if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD25); - } - // prepare SDIO and DMA for data transfer - dmaTrxStart((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer - return dmaTrxEnd(1); + if (m_curState != WRITE_STATE || m_curLba != lba) { + if (!syncBlocks()) { + return false; + } + + m_limitLba = (lba + 1024); //arbitrary limit, 512KB + // prepare DMA for data transfer + dmaTrxPrepare((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer + + // send command to start data transfer + if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD25); + } + m_curLba = lba; + m_curState = WRITE_STATE; + + } + else { + // prepare DMA for data transfer + dmaTrxPrepare((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer + } + + // prepare SDIO for data transfer + dmaTrxStart(512*n, TRX_WR); // n blocks, write transfer + + if (!dmaTrxEnd(0)){ + m_writeErrors++; + m_curState = IDLE_STATE; + return false; + } + m_curLba += n; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + return true; + } /*---------------------------------------------------------------------------*/ bool SdioCard::writeData(const uint8_t* src) @@ -845,8 +1154,14 @@ bool SdioCard::writeStart(uint32_t lba, uint32_t count) /*---------------------------------------------------------------------------*/ bool SdioCard::writeStop() { - //Serial.println("writeStop."); - m_lba = 0; - m_cnt = 0; - return true; + if ( isEnabledDMA()){ + if ( !waitDmaStatus() ) { + DBG_PRINT(); + return sdError(SD_CARD_ERROR_DMA); + } + } + m_lba = 0; + m_curState = IDLE_STATE; + return trxStop(); + //Serial.println("writeStop."); } diff --git a/STM32F1/libraries/SDIO/SdioF1.h b/STM32F1/libraries/SDIO/SdioF1.h index c995b1c5c..efa47749c 100644 --- a/STM32F1/libraries/SDIO/SdioF1.h +++ b/STM32F1/libraries/SDIO/SdioF1.h @@ -1,6 +1,6 @@ -#ifndef _SDIOF4_H_ -#define _SDIOF4_H_ +#ifndef _SDIOF1_H_ +#define _SDIOF1_H_ #include From 58ccf76c2a7b85ab1c038b983af2c72af39a62ac Mon Sep 17 00:00:00 2001 From: victorpv Date: Wed, 28 Mar 2018 22:01:48 -0500 Subject: [PATCH 080/373] stm_fft library With extra fft 16 bins function --- .../libraries/stm_fft/cr4_fft_1024_stm32.asm | 577 ++++++++++++++++++ .../libraries/stm_fft/cr4_fft_16_stm33.asm | 250 ++++++++ .../libraries/stm_fft/cr4_fft_256_stm32.asm | 318 ++++++++++ .../libraries/stm_fft/cr4_fft_64_stm32.asm | 249 ++++++++ STM32F1/libraries/stm_fft/cr4_fft_stm32.h | 39 ++ STM32F1/libraries/stm_fft/table_fft.h | 377 ++++++++++++ 6 files changed, 1810 insertions(+) create mode 100644 STM32F1/libraries/stm_fft/cr4_fft_1024_stm32.asm create mode 100644 STM32F1/libraries/stm_fft/cr4_fft_16_stm33.asm create mode 100644 STM32F1/libraries/stm_fft/cr4_fft_256_stm32.asm create mode 100644 STM32F1/libraries/stm_fft/cr4_fft_64_stm32.asm create mode 100644 STM32F1/libraries/stm_fft/cr4_fft_stm32.h create mode 100644 STM32F1/libraries/stm_fft/table_fft.h diff --git a/STM32F1/libraries/stm_fft/cr4_fft_1024_stm32.asm b/STM32F1/libraries/stm_fft/cr4_fft_1024_stm32.asm new file mode 100644 index 000000000..26c17261f --- /dev/null +++ b/STM32F1/libraries/stm_fft/cr4_fft_1024_stm32.asm @@ -0,0 +1,577 @@ +/*;******************** (C) COPYRIGHT 2009 STMicroelectronics ******************** +;* File Name : cr4_fft_1024_stm32.s +;* Author : MCD Application Team +;* Version : V2.0.0 +;* Date : 04/27/2009 +;* Description : Optimized 1024-point radix-4 complex FFT for Cortex-M3 +;******************************************************************************** +;* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +;* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +;* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +;* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +;* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +;* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;*******************************************************************************/ + +.cpu cortex-m3 +.fpu softvfp +.syntax unified +.thumb +.text + +.global cr4_fft_1024_stm32 +.extern TableFFT + +.equ NPT, 1024 + + +/*;******************************************************************************* +;* Function Name : cr4_fft_1024_stm32 +;* Description : complex radix-4 1024 points FFT +;* Input : - R0 = pssOUT: Output array . +;* - R1 = pssIN: Input array +;* - R2 = Nbin: =1024 number of points, this optimized FFT function +;* can only convert 1024 points. +;* Output : None +;* Return : None +;*********************************************************************************/ +.thumb_func +cr4_fft_1024_stm32: + + STMFD SP!, {R4-R11, LR} + + MOV r12, #0 + MOV r3, r0 + MOV r0,#0 + +preloop_v7: + ADD r14, r1, r12, LSR#22 /*1024pts*/ + + LDRSH r5, [r14, #2] + LDRSH r4, [r14] + ADD r14, #NPT + LDRSH r9, [r14, #2] + LDRSH r8, [r14] + ADD r14, #NPT + LDRSH r7, [r14, #2] + LDRSH r6, [r14] + ADD r14, #NPT + LDRSH r11, [r14, #2] + LDRSH r10, [r14] + ADD r14, #NPT + + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#2 + ADD r5, r5, r7, ASR#2 + SUB r6, r4, r6, ASR#1 + SUB r7, r5, r7, ASR#1 + + ADD r4, r4, r8, ASR#2 + ADD r5, r5, r9, ASR#2 + SUB r8, r4, r8, ASR#1 + SUB r9, r5, r9, ASR#1 + + ADD r6, r6, r11, ASR#2 + SUB r7, r7, r10, ASR#2 + SUB r11, r6, r11, ASR#1 + ADD r10, r7, r10, ASR#1 + + STRH r5, [r3, #2] + STRH r4, [r3], #4 + STRH r7, [r3, #2] + STRH r6, [r3], #4 + STRH r9, [r3, #2] + STRH r8, [r3], #4 + STRH r10, [r3, #2] + STRH r11, [r3], #4 + + ADD r0, r0, #1 + + RBIT r12, r0 + + CMP r0,#256 /*1024pts*/ + BNE preloop_v7 + + SUB r1, r3, r2, LSL#2 + MOV r0, #16 + MOVS r2, r2, LSR#4 + +/*;------------------------------------------------------------------------------ +; The FFT coefficients table can be stored into Flash or RAM. +; The following two lines of code allow selecting the method for coefficients +; storage. +; In the case of choosing coefficients in RAM, you have to: +; 1. Include the file table_fft.h, which is a part of the DSP library, +; in your main file. +; 2. Decomment the line LDR.W pssK, =TableFFT and comment the line +; ADRL pssK, TableFFT_V7 +; 3. Comment all the TableFFT_V7 data. +;------------------------------------------------------------------------------*/ + ADR r3, TableFFT_V7 + /*LDR.W r3, =TableFFT*/ + + +passloop_v7: + STMFD SP!, {r1,r2} + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + SUB r2, r2, #1<<16 + +grouploop_v7: + ADD r2,r2,r0,LSL#(16-2) + +butterloop_v7: + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r11, [r3, #2] + LDRSH r10, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r11 + ADD r14, r10, r11, LSL#1 + MLA r11, r5, r10, r12 + MLA r10, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r9, [r3, #2] + LDRSH r8, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r9 + ADD r14, r8, r9, LSL#1 + MLA r9, r5, r8, r12 + MLA r8, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r7, [r3, #2] + LDRSH r6, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r7 + ADD r14, r6, r7, LSL#1 + MLA r7, r5, r6, r12 + MLA r6, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#(2+14) + ADD r5, r5, r7, ASR#(2+14) + SUB r6, r4, r6, ASR#(1+14) + SUB r7, r5, r7, ASR#(1+14) + + ADD r4, r4, r8, ASR#(2+14) + ADD r5, r5, r9, ASR#(2+14) + SUB r8, r4, r8, ASR#(1+14) + SUB r9, r5, r9, ASR#(1+14) + + ADD r6, r6, r11, ASR#(2+14) + SUB r7, r7, r10, ASR#(2+14) + SUB r11, r6, r11, ASR#(1+14) + ADD r10, r7, r10, ASR#(1+14) + + STRH r5, [r1, #2] + STRH r4, [r1] + ADD r1, r1, r0 + STRH r7, [r1, #2] + STRH r6, [r1] + ADD r1, r1, r0 + STRH r9, [r1, #2] + STRH r8, [r1] + ADD r1, r1, r0 + STRH r10, [r1, #2] + STRH r11, [r1], #4 + SUBS r2,r2, #1<<16 + BGE butterloop_v7 + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + + SUB r2, r2, #1 + MOVS r14, r2, LSL#16 + IT ne + SUBNE r3, r3, r12 + BNE grouploop_v7 + + LDMFD sp!, {r1, r2} + MOV r0,r0,LSL#2 + MOVS r2, r2, LSR#2 + BNE passloop_v7 + LDMFD SP!, {R4-R11, PC} + + +TableFFT_V7: + + /*N=16*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + /*N=64*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c + .short 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e + .short 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537 + .short 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21 + .short 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5 + .short 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21 + .short 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + .short 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e + .short 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e + .short 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c + /*N=256*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0x3b1e,0x04b5, 0x3e69,0x0192, 0x3cc8,0x0324 + .short 0x35eb,0x0964, 0x3cc8,0x0324, 0x396b,0x0646 + .short 0x306c,0x0e06, 0x3b1e,0x04b5, 0x35eb,0x0964 + .short 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c + .short 0x24ae,0x1709, 0x37af,0x07d6, 0x2e88,0x0f8d + .short 0x1e7e,0x1b5d, 0x35eb,0x0964, 0x2aaa,0x1294 + .short 0x1824,0x1f8c, 0x341e,0x0af1, 0x26b3,0x1590 + .short 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e + .short 0x0b14,0x2760, 0x306c,0x0e06, 0x1e7e,0x1b5d + .short 0x0471,0x2afb, 0x2e88,0x0f8d, 0x1a46,0x1e2b + .short 0xfdc7,0x2e5a, 0x2c9d,0x1112, 0x15fe,0x20e7 + .short 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e + .short 0xf087,0x3453, 0x28b2,0x1413, 0x0d48,0x2620 + .short 0xea02,0x36e5, 0x26b3,0x1590, 0x08df,0x289a + .short 0xe39c,0x392b, 0x24ae,0x1709, 0x0471,0x2afb + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xd74e,0x3cc5, 0x2093,0x19ef, 0xfb8f,0x2f6c + .short 0xd178,0x3e15, 0x1e7e,0x1b5d, 0xf721,0x3179 + .short 0xcbe2,0x3f0f, 0x1c64,0x1cc6, 0xf2b8,0x3368 + .short 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537 + .short 0xc197,0x3ffb, 0x1824,0x1f8c, 0xea02,0x36e5 + .short 0xbcf0,0x3fec, 0x15fe,0x20e7, 0xe5ba,0x3871 + .short 0xb8a6,0x3f85, 0x13d5,0x223d, 0xe182,0x39db + .short 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21 + .short 0xb140,0x3daf, 0x0f79,0x24da, 0xd94d,0x3c42 + .short 0xae2e,0x3c42, 0x0d48,0x2620, 0xd556,0x3d3f + .short 0xab8e,0x3a82, 0x0b14,0x2760, 0xd178,0x3e15 + .short 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5 + .short 0xa7b1,0x3612, 0x06a9,0x29ce, 0xca15,0x3f4f + .short 0xa678,0x3368, 0x0471,0x2afb, 0xc695,0x3fb1 + .short 0xa5bc,0x3076, 0x0239,0x2c21, 0xc338,0x3fec + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xa5bc,0x29ce, 0xfdc7,0x2e5a, 0xbcf0,0x3fec + .short 0xa678,0x2620, 0xfb8f,0x2f6c, 0xba09,0x3fb1 + .short 0xa7b1,0x223d, 0xf957,0x3076, 0xb74d,0x3f4f + .short 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5 + .short 0xab8e,0x19ef, 0xf4ec,0x3274, 0xb25e,0x3e15 + .short 0xae2e,0x1590, 0xf2b8,0x3368, 0xb02d,0x3d3f + .short 0xb140,0x1112, 0xf087,0x3453, 0xae2e,0x3c42 + .short 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21 + .short 0xb8a6,0x07d6, 0xec2b,0x3612, 0xaac8,0x39db + .short 0xbcf0,0x0324, 0xea02,0x36e5, 0xa963,0x3871 + .short 0xc197,0xfe6e, 0xe7dc,0x37b0, 0xa834,0x36e5 + .short 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537 + .short 0xcbe2,0xf50f, 0xe39c,0x392b, 0xa678,0x3368 + .short 0xd178,0xf073, 0xe182,0x39db, 0xa5ed,0x3179 + .short 0xd74e,0xebed, 0xdf6d,0x3a82, 0xa599,0x2f6c + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + .short 0xe39c,0xe33a, 0xdb52,0x3bb6, 0xa599,0x2afb + .short 0xea02,0xdf19, 0xd94d,0x3c42, 0xa5ed,0x289a + .short 0xf087,0xdb26, 0xd74e,0x3cc5, 0xa678,0x2620 + .short 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e + .short 0xfdc7,0xd3df, 0xd363,0x3daf, 0xa834,0x20e7 + .short 0x0471,0xd094, 0xd178,0x3e15, 0xa963,0x1e2b + .short 0x0b14,0xcd8c, 0xcf94,0x3e72, 0xaac8,0x1b5d + .short 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e + .short 0x1824,0xc850, 0xcbe2,0x3f0f, 0xae2e,0x1590 + .short 0x1e7e,0xc625, 0xca15,0x3f4f, 0xb02d,0x1294 + .short 0x24ae,0xc44a, 0xc851,0x3f85, 0xb25e,0x0f8d + .short 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c + .short 0x306c,0xc18e, 0xc4e2,0x3fd4, 0xb74d,0x0964 + .short 0x35eb,0xc0b1, 0xc338,0x3fec, 0xba09,0x0646 + .short 0x3b1e,0xc02c, 0xc197,0x3ffb, 0xbcf0,0x0324 + /*N=1024*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0x3ed0,0x012e, 0x3f9b,0x0065, 0x3f36,0x00c9 + .short 0x3d9a,0x025b, 0x3f36,0x00c9, 0x3e69,0x0192 + .short 0x3c5f,0x0388, 0x3ed0,0x012e, 0x3d9a,0x025b + .short 0x3b1e,0x04b5, 0x3e69,0x0192, 0x3cc8,0x0324 + .short 0x39d9,0x05e2, 0x3e02,0x01f7, 0x3bf4,0x03ed + .short 0x388e,0x070e, 0x3d9a,0x025b, 0x3b1e,0x04b5 + .short 0x373f,0x0839, 0x3d31,0x02c0, 0x3a46,0x057e + .short 0x35eb,0x0964, 0x3cc8,0x0324, 0x396b,0x0646 + .short 0x3492,0x0a8e, 0x3c5f,0x0388, 0x388e,0x070e + .short 0x3334,0x0bb7, 0x3bf4,0x03ed, 0x37af,0x07d6 + .short 0x31d2,0x0cdf, 0x3b8a,0x0451, 0x36ce,0x089d + .short 0x306c,0x0e06, 0x3b1e,0x04b5, 0x35eb,0x0964 + .short 0x2f02,0x0f2b, 0x3ab2,0x051a, 0x3505,0x0a2b + .short 0x2d93,0x1050, 0x3a46,0x057e, 0x341e,0x0af1 + .short 0x2c21,0x1173, 0x39d9,0x05e2, 0x3334,0x0bb7 + .short 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c + .short 0x2931,0x13b4, 0x38fd,0x06aa, 0x315b,0x0d41 + .short 0x27b3,0x14d2, 0x388e,0x070e, 0x306c,0x0e06 + .short 0x2632,0x15ee, 0x381f,0x0772, 0x2f7b,0x0eca + .short 0x24ae,0x1709, 0x37af,0x07d6, 0x2e88,0x0f8d + .short 0x2326,0x1821, 0x373f,0x0839, 0x2d93,0x1050 + .short 0x219c,0x1937, 0x36ce,0x089d, 0x2c9d,0x1112 + .short 0x200e,0x1a4b, 0x365d,0x0901, 0x2ba4,0x11d3 + .short 0x1e7e,0x1b5d, 0x35eb,0x0964, 0x2aaa,0x1294 + .short 0x1ceb,0x1c6c, 0x3578,0x09c7, 0x29af,0x1354 + .short 0x1b56,0x1d79, 0x3505,0x0a2b, 0x28b2,0x1413 + .short 0x19be,0x1e84, 0x3492,0x0a8e, 0x27b3,0x14d2 + .short 0x1824,0x1f8c, 0x341e,0x0af1, 0x26b3,0x1590 + .short 0x1688,0x2091, 0x33a9,0x0b54, 0x25b1,0x164c + .short 0x14ea,0x2193, 0x3334,0x0bb7, 0x24ae,0x1709 + .short 0x134a,0x2292, 0x32bf,0x0c1a, 0x23a9,0x17c4 + .short 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e + .short 0x1005,0x2488, 0x31d2,0x0cdf, 0x219c,0x1937 + .short 0x0e61,0x257e, 0x315b,0x0d41, 0x2093,0x19ef + .short 0x0cbb,0x2671, 0x30e4,0x0da4, 0x1f89,0x1aa7 + .short 0x0b14,0x2760, 0x306c,0x0e06, 0x1e7e,0x1b5d + .short 0x096d,0x284c, 0x2ff4,0x0e68, 0x1d72,0x1c12 + .short 0x07c4,0x2935, 0x2f7b,0x0eca, 0x1c64,0x1cc6 + .short 0x061b,0x2a1a, 0x2f02,0x0f2b, 0x1b56,0x1d79 + .short 0x0471,0x2afb, 0x2e88,0x0f8d, 0x1a46,0x1e2b + .short 0x02c7,0x2bd8, 0x2e0e,0x0fee, 0x1935,0x1edc + .short 0x011c,0x2cb2, 0x2d93,0x1050, 0x1824,0x1f8c + .short 0xff72,0x2d88, 0x2d18,0x10b1, 0x1711,0x203a + .short 0xfdc7,0x2e5a, 0x2c9d,0x1112, 0x15fe,0x20e7 + .short 0xfc1d,0x2f28, 0x2c21,0x1173, 0x14ea,0x2193 + .short 0xfa73,0x2ff2, 0x2ba4,0x11d3, 0x13d5,0x223d + .short 0xf8ca,0x30b8, 0x2b28,0x1234, 0x12bf,0x22e7 + .short 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e + .short 0xf579,0x3236, 0x2a2d,0x12f4, 0x1091,0x2435 + .short 0xf3d2,0x32ef, 0x29af,0x1354, 0x0f79,0x24da + .short 0xf22c,0x33a3, 0x2931,0x13b4, 0x0e61,0x257e + .short 0xf087,0x3453, 0x28b2,0x1413, 0x0d48,0x2620 + .short 0xeee3,0x34ff, 0x2833,0x1473, 0x0c2e,0x26c1 + .short 0xed41,0x35a5, 0x27b3,0x14d2, 0x0b14,0x2760 + .short 0xeba1,0x3648, 0x2733,0x1531, 0x09fa,0x27fe + .short 0xea02,0x36e5, 0x26b3,0x1590, 0x08df,0x289a + .short 0xe865,0x377e, 0x2632,0x15ee, 0x07c4,0x2935 + .short 0xe6cb,0x3812, 0x25b1,0x164c, 0x06a9,0x29ce + .short 0xe532,0x38a1, 0x252f,0x16ab, 0x058d,0x2a65 + .short 0xe39c,0x392b, 0x24ae,0x1709, 0x0471,0x2afb + .short 0xe208,0x39b0, 0x242b,0x1766, 0x0355,0x2b8f + .short 0xe077,0x3a30, 0x23a9,0x17c4, 0x0239,0x2c21 + .short 0xdee9,0x3aab, 0x2326,0x1821, 0x011c,0x2cb2 + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xdbd5,0x3b92, 0x221f,0x18db, 0xfee4,0x2dcf + .short 0xda4f,0x3bfd, 0x219c,0x1937, 0xfdc7,0x2e5a + .short 0xd8cd,0x3c64, 0x2117,0x1993, 0xfcab,0x2ee4 + .short 0xd74e,0x3cc5, 0x2093,0x19ef, 0xfb8f,0x2f6c + .short 0xd5d3,0x3d21, 0x200e,0x1a4b, 0xfa73,0x2ff2 + .short 0xd45c,0x3d78, 0x1f89,0x1aa7, 0xf957,0x3076 + .short 0xd2e8,0x3dc9, 0x1f04,0x1b02, 0xf83c,0x30f9 + .short 0xd178,0x3e15, 0x1e7e,0x1b5d, 0xf721,0x3179 + .short 0xd00c,0x3e5c, 0x1df8,0x1bb8, 0xf606,0x31f8 + .short 0xcea5,0x3e9d, 0x1d72,0x1c12, 0xf4ec,0x3274 + .short 0xcd41,0x3ed8, 0x1ceb,0x1c6c, 0xf3d2,0x32ef + .short 0xcbe2,0x3f0f, 0x1c64,0x1cc6, 0xf2b8,0x3368 + .short 0xca88,0x3f40, 0x1bdd,0x1d20, 0xf19f,0x33df + .short 0xc932,0x3f6b, 0x1b56,0x1d79, 0xf087,0x3453 + .short 0xc7e1,0x3f91, 0x1ace,0x1dd3, 0xef6f,0x34c6 + .short 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537 + .short 0xc54e,0x3fcc, 0x19be,0x1e84, 0xed41,0x35a5 + .short 0xc40c,0x3fe1, 0x1935,0x1edc, 0xec2b,0x3612 + .short 0xc2cf,0x3ff1, 0x18ad,0x1f34, 0xeb16,0x367d + .short 0xc197,0x3ffb, 0x1824,0x1f8c, 0xea02,0x36e5 + .short 0xc065,0x4000, 0x179b,0x1fe3, 0xe8ef,0x374b + .short 0xbf38,0x3fff, 0x1711,0x203a, 0xe7dc,0x37b0 + .short 0xbe11,0x3ff8, 0x1688,0x2091, 0xe6cb,0x3812 + .short 0xbcf0,0x3fec, 0x15fe,0x20e7, 0xe5ba,0x3871 + .short 0xbbd4,0x3fdb, 0x1574,0x213d, 0xe4aa,0x38cf + .short 0xbabf,0x3fc4, 0x14ea,0x2193, 0xe39c,0x392b + .short 0xb9af,0x3fa7, 0x145f,0x21e8, 0xe28e,0x3984 + .short 0xb8a6,0x3f85, 0x13d5,0x223d, 0xe182,0x39db + .short 0xb7a2,0x3f5d, 0x134a,0x2292, 0xe077,0x3a30 + .short 0xb6a5,0x3f30, 0x12bf,0x22e7, 0xdf6d,0x3a82 + .short 0xb5af,0x3efd, 0x1234,0x233b, 0xde64,0x3ad3 + .short 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21 + .short 0xb3d5,0x3e88, 0x111d,0x23e2, 0xdc57,0x3b6d + .short 0xb2f2,0x3e45, 0x1091,0x2435, 0xdb52,0x3bb6 + .short 0xb215,0x3dfc, 0x1005,0x2488, 0xda4f,0x3bfd + .short 0xb140,0x3daf, 0x0f79,0x24da, 0xd94d,0x3c42 + .short 0xb071,0x3d5b, 0x0eed,0x252c, 0xd84d,0x3c85 + .short 0xafa9,0x3d03, 0x0e61,0x257e, 0xd74e,0x3cc5 + .short 0xaee8,0x3ca5, 0x0dd4,0x25cf, 0xd651,0x3d03 + .short 0xae2e,0x3c42, 0x0d48,0x2620, 0xd556,0x3d3f + .short 0xad7b,0x3bda, 0x0cbb,0x2671, 0xd45c,0x3d78 + .short 0xacd0,0x3b6d, 0x0c2e,0x26c1, 0xd363,0x3daf + .short 0xac2b,0x3afa, 0x0ba1,0x2711, 0xd26d,0x3de3 + .short 0xab8e,0x3a82, 0x0b14,0x2760, 0xd178,0x3e15 + .short 0xaaf8,0x3a06, 0x0a87,0x27af, 0xd085,0x3e45 + .short 0xaa6a,0x3984, 0x09fa,0x27fe, 0xcf94,0x3e72 + .short 0xa9e3,0x38fd, 0x096d,0x284c, 0xcea5,0x3e9d + .short 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5 + .short 0xa8eb,0x37e1, 0x0852,0x28e7, 0xcccc,0x3eeb + .short 0xa87b,0x374b, 0x07c4,0x2935, 0xcbe2,0x3f0f + .short 0xa812,0x36b1, 0x0736,0x2981, 0xcafb,0x3f30 + .short 0xa7b1,0x3612, 0x06a9,0x29ce, 0xca15,0x3f4f + .short 0xa757,0x356e, 0x061b,0x2a1a, 0xc932,0x3f6b + .short 0xa705,0x34c6, 0x058d,0x2a65, 0xc851,0x3f85 + .short 0xa6bb,0x3419, 0x04ff,0x2ab0, 0xc772,0x3f9c + .short 0xa678,0x3368, 0x0471,0x2afb, 0xc695,0x3fb1 + .short 0xa63e,0x32b2, 0x03e3,0x2b45, 0xc5ba,0x3fc4 + .short 0xa60b,0x31f8, 0x0355,0x2b8f, 0xc4e2,0x3fd4 + .short 0xa5e0,0x3139, 0x02c7,0x2bd8, 0xc40c,0x3fe1 + .short 0xa5bc,0x3076, 0x0239,0x2c21, 0xc338,0x3fec + .short 0xa5a1,0x2faf, 0x01aa,0x2c6a, 0xc266,0x3ff5 + .short 0xa58d,0x2ee4, 0x011c,0x2cb2, 0xc197,0x3ffb + .short 0xa581,0x2e15, 0x008e,0x2cfa, 0xc0ca,0x3fff + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xa581,0x2c6a, 0xff72,0x2d88, 0xbf38,0x3fff + .short 0xa58d,0x2b8f, 0xfee4,0x2dcf, 0xbe73,0x3ffb + .short 0xa5a1,0x2ab0, 0xfe56,0x2e15, 0xbdb0,0x3ff5 + .short 0xa5bc,0x29ce, 0xfdc7,0x2e5a, 0xbcf0,0x3fec + .short 0xa5e0,0x28e7, 0xfd39,0x2e9f, 0xbc32,0x3fe1 + .short 0xa60b,0x27fe, 0xfcab,0x2ee4, 0xbb77,0x3fd4 + .short 0xa63e,0x2711, 0xfc1d,0x2f28, 0xbabf,0x3fc4 + .short 0xa678,0x2620, 0xfb8f,0x2f6c, 0xba09,0x3fb1 + .short 0xa6bb,0x252c, 0xfb01,0x2faf, 0xb956,0x3f9c + .short 0xa705,0x2435, 0xfa73,0x2ff2, 0xb8a6,0x3f85 + .short 0xa757,0x233b, 0xf9e5,0x3034, 0xb7f8,0x3f6b + .short 0xa7b1,0x223d, 0xf957,0x3076, 0xb74d,0x3f4f + .short 0xa812,0x213d, 0xf8ca,0x30b8, 0xb6a5,0x3f30 + .short 0xa87b,0x203a, 0xf83c,0x30f9, 0xb600,0x3f0f + .short 0xa8eb,0x1f34, 0xf7ae,0x3139, 0xb55e,0x3eeb + .short 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5 + .short 0xa9e3,0x1d20, 0xf693,0x31b9, 0xb422,0x3e9d + .short 0xaa6a,0x1c12, 0xf606,0x31f8, 0xb388,0x3e72 + .short 0xaaf8,0x1b02, 0xf579,0x3236, 0xb2f2,0x3e45 + .short 0xab8e,0x19ef, 0xf4ec,0x3274, 0xb25e,0x3e15 + .short 0xac2b,0x18db, 0xf45f,0x32b2, 0xb1cd,0x3de3 + .short 0xacd0,0x17c4, 0xf3d2,0x32ef, 0xb140,0x3daf + .short 0xad7b,0x16ab, 0xf345,0x332c, 0xb0b5,0x3d78 + .short 0xae2e,0x1590, 0xf2b8,0x3368, 0xb02d,0x3d3f + .short 0xaee8,0x1473, 0xf22c,0x33a3, 0xafa9,0x3d03 + .short 0xafa9,0x1354, 0xf19f,0x33df, 0xaf28,0x3cc5 + .short 0xb071,0x1234, 0xf113,0x3419, 0xaea9,0x3c85 + .short 0xb140,0x1112, 0xf087,0x3453, 0xae2e,0x3c42 + .short 0xb215,0x0fee, 0xeffb,0x348d, 0xadb6,0x3bfd + .short 0xb2f2,0x0eca, 0xef6f,0x34c6, 0xad41,0x3bb6 + .short 0xb3d5,0x0da4, 0xeee3,0x34ff, 0xacd0,0x3b6d + .short 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21 + .short 0xb5af,0x0b54, 0xedcc,0x356e, 0xabf6,0x3ad3 + .short 0xb6a5,0x0a2b, 0xed41,0x35a5, 0xab8e,0x3a82 + .short 0xb7a2,0x0901, 0xecb6,0x35dc, 0xab29,0x3a30 + .short 0xb8a6,0x07d6, 0xec2b,0x3612, 0xaac8,0x39db + .short 0xb9af,0x06aa, 0xeba1,0x3648, 0xaa6a,0x3984 + .short 0xbabf,0x057e, 0xeb16,0x367d, 0xaa0f,0x392b + .short 0xbbd4,0x0451, 0xea8c,0x36b1, 0xa9b7,0x38cf + .short 0xbcf0,0x0324, 0xea02,0x36e5, 0xa963,0x3871 + .short 0xbe11,0x01f7, 0xe978,0x3718, 0xa912,0x3812 + .short 0xbf38,0x00c9, 0xe8ef,0x374b, 0xa8c5,0x37b0 + .short 0xc065,0xff9b, 0xe865,0x377e, 0xa87b,0x374b + .short 0xc197,0xfe6e, 0xe7dc,0x37b0, 0xa834,0x36e5 + .short 0xc2cf,0xfd40, 0xe753,0x37e1, 0xa7f1,0x367d + .short 0xc40c,0xfc13, 0xe6cb,0x3812, 0xa7b1,0x3612 + .short 0xc54e,0xfae6, 0xe642,0x3842, 0xa774,0x35a5 + .short 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537 + .short 0xc7e1,0xf88e, 0xe532,0x38a1, 0xa705,0x34c6 + .short 0xc932,0xf763, 0xe4aa,0x38cf, 0xa6d3,0x3453 + .short 0xca88,0xf639, 0xe423,0x38fd, 0xa6a4,0x33df + .short 0xcbe2,0xf50f, 0xe39c,0x392b, 0xa678,0x3368 + .short 0xcd41,0xf3e6, 0xe315,0x3958, 0xa650,0x32ef + .short 0xcea5,0xf2bf, 0xe28e,0x3984, 0xa62c,0x3274 + .short 0xd00c,0xf198, 0xe208,0x39b0, 0xa60b,0x31f8 + .short 0xd178,0xf073, 0xe182,0x39db, 0xa5ed,0x3179 + .short 0xd2e8,0xef4f, 0xe0fc,0x3a06, 0xa5d3,0x30f9 + .short 0xd45c,0xee2d, 0xe077,0x3a30, 0xa5bc,0x3076 + .short 0xd5d3,0xed0c, 0xdff2,0x3a59, 0xa5a9,0x2ff2 + .short 0xd74e,0xebed, 0xdf6d,0x3a82, 0xa599,0x2f6c + .short 0xd8cd,0xeacf, 0xdee9,0x3aab, 0xa58d,0x2ee4 + .short 0xda4f,0xe9b4, 0xde64,0x3ad3, 0xa585,0x2e5a + .short 0xdbd5,0xe89a, 0xdde1,0x3afa, 0xa57f,0x2dcf + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + .short 0xdee9,0xe66d, 0xdcda,0x3b47, 0xa57f,0x2cb2 + .short 0xe077,0xe559, 0xdc57,0x3b6d, 0xa585,0x2c21 + .short 0xe208,0xe448, 0xdbd5,0x3b92, 0xa58d,0x2b8f + .short 0xe39c,0xe33a, 0xdb52,0x3bb6, 0xa599,0x2afb + .short 0xe532,0xe22d, 0xdad1,0x3bda, 0xa5a9,0x2a65 + .short 0xe6cb,0xe124, 0xda4f,0x3bfd, 0xa5bc,0x29ce + .short 0xe865,0xe01d, 0xd9ce,0x3c20, 0xa5d3,0x2935 + .short 0xea02,0xdf19, 0xd94d,0x3c42, 0xa5ed,0x289a + .short 0xeba1,0xde18, 0xd8cd,0x3c64, 0xa60b,0x27fe + .short 0xed41,0xdd19, 0xd84d,0x3c85, 0xa62c,0x2760 + .short 0xeee3,0xdc1e, 0xd7cd,0x3ca5, 0xa650,0x26c1 + .short 0xf087,0xdb26, 0xd74e,0x3cc5, 0xa678,0x2620 + .short 0xf22c,0xda31, 0xd6cf,0x3ce4, 0xa6a4,0x257e + .short 0xf3d2,0xd93f, 0xd651,0x3d03, 0xa6d3,0x24da + .short 0xf579,0xd851, 0xd5d3,0x3d21, 0xa705,0x2435 + .short 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e + .short 0xf8ca,0xd67f, 0xd4d8,0x3d5b, 0xa774,0x22e7 + .short 0xfa73,0xd59b, 0xd45c,0x3d78, 0xa7b1,0x223d + .short 0xfc1d,0xd4bb, 0xd3df,0x3d93, 0xa7f1,0x2193 + .short 0xfdc7,0xd3df, 0xd363,0x3daf, 0xa834,0x20e7 + .short 0xff72,0xd306, 0xd2e8,0x3dc9, 0xa87b,0x203a + .short 0x011c,0xd231, 0xd26d,0x3de3, 0xa8c5,0x1f8c + .short 0x02c7,0xd161, 0xd1f2,0x3dfc, 0xa912,0x1edc + .short 0x0471,0xd094, 0xd178,0x3e15, 0xa963,0x1e2b + .short 0x061b,0xcfcc, 0xd0fe,0x3e2d, 0xa9b7,0x1d79 + .short 0x07c4,0xcf07, 0xd085,0x3e45, 0xaa0f,0x1cc6 + .short 0x096d,0xce47, 0xd00c,0x3e5c, 0xaa6a,0x1c12 + .short 0x0b14,0xcd8c, 0xcf94,0x3e72, 0xaac8,0x1b5d + .short 0x0cbb,0xccd4, 0xcf1c,0x3e88, 0xab29,0x1aa7 + .short 0x0e61,0xcc21, 0xcea5,0x3e9d, 0xab8e,0x19ef + .short 0x1005,0xcb73, 0xce2e,0x3eb1, 0xabf6,0x1937 + .short 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e + .short 0x134a,0xca24, 0xcd41,0x3ed8, 0xacd0,0x17c4 + .short 0x14ea,0xc983, 0xcccc,0x3eeb, 0xad41,0x1709 + .short 0x1688,0xc8e8, 0xcc57,0x3efd, 0xadb6,0x164c + .short 0x1824,0xc850, 0xcbe2,0x3f0f, 0xae2e,0x1590 + .short 0x19be,0xc7be, 0xcb6e,0x3f20, 0xaea9,0x14d2 + .short 0x1b56,0xc731, 0xcafb,0x3f30, 0xaf28,0x1413 + .short 0x1ceb,0xc6a8, 0xca88,0x3f40, 0xafa9,0x1354 + .short 0x1e7e,0xc625, 0xca15,0x3f4f, 0xb02d,0x1294 + .short 0x200e,0xc5a7, 0xc9a3,0x3f5d, 0xb0b5,0x11d3 + .short 0x219c,0xc52d, 0xc932,0x3f6b, 0xb140,0x1112 + .short 0x2326,0xc4b9, 0xc8c1,0x3f78, 0xb1cd,0x1050 + .short 0x24ae,0xc44a, 0xc851,0x3f85, 0xb25e,0x0f8d + .short 0x2632,0xc3e0, 0xc7e1,0x3f91, 0xb2f2,0x0eca + .short 0x27b3,0xc37b, 0xc772,0x3f9c, 0xb388,0x0e06 + .short 0x2931,0xc31c, 0xc703,0x3fa7, 0xb422,0x0d41 + .short 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c + .short 0x2c21,0xc26d, 0xc627,0x3fbb, 0xb55e,0x0bb7 + .short 0x2d93,0xc21d, 0xc5ba,0x3fc4, 0xb600,0x0af1 + .short 0x2f02,0xc1d3, 0xc54e,0x3fcc, 0xb6a5,0x0a2b + .short 0x306c,0xc18e, 0xc4e2,0x3fd4, 0xb74d,0x0964 + .short 0x31d2,0xc14f, 0xc476,0x3fdb, 0xb7f8,0x089d + .short 0x3334,0xc115, 0xc40c,0x3fe1, 0xb8a6,0x07d6 + .short 0x3492,0xc0e0, 0xc3a1,0x3fe7, 0xb956,0x070e + .short 0x35eb,0xc0b1, 0xc338,0x3fec, 0xba09,0x0646 + .short 0x373f,0xc088, 0xc2cf,0x3ff1, 0xbabf,0x057e + .short 0x388e,0xc064, 0xc266,0x3ff5, 0xbb77,0x04b5 + .short 0x39d9,0xc045, 0xc1fe,0x3ff8, 0xbc32,0x03ed + .short 0x3b1e,0xc02c, 0xc197,0x3ffb, 0xbcf0,0x0324 + .short 0x3c5f,0xc019, 0xc130,0x3ffd, 0xbdb0,0x025b + .short 0x3d9a,0xc00b, 0xc0ca,0x3fff, 0xbe73,0x0192 + .short 0x3ed0,0xc003, 0xc065,0x4000, 0xbf38,0x00c9 + + +.end +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F1/libraries/stm_fft/cr4_fft_16_stm33.asm b/STM32F1/libraries/stm_fft/cr4_fft_16_stm33.asm new file mode 100644 index 000000000..1d60179e5 --- /dev/null +++ b/STM32F1/libraries/stm_fft/cr4_fft_16_stm33.asm @@ -0,0 +1,250 @@ +/*;******************** (C) COPYRIGHT 2009 STMicroelectronics ******************** +;* File Name : cr4_fft_64_stm32.s +;* Author : MCD Application Team +;* Version : V2.0.0 +;* Date : 04/27/2009 +;* Description : Optimized 64-point radix-4 complex FFT for Cortex-M3 +;******************************************************************************** +;* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +;* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +;* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +;* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +;* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +;* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;*******************************************************************************/ + +.cpu cortex-m3 +.fpu softvfp +.syntax unified +.thumb +.text + +.global cr4_fft_16_stm32 +.extern TableFFT + +.equ NPT, 16 + + +/*;******************************************************************************* +;* Function Name : cr4_fft_16_stm32 +;* Description : complex radix-4 16 points FFT +;* Input : - R0 = pssOUT: Output array . +;* - R1 = pssIN: Input array +;* - R2 = Nbin: = 16 number of points, this optimized FFT function +;* can only convert 16 points. +;* Output : None +;* Return : None +;********************************************************************************/ +.thumb_func +cr4_fft_16_stm32: + + STMFD SP!, {R4-R11, LR} + + MOV r12, #0 + MOV r3, r0 + MOV r0,#0 + +preloop_v7: + ADD r14, r1, r12, LSR#28 + + LDRSH r5, [r14, #2] + LDRSH r4, [r14],#NPT + LDRSH r9, [r14, #2] + LDRSH r8, [r14],#NPT + LDRSH r7, [r14, #2] + LDRSH r6, [r14],#NPT + LDRSH r11, [r14, #2] + LDRSH r10, [r14],#NPT + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#2 + ADD r5, r5, r7, ASR#2 + SUB r6, r4, r6, ASR#1 + SUB r7, r5, r7, ASR#1 + + ADD r4, r4, r8, ASR#2 + ADD r5, r5, r9, ASR#2 + SUB r8, r4, r8, ASR#1 + SUB r9, r5, r9, ASR#1 + + ADD r6, r6, r11, ASR#2 + SUB r7, r7, r10, ASR#2 + SUB r11, r6, r11, ASR#1 + ADD r10, r7, r10, ASR#1 + + STRH r5, [r3, #2] + STRH r4, [r3], #4 + STRH r7, [r3, #2] + STRH r6, [r3], #4 + STRH r9, [r3, #2] + STRH r8, [r3], #4 + STRH r10, [r3, #2] + STRH r11, [r3], #4 + + ADD r0, r0, #1 + + RBIT r12, r0 + + CMP r0,#4 + BNE preloop_v7 + + SUB r1, r3, r2, LSL#2 + MOV r0, #16 + MOVS r2, r2, LSR#4 + +/*;------------------------------------------------------------------------------ +; The FFT coefficients table can be stored into Flash or RAM. +; The following two lines of code allow selecting the method for coefficients +; storage. +; In the case of choosing coefficients in RAM, you have to: +; 1. Include the file table_fft.h, which is a part of the DSP library, +; in your main file. +; 2. Decomment the line LDR.W pssK, =TableFFT and comment the line +; ADRL pssK, TableFFT_V7 +; 3. Comment all the TableFFT_V7 data. +;------------------------------------------------------------------------------*/ + ADR r3, TableFFT_V7 + /*LDR.W r3, =TableFFT*/ + + +passloop_v7: + STMFD SP!, {r1,r2} + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + SUB r2, r2, #1<<16 + +grouploop_v7: + ADD r2,r2,r0,LSL#(16-2) + +butterloop_v7: + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r11, [r3, #2] + LDRSH r10, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r11 + ADD r14, r10, r11, LSL#1 + MLA r11, r5, r10, r12 + MLA r10, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r9, [r3, #2] + LDRSH r8, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r9 + ADD r14, r8, r9, LSL#1 + MLA r9, r5, r8, r12 + MLA r8, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r7, [r3, #2] + LDRSH r6, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r7 + ADD r14, r6, r7, LSL#1 + MLA r7, r5, r6, r12 + MLA r6, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#(2+14) + ADD r5, r5, r7, ASR#(2+14) + SUB r6, r4, r6, ASR#(1+14) + SUB r7, r5, r7, ASR#(1+14) + + ADD r4, r4, r8, ASR#(2+14) + ADD r5, r5, r9, ASR#(2+14) + SUB r8, r4, r8, ASR#(1+14) + SUB r9, r5, r9, ASR#(1+14) + + ADD r6, r6, r11, ASR#(2+14) + SUB r7, r7, r10, ASR#(2+14) + SUB r11, r6, r11, ASR#(1+14) + ADD r10, r7, r10, ASR#(1+14) + + STRH r5, [r1, #2] + STRH r4, [r1] + ADD r1, r1, r0 + STRH r7, [r1, #2] + STRH r6, [r1] + ADD r1, r1, r0 + STRH r9, [r1, #2] + STRH r8, [r1] + ADD r1, r1, r0 + STRH r10, [r1, #2] + STRH r11, [r1], #4 + SUBS r2,r2, #1<<16 + BGE butterloop_v7 + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + + SUB r2, r2, #1 + MOVS r14, r2, LSL#16 + IT ne + SUBNE r3, r3, r12 + BNE grouploop_v7 + + LDMFD sp!, {r1, r2} + MOV r0,r0,LSL#2 + MOVS r2, r2, LSR#2 + BNE passloop_v7 + LDMFD SP!, {R4-R11, PC} + + +TableFFT_V7: + /*N=16*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + /*N=64*/ + /* + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c + .short 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e + .short 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537 + .short 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21 + .short 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5 + .short 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21 + .short 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + .short 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e + .short 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e + .short 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c + */ + +.end +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F1/libraries/stm_fft/cr4_fft_256_stm32.asm b/STM32F1/libraries/stm_fft/cr4_fft_256_stm32.asm new file mode 100644 index 000000000..15e4b0c8c --- /dev/null +++ b/STM32F1/libraries/stm_fft/cr4_fft_256_stm32.asm @@ -0,0 +1,318 @@ +/*;******************** (C) COPYRIGHT 2009 STMicroelectronics ******************** +;* File Name : cr4_fft_256_stm32.s +;* Author : MCD Application Team +;* Version : V2.0.0 +;* Date : 04/27/2009 +;* Description : Optimized 256-point radix-4 complex FFT for Cortex-M3 +;******************************************************************************** +;* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +;* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +;* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +;* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +;* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +;* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;*******************************************************************************/ + +.cpu cortex-m3 +.fpu softvfp +.syntax unified +.thumb +.text + +.global cr4_fft_256_stm32 +.extern TableFFT + +.equ NPT, 256 + + +/*;******************************************************************************* +;* Function Name : cr4_fft_256_stm32 +;* Description : complex radix-4 256 points FFT +;* Input : - R0 = pssOUT: Output array . +;* - R1 = pssIN: Input array +;* - R2 = Nbin: =256 number of points, this optimized FFT function +;* can only convert 256 points. +;* Output : None +;* Return : None +;********************************************************************************/ +.thumb_func +cr4_fft_256_stm32: + + STMFD SP!, {R4-R11, LR} + + MOV r12, #0 + MOV r3, r0 + MOV r0,#0 + +preloop_v7: + ADD r14, r1, r12, LSR#24 /*256pts*/ + + LDRSH r5, [r14, #2] + LDRSH r4, [r14] + ADD r14, #NPT + LDRSH r9, [r14, #2] + LDRSH r8, [r14] + ADD r14, #NPT + LDRSH r7, [r14, #2] + LDRSH r6, [r14] + ADD r14, #NPT + LDRSH r11, [r14, #2] + LDRSH r10, [r14] + ADD r14, #NPT + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#2 + ADD r5, r5, r7, ASR#2 + SUB r6, r4, r6, ASR#1 + SUB r7, r5, r7, ASR#1 + + ADD r4, r4, r8, ASR#2 + ADD r5, r5, r9, ASR#2 + SUB r8, r4, r8, ASR#1 + SUB r9, r5, r9, ASR#1 + + ADD r6, r6, r11, ASR#2 + SUB r7, r7, r10, ASR#2 + SUB r11, r6, r11, ASR#1 + ADD r10, r7, r10, ASR#1 + + STRH r5, [r3, #2] + STRH r4, [r3], #4 + STRH r7, [r3, #2] + STRH r6, [r3], #4 + STRH r9, [r3, #2] + STRH r8, [r3], #4 + STRH r10, [r3, #2] + STRH r11, [r3], #4 + + ADD r0, r0, #1 + + RBIT r12, r0 + + CMP r0,#64 /*256pts*/ + BNE preloop_v7 + + SUB r1, r3, r2, LSL#2 + MOV r0, #16 + MOVS r2, r2, LSR#4 + +/*;------------------------------------------------------------------------------ +; The FFT coefficients table can be stored into Flash or RAM. +; The following two lines of code allow selecting the method for coefficients +; storage. +; In the case of choosing coefficients in RAM, you have to: +; 1. Include the file table_fft.h, which is a part of the DSP library, +; in your main file. +; 2. Decomment the line LDR.W pssK, =TableFFT and comment the line +; ADRL pssK, TableFFT_V7 +; 3. Comment all the TableFFT_V7 data. +;------------------------------------------------------------------------------*/ + ADR r3, TableFFT_V7 + /*LDR.W r3, =TableFFT*/ + + +passloop_v7: + STMFD SP!, {r1,r2} + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + SUB r2, r2, #1<<16 + +grouploop_v7: + ADD r2,r2,r0,LSL#(16-2) + +butterloop_v7: + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r11, [r3, #2] + LDRSH r10, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r11 + ADD r14, r10, r11, LSL#1 + MLA r11, r5, r10, r12 + MLA r10, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r9, [r3, #2] + LDRSH r8, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r9 + ADD r14, r8, r9, LSL#1 + MLA r9, r5, r8, r12 + MLA r8, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r7, [r3, #2] + LDRSH r6, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r7 + ADD r14, r6, r7, LSL#1 + MLA r7, r5, r6, r12 + MLA r6, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#(2+14) + ADD r5, r5, r7, ASR#(2+14) + SUB r6, r4, r6, ASR#(1+14) + SUB r7, r5, r7, ASR#(1+14) + + ADD r4, r4, r8, ASR#(2+14) + ADD r5, r5, r9, ASR#(2+14) + SUB r8, r4, r8, ASR#(1+14) + SUB r9, r5, r9, ASR#(1+14) + + ADD r6, r6, r11, ASR#(2+14) + SUB r7, r7, r10, ASR#(2+14) + SUB r11, r6, r11, ASR#(1+14) + ADD r10, r7, r10, ASR#(1+14) + + STRH r5, [r1, #2] + STRH r4, [r1] + ADD r1, r1, r0 + STRH r7, [r1, #2] + STRH r6, [r1] + ADD r1, r1, r0 + STRH r9, [r1, #2] + STRH r8, [r1] + ADD r1, r1, r0 + STRH r10, [r1, #2] + STRH r11, [r1], #4 + SUBS r2,r2, #1<<16 + BGE butterloop_v7 + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + + SUB r2, r2, #1 + MOVS r14, r2, LSL#16 + IT ne + SUBNE r3, r3, r12 + BNE grouploop_v7 + + LDMFD sp!, {r1, r2} + MOV r0,r0,LSL#2 + MOVS r2, r2, LSR#2 + BNE passloop_v7 + LDMFD SP!, {R4-R11, PC} + + +TableFFT_V7: + /*N=16*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + /*N=64*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c + .short 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e + .short 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537 + .short 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21 + .short 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5 + .short 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21 + .short 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + .short 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e + .short 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e + .short 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c + /*N=256*/ + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0x3b1e,0x04b5, 0x3e69,0x0192, 0x3cc8,0x0324 + .short 0x35eb,0x0964, 0x3cc8,0x0324, 0x396b,0x0646 + .short 0x306c,0x0e06, 0x3b1e,0x04b5, 0x35eb,0x0964 + .short 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c + .short 0x24ae,0x1709, 0x37af,0x07d6, 0x2e88,0x0f8d + .short 0x1e7e,0x1b5d, 0x35eb,0x0964, 0x2aaa,0x1294 + .short 0x1824,0x1f8c, 0x341e,0x0af1, 0x26b3,0x1590 + .short 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e + .short 0x0b14,0x2760, 0x306c,0x0e06, 0x1e7e,0x1b5d + .short 0x0471,0x2afb, 0x2e88,0x0f8d, 0x1a46,0x1e2b + .short 0xfdc7,0x2e5a, 0x2c9d,0x1112, 0x15fe,0x20e7 + .short 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e + .short 0xf087,0x3453, 0x28b2,0x1413, 0x0d48,0x2620 + .short 0xea02,0x36e5, 0x26b3,0x1590, 0x08df,0x289a + .short 0xe39c,0x392b, 0x24ae,0x1709, 0x0471,0x2afb + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xd74e,0x3cc5, 0x2093,0x19ef, 0xfb8f,0x2f6c + .short 0xd178,0x3e15, 0x1e7e,0x1b5d, 0xf721,0x3179 + .short 0xcbe2,0x3f0f, 0x1c64,0x1cc6, 0xf2b8,0x3368 + .short 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537 + .short 0xc197,0x3ffb, 0x1824,0x1f8c, 0xea02,0x36e5 + .short 0xbcf0,0x3fec, 0x15fe,0x20e7, 0xe5ba,0x3871 + .short 0xb8a6,0x3f85, 0x13d5,0x223d, 0xe182,0x39db + .short 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21 + .short 0xb140,0x3daf, 0x0f79,0x24da, 0xd94d,0x3c42 + .short 0xae2e,0x3c42, 0x0d48,0x2620, 0xd556,0x3d3f + .short 0xab8e,0x3a82, 0x0b14,0x2760, 0xd178,0x3e15 + .short 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5 + .short 0xa7b1,0x3612, 0x06a9,0x29ce, 0xca15,0x3f4f + .short 0xa678,0x3368, 0x0471,0x2afb, 0xc695,0x3fb1 + .short 0xa5bc,0x3076, 0x0239,0x2c21, 0xc338,0x3fec + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xa5bc,0x29ce, 0xfdc7,0x2e5a, 0xbcf0,0x3fec + .short 0xa678,0x2620, 0xfb8f,0x2f6c, 0xba09,0x3fb1 + .short 0xa7b1,0x223d, 0xf957,0x3076, 0xb74d,0x3f4f + .short 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5 + .short 0xab8e,0x19ef, 0xf4ec,0x3274, 0xb25e,0x3e15 + .short 0xae2e,0x1590, 0xf2b8,0x3368, 0xb02d,0x3d3f + .short 0xb140,0x1112, 0xf087,0x3453, 0xae2e,0x3c42 + .short 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21 + .short 0xb8a6,0x07d6, 0xec2b,0x3612, 0xaac8,0x39db + .short 0xbcf0,0x0324, 0xea02,0x36e5, 0xa963,0x3871 + .short 0xc197,0xfe6e, 0xe7dc,0x37b0, 0xa834,0x36e5 + .short 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537 + .short 0xcbe2,0xf50f, 0xe39c,0x392b, 0xa678,0x3368 + .short 0xd178,0xf073, 0xe182,0x39db, 0xa5ed,0x3179 + .short 0xd74e,0xebed, 0xdf6d,0x3a82, 0xa599,0x2f6c + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + .short 0xe39c,0xe33a, 0xdb52,0x3bb6, 0xa599,0x2afb + .short 0xea02,0xdf19, 0xd94d,0x3c42, 0xa5ed,0x289a + .short 0xf087,0xdb26, 0xd74e,0x3cc5, 0xa678,0x2620 + .short 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e + .short 0xfdc7,0xd3df, 0xd363,0x3daf, 0xa834,0x20e7 + .short 0x0471,0xd094, 0xd178,0x3e15, 0xa963,0x1e2b + .short 0x0b14,0xcd8c, 0xcf94,0x3e72, 0xaac8,0x1b5d + .short 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e + .short 0x1824,0xc850, 0xcbe2,0x3f0f, 0xae2e,0x1590 + .short 0x1e7e,0xc625, 0xca15,0x3f4f, 0xb02d,0x1294 + .short 0x24ae,0xc44a, 0xc851,0x3f85, 0xb25e,0x0f8d + .short 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c + .short 0x306c,0xc18e, 0xc4e2,0x3fd4, 0xb74d,0x0964 + .short 0x35eb,0xc0b1, 0xc338,0x3fec, 0xba09,0x0646 + .short 0x3b1e,0xc02c, 0xc197,0x3ffb, 0xbcf0,0x0324 + + +.end +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F1/libraries/stm_fft/cr4_fft_64_stm32.asm b/STM32F1/libraries/stm_fft/cr4_fft_64_stm32.asm new file mode 100644 index 000000000..bff454847 --- /dev/null +++ b/STM32F1/libraries/stm_fft/cr4_fft_64_stm32.asm @@ -0,0 +1,249 @@ +/*;******************** (C) COPYRIGHT 2009 STMicroelectronics ******************** +;* File Name : cr4_fft_64_stm32.s +;* Author : MCD Application Team +;* Version : V2.0.0 +;* Date : 04/27/2009 +;* Description : Optimized 64-point radix-4 complex FFT for Cortex-M3 +;******************************************************************************** +;* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS +;* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. +;* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, +;* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE +;* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING +;* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. +;*******************************************************************************/ + +.cpu cortex-m3 +.fpu softvfp +.syntax unified +.thumb +.text + +.global cr4_fft_64_stm32 +.extern TableFFT + +.equ NPT, 64 + + +/*;******************************************************************************* +;* Function Name : cr4_fft_64_stm32 +;* Description : complex radix-4 64 points FFT +;* Input : - R0 = pssOUT: Output array . +;* - R1 = pssIN: Input array +;* - R2 = Nbin: =64 number of points, this optimized FFT function +;* can only convert 64 points. +;* Output : None +;* Return : None +;********************************************************************************/ +.thumb_func +cr4_fft_64_stm32: + + STMFD SP!, {R4-R11, LR} + + MOV r12, #0 + MOV r3, r0 + MOV r0,#0 + +preloop_v7: + ADD r14, r1, r12, LSR#26 + + LDRSH r5, [r14, #2] + LDRSH r4, [r14],#NPT + LDRSH r9, [r14, #2] + LDRSH r8, [r14],#NPT + LDRSH r7, [r14, #2] + LDRSH r6, [r14],#NPT + LDRSH r11, [r14, #2] + LDRSH r10, [r14],#NPT + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#2 + ADD r5, r5, r7, ASR#2 + SUB r6, r4, r6, ASR#1 + SUB r7, r5, r7, ASR#1 + + ADD r4, r4, r8, ASR#2 + ADD r5, r5, r9, ASR#2 + SUB r8, r4, r8, ASR#1 + SUB r9, r5, r9, ASR#1 + + ADD r6, r6, r11, ASR#2 + SUB r7, r7, r10, ASR#2 + SUB r11, r6, r11, ASR#1 + ADD r10, r7, r10, ASR#1 + + STRH r5, [r3, #2] + STRH r4, [r3], #4 + STRH r7, [r3, #2] + STRH r6, [r3], #4 + STRH r9, [r3, #2] + STRH r8, [r3], #4 + STRH r10, [r3, #2] + STRH r11, [r3], #4 + + ADD r0, r0, #1 + + RBIT r12, r0 + + CMP r0,#16 + BNE preloop_v7 + + SUB r1, r3, r2, LSL#2 + MOV r0, #16 + MOVS r2, r2, LSR#4 + +/*;------------------------------------------------------------------------------ +; The FFT coefficients table can be stored into Flash or RAM. +; The following two lines of code allow selecting the method for coefficients +; storage. +; In the case of choosing coefficients in RAM, you have to: +; 1. Include the file table_fft.h, which is a part of the DSP library, +; in your main file. +; 2. Decomment the line LDR.W pssK, =TableFFT and comment the line +; ADRL pssK, TableFFT_V7 +; 3. Comment all the TableFFT_V7 data. +;------------------------------------------------------------------------------*/ + ADR r3, TableFFT_V7 + /*LDR.W r3, =TableFFT*/ + + +passloop_v7: + STMFD SP!, {r1,r2} + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + SUB r2, r2, #1<<16 + +grouploop_v7: + ADD r2,r2,r0,LSL#(16-2) + +butterloop_v7: + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r11, [r3, #2] + LDRSH r10, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r11 + ADD r14, r10, r11, LSL#1 + MLA r11, r5, r10, r12 + MLA r10, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r9, [r3, #2] + LDRSH r8, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r9 + ADD r14, r8, r9, LSL#1 + MLA r9, r5, r8, r12 + MLA r8, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + SUB r1, r1, r0 + + LDRSH r7, [r3, #2] + LDRSH r6, [r3] + ADD r3, r3, #4 + + SUB r14, r5, r4 + MUL r12, r14, r7 + ADD r14, r6, r7, LSL#1 + MLA r7, r5, r6, r12 + MLA r6, r4, r14, r12 + + LDRSH r5, [r1, #2] + LDRSH r4, [r1] + + ADD r8, r8, r10 + ADD r9, r9, r11 + SUB r10, r8, r10, LSL#1 + SUB r11, r9, r11, LSL#1 + + MOV r4, r4, ASR#2 + MOV r5, r5, ASR#2 + ADD r4, r4, r6, ASR#(2+14) + ADD r5, r5, r7, ASR#(2+14) + SUB r6, r4, r6, ASR#(1+14) + SUB r7, r5, r7, ASR#(1+14) + + ADD r4, r4, r8, ASR#(2+14) + ADD r5, r5, r9, ASR#(2+14) + SUB r8, r4, r8, ASR#(1+14) + SUB r9, r5, r9, ASR#(1+14) + + ADD r6, r6, r11, ASR#(2+14) + SUB r7, r7, r10, ASR#(2+14) + SUB r11, r6, r11, ASR#(1+14) + ADD r10, r7, r10, ASR#(1+14) + + STRH r5, [r1, #2] + STRH r4, [r1] + ADD r1, r1, r0 + STRH r7, [r1, #2] + STRH r6, [r1] + ADD r1, r1, r0 + STRH r9, [r1, #2] + STRH r8, [r1] + ADD r1, r1, r0 + STRH r10, [r1, #2] + STRH r11, [r1], #4 + SUBS r2,r2, #1<<16 + BGE butterloop_v7 + ADD r12, r0, r0, LSL#1 + ADD r1, r1, r12 + + SUB r2, r2, #1 + MOVS r14, r2, LSL#16 + IT ne + SUBNE r3, r3, r12 + BNE grouploop_v7 + + LDMFD sp!, {r1, r2} + MOV r0,r0,LSL#2 + MOVS r2, r2, LSR#2 + BNE passloop_v7 + LDMFD SP!, {R4-R11, PC} + + +TableFFT_V7: + + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + + .short 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000 + .short 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c + .short 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e + .short 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e + .short 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41 + .short 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537 + .short 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21 + .short 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5 + .short 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000 + .short 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5 + .short 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21 + .short 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537 + .short 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41 + .short 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e + .short 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e + .short 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c + + +.end +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F1/libraries/stm_fft/cr4_fft_stm32.h b/STM32F1/libraries/stm_fft/cr4_fft_stm32.h new file mode 100644 index 000000000..a8994306f --- /dev/null +++ b/STM32F1/libraries/stm_fft/cr4_fft_stm32.h @@ -0,0 +1,39 @@ +/* + +x[N] be the time signal samples. To use the FFT functions of the DSP library, the +following conditions must be satisfied: +? All the signal samples must be 32-bit data containing the 16-bit real part followed by the +16-bit imaginary part (in the little Endian order: imaginary_real). + + +*/ + +#ifndef __STM32F10x_DSP_H +#define __STM32F10x_DSP_H +/* + * The assembly files can be modified to use a table in RAM rather than ROM. + * Check the assembly files comments. + * + * #include "table_fft.h" + */ + + +extern "C" { + +/* Radix-4 complex FFT for STM32, in assembly */ +/* 16 points*/ +void cr4_fft_16_stm32(void *pssOUT, void *pssIN, uint16_t Nbin); + +/* 64 points*/ +void cr4_fft_64_stm32(void *pssOUT, void *pssIN, uint16_t Nbin); + +/* 256 points */ +void cr4_fft_256_stm32(void *pssOUT, void *pssIN, uint16_t Nbin); + +/* 1024 points */ +void cr4_fft_1024_stm32(void *pssOUT, void *pssIN, uint16_t Nbin); + + +} + +#endif /* __STM32F10x_DSP_H */ diff --git a/STM32F1/libraries/stm_fft/table_fft.h b/STM32F1/libraries/stm_fft/table_fft.h new file mode 100644 index 000000000..27d3d39cc --- /dev/null +++ b/STM32F1/libraries/stm_fft/table_fft.h @@ -0,0 +1,377 @@ +/** + ****************************************************************************** + * @file STM32F10x_DSP_Lib/inc/table_fft.h + * @author MCD Application Team + * @version V2.0.0 + * @date 04/27/2009 + * @brief Contains the coefficients required for FFT computation. + ****************************************************************************** + * @copy + * + * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS + * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE + * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY + * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING + * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE + * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. + * + *

© COPYRIGHT 2009 STMicroelectronics

+ */ + + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __TABLE_FFT_H +#define __TABLE_FFT_H + +/* Includes ------------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +uint16_t TableFFT[]= {0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000, + 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41, + 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000, + 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41, + 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000, /* N=64 */ + 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c, + 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e, + 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e, + 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41, + 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537, + 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21, + 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5, + 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000, + 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5, + 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21, + 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537, + 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41, + 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e, + 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e, + 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c, + 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000, /* N=256 */ + 0x3b1e,0x04b5, 0x3e69,0x0192, 0x3cc8,0x0324, + 0x35eb,0x0964, 0x3cc8,0x0324, 0x396b,0x0646, + 0x306c,0x0e06, 0x3b1e,0x04b5, 0x35eb,0x0964, + 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c, + 0x24ae,0x1709, 0x37af,0x07d6, 0x2e88,0x0f8d, + 0x1e7e,0x1b5d, 0x35eb,0x0964, 0x2aaa,0x1294, + 0x1824,0x1f8c, 0x341e,0x0af1, 0x26b3,0x1590, + 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e, + 0x0b14,0x2760, 0x306c,0x0e06, 0x1e7e,0x1b5d, + 0x0471,0x2afb, 0x2e88,0x0f8d, 0x1a46,0x1e2b, + 0xfdc7,0x2e5a, 0x2c9d,0x1112, 0x15fe,0x20e7, + 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e, + 0xf087,0x3453, 0x28b2,0x1413, 0x0d48,0x2620, + 0xea02,0x36e5, 0x26b3,0x1590, 0x08df,0x289a, + 0xe39c,0x392b, 0x24ae,0x1709, 0x0471,0x2afb, + 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41, + 0xd74e,0x3cc5, 0x2093,0x19ef, 0xfb8f,0x2f6c, + 0xd178,0x3e15, 0x1e7e,0x1b5d, 0xf721,0x3179, + 0xcbe2,0x3f0f, 0x1c64,0x1cc6, 0xf2b8,0x3368, + 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537, + 0xc197,0x3ffb, 0x1824,0x1f8c, 0xea02,0x36e5, + 0xbcf0,0x3fec, 0x15fe,0x20e7, 0xe5ba,0x3871, + 0xb8a6,0x3f85, 0x13d5,0x223d, 0xe182,0x39db, + 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21, + 0xb140,0x3daf, 0x0f79,0x24da, 0xd94d,0x3c42, + 0xae2e,0x3c42, 0x0d48,0x2620, 0xd556,0x3d3f, + 0xab8e,0x3a82, 0x0b14,0x2760, 0xd178,0x3e15, + 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5, + 0xa7b1,0x3612, 0x06a9,0x29ce, 0xca15,0x3f4f, + 0xa678,0x3368, 0x0471,0x2afb, 0xc695,0x3fb1, + 0xa5bc,0x3076, 0x0239,0x2c21, 0xc338,0x3fec, + 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000, + 0xa5bc,0x29ce, 0xfdc7,0x2e5a, 0xbcf0,0x3fec, + 0xa678,0x2620, 0xfb8f,0x2f6c, 0xba09,0x3fb1, + 0xa7b1,0x223d, 0xf957,0x3076, 0xb74d,0x3f4f, + 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5, + 0xab8e,0x19ef, 0xf4ec,0x3274, 0xb25e,0x3e15, + 0xae2e,0x1590, 0xf2b8,0x3368, 0xb02d,0x3d3f, + 0xb140,0x1112, 0xf087,0x3453, 0xae2e,0x3c42, + 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21, + 0xb8a6,0x07d6, 0xec2b,0x3612, 0xaac8,0x39db, + 0xbcf0,0x0324, 0xea02,0x36e5, 0xa963,0x3871, + 0xc197,0xfe6e, 0xe7dc,0x37b0, 0xa834,0x36e5, + 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537, + 0xcbe2,0xf50f, 0xe39c,0x392b, 0xa678,0x3368, + 0xd178,0xf073, 0xe182,0x39db, 0xa5ed,0x3179, + 0xd74e,0xebed, 0xdf6d,0x3a82, 0xa599,0x2f6c, + 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41, + 0xe39c,0xe33a, 0xdb52,0x3bb6, 0xa599,0x2afb, + 0xea02,0xdf19, 0xd94d,0x3c42, 0xa5ed,0x289a, + 0xf087,0xdb26, 0xd74e,0x3cc5, 0xa678,0x2620, + 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e, + 0xfdc7,0xd3df, 0xd363,0x3daf, 0xa834,0x20e7, + 0x0471,0xd094, 0xd178,0x3e15, 0xa963,0x1e2b, + 0x0b14,0xcd8c, 0xcf94,0x3e72, 0xaac8,0x1b5d, + 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e, + 0x1824,0xc850, 0xcbe2,0x3f0f, 0xae2e,0x1590, + 0x1e7e,0xc625, 0xca15,0x3f4f, 0xb02d,0x1294, + 0x24ae,0xc44a, 0xc851,0x3f85, 0xb25e,0x0f8d, + 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c, + 0x306c,0xc18e, 0xc4e2,0x3fd4, 0xb74d,0x0964, + 0x35eb,0xc0b1, 0xc338,0x3fec, 0xba09,0x0646, + 0x3b1e,0xc02c, 0xc197,0x3ffb, 0xbcf0,0x0324, + 0x4000,0x0000, 0x4000,0x0000, 0x4000,0x0000, /* N=1024*/ + 0x3ed0,0x012e, 0x3f9b,0x0065, 0x3f36,0x00c9, + 0x3d9a,0x025b, 0x3f36,0x00c9, 0x3e69,0x0192, + 0x3c5f,0x0388, 0x3ed0,0x012e, 0x3d9a,0x025b, + 0x3b1e,0x04b5, 0x3e69,0x0192, 0x3cc8,0x0324, + 0x39d9,0x05e2, 0x3e02,0x01f7, 0x3bf4,0x03ed, + 0x388e,0x070e, 0x3d9a,0x025b, 0x3b1e,0x04b5, + 0x373f,0x0839, 0x3d31,0x02c0, 0x3a46,0x057e, + 0x35eb,0x0964, 0x3cc8,0x0324, 0x396b,0x0646, + 0x3492,0x0a8e, 0x3c5f,0x0388, 0x388e,0x070e, + 0x3334,0x0bb7, 0x3bf4,0x03ed, 0x37af,0x07d6, + 0x31d2,0x0cdf, 0x3b8a,0x0451, 0x36ce,0x089d, + 0x306c,0x0e06, 0x3b1e,0x04b5, 0x35eb,0x0964, + 0x2f02,0x0f2b, 0x3ab2,0x051a, 0x3505,0x0a2b, + 0x2d93,0x1050, 0x3a46,0x057e, 0x341e,0x0af1, + 0x2c21,0x1173, 0x39d9,0x05e2, 0x3334,0x0bb7, + 0x2aaa,0x1294, 0x396b,0x0646, 0x3249,0x0c7c, + 0x2931,0x13b4, 0x38fd,0x06aa, 0x315b,0x0d41, + 0x27b3,0x14d2, 0x388e,0x070e, 0x306c,0x0e06, + 0x2632,0x15ee, 0x381f,0x0772, 0x2f7b,0x0eca, + 0x24ae,0x1709, 0x37af,0x07d6, 0x2e88,0x0f8d, + 0x2326,0x1821, 0x373f,0x0839, 0x2d93,0x1050, + 0x219c,0x1937, 0x36ce,0x089d, 0x2c9d,0x1112, + 0x200e,0x1a4b, 0x365d,0x0901, 0x2ba4,0x11d3, + 0x1e7e,0x1b5d, 0x35eb,0x0964, 0x2aaa,0x1294, + 0x1ceb,0x1c6c, 0x3578,0x09c7, 0x29af,0x1354, + 0x1b56,0x1d79, 0x3505,0x0a2b, 0x28b2,0x1413, + 0x19be,0x1e84, 0x3492,0x0a8e, 0x27b3,0x14d2, + 0x1824,0x1f8c, 0x341e,0x0af1, 0x26b3,0x1590, + 0x1688,0x2091, 0x33a9,0x0b54, 0x25b1,0x164c, + 0x14ea,0x2193, 0x3334,0x0bb7, 0x24ae,0x1709, + 0x134a,0x2292, 0x32bf,0x0c1a, 0x23a9,0x17c4, + 0x11a8,0x238e, 0x3249,0x0c7c, 0x22a3,0x187e, + 0x1005,0x2488, 0x31d2,0x0cdf, 0x219c,0x1937, + 0x0e61,0x257e, 0x315b,0x0d41, 0x2093,0x19ef, + 0x0cbb,0x2671, 0x30e4,0x0da4, 0x1f89,0x1aa7, + 0x0b14,0x2760, 0x306c,0x0e06, 0x1e7e,0x1b5d, + 0x096d,0x284c, 0x2ff4,0x0e68, 0x1d72,0x1c12, + 0x07c4,0x2935, 0x2f7b,0x0eca, 0x1c64,0x1cc6, + 0x061b,0x2a1a, 0x2f02,0x0f2b, 0x1b56,0x1d79, + 0x0471,0x2afb, 0x2e88,0x0f8d, 0x1a46,0x1e2b, + 0x02c7,0x2bd8, 0x2e0e,0x0fee, 0x1935,0x1edc, + 0x011c,0x2cb2, 0x2d93,0x1050, 0x1824,0x1f8c, + 0xff72,0x2d88, 0x2d18,0x10b1, 0x1711,0x203a, + 0xfdc7,0x2e5a, 0x2c9d,0x1112, 0x15fe,0x20e7, + 0xfc1d,0x2f28, 0x2c21,0x1173, 0x14ea,0x2193, + 0xfa73,0x2ff2, 0x2ba4,0x11d3, 0x13d5,0x223d, + 0xf8ca,0x30b8, 0x2b28,0x1234, 0x12bf,0x22e7, + 0xf721,0x3179, 0x2aaa,0x1294, 0x11a8,0x238e, + 0xf579,0x3236, 0x2a2d,0x12f4, 0x1091,0x2435, + 0xf3d2,0x32ef, 0x29af,0x1354, 0x0f79,0x24da, + 0xf22c,0x33a3, 0x2931,0x13b4, 0x0e61,0x257e, + 0xf087,0x3453, 0x28b2,0x1413, 0x0d48,0x2620, + 0xeee3,0x34ff, 0x2833,0x1473, 0x0c2e,0x26c1, + 0xed41,0x35a5, 0x27b3,0x14d2, 0x0b14,0x2760, + 0xeba1,0x3648, 0x2733,0x1531, 0x09fa,0x27fe, + 0xea02,0x36e5, 0x26b3,0x1590, 0x08df,0x289a, + 0xe865,0x377e, 0x2632,0x15ee, 0x07c4,0x2935, + 0xe6cb,0x3812, 0x25b1,0x164c, 0x06a9,0x29ce, + 0xe532,0x38a1, 0x252f,0x16ab, 0x058d,0x2a65, + 0xe39c,0x392b, 0x24ae,0x1709, 0x0471,0x2afb, + 0xe208,0x39b0, 0x242b,0x1766, 0x0355,0x2b8f, + 0xe077,0x3a30, 0x23a9,0x17c4, 0x0239,0x2c21, + 0xdee9,0x3aab, 0x2326,0x1821, 0x011c,0x2cb2, + 0xdd5d,0x3b21, 0x22a3,0x187e, 0x0000,0x2d41, + 0xdbd5,0x3b92, 0x221f,0x18db, 0xfee4,0x2dcf, + 0xda4f,0x3bfd, 0x219c,0x1937, 0xfdc7,0x2e5a, + 0xd8cd,0x3c64, 0x2117,0x1993, 0xfcab,0x2ee4, + 0xd74e,0x3cc5, 0x2093,0x19ef, 0xfb8f,0x2f6c, + 0xd5d3,0x3d21, 0x200e,0x1a4b, 0xfa73,0x2ff2, + 0xd45c,0x3d78, 0x1f89,0x1aa7, 0xf957,0x3076, + 0xd2e8,0x3dc9, 0x1f04,0x1b02, 0xf83c,0x30f9, + 0xd178,0x3e15, 0x1e7e,0x1b5d, 0xf721,0x3179, + 0xd00c,0x3e5c, 0x1df8,0x1bb8, 0xf606,0x31f8, + 0xcea5,0x3e9d, 0x1d72,0x1c12, 0xf4ec,0x3274, + 0xcd41,0x3ed8, 0x1ceb,0x1c6c, 0xf3d2,0x32ef, + 0xcbe2,0x3f0f, 0x1c64,0x1cc6, 0xf2b8,0x3368, + 0xca88,0x3f40, 0x1bdd,0x1d20, 0xf19f,0x33df, + 0xc932,0x3f6b, 0x1b56,0x1d79, 0xf087,0x3453, + 0xc7e1,0x3f91, 0x1ace,0x1dd3, 0xef6f,0x34c6, + 0xc695,0x3fb1, 0x1a46,0x1e2b, 0xee58,0x3537, + 0xc54e,0x3fcc, 0x19be,0x1e84, 0xed41,0x35a5, + 0xc40c,0x3fe1, 0x1935,0x1edc, 0xec2b,0x3612, + 0xc2cf,0x3ff1, 0x18ad,0x1f34, 0xeb16,0x367d, + 0xc197,0x3ffb, 0x1824,0x1f8c, 0xea02,0x36e5, + 0xc065,0x4000, 0x179b,0x1fe3, 0xe8ef,0x374b, + 0xbf38,0x3fff, 0x1711,0x203a, 0xe7dc,0x37b0, + 0xbe11,0x3ff8, 0x1688,0x2091, 0xe6cb,0x3812, + 0xbcf0,0x3fec, 0x15fe,0x20e7, 0xe5ba,0x3871, + 0xbbd4,0x3fdb, 0x1574,0x213d, 0xe4aa,0x38cf, + 0xbabf,0x3fc4, 0x14ea,0x2193, 0xe39c,0x392b, + 0xb9af,0x3fa7, 0x145f,0x21e8, 0xe28e,0x3984, + 0xb8a6,0x3f85, 0x13d5,0x223d, 0xe182,0x39db, + 0xb7a2,0x3f5d, 0x134a,0x2292, 0xe077,0x3a30, + 0xb6a5,0x3f30, 0x12bf,0x22e7, 0xdf6d,0x3a82, + 0xb5af,0x3efd, 0x1234,0x233b, 0xde64,0x3ad3, + 0xb4be,0x3ec5, 0x11a8,0x238e, 0xdd5d,0x3b21, + 0xb3d5,0x3e88, 0x111d,0x23e2, 0xdc57,0x3b6d, + 0xb2f2,0x3e45, 0x1091,0x2435, 0xdb52,0x3bb6, + 0xb215,0x3dfc, 0x1005,0x2488, 0xda4f,0x3bfd, + 0xb140,0x3daf, 0x0f79,0x24da, 0xd94d,0x3c42, + 0xb071,0x3d5b, 0x0eed,0x252c, 0xd84d,0x3c85, + 0xafa9,0x3d03, 0x0e61,0x257e, 0xd74e,0x3cc5, + 0xaee8,0x3ca5, 0x0dd4,0x25cf, 0xd651,0x3d03, + 0xae2e,0x3c42, 0x0d48,0x2620, 0xd556,0x3d3f, + 0xad7b,0x3bda, 0x0cbb,0x2671, 0xd45c,0x3d78, + 0xacd0,0x3b6d, 0x0c2e,0x26c1, 0xd363,0x3daf, + 0xac2b,0x3afa, 0x0ba1,0x2711, 0xd26d,0x3de3, + 0xab8e,0x3a82, 0x0b14,0x2760, 0xd178,0x3e15, + 0xaaf8,0x3a06, 0x0a87,0x27af, 0xd085,0x3e45, + 0xaa6a,0x3984, 0x09fa,0x27fe, 0xcf94,0x3e72, + 0xa9e3,0x38fd, 0x096d,0x284c, 0xcea5,0x3e9d, + 0xa963,0x3871, 0x08df,0x289a, 0xcdb7,0x3ec5, + 0xa8eb,0x37e1, 0x0852,0x28e7, 0xcccc,0x3eeb, + 0xa87b,0x374b, 0x07c4,0x2935, 0xcbe2,0x3f0f, + 0xa812,0x36b1, 0x0736,0x2981, 0xcafb,0x3f30, + 0xa7b1,0x3612, 0x06a9,0x29ce, 0xca15,0x3f4f, + 0xa757,0x356e, 0x061b,0x2a1a, 0xc932,0x3f6b, + 0xa705,0x34c6, 0x058d,0x2a65, 0xc851,0x3f85, + 0xa6bb,0x3419, 0x04ff,0x2ab0, 0xc772,0x3f9c, + 0xa678,0x3368, 0x0471,0x2afb, 0xc695,0x3fb1, + 0xa63e,0x32b2, 0x03e3,0x2b45, 0xc5ba,0x3fc4, + 0xa60b,0x31f8, 0x0355,0x2b8f, 0xc4e2,0x3fd4, + 0xa5e0,0x3139, 0x02c7,0x2bd8, 0xc40c,0x3fe1, + 0xa5bc,0x3076, 0x0239,0x2c21, 0xc338,0x3fec, + 0xa5a1,0x2faf, 0x01aa,0x2c6a, 0xc266,0x3ff5, + 0xa58d,0x2ee4, 0x011c,0x2cb2, 0xc197,0x3ffb, + 0xa581,0x2e15, 0x008e,0x2cfa, 0xc0ca,0x3fff, + 0xa57e,0x2d41, 0x0000,0x2d41, 0xc000,0x4000, + 0xa581,0x2c6a, 0xff72,0x2d88, 0xbf38,0x3fff, + 0xa58d,0x2b8f, 0xfee4,0x2dcf, 0xbe73,0x3ffb, + 0xa5a1,0x2ab0, 0xfe56,0x2e15, 0xbdb0,0x3ff5, + 0xa5bc,0x29ce, 0xfdc7,0x2e5a, 0xbcf0,0x3fec, + 0xa5e0,0x28e7, 0xfd39,0x2e9f, 0xbc32,0x3fe1, + 0xa60b,0x27fe, 0xfcab,0x2ee4, 0xbb77,0x3fd4, + 0xa63e,0x2711, 0xfc1d,0x2f28, 0xbabf,0x3fc4, + 0xa678,0x2620, 0xfb8f,0x2f6c, 0xba09,0x3fb1, + 0xa6bb,0x252c, 0xfb01,0x2faf, 0xb956,0x3f9c, + 0xa705,0x2435, 0xfa73,0x2ff2, 0xb8a6,0x3f85, + 0xa757,0x233b, 0xf9e5,0x3034, 0xb7f8,0x3f6b, + 0xa7b1,0x223d, 0xf957,0x3076, 0xb74d,0x3f4f, + 0xa812,0x213d, 0xf8ca,0x30b8, 0xb6a5,0x3f30, + 0xa87b,0x203a, 0xf83c,0x30f9, 0xb600,0x3f0f, + 0xa8eb,0x1f34, 0xf7ae,0x3139, 0xb55e,0x3eeb, + 0xa963,0x1e2b, 0xf721,0x3179, 0xb4be,0x3ec5, + 0xa9e3,0x1d20, 0xf693,0x31b9, 0xb422,0x3e9d, + 0xaa6a,0x1c12, 0xf606,0x31f8, 0xb388,0x3e72, + 0xaaf8,0x1b02, 0xf579,0x3236, 0xb2f2,0x3e45, + 0xab8e,0x19ef, 0xf4ec,0x3274, 0xb25e,0x3e15, + 0xac2b,0x18db, 0xf45f,0x32b2, 0xb1cd,0x3de3, + 0xacd0,0x17c4, 0xf3d2,0x32ef, 0xb140,0x3daf, + 0xad7b,0x16ab, 0xf345,0x332c, 0xb0b5,0x3d78, + 0xae2e,0x1590, 0xf2b8,0x3368, 0xb02d,0x3d3f, + 0xaee8,0x1473, 0xf22c,0x33a3, 0xafa9,0x3d03, + 0xafa9,0x1354, 0xf19f,0x33df, 0xaf28,0x3cc5, + 0xb071,0x1234, 0xf113,0x3419, 0xaea9,0x3c85, + 0xb140,0x1112, 0xf087,0x3453, 0xae2e,0x3c42, + 0xb215,0x0fee, 0xeffb,0x348d, 0xadb6,0x3bfd, + 0xb2f2,0x0eca, 0xef6f,0x34c6, 0xad41,0x3bb6, + 0xb3d5,0x0da4, 0xeee3,0x34ff, 0xacd0,0x3b6d, + 0xb4be,0x0c7c, 0xee58,0x3537, 0xac61,0x3b21, + 0xb5af,0x0b54, 0xedcc,0x356e, 0xabf6,0x3ad3, + 0xb6a5,0x0a2b, 0xed41,0x35a5, 0xab8e,0x3a82, + 0xb7a2,0x0901, 0xecb6,0x35dc, 0xab29,0x3a30, + 0xb8a6,0x07d6, 0xec2b,0x3612, 0xaac8,0x39db, + 0xb9af,0x06aa, 0xeba1,0x3648, 0xaa6a,0x3984, + 0xbabf,0x057e, 0xeb16,0x367d, 0xaa0f,0x392b, + 0xbbd4,0x0451, 0xea8c,0x36b1, 0xa9b7,0x38cf, + 0xbcf0,0x0324, 0xea02,0x36e5, 0xa963,0x3871, + 0xbe11,0x01f7, 0xe978,0x3718, 0xa912,0x3812, + 0xbf38,0x00c9, 0xe8ef,0x374b, 0xa8c5,0x37b0, + 0xc065,0xff9b, 0xe865,0x377e, 0xa87b,0x374b, + 0xc197,0xfe6e, 0xe7dc,0x37b0, 0xa834,0x36e5, + 0xc2cf,0xfd40, 0xe753,0x37e1, 0xa7f1,0x367d, + 0xc40c,0xfc13, 0xe6cb,0x3812, 0xa7b1,0x3612, + 0xc54e,0xfae6, 0xe642,0x3842, 0xa774,0x35a5, + 0xc695,0xf9ba, 0xe5ba,0x3871, 0xa73b,0x3537, + 0xc7e1,0xf88e, 0xe532,0x38a1, 0xa705,0x34c6, + 0xc932,0xf763, 0xe4aa,0x38cf, 0xa6d3,0x3453, + 0xca88,0xf639, 0xe423,0x38fd, 0xa6a4,0x33df, + 0xcbe2,0xf50f, 0xe39c,0x392b, 0xa678,0x3368, + 0xcd41,0xf3e6, 0xe315,0x3958, 0xa650,0x32ef, + 0xcea5,0xf2bf, 0xe28e,0x3984, 0xa62c,0x3274, + 0xd00c,0xf198, 0xe208,0x39b0, 0xa60b,0x31f8, + 0xd178,0xf073, 0xe182,0x39db, 0xa5ed,0x3179, + 0xd2e8,0xef4f, 0xe0fc,0x3a06, 0xa5d3,0x30f9, + 0xd45c,0xee2d, 0xe077,0x3a30, 0xa5bc,0x3076, + 0xd5d3,0xed0c, 0xdff2,0x3a59, 0xa5a9,0x2ff2, + 0xd74e,0xebed, 0xdf6d,0x3a82, 0xa599,0x2f6c, + 0xd8cd,0xeacf, 0xdee9,0x3aab, 0xa58d,0x2ee4, + 0xda4f,0xe9b4, 0xde64,0x3ad3, 0xa585,0x2e5a, + 0xdbd5,0xe89a, 0xdde1,0x3afa, 0xa57f,0x2dcf, + 0xdd5d,0xe782, 0xdd5d,0x3b21, 0xa57e,0x2d41, + 0xdee9,0xe66d, 0xdcda,0x3b47, 0xa57f,0x2cb2, + 0xe077,0xe559, 0xdc57,0x3b6d, 0xa585,0x2c21, + 0xe208,0xe448, 0xdbd5,0x3b92, 0xa58d,0x2b8f, + 0xe39c,0xe33a, 0xdb52,0x3bb6, 0xa599,0x2afb, + 0xe532,0xe22d, 0xdad1,0x3bda, 0xa5a9,0x2a65, + 0xe6cb,0xe124, 0xda4f,0x3bfd, 0xa5bc,0x29ce, + 0xe865,0xe01d, 0xd9ce,0x3c20, 0xa5d3,0x2935, + 0xea02,0xdf19, 0xd94d,0x3c42, 0xa5ed,0x289a, + 0xeba1,0xde18, 0xd8cd,0x3c64, 0xa60b,0x27fe, + 0xed41,0xdd19, 0xd84d,0x3c85, 0xa62c,0x2760, + 0xeee3,0xdc1e, 0xd7cd,0x3ca5, 0xa650,0x26c1, + 0xf087,0xdb26, 0xd74e,0x3cc5, 0xa678,0x2620, + 0xf22c,0xda31, 0xd6cf,0x3ce4, 0xa6a4,0x257e, + 0xf3d2,0xd93f, 0xd651,0x3d03, 0xa6d3,0x24da, + 0xf579,0xd851, 0xd5d3,0x3d21, 0xa705,0x2435, + 0xf721,0xd766, 0xd556,0x3d3f, 0xa73b,0x238e, + 0xf8ca,0xd67f, 0xd4d8,0x3d5b, 0xa774,0x22e7, + 0xfa73,0xd59b, 0xd45c,0x3d78, 0xa7b1,0x223d, + 0xfc1d,0xd4bb, 0xd3df,0x3d93, 0xa7f1,0x2193, + 0xfdc7,0xd3df, 0xd363,0x3daf, 0xa834,0x20e7, + 0xff72,0xd306, 0xd2e8,0x3dc9, 0xa87b,0x203a, + 0x011c,0xd231, 0xd26d,0x3de3, 0xa8c5,0x1f8c, + 0x02c7,0xd161, 0xd1f2,0x3dfc, 0xa912,0x1edc, + 0x0471,0xd094, 0xd178,0x3e15, 0xa963,0x1e2b, + 0x061b,0xcfcc, 0xd0fe,0x3e2d, 0xa9b7,0x1d79, + 0x07c4,0xcf07, 0xd085,0x3e45, 0xaa0f,0x1cc6, + 0x096d,0xce47, 0xd00c,0x3e5c, 0xaa6a,0x1c12, + 0x0b14,0xcd8c, 0xcf94,0x3e72, 0xaac8,0x1b5d, + 0x0cbb,0xccd4, 0xcf1c,0x3e88, 0xab29,0x1aa7, + 0x0e61,0xcc21, 0xcea5,0x3e9d, 0xab8e,0x19ef, + 0x1005,0xcb73, 0xce2e,0x3eb1, 0xabf6,0x1937, + 0x11a8,0xcac9, 0xcdb7,0x3ec5, 0xac61,0x187e, + 0x134a,0xca24, 0xcd41,0x3ed8, 0xacd0,0x17c4, + 0x14ea,0xc983, 0xcccc,0x3eeb, 0xad41,0x1709, + 0x1688,0xc8e8, 0xcc57,0x3efd, 0xadb6,0x164c, + 0x1824,0xc850, 0xcbe2,0x3f0f, 0xae2e,0x1590, + 0x19be,0xc7be, 0xcb6e,0x3f20, 0xaea9,0x14d2, + 0x1b56,0xc731, 0xcafb,0x3f30, 0xaf28,0x1413, + 0x1ceb,0xc6a8, 0xca88,0x3f40, 0xafa9,0x1354, + 0x1e7e,0xc625, 0xca15,0x3f4f, 0xb02d,0x1294, + 0x200e,0xc5a7, 0xc9a3,0x3f5d, 0xb0b5,0x11d3, + 0x219c,0xc52d, 0xc932,0x3f6b, 0xb140,0x1112, + 0x2326,0xc4b9, 0xc8c1,0x3f78, 0xb1cd,0x1050, + 0x24ae,0xc44a, 0xc851,0x3f85, 0xb25e,0x0f8d, + 0x2632,0xc3e0, 0xc7e1,0x3f91, 0xb2f2,0x0eca, + 0x27b3,0xc37b, 0xc772,0x3f9c, 0xb388,0x0e06, + 0x2931,0xc31c, 0xc703,0x3fa7, 0xb422,0x0d41, + 0x2aaa,0xc2c1, 0xc695,0x3fb1, 0xb4be,0x0c7c, + 0x2c21,0xc26d, 0xc627,0x3fbb, 0xb55e,0x0bb7, + 0x2d93,0xc21d, 0xc5ba,0x3fc4, 0xb600,0x0af1, + 0x2f02,0xc1d3, 0xc54e,0x3fcc, 0xb6a5,0x0a2b, + 0x306c,0xc18e, 0xc4e2,0x3fd4, 0xb74d,0x0964, + 0x31d2,0xc14f, 0xc476,0x3fdb, 0xb7f8,0x089d, + 0x3334,0xc115, 0xc40c,0x3fe1, 0xb8a6,0x07d6, + 0x3492,0xc0e0, 0xc3a1,0x3fe7, 0xb956,0x070e, + 0x35eb,0xc0b1, 0xc338,0x3fec, 0xba09,0x0646, + 0x373f,0xc088, 0xc2cf,0x3ff1, 0xbabf,0x057e, + 0x388e,0xc064, 0xc266,0x3ff5, 0xbb77,0x04b5, + 0x39d9,0xc045, 0xc1fe,0x3ff8, 0xbc32,0x03ed, + 0x3b1e,0xc02c, 0xc197,0x3ffb, 0xbcf0,0x0324, + 0x3c5f,0xc019, 0xc130,0x3ffd, 0xbdb0,0x025b, + 0x3d9a,0xc00b, 0xc0ca,0x3fff, 0xbe73,0x0192, + 0x3ed0,0xc003, 0xc065,0x4000, 0xbf38,0x00c9 +}; + +/* Exported macro ------------------------------------------------------------*/ +/* Exported functions ------------------------------------------------------- */ + +#endif /* __TABLE_FFT_H */ + +/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ From c693d0038e0e02ceccfc268596223c765ea407fd Mon Sep 17 00:00:00 2001 From: victorpv Date: Wed, 28 Mar 2018 22:19:47 -0500 Subject: [PATCH 081/373] Some more SDIO corrections and improvements --- STM32F1/system/libmaple/include/libmaple/sdio.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STM32F1/system/libmaple/include/libmaple/sdio.h b/STM32F1/system/libmaple/include/libmaple/sdio.h index dec31c8b7..64e71c22d 100644 --- a/STM32F1/system/libmaple/include/libmaple/sdio.h +++ b/STM32F1/system/libmaple/include/libmaple/sdio.h @@ -57,7 +57,7 @@ typedef struct sdio_reg_map { __io uint32 ARG; // 0x08 __io uint32 CMD; // 0x0C __io uint32 RESPCMD; // 0x10 (0x3F) - const uint32 RESP[4]; // 0x14 - contain the card status, which is part of the received response. + __io const uint32 RESP[4]; // 0x14 - contain the card status, which is part of the received response. __io uint32 DTIMER; // 0x24 - contains the data timeout period, in card bus clock periods. __io uint32 DLEN; // 0x28 (0x01FF FFFF) - contains the number of data bytes to be transferred __io uint32 DCTRL; // 0x2C @@ -95,7 +95,7 @@ extern sdio_dev * SDIO; // After a data write, data cannot be written to this register for three SDIOCLK clock periods // plus two PCLK2 clock periods. SDIO_CK can also be stopped during the read wait interval // for SD I/O cards: in this case the SDIO_CLKCR register does not control SDIO_CK. -#define SDIO_CLKCR_HWFC_EN (1<<14) // HW Flow Control enable - DON'T USE!!! (see errata sheet 2.12.1) +#define SDIO_CLKCR_HWFC_EN (1<<14) // HW Flow Control enable - DON'T USE in F4!!! (see errata sheet 2.12.1) // Overrun errors (Rx mode) and FIFO underrun (Tx mode) // should be managed by the application software. #define SDIO_CLKCR_NEGEDGE (1<<13) // SDIO_CK de-phasing selection bit - DON'T USE!!! (see errata sheet 2.12.4) @@ -106,7 +106,7 @@ extern sdio_dev * SDIO; #define SDIO_CLKCR_PWRSAV (1<<9) // 0: SDIO_CK clock is always enabled, 1: SDIO_CK is only enabled when the bus is active #define SDIO_CLKCR_CLKEN (1<<8) // Clock enable #define SDIO_CLKCR_CLKDIV (0xFF) // SDIO_CK = SDIOCLK / [CLKDIV + 2] -#define SDIOCLK 72000000UL // SDIO master clock frequency +#define SDIOCLK PCLK2 // SDIO master clock frequency // SDIO_CMD register bits // After a data write, data cannot be written to this register for three SDIOCLK clock periods From 5c3c9af24137eb36307534513b60918214717a77 Mon Sep 17 00:00:00 2001 From: victorpv Date: Wed, 28 Mar 2018 22:23:41 -0500 Subject: [PATCH 082/373] Revert "Hardware serial corrections" This reverts commit 771be821c288f74f4106768aca0042d05c0d038d. --- STM32F1/cores/maple/HardwareSerial.cpp | 2 +- STM32F1/cores/maple/HardwareSerial.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/cores/maple/HardwareSerial.cpp b/STM32F1/cores/maple/HardwareSerial.cpp index fe73339c9..024efbc7d 100644 --- a/STM32F1/cores/maple/HardwareSerial.cpp +++ b/STM32F1/cores/maple/HardwareSerial.cpp @@ -187,7 +187,7 @@ int HardwareSerial::availableForWrite(void) return 1; } -size_t HardwareSerial::write(uint8_t ch) { +size_t HardwareSerial::write(unsigned char ch) { usart_putc(this->usart_device, ch); return 1; diff --git a/STM32F1/cores/maple/HardwareSerial.h b/STM32F1/cores/maple/HardwareSerial.h index 108d525c7..b8b8dd6fd 100644 --- a/STM32F1/cores/maple/HardwareSerial.h +++ b/STM32F1/cores/maple/HardwareSerial.h @@ -138,7 +138,7 @@ class HardwareSerial : public Stream { virtual int read(void); int availableForWrite(void); virtual void flush(void); - virtual size_t write(uint8_t ch); + virtual size_t write(uint8_t); inline size_t write(unsigned long n) { return write((uint8_t)n); } inline size_t write(long n) { return write((uint8_t)n); } inline size_t write(unsigned int n) { return write((uint8_t)n); } From e3510b76eb0680cca87df4c9bfeef096300b61a7 Mon Sep 17 00:00:00 2001 From: victorpv Date: Wed, 28 Mar 2018 22:27:39 -0500 Subject: [PATCH 083/373] Revert "SDIO updates" This reverts commit 7dce451ebc9ec79dd2157913202fa0c03daf74ae. --- STM32F1/cores/maple/sdio.cpp | 51 +-- STM32F1/libraries/SDIO/SdioF1.cpp | 571 +++++++----------------------- STM32F1/libraries/SDIO/SdioF1.h | 4 +- 3 files changed, 144 insertions(+), 482 deletions(-) diff --git a/STM32F1/cores/maple/sdio.cpp b/STM32F1/cores/maple/sdio.cpp index 2edf501de..8bd94915b 100644 --- a/STM32F1/cores/maple/sdio.cpp +++ b/STM32F1/cores/maple/sdio.cpp @@ -32,8 +32,8 @@ sdio_dev * SDIO = SDIO_BASE; -#define DELAY_LONG 20 -#define DELAY_SHORT 2 +#define DELAY_LONG 10 +#define DELAY_SHORT 1 uint8_t dly = DELAY_LONG; // microseconds delay after accessing registers @@ -43,13 +43,9 @@ uint8_t dly = DELAY_LONG; // microseconds delay after accessing registers void sdio_gpios_init(void) { gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_AF_OUTPUT_PP); -/* gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_AF_OUTPUT_PP); -*/ - gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_PU); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_PU); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_PU); gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_AF_OUTPUT_PP); /* @@ -67,12 +63,12 @@ void sdio_gpios_init(void) void sdio_gpios_deinit(void) { - gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_INPUT_PU); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_PU); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_PU); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_PU); - gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_INPUT_PU); - gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_INPUT_FLOATING); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_FLOATING); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_FLOATING); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_FLOATING); + gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_INPUT_FLOATING); + gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_INPUT_FLOATING); /* * Todo just remove it, not needed for F1. @@ -114,35 +110,19 @@ void sdio_power_off(void) void sdio_set_clock(uint32_t clk) { - /* - * limit the SDIO master clock to 8/3 of PCLK2.See RM 22.3 - * Also limited to no more than 48Mhz - */ - clk = min(clk,(SDIOCLK/3)*8); - clk = min(clk,36000000); + if (clk>24000000UL) clk = 24000000UL; // limit the SDIO master clock to 24MHz if (clk<1000000) dly = DELAY_LONG; else dly = DELAY_SHORT; - /* - * round up divider, so we don't run the card over the speed supported. - - */ - uint32 div = SDIOCLK/clk + (SDIOCLK % clk != 0) - 2; - - sdio_disable(); - //Serial.println(div,DEC); - SDIO->CLKCR = (SDIO->CLKCR & (~(SDIO_CLKCR_CLKDIV|SDIO_CLKCR_BYPASS))) | SDIO_CLKCR_PWRSAV | SDIO_CLKCR_HWFC_EN | SDIO_CLKCR_CLKEN | (div & SDIO_CLKCR_CLKDIV); + SDIO->CLKCR = (SDIO->CLKCR & (~(SDIO_CLKCR_CLKDIV|SDIO_CLKCR_BYPASS))) | SDIO_CLKCR_CLKEN | (((SDIOCLK/clk)-2)&SDIO_CLKCR_CLKDIV); delay_us(dly); } void sdio_set_dbus_width(uint16_t bus_w) { SDIO->CLKCR = (SDIO->CLKCR & (~SDIO_CLKCR_WIDBUS)) | bus_w; - gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_AF_OUTPUT_PP); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_AF_OUTPUT_PP); delay_us(dly); } @@ -169,10 +149,9 @@ void sdio_disable(void) */ void sdio_begin(void) { - + sdio_gpios_init(); sdio_init(); sdio_power_on(); - sdio_gpios_init(); // Set initial SCK rate. sdio_set_clock(400000); delay_us(200); // generate 80 pulses at 400kHz @@ -183,12 +162,11 @@ void sdio_begin(void) */ void sdio_end(void) { - while ( sdio_cmd_xfer_ongoing() ); sdio_disable(); - sdio_gpios_deinit(); + while ( sdio_cmd_xfer_ongoing() ); sdio_power_off(); rcc_clk_disable(RCC_SDIO); - + sdio_gpios_deinit(); } /** @@ -209,7 +187,6 @@ uint8_t sdio_cmd_send(uint16_t cmd_index_resp_type, uint32_t arg) while ( !(SDIO->STA&(SDIO_STA_CMDREND|SDIO_STA_CMD_ERROR_FLAGS)) ) ; } else break; // no response required if ( SDIO->STA&(SDIO_STA_CMDREND|SDIO_STA_CTIMEOUT) ) - //if ( SDIO->STA&(SDIO_STA_CMDREND) ) break; // response received or timeout // ignore CRC error for CMD5 and ACMD41 if ( ((cmd_index_resp_type&SDIO_CMD_CMDINDEX)==5) || ((cmd_index_resp_type&SDIO_CMD_CMDINDEX)==41) ) diff --git a/STM32F1/libraries/SDIO/SdioF1.cpp b/STM32F1/libraries/SDIO/SdioF1.cpp index c0e5eae27..8957b37d3 100644 --- a/STM32F1/libraries/SDIO/SdioF1.cpp +++ b/STM32F1/libraries/SDIO/SdioF1.cpp @@ -61,12 +61,6 @@ #define CMD38_XFERTYP (uint16_t)( CMD38 | CMD_RESP_R1b ) #define ACMD41_XFERTYP (uint16_t)( ACMD41 | CMD_RESP_R3 ) -/* - * AMD42 to enable disable CD/D3 pull up. Needed for 4bit mode. - */ -const uint8_t ACMD42 = 0X2A; -#define ACMD42_XFERTYP (uint16_t)( ACMD41 | CMD_RESP_R1 ) - #define CMD55_XFERTYP (uint16_t)( CMD55 | CMD_RESP_R1 ) //============================================================================= @@ -75,27 +69,14 @@ const uint8_t ACMD42 = 0X2A; static void initSDHC(void); static bool isBusyCMD13(void); static bool isBusyTransferComplete(void); -static bool isBusyTransferCRC(void); //static bool isBusyCommandComplete(); //static bool isBusyCommandInhibit(); static bool readReg16(uint32_t xfertyp, void* data); //static void setSdclk(uint32_t kHzMax); static bool yieldTimeout(bool (*fcn)(void)); -static bool yieldDmaStatus(void); static bool waitDmaStatus(void); static bool waitTimeout(bool (*fcn)(void)); //----------------------------------------------------------------------------- -static const uint32_t IDLE_STATE = 0; -static const uint32_t READ_STATE = 1; -static const uint32_t WRITE_STATE = 2; -volatile uint32_t m_curLba; -volatile uint32_t m_limitLba; -volatile uint8_t m_curState; -volatile uint64_t m_totalReadLbas = 0; -volatile uint64_t m_readErrors = 0; -volatile uint64_t m_writeErrors = 0; -volatile uint64_t m_totalWriteLbas = 0; - #define TRX_RD 0 #define TRX_WR 1 static uint8_t m_dir = TRX_RD; @@ -116,26 +97,27 @@ static cid_t m_cid; static csd_t m_csd; static uint32_t t = 0; //============================================================================= - +/* + * Todo Remove this or change it, but rather remove since this can be checked with debugger. + */ #if USE_DEBUG_MODE #define DBG_PRINT() { \ Serial.write('_'); Serial.print(__FUNCTION__); Serial.write('_'); Serial.print(__LINE__); Serial.print(": "); \ - Serial.print("DMA->ISR: 0x"); Serial.print(SDIO_DMA_DEV->regs->ISR, HEX); \ + Serial.print("DMA->LISR: "); Serial.print(SDIO_DMA_DEV->regs->LISR, HEX); \ /*Serial.print("DMA->HISR: "); Serial.println(SDIO_DMA_DEV->regs->HISR, HEX);*/ \ - Serial.print(", DMA->CCR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CCR4, HEX); \ - Serial.print(", DMA->CNDTR: "); Serial.print(SDIO_DMA_DEV->regs->CNDTR4,DEC); \ - /**/Serial.print(", DMA->CPAR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CPAR4, HEX); \ - /**/Serial.print(", DMA->CMAR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CMAR4, HEX); \ - Serial.print(", DMA->IFCR: 0x"); Serial.print(SDIO_DMA_DEV->regs->IFCR, HEX); \ + Serial.print(", DMA->CR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].CR, HEX); \ + Serial.print(", DMA->NDTR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].NDTR, HEX); \ + /**/Serial.print(", DMA->PAR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].PAR, HEX); \ + /**/Serial.print(", DMA->M0AR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].M0AR, HEX); \ + Serial.print(", DMA->FCR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].FCR, HEX); \ \ /*Serial.print(" SDIO->POWER: "); Serial.println(SDIO->POWER, HEX);*/ \ - Serial.print(", SDIO->CLKCR: 0x"); Serial.print(SDIO->CLKCR, HEX); \ - Serial.print(", SDIO->DTIMER: 0x"); Serial.print(SDIO->DTIMER, HEX); \ - Serial.print(", SDIO->DCTRL: 0x"); Serial.print(SDIO->DCTRL, HEX); \ + Serial.print(", SDIO->CLKCR: "); Serial.print(SDIO->CLKCR, HEX); \ + Serial.print(", SDIO->DTIMER: "); Serial.print(SDIO->DTIMER, HEX); \ + Serial.print(", SDIO->DCTRL: "); Serial.print(SDIO->DCTRL, HEX); \ /**/Serial.print(", SDIO->DLEN: "); Serial.print(SDIO->DLEN); \ Serial.print(", SDIO->DCOUNT: "); Serial.print(SDIO->DCOUNT); \ - Serial.print(", SDIO->STA: 0x"); Serial.println(SDIO->STA, HEX); \ - Serial.print(", SDIO->FIFOCNT: "); Serial.println(SDIO->FIFOCNT); \ + Serial.print(", SDIO->STA: "); Serial.println(SDIO->STA, HEX); \ /*delay(1);*/ \ } #define DBG_PIN PD0 @@ -149,7 +131,7 @@ static void _panic(const char *message, uint32_t code) { Serial.print(message); Serial.println(code, HEX); //Block the execution with blinky leds - while (1) {delay (1);}; + while (1); /* pinMode(BOARD_LED_PIN, OUTPUT); //pinMode(BOARD_LED2_PIN, OUTPUT); @@ -189,14 +171,13 @@ void yield(void) } val = dma_get_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); -/* if ( val & DMA_ISR_FEIF ) { + if ( val & DMA_ISR_FEIF ) { val ^= DMA_ISR_FEIF; dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); } -*/ if ( val ) { if (val & DMA_ISR_TEIF) Serial.print(" TEIF"); - //if (val & DMA_ISR_DMEIF) Serial.print(" DMEIF"); + if (val & DMA_ISR_DMEIF) Serial.print(" DMEIF"); //if (val & DMA_ISR_FEIF) Serial.print(" FEIF"); _panic(" - DMA: Data Transmission Error ", val); } @@ -227,7 +208,7 @@ static bool cardCommand(uint16_t xfertyp, uint32_t arg) #if USE_DEBUG_MODE==2 Serial.print("cardCommand: "); Serial.print(xfertyp&SDIO_CMD_CMDINDEX); Serial.print(", arg: "); Serial.print(arg, HEX); #endif - uint8_t resp = sdio_cmd_send(xfertyp, arg); // returns non-zero if OK, zero if it fails + uint8_t resp = sdio_cmd_send(xfertyp, arg); // returns non-zero if fails, zero if OK #if USE_DEBUG_MODE==2 Serial.print(", resp: "); Serial.print(resp, HEX); Serial.print(", SDIO->STA: "); Serial.print(SDIO->STA, HEX); Serial.print(", cmd_resp: "); Serial.print(SDIO->RESP[0], HEX); @@ -283,38 +264,19 @@ static bool isBusyCMD13(void) { } return !(SDIO->RESP[0] & CARD_STATUS_READY_FOR_DATA); } - -/* - * Returns False if DMA transfer disabled. - * True otherwise - */ -static bool inline isEnabledDMA(void) -{ - return dma_is_enabled(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); -} - -/* - * Returns False if DMA transfer is completed or in error. - * True otherwise - */ +/*---------------------------------------------------------------------------*/ static bool isBusyDMA(void) { - if (!isEnabledDMA()) return false; uint8_t isr = dma_get_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - isr &= DMA_ISR_TCIF | DMA_ISR_TEIF; + isr &= DMA_ISR_TCIF | DMA_ISR_TEIF; //if (isr&DMA_ISR_TCIF) dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return !(isr); // ignore transfer error flag } - /*---------------------------------------------------------------------------*/ -/* - * Returns true while the transfer has not completed - * False when it has completed. - */ static bool isBusyTransferComplete(void) { uint32_t mask = SDIO->STA &(SDIO_STA_DATAEND | SDIO_STA_TRX_ERROR_FLAGS); -//#if USE_DEBUG_MODE +#if USE_DEBUG_MODE if ( mask & SDIO_STA_TRX_ERROR_FLAGS ) { Serial.print("XFER ERROR: SDIO->STA: "); Serial.print(SDIO->STA, HEX); if (mask & SDIO_STA_STBITERR) Serial.print(" STBITERR"); @@ -324,43 +286,13 @@ static bool isBusyTransferComplete(void) if (mask & SDIO_STA_DCRCFAIL) Serial.print(" DCRCFAIL"); Serial.println(); } -//#endif +#endif if (mask) { dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return false; } return true; } - - -/* - * New function, to follow Reference Manual sequence. - * Returns true if still not confirmed DBCKEND: Data block sent/received (CRC check passed) - * False when it has completed the transfer with CRC check. - */ -static bool isBusyTransferCRC(void) -{ - uint32_t mask = SDIO->STA &(SDIO_STA_DBCKEND | SDIO_STA_TRX_ERROR_FLAGS); -#if USE_DEBUG_MODE - if ( mask & SDIO_STA_TRX_ERROR_FLAGS ) { - Serial.print("XFER ERROR: SDIO->STA: "); Serial.print(SDIO->STA, HEX); - if (mask & SDIO_STA_STBITERR) Serial.print(" STBITERR"); - if (mask & SDIO_STA_RXOVERR) Serial.print(" RXOVERR"); - if (mask & SDIO_STA_TXUNDERR) Serial.print(" TXUNDERR"); - if (mask & SDIO_STA_DTIMEOUT) Serial.print(" DTIMEOUT"); - if (mask & SDIO_STA_DCRCFAIL) Serial.print(" DCRCFAIL"); - Serial.println(); - } -#endif - if (mask) { - //dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - //Serial.print("SDIO->STA SDIO_STA_DBCKEND"); Serial.println(SDIO->STA && SDIO_STA_DBCKEND, HEX); - return false; - } - return true; -} - - /*---------------------------------------------------------------------------*/ static void trxStart(uint8_t* buf, uint32_t n, uint8_t dir) { @@ -376,12 +308,6 @@ static bool trxStop() if (!cardCommand(CMD12_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD12); } - /* - * Added this to wait to complete on sync. - */ - if (waitTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } if ( t ) { Serial.print(", in "); Serial.println(millis()-t); t = 0; @@ -389,70 +315,52 @@ static bool trxStop() return true; } /*---------------------------------------------------------------------------*/ -static bool dmaTrxStart(uint32_t n, uint8_t dir) +static bool dmaTrxStart(uint8_t* buf, uint32_t n, uint8_t dir) { - uint32_t flags = (SDIO_BLOCKSIZE_512 | SDIO_DCTRL_DMAEN | SDIO_DCTRL_DTEN); + m_dir = dir; + if ((3 & (uint32_t)buf) || n == 0) { // check alignment + _panic("- transferStart: unaligned buffer address ", (uint32_t)buf); + return sdError(SD_CARD_ERROR_DMA); + } + if (dir==TRX_RD && yieldTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + uint32_t flags = (SDIO_BLOCKSIZE_512 | SDIO_DCTRL_DMAEN | SDIO_DCTRL_DTEN); if (dir==TRX_RD) flags |= SDIO_DIR_RX; // setup SDIO to transfer n blocks of 512 bytes sdio_setup_transfer(0x00FFFFFF, n, flags); - + // setup SDIO_DMA_DEV stream 3 channel 4 + /* + * Moved to begin. + */ + //dma_init(SDIO_DMA_DEV); + /* + * Todo. Check this, channel must be disabled to change DMA priority, and seems like channel is not completing transfers + */ + //dma_set_priority(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, DMA_PRIORITY_VERY_HIGH); + flags = (DMA_MINC_MODE); + // not extra flag if read + if (dir!=TRX_RD) flags |= DMA_FROM_MEM;// write + dma_setup_transfer(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, &SDIO->FIFO, DMA_SIZE_32BITS, buf, DMA_SIZE_32BITS, flags); + dma_set_num_transfers(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, n>>2); // F1 DMA controller counts each word as 1 data item. + //dma_set_fifo_flags(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, (DMA_FCR_DMDIS | DMA_FCR_FTH_FULL)); // disable direct mode | threshold FULL + dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + dma_enable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return true; } - -/* - * This one replaces dmaTrxStart, and will just prepare the DMA part, then a new - * one will enable the DMA reception as per the RM. - */ -static bool dmaTrxPrepare(uint8_t* buf, uint32_t n, uint8_t dir) -{ - uint32_t flags; - m_dir = dir; - if ((3 & (uint32_t)buf) || n == 0) { // check alignment - _panic("- transferStart: unaligned buffer address ", (uint32_t)buf); - return sdError(SD_CARD_ERROR_DMA); - } - /* - * No point to wait here again if we always wait before calling this. - if (dir==TRX_RD && yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - */ - - /* - * Following RM 22.3.2. Setup DMA first, SDIO peripheral next - * - */ - flags = (DMA_MINC_MODE); - // not extra flag if read - if (dir!=TRX_RD) flags |= DMA_FROM_MEM;// write - dma_setup_transfer(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, &SDIO->FIFO, DMA_SIZE_32BITS, buf, DMA_SIZE_32BITS, flags); - dma_set_num_transfers(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, n>>2); // F1 DMA controller counts each word as 1 data item. - //dma_set_fifo_flags(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, (DMA_FCR_DMDIS | DMA_FCR_FTH_FULL)); // disable direct mode | threshold FULL - dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - dma_enable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - - return true; -} - - /*---------------------------------------------------------------------------*/ static bool dmaTrxEnd(bool multi_block) { - if(m_curState != READ_STATE){ - if ( yieldTimeout(isBusyTransferComplete) ) { - DBG_PRINT(); - if (m_dir==TRX_RD) - return sdError(SD_CARD_ERROR_READ_CRC); - else - return sdError(SD_CARD_ERROR_WRITE); - } - } - - if ( !yieldDmaStatus() ) { + if ( !waitDmaStatus() ) { DBG_PRINT(); return sdError(SD_CARD_ERROR_DMA); } - + if ( waitTimeout(isBusyTransferComplete) ) { + if (m_dir==TRX_RD) + return sdError(SD_CARD_ERROR_READ_TIMEOUT); + else + return sdError(SD_CARD_ERROR_WRITE_TIMEOUT); + } if (multi_block) { return trxStop(); } else { @@ -481,38 +389,21 @@ static bool readReg16(uint32_t xfertyp, void* data) /*---------------------------------------------------------------------------*/ // Return true if timeout occurs. static bool yieldTimeout(bool (*fcn)()) { - m_busyFcn = fcn; uint32_t m = millis(); while (fcn()) { if ((millis() - m) > BUSY_TIMEOUT_MILLIS) { - m_busyFcn = 0; return true; } yield(); } - m_busyFcn = 0; return false; // Caller will set errorCode. } /*---------------------------------------------------------------------------*/ -static bool yieldDmaStatus(void) -{ - if (yieldTimeout(isBusyDMA)) { - dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - return false; // Caller will set errorCode. - } - // Did not time out. Disable it and return true. - dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - return true; -} -/*---------------------------------------------------------------------------*/ static bool waitDmaStatus(void) { - if (waitTimeout(isBusyDMA)) { - dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + if (yieldTimeout(isBusyDMA)) { return false; // Caller will set errorCode. } - // Did not time out. Disable it and return true - dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return true; } /*---------------------------------------------------------------------------*/ @@ -532,8 +423,6 @@ uint32_t aligned[128]; // temporary buffer for misaligned buffers //============================================================================= bool SdioCard::begin(void) { - - uint32_t arg; m_initDone = false; m_errorCode = SD_CARD_ERROR_NONE; m_highCapacity = false; @@ -558,7 +447,6 @@ delay(100); if (!cardCommand(CMD0_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD0); } - delay(50); //small pause after reset command // Try several times for case of reset delay. for (uint32_t i = 0; i < CMD8_RETRIES; i++) { if (cardCommand(CMD8_XFERTYP, 0X1AA)) { @@ -569,7 +457,7 @@ delay(100); break; } } - arg = m_version2 ? 0X50300000 : 0x00300000; + uint32_t arg = m_version2 ? 0X40300000 : 0x00300000; uint32_t m = millis(); do { if (!cardAcmd(0, ACMD41_XFERTYP, arg) || @@ -590,7 +478,6 @@ delay(100); return sdError(SD_CARD_ERROR_CMD3); } m_rca = SDIO->RESP[0] & 0xFFFF0000; - if (!readReg16(CMD9_XFERTYP, &m_csd)) { return sdError(SD_CARD_ERROR_CMD9); } @@ -600,21 +487,14 @@ delay(100); if (!cardCommand(CMD7_XFERTYP, m_rca)) { return sdError(SD_CARD_ERROR_CMD7); } - - arg = 0x00; //bit 0, Connect[1]/Disconnect[0] the 50 KOhm pull-up resistor on CD/DAT3 - if (!cardAcmd(m_rca, ACMD42_XFERTYP, arg)) { - _panic("*** ACMD42 to disconnect D3 pullup failed! ***", 0); - } - // Set card to bus width four. + /* if (!cardAcmd(m_rca, ACMD6_XFERTYP, 2)) { return sdError(SD_CARD_ERROR_ACMD6); } - - // Set SDHC to bus width four. sdio_set_dbus_width(SDIO_CLKCR_WIDBUS_4BIT); + */ -/* // Determine if High Speed mode is supported and set frequency. uint8_t status[64]; // see "Physical Layer Simplified Specification Version 6.00", chapter 4.3.10, Table 4-13. @@ -622,16 +502,15 @@ delay(100); // Function Selection of Function Group 1: bits 379:376, which is low nibble of byte [16] if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { - Serial.println("\n*** 50MHz clock supported ***"); - m_sdClkKhz = 24000; // set clock to 24MHz + //Serial.println("\n*** 50MHz clock supported ***"); } else { //_panic("*** Only 25MHz clock supported! ***", 0); - m_sdClkKhz = 8000; // set clock to 24MHz } - // delay seems to be needed for cards that take some time to adjust - delay(1); -*/ - m_sdClkKhz = 18000; // set clock to 24MHz + + /* + * Todo Raise clock to 24Mhz once transfers work + */ + m_sdClkKhz = 24000; // set clock to 24MHz sdio_set_clock(m_sdClkKhz*1000); m_initDone = true; @@ -691,160 +570,55 @@ uint32_t SdioCard::kHzSdClk() { return m_sdClkKhz; } /*---------------------------------------------------------------------------*/ -bool __attribute__((optimize("0"))) SdioCard::readBlock(uint32_t lba, uint8_t* buf) +bool SdioCard::readBlock(uint32_t lba, uint8_t* buf) { #if USE_DEBUG_MODE - Serial.print("readBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX); -#endif - volatile bool _state = false; - volatile uint16_t retries = 3; - while ( retries-- ){ - /*if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end - return sdError(SD_CARD_ERROR_CMD13); - } - */ - - if (m_curState != READ_STATE || m_curLba != lba) { -#if USE_DEBUG_MODE - Serial.print("New lba, syncing :"); - Serial.println(lba); + Serial.print("readBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX); #endif - _state = syncBlocks(); - DBG_PRINT(); - if (!_state) { - return false; - } - m_limitLba = (lba + 1024); //arbitrary limit, tested with 32KB before and worked fine. - // prepare DMA for data read transfer - _state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); - DBG_PRINT(); - - // prepare SDIO data read transfer 0x8000 = 64*512 - _state = dmaTrxStart(512, TRX_RD); - DBG_PRINT(); - - // send command to start data transfer - _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); - DBG_PRINT(); - if ( !_state ) { - return sdError(SD_CARD_ERROR_CMD18); - } - - m_curLba = lba; - m_curState = READ_STATE; - } - else { - // prepare DMA for data read transfer - _state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); - - // prepare SDIO data read transfer - _state = dmaTrxStart(512, TRX_RD); - } - - - _state = dmaTrxEnd(0); - - if ( _state ) { - if ( (uint32_t)buf & 3 ) { - //memcpy(buf, aligned, 512); - register uint8_t * dst = buf; - register uint8_t * src = (uint8_t *)aligned; - register uint16_t i = 64; - while ( i-- ) { // do 8 byte copies, is much faster than single byte copy - *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - } - } - m_totalReadLbas++; - m_curLba++; - if (m_curLba >= m_limitLba) { - syncBlocks(); - } - sdError(SD_CARD_ERROR_NONE); - return true; - } - syncBlocks(); - m_readErrors++; - - } - DBG_PRINT() - syncBlocks(); - m_readErrors++; - return false; + // prepare SDIO and DMA for data read transfer + dmaTrxStart((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); + // send command to start data transfer + if ( !cardCommand(CMD17_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD17); + } + if ( dmaTrxEnd(0)) { + if ( (uint32_t)buf & 3 ) { + //memcpy(buf, aligned, 512); + register uint8_t * dst = buf; + register uint8_t * src = (uint8_t *)aligned; + register uint16_t i = 64; + while ( i-- ) { // do 8 byte copies, is much faster than single byte copy + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + } + } + return true; + } + return false; } /*---------------------------------------------------------------------------*/ bool SdioCard::readBlocks(uint32_t lba, uint8_t* buf, size_t n) { #if USE_DEBUG_MODE - Serial.print("readBlocks: "); Serial.print(lba); - //Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX); - Serial.print(", "); Serial.println(n); + Serial.print("readBlocks: "); Serial.print(lba); + //Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX); + Serial.print(", "); Serial.println(n); #endif - volatile bool _state = false; - volatile uint16_t retries = 3; - while ( retries-- ){ - - if ((uint32_t)buf & 3) { - for (size_t i = 0; i < n; i++, lba++, buf += 512) { - if (!readBlock(lba, buf)) { - return false; // readBlock will set errorCode. - } - } - return true; - } - - if (m_curState != READ_STATE || m_curLba != lba) { - #if USE_DEBUG_MODE - Serial.print("New lba, syncing :"); - Serial.println(lba); - #endif - _state = syncBlocks(); - DBG_PRINT(); - if (!_state) { - return false; - } - m_limitLba = (lba + 1024); //arbitrary limit - // prepare DMA for data read transfer - _state = dmaTrxPrepare(buf, 512*n, TRX_RD); - - // prepare SDIO for data read transfer - _state = dmaTrxStart(512*n, TRX_RD); - - // send command to start data transfer - _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); - if ( !_state ) { - return sdError(SD_CARD_ERROR_CMD18); - } - m_curLba = lba; - m_curState = READ_STATE; - } - - else { - // prepare DMA for data read transfer - _state = dmaTrxPrepare(buf, 512*n, TRX_RD); - - // prepare SDIO data read transfer - _state = dmaTrxStart(512*n, TRX_RD); - } - - _state = dmaTrxEnd(0); - - if (_state){ - m_totalReadLbas += n; - m_curLba += n; - if (m_curLba >= m_limitLba) { - syncBlocks(); - } - sdError(SD_CARD_ERROR_NONE); - return true; - } - syncBlocks(); - m_readErrors++; - } - DBG_PRINT() - syncBlocks(); - m_readErrors++; - return false; + if ((uint32_t)buf & 3) { + for (size_t i = 0; i < n; i++, lba++, buf += 512) { + if (!readBlock(lba, buf)) { + return false; // readBlock will set errorCode. + } + } + return true; + } + // prepare SDIO and DMA for data read transfer + dmaTrxStart(buf, 512*n, TRX_RD); + // send command to start data transfer + if ( !cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD18); + } + return dmaTrxEnd(1); } //----------------------------------------------------------------------------- bool SdioCard::readCID(void* cid) { @@ -925,36 +699,13 @@ bool SdioCard::readStart(uint32_t lba, uint32_t count) /*---------------------------------------------------------------------------*/ bool SdioCard::readStop() { - - sdio_setup_transfer(0x00FFFFFF, 0, 0); - while ( SDIO->STA & SDIO_STA_RXDAVL) { - volatile uint32 _unused = SDIO->FIFO; - } //Serial.println("readStop."); - m_lba = 0; - if (!trxStop()) { - return false; - } - return true; + m_lba = 0; + m_cnt = 0; + return true; } //----------------------------------------------------------------------------- -inline bool SdioCard::syncBlocks() { - if ( isEnabledDMA()){ - waitDmaStatus(); - } - if (m_curState == READ_STATE) { - /* if ( isEnabledDMA()){ - waitDmaStatus(); - } - */ - m_curState = IDLE_STATE; - if (!readStop()) { - return false; - } - } else if (m_curState == WRITE_STATE) { - m_curState = IDLE_STATE; - return writeStop(); - } +bool SdioCard::syncBlocks() { return true; } //----------------------------------------------------------------------------- @@ -982,48 +733,17 @@ bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf) *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; } } - - - - if (m_curState != WRITE_STATE || m_curLba != lba) { - if (!syncBlocks()) { - return false; - } - - m_limitLba = (lba + 1024); //arbitrary limit - - // prepare DMA for data transfer - dmaTrxPrepare(ptr, 512, TRX_WR); // 1 block, write transfer - - // send command to start data transfer - if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD25); - } - m_curLba = lba; - m_curState = WRITE_STATE; - + if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); } - else { - if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end - return sdError(SD_CARD_ERROR_CMD13); - } - // prepare DMA for data transfer - dmaTrxPrepare(ptr, 512, TRX_WR); // 1 block, write transfer + // send command to start data transfer + if ( !cardCommand(CMD24_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD24); } + // prepare SDIO and DMA for data transfer + dmaTrxStart(ptr, 512, TRX_WR); // 1 block, write transfer - // prepare SDIO for data transfer - dmaTrxStart(512, TRX_WR); // 1 block, write transfer - - if (!dmaTrxEnd(0)){ - m_curState = IDLE_STATE; - m_writeErrors++; - return false; - } - m_curLba++; - if (m_curLba >= m_limitLba) { - syncBlocks(); - } - return true; + return dmaTrxEnd(0); } /*---------------------------------------------------------------------------*/ bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) @@ -1050,43 +770,14 @@ bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) return sdError(SD_CARD_ERROR_ACMD23); } #endif + // send command to start data transfer + if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD25); + } + // prepare SDIO and DMA for data transfer + dmaTrxStart((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer - if (m_curState != WRITE_STATE || m_curLba != lba) { - if (!syncBlocks()) { - return false; - } - - m_limitLba = (lba + 1024); //arbitrary limit, 512KB - // prepare DMA for data transfer - dmaTrxPrepare((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer - - // send command to start data transfer - if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD25); - } - m_curLba = lba; - m_curState = WRITE_STATE; - - } - else { - // prepare DMA for data transfer - dmaTrxPrepare((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer - } - - // prepare SDIO for data transfer - dmaTrxStart(512*n, TRX_WR); // n blocks, write transfer - - if (!dmaTrxEnd(0)){ - m_writeErrors++; - m_curState = IDLE_STATE; - return false; - } - m_curLba += n; - if (m_curLba >= m_limitLba) { - syncBlocks(); - } - return true; - + return dmaTrxEnd(1); } /*---------------------------------------------------------------------------*/ bool SdioCard::writeData(const uint8_t* src) @@ -1154,14 +845,8 @@ bool SdioCard::writeStart(uint32_t lba, uint32_t count) /*---------------------------------------------------------------------------*/ bool SdioCard::writeStop() { - if ( isEnabledDMA()){ - if ( !waitDmaStatus() ) { - DBG_PRINT(); - return sdError(SD_CARD_ERROR_DMA); - } - } - m_lba = 0; - m_curState = IDLE_STATE; - return trxStop(); - //Serial.println("writeStop."); + //Serial.println("writeStop."); + m_lba = 0; + m_cnt = 0; + return true; } diff --git a/STM32F1/libraries/SDIO/SdioF1.h b/STM32F1/libraries/SDIO/SdioF1.h index efa47749c..c995b1c5c 100644 --- a/STM32F1/libraries/SDIO/SdioF1.h +++ b/STM32F1/libraries/SDIO/SdioF1.h @@ -1,6 +1,6 @@ -#ifndef _SDIOF1_H_ -#define _SDIOF1_H_ +#ifndef _SDIOF4_H_ +#define _SDIOF4_H_ #include From d5399c3e0218f0334831f8f709aa72d1bf0fbb41 Mon Sep 17 00:00:00 2001 From: victorpv Date: Wed, 28 Mar 2018 22:27:50 -0500 Subject: [PATCH 084/373] Revert "Hardware serial corrections" This reverts commit 771be821c288f74f4106768aca0042d05c0d038d. --- STM32F1/cores/maple/HardwareSerial.cpp | 2 +- STM32F1/cores/maple/HardwareSerial.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/cores/maple/HardwareSerial.cpp b/STM32F1/cores/maple/HardwareSerial.cpp index fe73339c9..024efbc7d 100644 --- a/STM32F1/cores/maple/HardwareSerial.cpp +++ b/STM32F1/cores/maple/HardwareSerial.cpp @@ -187,7 +187,7 @@ int HardwareSerial::availableForWrite(void) return 1; } -size_t HardwareSerial::write(uint8_t ch) { +size_t HardwareSerial::write(unsigned char ch) { usart_putc(this->usart_device, ch); return 1; diff --git a/STM32F1/cores/maple/HardwareSerial.h b/STM32F1/cores/maple/HardwareSerial.h index 108d525c7..b8b8dd6fd 100644 --- a/STM32F1/cores/maple/HardwareSerial.h +++ b/STM32F1/cores/maple/HardwareSerial.h @@ -138,7 +138,7 @@ class HardwareSerial : public Stream { virtual int read(void); int availableForWrite(void); virtual void flush(void); - virtual size_t write(uint8_t ch); + virtual size_t write(uint8_t); inline size_t write(unsigned long n) { return write((uint8_t)n); } inline size_t write(long n) { return write((uint8_t)n); } inline size_t write(unsigned int n) { return write((uint8_t)n); } From 59a216ba66bdb389a64c04e80847eafc5507d887 Mon Sep 17 00:00:00 2001 From: victorpv Date: Thu, 29 Mar 2018 22:19:06 -0500 Subject: [PATCH 085/373] Help file describing the fft functions. --- .../libraries/stm_fft/stm32f10x_DSP_lib.chm | Bin 0 -> 887334 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 STM32F1/libraries/stm_fft/stm32f10x_DSP_lib.chm diff --git a/STM32F1/libraries/stm_fft/stm32f10x_DSP_lib.chm b/STM32F1/libraries/stm_fft/stm32f10x_DSP_lib.chm new file mode 100644 index 0000000000000000000000000000000000000000..a27742dfd65efe35d7d99cb0a9bdef81a102de3a GIT binary patch literal 887334 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 >KZE}cGdb@0&*TDS*bV-x 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
qv>~*xnNTqjd`{*BDg( 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%0Ao%!wQc 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�<2%+G;bt&M9J=a$cYF^Is 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

U@L0AG)9xSO;s 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

Y8>N5>2*wrYvZt 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 bMi*{w$p&F;QKOaqMWV6y+#b#RhULEj;-{2; literal 0 HcmV?d00001 diff --git a/tools/win/hid_flash/hid-flash.exe b/tools/win/hid_flash/hid-flash.exe deleted file mode 100644 index 9808b20284a485f8f941adf0ff422adbc0ccebf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75156 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 g*f|?LrW#fYdRSG31X~0{D{Q^#A|> From 6791e7956fc365ab86a0a6942912f2daa4e578b7 Mon Sep 17 00:00:00 2001 From: arpruss Date: Sat, 4 Aug 2018 15:46:22 -0700 Subject: [PATCH 147/373] Avoid duplicate inline which newer gcc rejects --- STM32F1/cores/maple/ext_interrupts.h | 4 ++-- STM32F1/cores/maple/libmaple/exti.c | 6 +++--- STM32F1/system/libmaple/dma_private.h | 2 +- .../system/libmaple/include/libmaple/nvic.h | 4 ++-- .../libmaple/include/libmaple/usb_cdcacm.h | 2 +- .../libmaple/stm32f1/include/series/gpio.h | 2 +- .../libmaple/stm32f1/include/series/spi.h | 2 +- .../libmaple/stm32f2/include/series/dma.h | 10 +++++----- STM32F1/system/libmaple/timer_private.h | 18 +++++++++--------- STM32F1/system/libmaple/usart_private.h | 2 +- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/STM32F1/cores/maple/ext_interrupts.h b/STM32F1/cores/maple/ext_interrupts.h index a406868e0..ce1ca0346 100644 --- a/STM32F1/cores/maple/ext_interrupts.h +++ b/STM32F1/cores/maple/ext_interrupts.h @@ -106,7 +106,7 @@ void detachInterrupt(uint8 pin); * * @see noInterrupts() */ -static inline __always_inline void interrupts() { +static __always_inline void interrupts() { nvic_globalirq_enable(); } @@ -120,7 +120,7 @@ static inline __always_inline void interrupts() { * * @see interrupts() */ -static inline __always_inline void noInterrupts() { +static __always_inline void noInterrupts() { nvic_globalirq_disable(); } diff --git a/STM32F1/cores/maple/libmaple/exti.c b/STM32F1/cores/maple/libmaple/exti.c index 982ba06db..f4aeda75c 100644 --- a/STM32F1/cores/maple/libmaple/exti.c +++ b/STM32F1/cores/maple/libmaple/exti.c @@ -250,7 +250,7 @@ __weak void __irq_exti15_10(void) { * won't actually be cleared in time and the ISR will fire again. To * compensate, this function NOPs for 2 cycles after clearing the * pending bits to ensure it takes effect. */ -static inline __always_inline void clear_pending_msk(uint32 exti_msk) { +static __always_inline void clear_pending_msk(uint32 exti_msk) { EXTI_BASE->PR = exti_msk; asm volatile("nop"); asm volatile("nop"); @@ -258,7 +258,7 @@ static inline __always_inline void clear_pending_msk(uint32 exti_msk) { /* This dispatch routine is for non-multiplexed EXTI lines only; i.e., * it doesn't check EXTI_PR. */ -static inline __always_inline void dispatch_single_exti(uint32 exti) { +static __always_inline void dispatch_single_exti(uint32 exti) { voidArgumentFuncPtr handler = exti_channels[exti].handler; if (!handler) { @@ -270,7 +270,7 @@ static inline __always_inline void dispatch_single_exti(uint32 exti) { } /* Dispatch routine for EXTIs which share an IRQ. */ -static inline __always_inline void dispatch_extis(uint32 start, uint32 stop) { +static __always_inline void dispatch_extis(uint32 start, uint32 stop) { uint32 pr = EXTI_BASE->PR; uint32 handled_msk = 0; uint32 exti; diff --git a/STM32F1/system/libmaple/dma_private.h b/STM32F1/system/libmaple/dma_private.h index 063d15756..ad2ebb6e0 100644 --- a/STM32F1/system/libmaple/dma_private.h +++ b/STM32F1/system/libmaple/dma_private.h @@ -37,7 +37,7 @@ /* Wrap this in an ifdef to shut up GCC. (We provide DMA_GET_HANDLER * in the series support files, which need dma_irq_handler().) */ #ifdef DMA_GET_HANDLER -static inline __always_inline void dma_irq_handler(dma_dev *dev, dma_tube tube) { +static __always_inline void dma_irq_handler(dma_dev *dev, dma_tube tube) { void (*handler)(void) = DMA_GET_HANDLER(dev, tube); if (handler) { diff --git a/STM32F1/system/libmaple/include/libmaple/nvic.h b/STM32F1/system/libmaple/include/libmaple/nvic.h index 954fd12b0..c63e1249f 100644 --- a/STM32F1/system/libmaple/include/libmaple/nvic.h +++ b/STM32F1/system/libmaple/include/libmaple/nvic.h @@ -109,14 +109,14 @@ void nvic_sys_reset(); /** * Enables interrupts and configurable fault handlers (clear PRIMASK). */ -static inline __always_inline void nvic_globalirq_enable() { +static __always_inline void nvic_globalirq_enable() { asm volatile("cpsie i"); } /** * Disable interrupts and configurable fault handlers (set PRIMASK). */ -static inline __always_inline void nvic_globalirq_disable() { +static __always_inline void nvic_globalirq_disable() { asm volatile("cpsid i"); } diff --git a/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h b/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h index 53551a7bd..a72dfe599 100644 --- a/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h +++ b/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h @@ -172,7 +172,7 @@ int usb_cdcacm_get_n_data_bits(void); /* bDataBits */ void usb_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*)); -static inline __always_inline void usb_cdcacm_remove_hooks(unsigned hook_flags) { +static __always_inline void usb_cdcacm_remove_hooks(unsigned hook_flags) { usb_cdcacm_set_hooks(hook_flags, 0); } diff --git a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h index c40b21a94..c93453ad7 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h @@ -486,7 +486,7 @@ typedef exti_num afio_exti_num; /** * @brief Deprecated. Use exti_select(exti, port) instead. */ -static inline __always_inline void afio_exti_select(exti_num exti, exti_cfg port) { +static __always_inline void afio_exti_select(exti_num exti, exti_cfg port) { exti_select(exti, port); } diff --git a/STM32F1/system/libmaple/stm32f1/include/series/spi.h b/STM32F1/system/libmaple/stm32f1/include/series/spi.h index ec4821c80..d288a0cd1 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/spi.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/spi.h @@ -75,7 +75,7 @@ extern void spi_config_gpios(struct spi_dev*, uint8, * @brief Deprecated. Use spi_config_gpios() instead. * @see spi_config_gpios() */ -static inline __always_inline void spi_gpio_cfg(uint8 as_master, +static __always_inline void spi_gpio_cfg(uint8 as_master, struct gpio_dev *nss_dev, uint8 nss_bit, struct gpio_dev *comm_dev, diff --git a/STM32F1/system/libmaple/stm32f2/include/series/dma.h b/STM32F1/system/libmaple/stm32f2/include/series/dma.h index 4c864431e..934078ba6 100644 --- a/STM32F1/system/libmaple/stm32f2/include/series/dma.h +++ b/STM32F1/system/libmaple/stm32f2/include/series/dma.h @@ -707,7 +707,7 @@ void dma_set_mem_n_addr(dma_dev *dev, dma_tube tube, int n, * @param tube Tube whose memory 0 address to set * @param addr Address to use as memory 0 */ -static inline __always_inline void +static __always_inline void dma_set_mem0_addr(dma_dev *dev, dma_tube tube, __IO void *addr) { dma_set_mem_n_addr(dev, tube, 0, addr); } @@ -720,13 +720,13 @@ dma_set_mem0_addr(dma_dev *dev, dma_tube tube, __IO void *addr) { * @param tube Tube whose memory 1 address to set * @param addr Address to use as memory 1 */ -static inline __always_inline void +static __always_inline void dma_set_mem1_addr(dma_dev *dev, dma_tube tube, __IO void *addr) { dma_set_mem_n_addr(dev, tube, 1, addr); } /* Assume the user means SM0AR in a non-double-buffered configuration. */ -static inline __always_inline void +static __always_inline void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __IO void *addr) { dma_set_mem0_addr(dev, tube, addr); } @@ -743,7 +743,7 @@ static inline dma_xfer_size dma_get_per_size(dma_dev *dev, dma_tube tube) { void dma_enable_fifo(dma_dev *dev, dma_tube tube); void dma_disable_fifo(dma_dev *dev, dma_tube tube); -static inline __always_inline int dma_is_fifo_enabled(dma_dev *dev, dma_tube tube) { +static __always_inline int dma_is_fifo_enabled(dma_dev *dev, dma_tube tube) { return dma_tube_regs(dev, tube)->SFCR & DMA_SFCR_DMDIS; } @@ -769,7 +769,7 @@ static inline __always_inline int dma_is_fifo_enabled(dma_dev *dev, dma_tube tub * I can't imagine why ST didn't just use a byte for each group. The * bits fit, and it would have made functions like these simpler and * faster. Oh well. */ -static inline __always_inline uint32 _dma_sr_fcr_shift(dma_tube tube) { +static __always_inline uint32 _dma_sr_fcr_shift(dma_tube tube) { switch (tube) { case DMA_S0: /* fall through */ case DMA_S4: diff --git a/STM32F1/system/libmaple/timer_private.h b/STM32F1/system/libmaple/timer_private.h index 55e2cafb3..320c6364a 100644 --- a/STM32F1/system/libmaple/timer_private.h +++ b/STM32F1/system/libmaple/timer_private.h @@ -121,7 +121,7 @@ * line may be shared with another timer. For example, the timer 1 * update interrupt shares an IRQ line with the timer 10 interrupt on * STM32F1 (XL-density), STM32F2, and STM32F4. */ -static inline __always_inline void dispatch_single_irq(timer_dev *dev, +static __always_inline void dispatch_single_irq(timer_dev *dev, timer_interrupt_id iid, uint32 irq_mask) { timer_bas_reg_map *regs = (dev->regs).bas; @@ -145,15 +145,15 @@ static inline __always_inline void dispatch_single_irq(timer_dev *dev, } \ } while (0) -static inline __always_inline void dispatch_adv_brk(timer_dev *dev) { +static __always_inline void dispatch_adv_brk(timer_dev *dev) { dispatch_single_irq(dev, TIMER_BREAK_INTERRUPT, TIMER_SR_BIF); } -static inline __always_inline void dispatch_adv_up(timer_dev *dev) { +static __always_inline void dispatch_adv_up(timer_dev *dev) { dispatch_single_irq(dev, TIMER_UPDATE_INTERRUPT, TIMER_SR_UIF); } -static inline __always_inline void dispatch_adv_trg_com(timer_dev *dev) { +static __always_inline void dispatch_adv_trg_com(timer_dev *dev) { timer_adv_reg_map *regs = (dev->regs).adv; uint32 dsr = regs->DIER & regs->SR; void (**hs)(void) = dev->handlers; @@ -168,7 +168,7 @@ static inline __always_inline void dispatch_adv_trg_com(timer_dev *dev) { regs->SR &= ~handled; } -static inline __always_inline void dispatch_adv_cc(timer_dev *dev) { +static __always_inline void dispatch_adv_cc(timer_dev *dev) { timer_adv_reg_map *regs = (dev->regs).adv; uint32 dsr = regs->DIER & regs->SR; void (**hs)(void) = dev->handlers; @@ -182,7 +182,7 @@ static inline __always_inline void dispatch_adv_cc(timer_dev *dev) { regs->SR &= ~handled; } -static inline __always_inline void dispatch_general(timer_dev *dev) { +static __always_inline void dispatch_general(timer_dev *dev) { timer_gen_reg_map *regs = (dev->regs).gen; uint32 dsr = regs->DIER & regs->SR; void (**hs)(void) = dev->handlers; @@ -200,7 +200,7 @@ static inline __always_inline void dispatch_general(timer_dev *dev) { /* On F1 (XL-density), F2, and F4, TIM9 and TIM12 are restricted * general-purpose timers with update, CC1, CC2, and TRG interrupts. */ -static inline __always_inline void dispatch_tim_9_12(timer_dev *dev) { +static __always_inline void dispatch_tim_9_12(timer_dev *dev) { timer_gen_reg_map *regs = (dev->regs).gen; uint32 dsr = regs->DIER & regs->SR; void (**hs)(void) = dev->handlers; @@ -216,7 +216,7 @@ static inline __always_inline void dispatch_tim_9_12(timer_dev *dev) { /* On F1 (XL-density), F2, and F4, timers 10, 11, 13, and 14 are * restricted general-purpose timers with update and CC1 interrupts. */ -static inline __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) { +static __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) { timer_gen_reg_map *regs = (dev->regs).gen; uint32 dsr = regs->DIER & regs->SR; void (**hs)(void) = dev->handlers; @@ -228,7 +228,7 @@ static inline __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) { regs->SR &= ~handled; } -static inline __always_inline void dispatch_basic(timer_dev *dev) { +static __always_inline void dispatch_basic(timer_dev *dev) { dispatch_single_irq(dev, TIMER_UPDATE_INTERRUPT, TIMER_SR_UIF); } diff --git a/STM32F1/system/libmaple/usart_private.h b/STM32F1/system/libmaple/usart_private.h index 34aaf4b3a..d4d614408 100644 --- a/STM32F1/system/libmaple/usart_private.h +++ b/STM32F1/system/libmaple/usart_private.h @@ -37,7 +37,7 @@ #include #include -static inline __always_inline void usart_irq(ring_buffer *rb, ring_buffer *wb, usart_reg_map *regs) { +static __always_inline void usart_irq(ring_buffer *rb, ring_buffer *wb, usart_reg_map *regs) { /* Handling RXNEIE and TXEIE interrupts. * RXNE signifies availability of a byte in DR. * From 03184ad3c84ab8ee2e68100bd449b35ea8c693cf Mon Sep 17 00:00:00 2001 From: arpruss Date: Thu, 9 Aug 2018 07:59:49 -0700 Subject: [PATCH 148/373] make __always_inline compatible with older gcc versions; replace inline __always_inline in USBComposite library --- STM32F1/libraries/USBComposite/usb_composite_serial.h | 2 +- STM32F1/system/libmaple/include/libmaple/libmaple_types.h | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/USBComposite/usb_composite_serial.h b/STM32F1/libraries/USBComposite/usb_composite_serial.h index 926901b6a..990aba0e3 100644 --- a/STM32F1/libraries/USBComposite/usb_composite_serial.h +++ b/STM32F1/libraries/USBComposite/usb_composite_serial.h @@ -146,7 +146,7 @@ int composite_cdcacm_get_n_data_bits(void); /* bDataBits */ void composite_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*)); -static inline __always_inline void composite_cdcacm_remove_hooks(unsigned hook_flags) { +static __always_inline void composite_cdcacm_remove_hooks(unsigned hook_flags) { composite_cdcacm_set_hooks(hook_flags, 0); } diff --git a/STM32F1/system/libmaple/include/libmaple/libmaple_types.h b/STM32F1/system/libmaple/include/libmaple/libmaple_types.h index 62bf4366b..f01245a21 100644 --- a/STM32F1/system/libmaple/include/libmaple/libmaple_types.h +++ b/STM32F1/system/libmaple/include/libmaple/libmaple_types.h @@ -58,7 +58,11 @@ typedef void (*voidArgumentFuncPtr)(void *); #define __deprecated __attribute__((__deprecated__)) #define __weak __attribute__((weak)) #ifndef __always_inline -#define __always_inline __attribute__((always_inline)) +#if __GNUC_PREREQ__(3, 1) || (defined(__INTEL_COMPILER) && __INTEL_COMPILER >= 800) +#define __always_inline __inline__ __attribute__((__always_inline__)) +#else +#define __always_inline +#endif #endif #ifndef __unused #define __unused __attribute__((unused)) From 73e268d703e2f22bd9f915bb088dfe8d789d493d Mon Sep 17 00:00:00 2001 From: Joris van Rantwijk Date: Mon, 20 Aug 2018 20:12:53 +0200 Subject: [PATCH 149/373] Fix clearing of TIMx_SR register To clear specific bits in TIMx_SR registers, libmaple code used to do TIMx_SR &= ~(events_handled); // wrong This is wrong. If a new event occurs between the read from TIMx_SR and the write to TIMx_SR, that new event will be cleared immediately without ever being noticed or handled. A better way to clear specific bits is TIMx_SR = ~(events_handled); // good This writes '0' to the bits to be cleared, and '1' to all other bits. The hardware will not allow software to change any SR bits from 0 to 1; only hardware events can do that. So bits written as '1' are effectively ignored and bits written as '0' are cleared. Exactly what we need. --- STM32F1/system/libmaple/timer_private.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/STM32F1/system/libmaple/timer_private.h b/STM32F1/system/libmaple/timer_private.h index 55e2cafb3..698c4e7fc 100644 --- a/STM32F1/system/libmaple/timer_private.h +++ b/STM32F1/system/libmaple/timer_private.h @@ -129,7 +129,7 @@ static inline __always_inline void dispatch_single_irq(timer_dev *dev, void (*handler)(void) = dev->handlers[iid]; if (handler) { handler(); - regs->SR &= ~irq_mask; + regs->SR = ~irq_mask; } } } @@ -165,7 +165,7 @@ static inline __always_inline void dispatch_adv_trg_com(timer_dev *dev) { handle_irq(dsr, TIMER_SR_TIF, hs, TIMER_TRG_INTERRUPT, handled); handle_irq(dsr, TIMER_SR_COMIF, hs, TIMER_COM_INTERRUPT, handled); - regs->SR &= ~handled; + regs->SR = ~handled; } static inline __always_inline void dispatch_adv_cc(timer_dev *dev) { @@ -179,7 +179,7 @@ static inline __always_inline void dispatch_adv_cc(timer_dev *dev) { handle_irq(dsr, TIMER_SR_CC2IF, hs, TIMER_CC2_INTERRUPT, handled); handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); - regs->SR &= ~handled; + regs->SR = ~handled; } static inline __always_inline void dispatch_general(timer_dev *dev) { @@ -195,7 +195,7 @@ static inline __always_inline void dispatch_general(timer_dev *dev) { handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); handle_irq(dsr, TIMER_SR_UIF, hs, TIMER_UPDATE_INTERRUPT, handled); - regs->SR &= ~handled; + regs->SR = ~handled; } /* On F1 (XL-density), F2, and F4, TIM9 and TIM12 are restricted @@ -211,7 +211,7 @@ static inline __always_inline void dispatch_tim_9_12(timer_dev *dev) { handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); handle_irq(dsr, TIMER_SR_UIF, hs, TIMER_UPDATE_INTERRUPT, handled); - regs->SR &= ~handled; + regs->SR = ~handled; } /* On F1 (XL-density), F2, and F4, timers 10, 11, 13, and 14 are @@ -225,7 +225,7 @@ static inline __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) { handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); handle_irq(dsr, TIMER_SR_UIF, hs, TIMER_UPDATE_INTERRUPT, handled); - regs->SR &= ~handled; + regs->SR = ~handled; } static inline __always_inline void dispatch_basic(timer_dev *dev) { From a0408b1445ebeb2f425c63da26b6c7db43f66d23 Mon Sep 17 00:00:00 2001 From: Adam Coddington Date: Wed, 22 Aug 2018 17:16:53 -0700 Subject: [PATCH 150/373] If we've declared alternate pins for an SPI port, that SPI port clearly exists. (thanks, @stevstrong). --- STM32F1/libraries/SPI/src/SPI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/SPI/src/SPI.cpp b/STM32F1/libraries/SPI/src/SPI.cpp index 76160a266..d0460b58a 100644 --- a/STM32F1/libraries/SPI/src/SPI.cpp +++ b/STM32F1/libraries/SPI/src/SPI.cpp @@ -87,7 +87,7 @@ static const spi_pins board_spi_pins[] __FLASH__ = { }; static const spi_pins board_alt_spi_pins[] __FLASH__ = { -#if BOARD_NR_SPI >= 1 && defined(BOARD_SPI1_ALT_MOSI_PIN) +#if defined(BOARD_SPI1_ALT_MOSI_PIN) {BOARD_SPI1_ALT_NSS_PIN, BOARD_SPI1_ALT_SCK_PIN, BOARD_SPI1_ALT_MISO_PIN, From 5b214dadb96605dc47151ad57e808bbd1c9ee2f8 Mon Sep 17 00:00:00 2001 From: Justin Schoeman Date: Thu, 23 Aug 2018 21:48:03 +0200 Subject: [PATCH 151/373] C++ requires that static object destructors are called when the program terminates. Recent versions of GCC use __cxa_atexit to register exit handlers which call these object destructors. With the -fno-use-cxa-atexit command line option, GCC uses atexit instead (same functionality, but only up to 32 exit handlers can be registered). Since the Arduino main process can not return, and calls to exit() simply call an infinite loop - so all of this is completely irrelevant. No exit handlers are ever called. By removing the unused __cxa_atexit functionality we save a bit of space, and enable further cleanups (in later commits). --- STM32F1/platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index fbeaac41e..d32de2f26 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -22,7 +22,7 @@ compiler.c.elf.flags={build.flags.optimize} -Wl,--gc-sections {build.flags.ldspe compiler.S.cmd=arm-none-eabi-gcc compiler.S.flags=-c -g -x assembler-with-cpp -MMD compiler.cpp.cmd=arm-none-eabi-g++ -compiler.cpp.flags=-c -g {build.flags.optimize} {compiler.warning_flags} -std=gnu++11 -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin} +compiler.cpp.flags=-c -g {build.flags.optimize} {compiler.warning_flags} -std=gnu++11 -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -fno-use-cxa-atexit -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin} compiler.ar.cmd=arm-none-eabi-ar compiler.ar.flags=rcs compiler.objcopy.cmd=arm-none-eabi-objcopy From a58f650121abbaacd000e89de6f06dab64362107 Mon Sep 17 00:00:00 2001 From: Justin Schoeman Date: Fri, 24 Aug 2018 10:31:28 +0200 Subject: [PATCH 152/373] Remove uncallable libc call main() never exits. The subsequent call to exit() links in the libc exit symbol and all that it calls (including free() and a few others. Removing this saves around 2k of flash. --- STM32F1/variants/generic_stm32f103c/wirish/start_c.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/STM32F1/variants/generic_stm32f103c/wirish/start_c.c b/STM32F1/variants/generic_stm32f103c/wirish/start_c.c index 05df0602e..e68cebf7a 100644 --- a/STM32F1/variants/generic_stm32f103c/wirish/start_c.c +++ b/STM32F1/variants/generic_stm32f103c/wirish/start_c.c @@ -85,9 +85,6 @@ void __attribute__((noreturn)) start_c(void) { /* Jump to main. */ exit_code = main(0, 0, 0); - if (exit) { - exit(exit_code); - } /* If exit is NULL, make sure we don't return. */ for (;;) From b5cd37696b7057f8489c0a17801420756b44a4e7 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Wed, 12 Sep 2018 17:22:11 +1000 Subject: [PATCH 153/373] Updated USBComposite library. Thanks to @arpruss --- STM32F1/libraries/USBComposite/AbsMouse.cpp | 112 ++-- .../libraries/USBComposite/BootKeyboard.cpp | 7 - STM32F1/libraries/USBComposite/Consumer.cpp | 26 +- STM32F1/libraries/USBComposite/HIDReports.cpp | 28 +- STM32F1/libraries/USBComposite/Joystick.cpp | 235 ++++---- STM32F1/libraries/USBComposite/Keyboard.cpp | 515 +++++++++--------- STM32F1/libraries/USBComposite/MinSysex.c | 2 +- STM32F1/libraries/USBComposite/Mouse.cpp | 113 ++-- STM32F1/libraries/USBComposite/README.md | 244 ++++++--- .../USBComposite/UPGRADING-TO-0.90.txt | 19 + .../libraries/USBComposite/USBComposite.cpp | 294 +++++----- STM32F1/libraries/USBComposite/USBComposite.h | 3 +- .../USBComposite/USBCompositeSerial.cpp | 8 +- .../USBComposite/USBCompositeSerial.h | 89 +-- STM32F1/libraries/USBComposite/USBHID.cpp | 86 ++- STM32F1/libraries/USBComposite/USBHID.h | 56 +- STM32F1/libraries/USBComposite/USBMIDI.cpp | 105 ++-- STM32F1/libraries/USBComposite/USBMIDI.h | 18 +- .../libraries/USBComposite/USBMassStorage.cpp | 17 +- .../libraries/USBComposite/USBMassStorage.h | 6 +- STM32F1/libraries/USBComposite/USBXBox360.cpp | 34 +- STM32F1/libraries/USBComposite/USBXBox360.h | 3 +- .../examples/BootKeyboard/BootKeyboard.ino | 9 +- .../examples/absmouse/absmouse.ino | 51 +- .../examples/consumer/consumer.ino | 6 +- .../examples/jigglemouse/jigglemouse.ino | 9 +- .../examples/keyboardMouse/keyboardMouse.ino | 41 ++ .../keyboardwithleds/keyboardwithleds.ino | 7 +- .../USBComposite/examples/mass/image.h | 134 ++--- .../USBComposite/examples/mass/mass.ino | 137 ++--- .../USBComposite/examples/midiin/midiin.ino | 8 +- .../USBComposite/examples/midiout/midiout.ino | 37 +- .../USBComposite/examples/rawhid/rawhid.ino | 7 +- .../USBComposite/examples/rawhid/send.py | 50 +- .../examples/sdreader/sdreader.ino | 13 +- .../simplejoystick/simplejoystick.ino | 7 +- .../simplekeyboard/simplekeyboard.ino | 7 +- .../examples/softjoystick/send.py | 120 ++-- .../examples/softjoystick/softjoystick.ino | 13 +- .../examples/twojoysticks/twojoysticks.ino | 13 +- .../USBComposite/examples/x360/x360.ino | 4 +- STM32F1/libraries/USBComposite/keywords.txt | 131 ++--- .../libraries/USBComposite/library.properties | 2 +- .../USBComposite/scripts/midi_table.py | 11 + .../libraries/USBComposite/scripts/send.py | 29 + .../USBComposite/scripts/showhids.py | 3 + .../USBComposite/usb_composite_serial.c | 36 +- .../USBComposite/usb_composite_serial.h | 10 +- STM32F1/libraries/USBComposite/usb_generic.c | 2 +- STM32F1/libraries/USBComposite/usb_generic.h | 120 ++-- STM32F1/libraries/USBComposite/usb_hid.c | 18 +- STM32F1/libraries/USBComposite/usb_hid.h | 5 +- STM32F1/libraries/USBComposite/usb_mass.h | 11 +- .../USBComposite/usb_mass_internal.h | 22 +- STM32F1/libraries/USBComposite/usb_mass_mal.c | 8 +- STM32F1/libraries/USBComposite/usb_mass_mal.h | 10 +- .../libraries/USBComposite/usb_midi_device.c | 43 +- .../libraries/USBComposite/usb_midi_device.h | 28 +- STM32F1/libraries/USBComposite/usb_scsi.c | 24 +- STM32F1/libraries/USBComposite/usb_scsi.h | 2 - STM32F1/libraries/USBComposite/usb_setup.cpp | 116 ++-- 61 files changed, 1792 insertions(+), 1532 deletions(-) delete mode 100644 STM32F1/libraries/USBComposite/BootKeyboard.cpp create mode 100644 STM32F1/libraries/USBComposite/UPGRADING-TO-0.90.txt create mode 100644 STM32F1/libraries/USBComposite/examples/keyboardMouse/keyboardMouse.ino create mode 100644 STM32F1/libraries/USBComposite/scripts/midi_table.py create mode 100644 STM32F1/libraries/USBComposite/scripts/send.py create mode 100644 STM32F1/libraries/USBComposite/scripts/showhids.py diff --git a/STM32F1/libraries/USBComposite/AbsMouse.cpp b/STM32F1/libraries/USBComposite/AbsMouse.cpp index 91a27d084..4899bab83 100644 --- a/STM32F1/libraries/USBComposite/AbsMouse.cpp +++ b/STM32F1/libraries/USBComposite/AbsMouse.cpp @@ -1,56 +1,56 @@ -#include "USBHID.h" - -//================================================================================ -//================================================================================ -// Mouse - -void HIDAbsMouse::begin(void){ -} - -void HIDAbsMouse::end(void){ -} - -void HIDAbsMouse::click(uint8_t b) -{ - report.wheel = 0; - report.buttons = b; - sendReport(); - report.buttons = 0; - sendReport(); -} - -void HIDAbsMouse::move(int16 x, int16 y, int8 wheel) -{ - report.x = x; - report.y = y; - report.wheel = wheel; - - sendReport(); -} - -void HIDAbsMouse::buttons(uint8_t b) -{ - if (b != report.buttons) - { - report.wheel = 0; - report.buttons = b; - sendReport(); - } -} - -void HIDAbsMouse::press(uint8_t b) -{ - buttons(report.buttons | b); -} - -void HIDAbsMouse::release(uint8_t b) -{ - buttons(report.buttons & ~b); -} - -bool HIDAbsMouse::isPressed(uint8_t b) -{ - if ((b & report.buttons) != 0) - return true; - return false; -} +#include "USBComposite.h" + +//================================================================================ +//================================================================================ +// Mouse + +void HIDAbsMouse::begin(void){ +} + +void HIDAbsMouse::end(void){ +} + +void HIDAbsMouse::click(uint8_t b) +{ + report.wheel = 0; + report.buttons = b; + sendReport(); + report.buttons = 0; + sendReport(); +} + +void HIDAbsMouse::move(int16 x, int16 y, int8 wheel) +{ + report.x = x; + report.y = y; + report.wheel = wheel; + + sendReport(); +} + +void HIDAbsMouse::buttons(uint8_t b) +{ + if (b != report.buttons) + { + report.wheel = 0; + report.buttons = b; + sendReport(); + } +} + +void HIDAbsMouse::press(uint8_t b) +{ + buttons(report.buttons | b); +} + +void HIDAbsMouse::release(uint8_t b) +{ + buttons(report.buttons & ~b); +} + +bool HIDAbsMouse::isPressed(uint8_t b) +{ + if ((b & report.buttons) != 0) + return true; + return false; +} diff --git a/STM32F1/libraries/USBComposite/BootKeyboard.cpp b/STM32F1/libraries/USBComposite/BootKeyboard.cpp deleted file mode 100644 index 195f4ace3..000000000 --- a/STM32F1/libraries/USBComposite/BootKeyboard.cpp +++ /dev/null @@ -1,7 +0,0 @@ -#include "USBHID.h" - -//================================================================================ -//================================================================================ -// Keyboard - -HIDKeyboard BootKeyboard(0); diff --git a/STM32F1/libraries/USBComposite/Consumer.cpp b/STM32F1/libraries/USBComposite/Consumer.cpp index 6c896b0d9..2409d9552 100644 --- a/STM32F1/libraries/USBComposite/Consumer.cpp +++ b/STM32F1/libraries/USBComposite/Consumer.cpp @@ -1,13 +1,13 @@ -#include "USBHID.h" - -void HIDConsumer::begin(void) {} -void HIDConsumer::end(void) {} -void HIDConsumer::press(uint16_t button) { - report.button = button; - sendReport(); -} - -void HIDConsumer::release() { - report.button = 0; - sendReport(); -} +#include "USBComposite.h" + +void HIDConsumer::begin(void) {} +void HIDConsumer::end(void) {} +void HIDConsumer::press(uint16_t button) { + report.button = button; + sendReport(); +} + +void HIDConsumer::release() { + report.button = 0; + sendReport(); +} diff --git a/STM32F1/libraries/USBComposite/HIDReports.cpp b/STM32F1/libraries/USBComposite/HIDReports.cpp index bd00b5410..f1535b999 100644 --- a/STM32F1/libraries/USBComposite/HIDReports.cpp +++ b/STM32F1/libraries/USBComposite/HIDReports.cpp @@ -1,14 +1,14 @@ -#include "USBHID.h" - -#define REPORT(name, ...) \ - static uint8_t raw_ ## name[] = { __VA_ARGS__ }; \ - static const HIDReportDescriptor desc_ ## name = { raw_ ##name, sizeof(raw_ ##name) }; \ - const HIDReportDescriptor* hidReport ## name = & desc_ ## name; - -REPORT(KeyboardMouseJoystick, HID_MOUSE_REPORT_DESCRIPTOR(), HID_KEYBOARD_REPORT_DESCRIPTOR(), HID_JOYSTICK_REPORT_DESCRIPTOR()); -REPORT(KeyboardMouse, HID_MOUSE_REPORT_DESCRIPTOR(), HID_KEYBOARD_REPORT_DESCRIPTOR()); -REPORT(Keyboard, HID_KEYBOARD_REPORT_DESCRIPTOR()); -REPORT(Mouse, HID_MOUSE_REPORT_DESCRIPTOR()); -REPORT(KeyboardJoystick, HID_KEYBOARD_REPORT_DESCRIPTOR(), HID_JOYSTICK_REPORT_DESCRIPTOR()); -REPORT(Joystick, HID_JOYSTICK_REPORT_DESCRIPTOR()); -REPORT(BootKeyboard, HID_BOOT_KEYBOARD_REPORT_DESCRIPTOR()); +#include "USBComposite.h" + +#define REPORT(name, ...) \ + static uint8_t raw_ ## name[] = { __VA_ARGS__ }; \ + static const HIDReportDescriptor desc_ ## name = { raw_ ##name, sizeof(raw_ ##name) }; \ + const HIDReportDescriptor* hidReport ## name = & desc_ ## name; + +REPORT(KeyboardMouseJoystick, HID_MOUSE_REPORT_DESCRIPTOR(), HID_KEYBOARD_REPORT_DESCRIPTOR(), HID_JOYSTICK_REPORT_DESCRIPTOR()); +REPORT(KeyboardMouse, HID_MOUSE_REPORT_DESCRIPTOR(), HID_KEYBOARD_REPORT_DESCRIPTOR()); +REPORT(Keyboard, HID_KEYBOARD_REPORT_DESCRIPTOR()); +REPORT(Mouse, HID_MOUSE_REPORT_DESCRIPTOR()); +REPORT(KeyboardJoystick, HID_KEYBOARD_REPORT_DESCRIPTOR(), HID_JOYSTICK_REPORT_DESCRIPTOR()); +REPORT(Joystick, HID_JOYSTICK_REPORT_DESCRIPTOR()); +REPORT(BootKeyboard, HID_BOOT_KEYBOARD_REPORT_DESCRIPTOR()); diff --git a/STM32F1/libraries/USBComposite/Joystick.cpp b/STM32F1/libraries/USBComposite/Joystick.cpp index 969cac5c5..4f39d55e6 100644 --- a/STM32F1/libraries/USBComposite/Joystick.cpp +++ b/STM32F1/libraries/USBComposite/Joystick.cpp @@ -1,118 +1,117 @@ -#include "USBHID.h" - -// This code requires gcc on low-endian devices. - -//================================================================================ -//================================================================================ -// Joystick - -void HIDJoystick::begin(void){ -} - -void HIDJoystick::end(void){ -} - -void HIDJoystick::setManualReportMode(bool mode) { - manualReport = mode; -} - -bool HIDJoystick::getManualReportMode() { - return manualReport; -} - -void HIDJoystick::safeSendReport() { - if (!manualReport) { - sendReport(); - } -} - -void HIDJoystick::button(uint8_t button, bool val){ - uint32_t mask = ((uint32_t)1 << (button-1)); - - if (val) { - joyReport.buttons |= mask; - } else { - joyReport.buttons &= ~mask; - } - - safeSendReport(); -} - -void HIDJoystick::X(uint16_t val){ - if (val > 1023) val = 1023; - joyReport.x = val; - - safeSendReport(); -} - -void HIDJoystick::Y(uint16_t val){ - if (val > 1023) val = 1023; - joyReport.y = val; - - safeSendReport(); -} - -void HIDJoystick::position(uint16_t x, uint16_t y){ - if (x > 1023) x = 1023; - if (y > 1023) y = 1023; - joyReport.x = x; - joyReport.y = y; - - safeSendReport(); -} - -void HIDJoystick::Xrotate(uint16_t val){ - if (val > 1023) val = 1023; - joyReport.rx = val; - - safeSendReport(); -} - -void HIDJoystick::Yrotate(uint16_t val){ - if (val > 1023) val = 1023; - joyReport.ry = val; - - safeSendReport(); -} - -void HIDJoystick::sliderLeft(uint16_t val){ - if (val > 1023) val = 1023; - joyReport.sliderLeft = val; - - safeSendReport(); -} - -void HIDJoystick::sliderRight(uint16_t val){ - if (val > 1023) val = 1023; - joyReport.sliderRight = val; - - safeSendReport(); -} - -void HIDJoystick::slider(uint16_t val){ - if (val > 1023) val = 1023; - joyReport.sliderLeft = val; - joyReport.sliderRight = val; - - safeSendReport(); -} - -void HIDJoystick::hat(int16_t dir){ - uint8_t val; - if (dir < 0) val = 15; - else if (dir < 23) val = 0; - else if (dir < 68) val = 1; - else if (dir < 113) val = 2; - else if (dir < 158) val = 3; - else if (dir < 203) val = 4; - else if (dir < 245) val = 5; - else if (dir < 293) val = 6; - else if (dir < 338) val = 7; - else val = 15; - - joyReport.hat = val; - - safeSendReport(); -} - -HIDJoystick Joystick; +#include "USBComposite.h" + +// This code requires gcc on low-endian devices. + +//================================================================================ +//================================================================================ +// Joystick + +void HIDJoystick::begin(void){ +} + +void HIDJoystick::end(void){ +} + +void HIDJoystick::setManualReportMode(bool mode) { + manualReport = mode; +} + +bool HIDJoystick::getManualReportMode() { + return manualReport; +} + +void HIDJoystick::safeSendReport() { + if (!manualReport) { + sendReport(); + } +} + +void HIDJoystick::button(uint8_t button, bool val){ + uint32_t mask = ((uint32_t)1 << (button-1)); + + if (val) { + joyReport.buttons |= mask; + } else { + joyReport.buttons &= ~mask; + } + + safeSendReport(); +} + +void HIDJoystick::X(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.x = val; + + safeSendReport(); +} + +void HIDJoystick::Y(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.y = val; + + safeSendReport(); +} + +void HIDJoystick::position(uint16_t x, uint16_t y){ + if (x > 1023) x = 1023; + if (y > 1023) y = 1023; + joyReport.x = x; + joyReport.y = y; + + safeSendReport(); +} + +void HIDJoystick::Xrotate(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.rx = val; + + safeSendReport(); +} + +void HIDJoystick::Yrotate(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.ry = val; + + safeSendReport(); +} + +void HIDJoystick::sliderLeft(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.sliderLeft = val; + + safeSendReport(); +} + +void HIDJoystick::sliderRight(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.sliderRight = val; + + safeSendReport(); +} + +void HIDJoystick::slider(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.sliderLeft = val; + joyReport.sliderRight = val; + + safeSendReport(); +} + +void HIDJoystick::hat(int16_t dir){ + uint8_t val; + if (dir < 0) val = 15; + else if (dir < 23) val = 0; + else if (dir < 68) val = 1; + else if (dir < 113) val = 2; + else if (dir < 158) val = 3; + else if (dir < 203) val = 4; + else if (dir < 245) val = 5; + else if (dir < 293) val = 6; + else if (dir < 338) val = 7; + else val = 15; + + joyReport.hat = val; + + safeSendReport(); +} + diff --git a/STM32F1/libraries/USBComposite/Keyboard.cpp b/STM32F1/libraries/USBComposite/Keyboard.cpp index a658cc5db..39da26740 100644 --- a/STM32F1/libraries/USBComposite/Keyboard.cpp +++ b/STM32F1/libraries/USBComposite/Keyboard.cpp @@ -1,258 +1,257 @@ -#include "USBHID.h" -#include - -//================================================================================ -//================================================================================ -// Keyboard - -#define SHIFT 0x80 -static const uint8_t ascii_to_hid[128] = -{ - 0x00, // NUL - 0x00, // SOH - 0x00, // STX - 0x00, // ETX - 0x00, // EOT - 0x00, // ENQ - 0x00, // ACK - 0x00, // BEL - 0x2a, // BS Backspace - 0x2b, // TAB Tab - 0x28, // LF Enter - 0x00, // VT - 0x00, // FF - 0x00, // CR - 0x00, // SO - 0x00, // SI - 0x00, // DEL - 0x00, // DC1 - 0x00, // DC2 - 0x00, // DC3 - 0x00, // DC4 - 0x00, // NAK - 0x00, // SYN - 0x00, // ETB - 0x00, // CAN - 0x00, // EM - 0x00, // SUB - 0x00, // ESC - 0x00, // FS - 0x00, // GS - 0x00, // RS - 0x00, // US - - 0x2c, // ' ' - 0x1e|SHIFT, // ! - 0x34|SHIFT, // " - 0x20|SHIFT, // # - 0x21|SHIFT, // $ - 0x22|SHIFT, // % - 0x24|SHIFT, // & - 0x34, // ' - 0x26|SHIFT, // ( - 0x27|SHIFT, // ) - 0x25|SHIFT, // * - 0x2e|SHIFT, // + - 0x36, // , - 0x2d, // - - 0x37, // . - 0x38, // / - 0x27, // 0 - 0x1e, // 1 - 0x1f, // 2 - 0x20, // 3 - 0x21, // 4 - 0x22, // 5 - 0x23, // 6 - 0x24, // 7 - 0x25, // 8 - 0x26, // 9 - 0x33|SHIFT, // : - 0x33, // ; - 0x36|SHIFT, // < - 0x2e, // = - 0x37|SHIFT, // > - 0x38|SHIFT, // ? - 0x1f|SHIFT, // @ - 0x04|SHIFT, // A - 0x05|SHIFT, // B - 0x06|SHIFT, // C - 0x07|SHIFT, // D - 0x08|SHIFT, // E - 0x09|SHIFT, // F - 0x0a|SHIFT, // G - 0x0b|SHIFT, // H - 0x0c|SHIFT, // I - 0x0d|SHIFT, // J - 0x0e|SHIFT, // K - 0x0f|SHIFT, // L - 0x10|SHIFT, // M - 0x11|SHIFT, // N - 0x12|SHIFT, // O - 0x13|SHIFT, // P - 0x14|SHIFT, // Q - 0x15|SHIFT, // R - 0x16|SHIFT, // S - 0x17|SHIFT, // T - 0x18|SHIFT, // U - 0x19|SHIFT, // V - 0x1a|SHIFT, // W - 0x1b|SHIFT, // X - 0x1c|SHIFT, // Y - 0x1d|SHIFT, // Z - 0x2f, // [ - 0x31, // bslash - 0x30, // ] - 0x23|SHIFT, // ^ - 0x2d|SHIFT, // _ - 0x35, // ` - 0x04, // a - 0x05, // b - 0x06, // c - 0x07, // d - 0x08, // e - 0x09, // f - 0x0a, // g - 0x0b, // h - 0x0c, // i - 0x0d, // j - 0x0e, // k - 0x0f, // l - 0x10, // m - 0x11, // n - 0x12, // o - 0x13, // p - 0x14, // q - 0x15, // r - 0x16, // s - 0x17, // t - 0x18, // u - 0x19, // v - 0x1a, // w - 0x1b, // x - 0x1c, // y - 0x1d, // z - 0x2f|SHIFT, // - 0x31|SHIFT, // | - 0x30|SHIFT, // } - 0x35|SHIFT, // ~ - 0 // DEL -}; - -void HIDKeyboard::begin(void){ - USBHID.addOutputBuffer(&ledData); -} - -void HIDKeyboard::end(void) { -} - -// 136: non-printing key -// shift -> 0x02 -// modifiers: 128 --> bit shift - -uint8_t HIDKeyboard::getKeyCode(uint8_t k, uint8_t* modifiersP) -{ - *modifiersP = 0; - - if (adjustForHostCapsLock && (getLEDs() & 0x02)) { // capslock is down on host OS, so host will reverse - if ('a' <= k && k <= 'z') - k += 'A'-'a'; - else if ('A' <= k && k <= 'Z') - k += 'a'-'A'; - } - - if (k < 0x80) { - k = ascii_to_hid[k]; - if (k & SHIFT) { - k &= 0x7f; - *modifiersP = 0x02; - } - return k; - } - if (k >= 0x88) { // non-printing key, Arduino format - return k - 0x88; - } - else { // shift key - *modifiersP = 1<<(k-0x80); - return 0; - } -} - -size_t HIDKeyboard::press(uint8_t k) { - uint8_t modifiers; - - k = getKeyCode(k, &modifiers); - - if (k == 0) { - if (modifiers == 0) { - return 0; - } - } - else { - for (unsigned i = 0; i + +//================================================================================ +//================================================================================ +// Keyboard + +#define SHIFT 0x80 +static const uint8_t ascii_to_hid[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +void HIDKeyboard::begin(void){ + HID.addOutputBuffer(&ledData); +} + +void HIDKeyboard::end(void) { +} + +// 136: non-printing key +// shift -> 0x02 +// modifiers: 128 --> bit shift + +uint8_t HIDKeyboard::getKeyCode(uint8_t k, uint8_t* modifiersP) +{ + *modifiersP = 0; + + if (adjustForHostCapsLock && (getLEDs() & 0x02)) { // capslock is down on host OS, so host will reverse + if ('a' <= k && k <= 'z') + k += 'A'-'a'; + else if ('A' <= k && k <= 'Z') + k += 'a'-'A'; + } + + if (k < 0x80) { + k = ascii_to_hid[k]; + if (k & SHIFT) { + k &= 0x7f; + *modifiersP = 0x02; + } + return k; + } + if (k >= 0x88) { // non-printing key, Arduino format + return k - 0x88; + } + else { // shift key + *modifiersP = 1<<(k-0x80); + return 0; + } +} + +size_t HIDKeyboard::press(uint8_t k) { + uint8_t modifiers; + + k = getKeyCode(k, &modifiers); + + if (k == 0) { + if (modifiers == 0) { + return 0; + } + } + else { + for (unsigned i = 0; i 0) - return true; - return false; -} - -HIDMouse Mouse; +#include "USBComposite.h" + +//================================================================================ +//================================================================================ +// Mouse + +void HIDMouse::begin(void){ +} + +void HIDMouse::end(void){ +} + +void HIDMouse::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void HIDMouse::move(signed char x, signed char y, signed char wheel) +{ + reportBuffer[1] = _buttons; + reportBuffer[2] = x; + reportBuffer[3] = y; + reportBuffer[4] = wheel; + + sendReport(); +} + +void HIDMouse::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void HIDMouse::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void HIDMouse::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool HIDMouse::isPressed(uint8_t b) +{ + if ((b & _buttons) > 0) + return true; + return false; +} + diff --git a/STM32F1/libraries/USBComposite/README.md b/STM32F1/libraries/USBComposite/README.md index 8c80c13dd..9edace87c 100644 --- a/STM32F1/libraries/USBComposite/README.md +++ b/STM32F1/libraries/USBComposite/README.md @@ -1,88 +1,156 @@ -# USB Composite library for STM32F1 - -## Protocols supported - -- standard USB HID, with many built-in profiles, and customizable with more - -- MIDI over USB - -- XBox360 controller (only controller-to-host is currently supported) - -- Mass storage - -## Basic concepts - -Start with: -``` -#include -``` - -The library defines several crucial objects. The central object is: - -``` -extern USBCompositeDevice USBComposite; -``` - -This controls USB device identification as well as registers the plugins that are connected to it. - -Plugin objects included in the library are: - -``` -extern USBHIDDevice USBHID; -extern USBMidi USBMIDI; -extern USBXBox360 XBox360; -extern USBMassStorageDevice MassStorage; -extern USBCompositeSerial CompositeSerial; -``` - -You can also create your own customized instances of these plugin classes or their subclasses. - -If you want to make a simple (non-composite) USB device, you can just call the plugin's `begin()` -method, and it will take care of registering itself with `USBComposite` and starting up -`USBComposite`. If you want to make a composite USB device, however, -you need to control the device with `USBComposite`: - -``` -USBComposite.clear(); // clear any plugins previously registered -plugin1.registerComponent(); -plugin2.registerComponent(); -USBComposite.begin(); -``` - -Of course, you may need to do some further configuring of the plugins or the `USBComposite` device -before the `USBComposite.begin()` call. - -Finally, there are a number of objects that implement particular protocols for the `USBHID` plugin: -``` -extern HIDMouse Mouse; -extern HIDKeyboard Keyboard; -extern HIDJoystick Joystick; -extern HIDKeyboard BootKeyboard; -``` -And you can customize with more. Moreover, the `USBHID` plugin itself allows for compositing -multiple HID profiles, e.g., Mouse / Keyboard / three joysticks. - -Not all combinations will fit within the constraints of the STM32F1 USB system, and not all -combinations will be supported by all operating systems. - -## Simple USB device configuration - -A simple USB device uses a single plugin. You just need to call any setup methods for the plugin -and the `begin()` method for the plugin. For instance, to inject keyboard data, you can do: - -``` -USBHID.begin(HID_KEYBOARD); -``` - -and then call `Keyboard.print("TextToInject")` to inject keyboard data. Some plugin configurations -may require further initialization code or further code that needs to be called inside the Arduino -`loop()` function. - -See the `BootKeyboard`, `midiout` and `x360` example code for this procedure. - -Additionally, for backwards compatibility reasons, the `USBHID` plugin has a convenience -`USBHID_begin_with_serial()` function which works just like `USBHID.begin()` except that it also -composites a `CompositeSerial` plugin. - -However, if you want a USB device using more than one plugin, then you will NOT call the plugin's -`begin()` method. \ No newline at end of file +# USB Composite library for STM32F1 + +## Protocols supported + +- standard USB HID, with many built-in profiles, and customizable with more + +- MIDI over USB + +- XBox360 controller (only controller-to-host is currently supported) + +- Mass storage + +## Basic concepts + +Start with: +``` +#include +``` + +The library defines one central singleton object: + +``` +extern USBCompositeDevice USBComposite; +``` + +This controls USB device identification as well as registers the plugins that are connected to it. + +Plugin classes included in the library: + +``` +USBHID +USBMIDI +USBXBox360 +USBMassStorage +USBCompositeSerial +``` + +To use them, you need to create instances of them. Currently, only one instance of each plugin class +can be created. + +If you want to make a simple (non-composite) USB device, you can create an instance of the plugin class +and call the `begin()` method, and it will take care of registering itself with `USBComposite` and starting up +`USBComposite`. If you want to make a composite USB device, however, +you need to control the device with `USBComposite`: + +``` +USBComposite.clear(); // clear any plugins previously registered +plugin1.registerComponent(); +plugin2.registerComponent(); +USBComposite.begin(); +``` + +Of course, you may need to do some further configuring of the plugins or the `USBComposite` device +before the `USBComposite.begin()` call. + +Finally, there are a number of classes that implement particular protocols for the `USBHID` class plugin. +These are: +``` +HIDMouse +HIDKeyboard +HIDJoystick +HIDAbsMouse +HIDConsumer +HIDRaw +``` +And you can customize with more. Moreover, the `USBHID` plugin itself allows for compositing +multiple HID profiles, e.g., Mouse / Keyboard / three joysticks. Each of these has at least +one required parameter, which is an instance of `USBHID`. + +Not all combinations will fit within the constraints of the STM32F1 USB system, and not all +combinations will be supported by all operating systems. + +I recommend calling `USBComposite.setDeviceId(device)` with a different device number for each combination +of plugins and profiles to prevent problems with cached configurations on the host computer. + +## Simple USB device configuration + +A simple USB device uses a single plugin. You need to create an instance of the plugin class, +call any setup methods for the plugin and the `begin()` method for the plugin. For instance, +to inject keyboard data, you should do: + +``` +USBHID HID; // create instance of USBHID plugin +HIDKeyboard Keyboard(HID); // create a profile + +HID.begin(HID_KEYBOARD); +``` + +and then call `Keyboard.print("TextToInject")` to inject keyboard data. Some plugin configurations +may require further initialization code or further code that needs to be called inside the Arduino +`loop()` function. + +See the `BootKeyboard`, `midiout` and `x360` example code for this procedure. + +(Additionally, the `USBHID` plugin has a convenience `begin()` method that lets you include an +instance of a `USBCompositeSerial` plugin class, and that creates a composite HID-Serial device.) + +However, if you want a USB device using more than one plugin, then you will NOT call the plugin's +`begin()` method. + +## Memory limitations + +There are 320 bytes of hardware buffer memory available after endpoint 0 is taken into account. The following +are the default buffer memory needs of the current components: + + * USB Serial: 144 bytes + + * USB HID: 64 bytes + + * USB Mass Storage: 128 bytes + + * USB MIDI: 128 bytes + + * XBox360 Controller: 64 bytes + +This places a limit on what combinations can be used together. For instance, HID+Mass storage+MIDI should be theoretically +OK (320 bytes), but Serial+HID+Mass storage (336 bytes) will fail with default settings (and return false from +USBComposite.begin()) due to lack of memory. + +However, USB Serial, USB HID and USB MIDI allow you to decrease buffer sizes (and allow for more complex composite devices) +by calling: +``` +USBHID HID; +USBCompositeSerial CompositeSerial; +USBMIDI MIDI; + +CompositeSerial.setRXPacketSize(size); +CompositeSerial.setTXPacketSize(size); +HID.setTXPacketSize(size); +MIDI.setRXPacketSize(size); +MIDI.setTXPacketSize(size); +``` +The maximum and default packet size is 64. Smaller packet sizes have not been thoroughly tested and may slow things down. In +particular, for HID you should make sure your packet size is sufficient for your largest HID report. The CompositeSerial +device also has a control channel whose 16 byte packet size is not adjustable. + +Note that in the above, RX and TX are from the point of view of the MCU, not the host (i.e., RX corresponds to USB Out and TX +to USB In). + +## Endpoint limitations + +There is one bidirectional endpoint 0 that all endpoints share, and the hardware allows for seven more. Here are +how many endpoints besides endpoint 0 are needed for each plugin: + +* USB Serial: 3 + +* USB HID: 1 + +* USB Mass Storage: 2 + +* USB MIDI: 2 + +* XBox360 Controller: 2 + +When combining plugins, make sure the count of these endpoints does not exceed 7. For instance, USB Serial + USB Mass Storage + +USB MIDI + USB HID adds up to 8, which is too much. diff --git a/STM32F1/libraries/USBComposite/UPGRADING-TO-0.90.txt b/STM32F1/libraries/USBComposite/UPGRADING-TO-0.90.txt new file mode 100644 index 000000000..07d3fca24 --- /dev/null +++ b/STM32F1/libraries/USBComposite/UPGRADING-TO-0.90.txt @@ -0,0 +1,19 @@ +Version 0.90 of the library has changed the API significantly in order to save flash and RAM. +The main change is that other than USBComposite, all pre-declared object instances have been +removed. + +When upgrading to 0.90 or higher, you will have to make a number of changes to your code. + +1. Use a single include file instead of USBHID.h, USBMIDI.h, etc.: + #include + +2. Declare all instances other than USBComposite. This includes instances of plugin classes + like USBHID as well as of HID profiles like HIDKeyboard (which need an instance of USBHID). + +3. Note that USBHID is now a class (for consistency with other class names) and there is no + USBHID instance. You need to declare an instance, e.g.: + USBHID HID; + and replace calls to USBHID.* with calls to HID.*. + +4. Replace USBHID_begin_with_serial(...) with HID.begin(CompositeSerial,...) where HID is your + instance of USBHID. \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/USBComposite.cpp b/STM32F1/libraries/USBComposite/USBComposite.cpp index b659f11c6..edb2680db 100644 --- a/STM32F1/libraries/USBComposite/USBComposite.cpp +++ b/STM32F1/libraries/USBComposite/USBComposite.cpp @@ -1,147 +1,147 @@ -#include "USBComposite.h" - -#define DEFAULT_VENDOR_ID 0x1EAF -#define DEFAULT_PRODUCT_ID 0x0004 - -static char* putSerialNumber(char* out, int nibbles, uint32 id) { - for (int i=0; i>= 4) { - uint8 nibble = id & 0xF; - if (nibble <= 9) - *out++ = nibble + '0'; - else - *out++ = nibble - 10 + 'a'; - } - return out; -} - -const char* getDeviceIDString() { - static char string[80/4+1]; - char* p = string; - - uint32 id = (uint32) *(uint16*) (0x1FFFF7E8+0x02); - p = putSerialNumber(p, 4, id); - - id = *(uint32*) (0x1FFFF7E8+0x04); - p = putSerialNumber(p, 8, id); - - id = *(uint32*) (0x1FFFF7E8+0x08); - p = putSerialNumber(p, 8, id); - - *p = 0; - - return string; -} - -USBCompositeDevice::USBCompositeDevice(void) { - vendorId = 0; - productId = 0; - numParts = 0; - setManufacturerString(NULL); - setProductString(NULL); - setSerialString(DEFAULT_SERIAL_STRING); - iManufacturer[0] = 0; - iProduct[0] = 0; - iSerialNumber[0] = 0; - } - -void USBCompositeDevice::setVendorId(uint16 _vendorId) { - if (_vendorId != 0) - vendorId = _vendorId; - else - vendorId = DEFAULT_VENDOR_ID; -} - -void USBCompositeDevice::setProductId(uint16 _productId) { - if (_productId != 0) - productId = _productId; - else - productId = DEFAULT_PRODUCT_ID; -} - -void setString(uint8* out, const usb_descriptor_string* defaultDescriptor, const char* s, uint32 maxLength) { - if (s == NULL) { - uint8 n = defaultDescriptor->bLength; - uint8 m = USB_DESCRIPTOR_STRING_LEN(maxLength); - if (n > m) - n = m; - memcpy(out, defaultDescriptor, n); - out[0] = n; - } - else { - uint32 n = strlen(s); - if (n > maxLength) - n = maxLength; - out[0] = (uint8)USB_DESCRIPTOR_STRING_LEN(n); - out[1] = USB_DESCRIPTOR_TYPE_STRING; - for (uint32 i=0; i= USB_COMPOSITE_MAX_PARTS) - return false; - parts[i] = part; - init[i] = _init; - stop[i] = _stop; - plugin[i] = _plugin; - if (i >= numParts) - numParts++; - return true; -} - -USBCompositeDevice USBComposite; +#include "USBComposite.h" + +#define DEFAULT_VENDOR_ID 0x1EAF +#define DEFAULT_PRODUCT_ID 0x0024 + +static char* putSerialNumber(char* out, int nibbles, uint32 id) { + for (int i=0; i>= 4) { + uint8 nibble = id & 0xF; + if (nibble <= 9) + *out++ = nibble + '0'; + else + *out++ = nibble - 10 + 'a'; + } + return out; +} + +const char* getDeviceIDString() { + static char string[80/4+1]; + char* p = string; + + uint32 id = (uint32) *(uint16*) (0x1FFFF7E8+0x02); + p = putSerialNumber(p, 4, id); + + id = *(uint32*) (0x1FFFF7E8+0x04); + p = putSerialNumber(p, 8, id); + + id = *(uint32*) (0x1FFFF7E8+0x08); + p = putSerialNumber(p, 8, id); + + *p = 0; + + return string; +} + +USBCompositeDevice::USBCompositeDevice(void) { + vendorId = 0; + productId = 0; + numParts = 0; + setManufacturerString(NULL); + setProductString(NULL); + setSerialString(DEFAULT_SERIAL_STRING); + iManufacturer[0] = 0; + iProduct[0] = 0; + iSerialNumber[0] = 0; + } + +void USBCompositeDevice::setVendorId(uint16 _vendorId) { + if (_vendorId != 0) + vendorId = _vendorId; + else + vendorId = DEFAULT_VENDOR_ID; +} + +void USBCompositeDevice::setProductId(uint16 _productId) { + if (_productId != 0) + productId = _productId; + else + productId = DEFAULT_PRODUCT_ID; +} + +void setString(uint8* out, const usb_descriptor_string* defaultDescriptor, const char* s, uint32 maxLength) { + if (s == NULL) { + uint8 n = defaultDescriptor->bLength; + uint8 m = USB_DESCRIPTOR_STRING_LEN(maxLength); + if (n > m) + n = m; + memcpy(out, defaultDescriptor, n); + out[0] = n; + } + else { + uint32 n = strlen(s); + if (n > maxLength) + n = maxLength; + out[0] = (uint8)USB_DESCRIPTOR_STRING_LEN(n); + out[1] = USB_DESCRIPTOR_TYPE_STRING; + for (uint32 i=0; i= USB_COMPOSITE_MAX_PARTS) + return false; + parts[i] = part; + init[i] = _init; + stop[i] = _stop; + plugin[i] = _plugin; + if (i >= numParts) + numParts++; + return true; +} + +USBCompositeDevice USBComposite; diff --git a/STM32F1/libraries/USBComposite/USBComposite.h b/STM32F1/libraries/USBComposite/USBComposite.h index 152c3c36d..3f95bb722 100644 --- a/STM32F1/libraries/USBComposite/USBComposite.h +++ b/STM32F1/libraries/USBComposite/USBComposite.h @@ -6,10 +6,11 @@ #include "usb_generic.h" //#include +#include #include #include #include -#include +#include #define USB_MAX_PRODUCT_LENGTH 32 #define USB_MAX_MANUFACTURER_LENGTH 32 diff --git a/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp b/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp index 8fa6c98d2..08349a79c 100644 --- a/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp +++ b/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp @@ -14,7 +14,7 @@ ** SOFTWARE. */ -#include +#include "USBComposite.h" #include #include @@ -33,11 +33,12 @@ static void ifaceSetupHook(unsigned, void*); #endif bool USBCompositeSerial::init(USBCompositeSerial* me) { - (void)me; #if defined(SERIAL_USB) composite_cdcacm_set_hooks(USBHID_CDCACM_HOOK_RX, rxHook); composite_cdcacm_set_hooks(USBHID_CDCACM_HOOK_IFACE_SETUP, ifaceSetupHook); #endif + composite_cdcacm_setTXEPSize(me->txPacketSize); + composite_cdcacm_setRXEPSize(me->rxPacketSize); return true; } @@ -269,6 +270,3 @@ static void rxHook(unsigned hook, void *ignored) { } #endif - -USBCompositeSerial CompositeSerial; - diff --git a/STM32F1/libraries/USBComposite/USBCompositeSerial.h b/STM32F1/libraries/USBComposite/USBCompositeSerial.h index 80f110a7f..2340d1a47 100644 --- a/STM32F1/libraries/USBComposite/USBCompositeSerial.h +++ b/STM32F1/libraries/USBComposite/USBCompositeSerial.h @@ -1,40 +1,49 @@ -#ifndef _COMPOSITE_SERIAL_H_ -#define _COMPOSITE_SERIAL_H_ - -#include "USBComposite.h" -#include "usb_composite_serial.h" - -class USBCompositeSerial : public Stream { -private: - bool enabled = false; -public: - void begin(long speed=9600); - void end(); - static bool init(USBCompositeSerial* me); - bool registerComponent(); - - operator bool() { return true; } // Roger Clark. This is needed because in cardinfo.ino it does if (!Serial) . It seems to be a work around for the Leonardo that we needed to implement just to be compliant with the API - - virtual int available(void);// Changed to virtual - - uint32 read(uint8 * buf, uint32 len); - // uint8 read(void); - - // Roger Clark. added functions to support Arduino 1.0 API - virtual int peek(void); - virtual int read(void); - int availableForWrite(void); - virtual void flush(void); - - size_t write(uint8); - size_t write(const char *str); - size_t write(const uint8*, uint32); - - uint8 getRTS(); - uint8 getDTR(); - uint8 isConnected(); - uint8 pending(); -}; - -extern USBCompositeSerial CompositeSerial; -#endif +#ifndef _COMPOSITE_SERIAL_H_ +#define _COMPOSITE_SERIAL_H_ + +#include "usb_composite_serial.h" + +class USBCompositeSerial : public Stream { +private: + bool enabled = false; + uint32 txPacketSize = 64; + uint32 rxPacketSize = 64; +public: + void begin(long speed=9600); + void end(); + static bool init(USBCompositeSerial* me); + bool registerComponent(); + + operator bool() { return true; } // Roger Clark. This is needed because in cardinfo.ino it does if (!Serial) . It seems to be a work around for the Leonardo that we needed to implement just to be compliant with the API + + virtual int available(void);// Changed to virtual + + uint32 read(uint8 * buf, uint32 len); + // uint8 read(void); + + // Roger Clark. added functions to support Arduino 1.0 API + virtual int peek(void); + virtual int read(void); + int availableForWrite(void); + virtual void flush(void); + + size_t write(uint8); + size_t write(const char *str); + size_t write(const uint8*, uint32); + + uint8 getRTS(); + uint8 getDTR(); + uint8 isConnected(); + uint8 pending(); + + void setRXPacketSize(uint32 size=64) { + rxPacketSize = size; + } + + void setTXPacketSize(uint32 size=64) { + txPacketSize = size; + } +}; + +extern USBCompositeSerial CompositeSerial; +#endif diff --git a/STM32F1/libraries/USBComposite/USBHID.cpp b/STM32F1/libraries/USBComposite/USBHID.cpp index ca353961a..feb2a2849 100644 --- a/STM32F1/libraries/USBComposite/USBHID.cpp +++ b/STM32F1/libraries/USBComposite/USBHID.cpp @@ -1,4 +1,5 @@ /* Copyright (c) 2011, Peter Barrett + * Copyright (c) 2017-2018, Alexander Pruss ** ** Permission to use, copy, modify, and/or distribute this software for ** any purpose with or without fee is hereby granted, provided that the @@ -14,8 +15,7 @@ ** SOFTWARE. */ -#include "USBHID.h" -#include "USBCompositeSerial.h" +#include "USBComposite.h" #include #include @@ -33,20 +33,24 @@ * USB HID interface */ -bool USBHIDDevice::registerComponent() { - return USBComposite.add(&usbHIDPart, this); +bool USBHID::init(USBHID* me) { + usb_hid_setTXEPSize(me->txPacketSize); + return true; } -void USBHIDDevice::setReportDescriptor(const uint8_t* report_descriptor, uint16_t report_descriptor_length) { +bool USBHID::registerComponent() { + return USBComposite.add(&usbHIDPart, this, (USBPartInitializer)&USBHID::init); +} + +void USBHID::setReportDescriptor(const uint8_t* report_descriptor, uint16_t report_descriptor_length) { usb_hid_set_report_descriptor(report_descriptor, report_descriptor_length); } -void USBHIDDevice::setReportDescriptor(const HIDReportDescriptor* report) { +void USBHID::setReportDescriptor(const HIDReportDescriptor* report) { setReportDescriptor(report->descriptor, report->length); } -void USBHIDDevice::begin(const uint8_t* report_descriptor, uint16_t report_descriptor_length, uint16_t idVendor, uint16_t idProduct, - const char* manufacturer, const char* product, const char* serialNumber) { +void USBHID::begin(const uint8_t* report_descriptor, uint16_t report_descriptor_length) { if (enabledHID) return; @@ -54,11 +58,6 @@ void USBHIDDevice::begin(const uint8_t* report_descriptor, uint16_t report_descr setReportDescriptor(report_descriptor, report_descriptor_length); USBComposite.clear(); - USBComposite.setVendorId(idVendor); - USBComposite.setProductId(idProduct); - USBComposite.setManufacturerString(manufacturer); - USBComposite.setProductString(product); - USBComposite.setSerialString(serialNumber); registerComponent(); USBComposite.begin(); @@ -66,35 +65,49 @@ void USBHIDDevice::begin(const uint8_t* report_descriptor, uint16_t report_descr enabledHID = true; } -void USBHIDDevice::begin(const HIDReportDescriptor* report, uint16_t idVendor, uint16_t idProduct, - const char* manufacturer, const char* product, const char* serialNumber) { - begin(report->descriptor, report->length, idVendor, idProduct, manufacturer, product, serialNumber); +void USBHID::begin(const HIDReportDescriptor* report) { + begin(report->descriptor, report->length); } -void USBHIDDevice::setBuffers(uint8_t type, volatile HIDBuffer_t* fb, int count) { +void USBHID::setBuffers(uint8_t type, volatile HIDBuffer_t* fb, int count) { usb_hid_set_buffers(type, fb, count); } -bool USBHIDDevice::addBuffer(uint8_t type, volatile HIDBuffer_t* buffer) { +bool USBHID::addBuffer(uint8_t type, volatile HIDBuffer_t* buffer) { return 0 != usb_hid_add_buffer(type, buffer); } -void USBHIDDevice::clearBuffers(uint8_t type) { +void USBHID::clearBuffers(uint8_t type) { usb_hid_clear_buffers(type); } -void USBHIDDevice::clearBuffers() { +void USBHID::clearBuffers() { clearBuffers(HID_REPORT_TYPE_OUTPUT); clearBuffers(HID_REPORT_TYPE_FEATURE); } -void USBHIDDevice::end(void){ - if(enabledHID){ +void USBHID::end(void){ + if(enabledHID) { USBComposite.end(); enabledHID = false; } } +void USBHID::begin(USBCompositeSerial serial, const uint8_t* report_descriptor, uint16_t report_descriptor_length) { + USBComposite.clear(); + + setReportDescriptor(report_descriptor, report_descriptor_length); + registerComponent(); + + serial.registerComponent(); + + USBComposite.begin(); +} + +void USBHID::begin(USBCompositeSerial serial, const HIDReportDescriptor* report) { + begin(serial, report->descriptor, report->length); +} + void HIDReporter::sendReport() { // while (usb_is_transmitting() != 0) { // } @@ -115,7 +128,7 @@ void HIDReporter::sendReport() { usb_hid_tx(NULL, 0); } -HIDReporter::HIDReporter(uint8_t* _buffer, unsigned _size, uint8_t _reportID) { +HIDReporter::HIDReporter(USBHID& _HID, uint8_t* _buffer, unsigned _size, uint8_t _reportID) : HID(_HID) { if (_reportID == 0) { buffer = _buffer+1; bufferSize = _size-1; @@ -130,7 +143,7 @@ HIDReporter::HIDReporter(uint8_t* _buffer, unsigned _size, uint8_t _reportID) { buffer[0] = _reportID; } -HIDReporter::HIDReporter(uint8_t* _buffer, unsigned _size) { +HIDReporter::HIDReporter(USBHID& _HID, uint8_t* _buffer, unsigned _size) : HID(_HID) { buffer = _buffer; bufferSize = _size; memset(buffer, 0, _size); @@ -153,28 +166,3 @@ uint16_t HIDReporter::getOutput(uint8_t* out, uint8_t poll) { return usb_hid_get_data(HID_REPORT_TYPE_OUTPUT, reportID, out, poll); } -USBHIDDevice USBHID; - -void USBHID_begin_with_serial(const uint8_t* report_descriptor, uint16_t report_descriptor_length, uint16_t idVendor, uint16_t idProduct, - const char* manufacturer, const char* product, const char* serialNumber) { - - USBComposite.clear(); - USBComposite.setVendorId(idVendor); - USBComposite.setProductId(idProduct); - USBComposite.setManufacturerString(manufacturer); - USBComposite.setProductString(product); - USBComposite.setSerialString(serialNumber); - - USBHID.setReportDescriptor(report_descriptor, report_descriptor_length); - USBHID.registerComponent(); - - CompositeSerial.registerComponent(); - - USBComposite.begin(); -} - -void USBHID_begin_with_serial(const HIDReportDescriptor* report, uint16_t idVendor, uint16_t idProduct, - const char* manufacturer, const char* product, const char* serialNumber) { - USBHID_begin_with_serial(report->descriptor, report->length, idVendor, idProduct, manufacturer, product, serialNumber); -} - diff --git a/STM32F1/libraries/USBComposite/USBHID.h b/STM32F1/libraries/USBComposite/USBHID.h index 0362f4e7c..2152bddd4 100644 --- a/STM32F1/libraries/USBComposite/USBHID.h +++ b/STM32F1/libraries/USBComposite/USBHID.h @@ -17,8 +17,6 @@ #ifndef _USBHID_H_ #define _USBHID_H_ -#include -#include #include #include #include "Stream.h" @@ -290,19 +288,20 @@ typedef struct { uint16_t length; } HIDReportDescriptor; -class USBHIDDevice { +class USBHID { private: bool enabledHID = false; + uint32 txPacketSize = 64; public: + static bool init(USBHID* me); bool registerComponent(); void setReportDescriptor(const uint8_t* report_descriptor, uint16_t report_descriptor_length); void setReportDescriptor(const HIDReportDescriptor* reportDescriptor); // All the strings are zero-terminated ASCII strings. Use NULL for defaults. - void begin(const uint8_t* report_descriptor, uint16_t length, uint16_t idVendor=0, uint16_t idProduct=0, - const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); - void begin(const HIDReportDescriptor* reportDescriptor, uint16_t idVendor=0, uint16_t idProduct=0, - const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); - void setSerial(uint8 serialSupport=true); + void begin(const uint8_t* report_descriptor, uint16_t length); + void begin(const HIDReportDescriptor* reportDescriptor); + void begin(USBCompositeSerial serial, const uint8_t* report_descriptor, uint16_t length); + void begin(USBCompositeSerial serial, const HIDReportDescriptor* reportDescriptor); void setBuffers(uint8_t buffers, volatile HIDBuffer_t* fb=NULL, int count=0); // type = HID_REPORT_TYPE_FEATURE or HID_REPORT_TYPE_OUTPUT bool addBuffer(uint8_t type, volatile HIDBuffer_t* buffer); void clearBuffers(uint8_t type); @@ -320,29 +319,28 @@ class USBHIDDevice { setBuffers(HID_REPORT_TYPE_OUTPUT, fb, count); } void end(void); + void setTXPacketSize(uint32 size=64) { + txPacketSize = size; + } }; -void USBHID_begin_with_serial(const uint8_t* report_descriptor, uint16_t length, uint16_t idVendor=0, uint16_t idProduct=0, - const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); -void USBHID_begin_with_serial(const HIDReportDescriptor* reportDescriptor, uint16_t idVendor=0, uint16_t idProduct=0, - const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); - class HIDReporter { private: uint8_t* buffer; unsigned bufferSize; uint8_t reportID; + + protected: + USBHID& HID; public: void sendReport(); - - public: // if you use this init function, the buffer starts with a reportID, even if the reportID is zero, // and bufferSize includes the reportID; if reportID is zero, sendReport() will skip the initial // reportID byte - HIDReporter(uint8_t* _buffer, unsigned _size, uint8_t _reportID); + HIDReporter(USBHID& _HID, uint8_t* _buffer, unsigned _size, uint8_t _reportID); // if you use this init function, the buffer has no reportID byte in it - HIDReporter(uint8_t* _buffer, unsigned _size); + HIDReporter(USBHID& _HID, uint8_t* _buffer, unsigned _size); uint16_t getFeature(uint8_t* out=NULL, uint8_t poll=1); uint16_t getOutput(uint8_t* out=NULL, uint8_t poll=1); uint16_t getData(uint8_t type, uint8_t* out, uint8_t poll=1); // type = HID_REPORT_TYPE_FEATURE or HID_REPORT_TYPE_OUTPUT @@ -364,7 +362,7 @@ class HIDMouse : public HIDReporter { void buttons(uint8_t b); uint8_t reportBuffer[5]; public: - HIDMouse(uint8_t reportID=HID_MOUSE_REPORT_ID) : HIDReporter(reportBuffer, sizeof(reportBuffer), reportID), _buttons(0) {} + HIDMouse(USBHID& HID, uint8_t reportID=HID_MOUSE_REPORT_ID) : HIDReporter(HID, reportBuffer, sizeof(reportBuffer), reportID), _buttons(0) {} void begin(void); void end(void); void click(uint8_t b = MOUSE_LEFT); @@ -387,7 +385,7 @@ class HIDAbsMouse : public HIDReporter { void buttons(uint8_t b); AbsMouseReport_t report; public: - HIDAbsMouse(uint8_t reportID=HID_MOUSE_REPORT_ID) : HIDReporter((uint8_t*)&report, sizeof(report), reportID) { + HIDAbsMouse(USBHID& HID, uint8_t reportID=HID_MOUSE_REPORT_ID) : HIDReporter(HID, (uint8_t*)&report, sizeof(report), reportID) { report.buttons = 0; report.x = 0; report.y = 0; @@ -420,7 +418,7 @@ class HIDConsumer : public HIDReporter { PLAY_OR_PAUSE = 0xCD // see pages 75ff of http://www.usb.org/developers/hidpage/Hut1_12v2.pdf }; - HIDConsumer(uint8_t reportID=HID_CONSUMER_REPORT_ID) : HIDReporter((uint8_t*)&report, sizeof(report), reportID) { + HIDConsumer(USBHID& HID, uint8_t reportID=HID_CONSUMER_REPORT_ID) : HIDReporter(HID, (uint8_t*)&report, sizeof(report), reportID) { report.button = 0; } void begin(void); @@ -485,8 +483,8 @@ class HIDKeyboard : public Print, public HIDReporter { bool adjustForHostCapsLock = true; public: - HIDKeyboard(uint8_t _reportID=HID_KEYBOARD_REPORT_ID) : - HIDReporter((uint8*)&keyReport, sizeof(KeyReport_t), _reportID), + HIDKeyboard(USBHID& HID, uint8_t _reportID=HID_KEYBOARD_REPORT_ID) : + HIDReporter(HID, (uint8*)&keyReport, sizeof(KeyReport_t), _reportID), ledData(leds, HID_BUFFER_SIZE(1,_reportID), _reportID, HID_BUFFER_MODE_NO_WAIT), reportID(_reportID) {} @@ -548,7 +546,8 @@ class HIDJoystick : public HIDReporter { void sliderRight(uint16_t val); void slider(uint16_t val); void hat(int16_t dir); - HIDJoystick(uint8_t reportID=HID_JOYSTICK_REPORT_ID) : HIDReporter((uint8_t*)&joyReport, sizeof(joyReport), reportID) { + HIDJoystick(USBHID& HID, uint8_t reportID=HID_JOYSTICK_REPORT_ID) + : HIDReporter(HID, (uint8_t*)&joyReport, sizeof(joyReport), reportID) { joyReport.buttons = 0; joyReport.hat = 15; joyReport.x = 512; @@ -560,20 +559,18 @@ class HIDJoystick : public HIDReporter { } }; -extern USBHIDDevice USBHID; - templateclass HIDRaw : public HIDReporter { private: uint8_t txBuffer[txSize]; uint8_t rxBuffer[HID_BUFFER_ALLOCATE_SIZE(rxSize,0)]; HIDBuffer_t buf; public: - HIDRaw() : HIDReporter(txBuffer, sizeof(txBuffer)) {} + HIDRaw(USBHID& HID) : HIDReporter(HID, txBuffer, sizeof(txBuffer)) {} void begin(void) { buf.buffer = rxBuffer; buf.bufferSize = HID_BUFFER_SIZE(rxSize,0); buf.reportID = 0; - USBHID.addOutputBuffer(&buf); + HID.addOutputBuffer(&buf); } void end(void); void send(const uint8_t* data, unsigned n=sizeof(txBuffer)) { @@ -583,11 +580,6 @@ templateclass HIDRaw : public HIDReporter { } }; -extern HIDMouse Mouse; -extern HIDKeyboard Keyboard; -extern HIDJoystick Joystick; -extern HIDKeyboard BootKeyboard; - extern const HIDReportDescriptor* hidReportMouse; extern const HIDReportDescriptor* hidReportKeyboard; extern const HIDReportDescriptor* hidReportJoystick; diff --git a/STM32F1/libraries/USBComposite/USBMIDI.cpp b/STM32F1/libraries/USBComposite/USBMIDI.cpp index ba0e8951c..e7feb49ae 100644 --- a/STM32F1/libraries/USBComposite/USBMIDI.cpp +++ b/STM32F1/libraries/USBComposite/USBMIDI.cpp @@ -38,7 +38,7 @@ * @brief USB MIDI device with a class compatible with maplemidi */ -#include "USBMIDI.h" +#include "USBComposite.h" #include #include @@ -50,25 +50,27 @@ /* - * USBMidi interface + * USBMIDI interface */ #define USB_TIMEOUT 50 -void USBMidi::setChannel(unsigned int channel) { +void USBMIDI::setChannel(unsigned int channel) { channelIn_ = channel; } -/*bool USBMidi::init(USBMidi* me) { +bool USBMIDI::init(USBMIDI* me) { + usb_midi_setTXEPSize(me->txPacketSize); + usb_midi_setRXEPSize(me->rxPacketSize); return true; -}*/ +} -bool USBMidi::registerComponent() { - return USBComposite.add(&usbMIDIPart, this); +bool USBMIDI::registerComponent() { + return USBComposite.add(&usbMIDIPart, this, (USBPartInitializer)&USBMIDI::init); } -void USBMidi::begin(unsigned channel) { +void USBMIDI::begin(unsigned channel) { setChannel(channel); if (enabled) @@ -81,18 +83,18 @@ void USBMidi::begin(unsigned channel) { enabled = true; } -void USBMidi::end(void) { +void USBMIDI::end(void) { if (enabled) { USBComposite.end(); enabled = false; } } -void USBMidi::writePacket(uint32 p) { +void USBMIDI::writePacket(uint32 p) { this->writePackets(&p, 1); } -void USBMidi::writePackets(const void *buf, uint32 len) { +void USBMIDI::writePackets(const void *buf, uint32 len) { if (!this->isConnected() || !buf) { return; } @@ -113,7 +115,7 @@ void USBMidi::writePackets(const void *buf, uint32 len) { } - if (sent == USB_MIDI_TX_EPSIZE) { + if (sent == usb_midi_txEPSize) { while (usb_midi_is_transmitting() != 0) { } /* flush out to avoid having the pc wait for more data */ @@ -121,11 +123,11 @@ void USBMidi::writePackets(const void *buf, uint32 len) { } } -uint32 USBMidi::available(void) { +uint32 USBMIDI::available(void) { return usb_midi_data_available(); } -uint32 USBMidi::readPackets(void *buf, uint32 len) { +uint32 USBMIDI::readPackets(void *buf, uint32 len) { if (!buf) { return 0; } @@ -139,22 +141,21 @@ uint32 USBMidi::readPackets(void *buf, uint32 len) { } /* Blocks forever until 1 byte is received */ -uint32 USBMidi::readPacket(void) { +uint32 USBMIDI::readPacket(void) { uint32 p; this->readPackets(&p, 1); return p; } -uint8 USBMidi::pending(void) { +uint8 USBMIDI::pending(void) { return usb_midi_get_pending(); } -uint8 USBMidi::isConnected(void) { +uint8 USBMIDI::isConnected(void) { return usb_is_connected(USBLIB) && usb_is_configured(USBLIB); } -USBMidi USBMIDI; // These are midi status message types are defined in MidiSpec.h @@ -171,7 +172,7 @@ union EVENT_t { // This is a private function & not meant to be called from outside this class. // It's used whenever data is available from the USB port. // -void USBMidi::dispatchPacket(uint32 p) +void USBMIDI::dispatchPacket(uint32 p) { union EVENT_t e; @@ -251,7 +252,7 @@ void USBMidi::dispatchPacket(uint32 p) // Try to read data from USB port & pass anything read to processing function -void USBMidi::poll(void) +void USBMIDI::poll(void) { while(available()) { dispatchPacket(readPacket()); } @@ -260,7 +261,7 @@ void USBMidi::poll(void) static union EVENT_t outPacket; // since we only use one at a time no point in reallocating it // Send Midi NOTE OFF message to a given channel, with note 0-127 and velocity 0-127 -void USBMidi::sendNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) +void USBMIDI::sendNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_NOTE_OFF; @@ -273,7 +274,7 @@ void USBMidi::sendNoteOff(unsigned int channel, unsigned int note, unsigned int // Send Midi NOTE ON message to a given channel, with note 0-127 and velocity 0-127 -void USBMidi::sendNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) +void USBMIDI::sendNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_NOTE_ON; @@ -288,7 +289,7 @@ void USBMidi::sendNoteOn(unsigned int channel, unsigned int note, unsigned int v // and new velocity 0-127 // Note velocity change == polyphonic aftertouch. // Note aftertouch == channel pressure. -void USBMidi::sendVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity) +void USBMIDI::sendVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_AFTER_TOUCH; @@ -302,7 +303,7 @@ void USBMidi::sendVelocityChange(unsigned int channel, unsigned int note, unsign // Send a Midi CC message to a given channel, as a given controller 0-127, with given // value 0-127 -void USBMidi::sendControlChange(unsigned int channel, unsigned int controller, unsigned int value) +void USBMIDI::sendControlChange(unsigned int channel, unsigned int controller, unsigned int value) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_CONTROL_CHANGE; @@ -314,7 +315,7 @@ void USBMidi::sendControlChange(unsigned int channel, unsigned int controller, u } // Send a Midi PROGRAM CHANGE message to given channel, with program ID 0-127 -void USBMidi::sendProgramChange(unsigned int channel, unsigned int program) +void USBMIDI::sendProgramChange(unsigned int channel, unsigned int program) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_PROGRAM_CHANGE; @@ -325,7 +326,7 @@ void USBMidi::sendProgramChange(unsigned int channel, unsigned int program) } // Send a Midi AFTER TOUCH message to given channel, with velocity 0-127 -void USBMidi::sendAfterTouch(unsigned int channel, unsigned int velocity) +void USBMIDI::sendAfterTouch(unsigned int channel, unsigned int velocity) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_CHANNEL_PRESSURE; @@ -336,7 +337,7 @@ void USBMidi::sendAfterTouch(unsigned int channel, unsigned int velocity) } // Send a Midi PITCH CHANGE message, with a 14-bit pitch (always for all channels) -void USBMidi::sendPitchChange(unsigned int pitch) +void USBMIDI::sendPitchChange(unsigned int pitch) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_PITCH_WHEEL; @@ -348,7 +349,7 @@ void USBMidi::sendPitchChange(unsigned int pitch) } // Send a Midi SONG POSITION message, with a 14-bit position (always for all channels) -void USBMidi::sendSongPosition(unsigned int position) +void USBMIDI::sendSongPosition(unsigned int position) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_3BYTE_SYS_COMMON; @@ -360,7 +361,7 @@ void USBMidi::sendSongPosition(unsigned int position) } // Send a Midi SONG SELECT message, with a song ID of 0-127 (always for all channels) -void USBMidi::sendSongSelect(unsigned int song) +void USBMIDI::sendSongSelect(unsigned int song) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_2BYTE_SYS_COMMON; @@ -371,7 +372,7 @@ void USBMidi::sendSongSelect(unsigned int song) } // Send a Midi TUNE REQUEST message (TUNE REQUEST is always for all channels) -void USBMidi::sendTuneRequest(void) +void USBMIDI::sendTuneRequest(void) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_1BYTE; @@ -381,7 +382,7 @@ void USBMidi::sendTuneRequest(void) // Send a Midi SYNC message (SYNC is always for all channels) -void USBMidi::sendSync(void) +void USBMIDI::sendSync(void) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_1BYTE; @@ -390,7 +391,7 @@ void USBMidi::sendSync(void) } // Send a Midi START message (START is always for all channels) -void USBMidi::sendStart(void) +void USBMIDI::sendStart(void) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_1BYTE; @@ -400,7 +401,7 @@ void USBMidi::sendStart(void) // Send a Midi CONTINUE message (CONTINUE is always for all channels) -void USBMidi::sendContinue(void) +void USBMIDI::sendContinue(void) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_1BYTE; @@ -410,7 +411,7 @@ void USBMidi::sendContinue(void) // Send a Midi STOP message (STOP is always for all channels) -void USBMidi::sendStop(void) +void USBMIDI::sendStop(void) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_1BYTE; @@ -419,7 +420,7 @@ void USBMidi::sendStop(void) } // Send a Midi ACTIVE SENSE message (ACTIVE SENSE is always for all channels) -void USBMidi::sendActiveSense(void) +void USBMIDI::sendActiveSense(void) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_1BYTE; @@ -428,7 +429,7 @@ void USBMidi::sendActiveSense(void) } // Send a Midi RESET message (RESET is always for all channels) -void USBMidi::sendReset(void) +void USBMIDI::sendReset(void) { outPacket.p.cable=DEFAULT_MIDI_CABLE; outPacket.p.cin=CIN_1BYTE; @@ -450,20 +451,20 @@ const uint32 midiNoteFrequency_10ths[128] = { #pragma GCC diagnostic ignored "-Wunused-parameter" // Placeholders. You should subclass the Midi base class and define these to have your // version called. -void USBMidi::handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) {} -void USBMidi::handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) {} -void USBMidi::handleVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity) {} -void USBMidi::handleControlChange(unsigned int channel, unsigned int controller, unsigned int value) {} -void USBMidi::handleProgramChange(unsigned int channel, unsigned int program) {} -void USBMidi::handleAfterTouch(unsigned int channel, unsigned int velocity) {} -void USBMidi::handlePitchChange(unsigned int pitch) {} -void USBMidi::handleSongPosition(unsigned int position) {} -void USBMidi::handleSongSelect(unsigned int song) {} -void USBMidi::handleTuneRequest(void) {} -void USBMidi::handleSync(void) {} -void USBMidi::handleStart(void) {} -void USBMidi::handleContinue(void) {} -void USBMidi::handleStop(void) {} -void USBMidi::handleActiveSense(void) {} -void USBMidi::handleReset(void) {} +void USBMIDI::handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) {} +void USBMIDI::handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) {} +void USBMIDI::handleVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity) {} +void USBMIDI::handleControlChange(unsigned int channel, unsigned int controller, unsigned int value) {} +void USBMIDI::handleProgramChange(unsigned int channel, unsigned int program) {} +void USBMIDI::handleAfterTouch(unsigned int channel, unsigned int velocity) {} +void USBMIDI::handlePitchChange(unsigned int pitch) {} +void USBMIDI::handleSongPosition(unsigned int position) {} +void USBMIDI::handleSongSelect(unsigned int song) {} +void USBMIDI::handleTuneRequest(void) {} +void USBMIDI::handleSync(void) {} +void USBMIDI::handleStart(void) {} +void USBMIDI::handleContinue(void) {} +void USBMIDI::handleStop(void) {} +void USBMIDI::handleActiveSense(void) {} +void USBMIDI::handleReset(void) {} #pragma GCC diagnostic pop diff --git a/STM32F1/libraries/USBComposite/USBMIDI.h b/STM32F1/libraries/USBComposite/USBMIDI.h index e77004771..16ede42df 100644 --- a/STM32F1/libraries/USBComposite/USBMIDI.h +++ b/STM32F1/libraries/USBComposite/USBMIDI.h @@ -95,7 +95,7 @@ * This causes the Midi class to read data from the USB port and process it. */ -class USBMidi { +class USBMIDI { private: bool enabled = false; @@ -109,8 +109,11 @@ class USBMidi { // Called whenever data is read from the USB port void dispatchPacket(uint32 packet); + uint32 txPacketSize = 64; + uint32 rxPacketSize = 64; + public: - //static bool init(USBMidi* me); + static bool init(USBMIDI* me); // This registers this USB composite device component with the USBComposite class instance. bool registerComponent(); void setChannel(unsigned channel=0); @@ -118,6 +121,14 @@ class USBMidi { return channelIn_; } + void setRXPacketSize(uint32 size=64) { + rxPacketSize = size; + } + + void setTXPacketSize(uint32 size=64) { + txPacketSize = size; + } + // Call to start the USB port, at given baud. For many applications // the default parameters are just fine (which will cause messages for all // MIDI channels to be delivered) @@ -177,10 +188,9 @@ class USBMidi { virtual void handleStop(void); virtual void handleActiveSense(void); virtual void handleReset(void); + }; -extern USBMidi USBMIDI; - extern const uint32 midiNoteFrequency_10ths[128]; #endif \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/USBMassStorage.cpp b/STM32F1/libraries/USBComposite/USBMassStorage.cpp index 9c96359bb..a7fa07909 100644 --- a/STM32F1/libraries/USBComposite/USBMassStorage.cpp +++ b/STM32F1/libraries/USBComposite/USBMassStorage.cpp @@ -1,10 +1,10 @@ -#include "USBMassStorage.h" +#include "USBComposite.h" #include "usb_mass.h" #include "usb_mass_mal.h" #include "usb_composite_serial.h" #include -void USBMassStorageDevice::begin() { +void USBMassStorage::begin() { if(!enabled) { USBComposite.clear(); registerComponent(); @@ -14,23 +14,23 @@ void USBMassStorageDevice::begin() { } } -void USBMassStorageDevice::end() { +void USBMassStorage::end() { USBComposite.end(); } -void USBMassStorageDevice::loop() { +void USBMassStorage::loop() { usb_mass_loop(); } -bool USBMassStorageDevice::registerComponent() { +bool USBMassStorage::registerComponent() { return USBComposite.add(&usbMassPart, this); } -void USBMassStorageDevice::setDrive(uint32 driveNumber, uint32 byteSize, MassStorageReader reader, +void USBMassStorage::setDriveData(uint32 driveNumber, uint32 numSectors, MassStorageReader reader, MassStorageWriter writer, MassStorageStatuser statuser, MassStorageInitializer initializer) { if (driveNumber >= USB_MASS_MAX_DRIVES) return; - usb_mass_drives[driveNumber].blockCount = byteSize/512; + usb_mass_drives[driveNumber].blockCount = numSectors; usb_mass_drives[driveNumber].read = reader; usb_mass_drives[driveNumber].write = writer; usb_mass_drives[driveNumber].status = statuser; @@ -38,8 +38,7 @@ void USBMassStorageDevice::setDrive(uint32 driveNumber, uint32 byteSize, MassSto usb_mass_drives[driveNumber].format = initializer; } -void USBMassStorageDevice::clearDrives() { +void USBMassStorage::clearDrives() { memset(usb_mass_drives, 0, sizeof(usb_mass_drives)); } -USBMassStorageDevice MassStorage; diff --git a/STM32F1/libraries/USBComposite/USBMassStorage.h b/STM32F1/libraries/USBComposite/USBMassStorage.h index 02663ab92..3fb1817db 100644 --- a/STM32F1/libraries/USBComposite/USBMassStorage.h +++ b/STM32F1/libraries/USBComposite/USBMassStorage.h @@ -6,7 +6,7 @@ #include "usb_generic.h" #include "usb_mass_mal.h" -class USBMassStorageDevice { +class USBMassStorage { private: bool enabled = false; public: @@ -15,11 +15,9 @@ class USBMassStorageDevice { void loop(); void clearDrives(void); bool registerComponent(); - void setDrive(uint32 driveNumber, uint32 byteSize, MassStorageReader reader, + void setDriveData(uint32 driveNumber, uint32 numSectors, MassStorageReader reader, MassStorageWriter writer = NULL, MassStorageStatuser = NULL, MassStorageInitializer = NULL); }; -extern USBMassStorageDevice MassStorage; - #endif /* USBMASSSTORAGE_H */ diff --git a/STM32F1/libraries/USBComposite/USBXBox360.cpp b/STM32F1/libraries/USBComposite/USBXBox360.cpp index 83237c0a2..ee921afa5 100644 --- a/STM32F1/libraries/USBComposite/USBXBox360.cpp +++ b/STM32F1/libraries/USBComposite/USBXBox360.cpp @@ -18,20 +18,27 @@ * @brief USB HID Keyboard device */ +#include #include #include #include #include -#include "USBXBox360.h" +#include "USBComposite.h" #include "usb_x360.h" +bool USBXBox360::wait() { + uint32_t t=millis(); + while (x360_is_transmitting() != 0 && (millis()-t)<500) ; + return ! x360_is_transmitting(); +} + void USBXBox360::sendReport(void){ x360_tx(xbox360_Report, sizeof(xbox360_Report)); - - while (x360_is_transmitting() != 0) { - } + + if(wait()) { /* flush out to avoid having the pc wait for more data */ - x360_tx(NULL, 0); + x360_tx(NULL, 0); + } } void USBXBox360::setRumbleCallback(void (*callback)(uint8 left, uint8 right)) { @@ -45,12 +52,13 @@ void USBXBox360::setLEDCallback(void (*callback)(uint8 pattern)) { bool USBXBox360::init(void* ignore) { (void)ignore; - usb_generic_set_info(0x045e, 0x028e, NULL, NULL, NULL); + USBComposite.setVendorId(0x045e); + USBComposite.setProductId(0x028e); return true; } bool USBXBox360::registerComponent() { - return USBComposite.add(&usbX360Part, this, init); + return USBComposite.add(&usbX360Part, this, (USBPartInitializer)&USBXBox360::init); } void USBXBox360::begin(void){ @@ -85,16 +93,14 @@ bool USBXBox360::getManualReportMode() { void USBXBox360::safeSendReport() { if (!manualReport) { - while (x360_is_transmitting() != 0) { - } - sendReport(); + if (wait()) + sendReport(); } } void USBXBox360::send() { - while (x360_is_transmitting() != 0) { - } - sendReport(); + if (wait()) + sendReport(); } void USBXBox360::button(uint8_t button, bool val){ @@ -169,5 +175,3 @@ void USBXBox360::sliderRight(uint8_t val){ safeSendReport(); } - -USBXBox360 XBox360; diff --git a/STM32F1/libraries/USBComposite/USBXBox360.h b/STM32F1/libraries/USBComposite/USBXBox360.h index e48e7a7f9..c913ca0c8 100644 --- a/STM32F1/libraries/USBComposite/USBXBox360.h +++ b/STM32F1/libraries/USBComposite/USBXBox360.h @@ -29,6 +29,7 @@ class USBXBox360 { bool enabled; void safeSendReport(void); void sendReport(void); + bool wait(void); public: void send(void); static bool init(void* ignore); @@ -52,7 +53,5 @@ class USBXBox360 { void setRumbleCallback(void (*callback)(uint8 left, uint8 right)); }; -extern USBXBox360 XBox360; - #endif diff --git a/STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino b/STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino index 72b42f5f5..b8e0f876a 100644 --- a/STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino +++ b/STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino @@ -1,8 +1,11 @@ -#include +#include + +USBHID HID; +HIDKeyboard BootKeyboard(HID, 0); void setup() { - USBHID_begin_with_serial(HID_BOOT_KEYBOARD); + HID.begin(HID_BOOT_KEYBOARD); BootKeyboard.begin(); // needed just in case you need LED support } @@ -12,4 +15,4 @@ void loop() delay(100); BootKeyboard.release(KEY_F12); delay(1000); -} +} diff --git a/STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino b/STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino index 29368eaca..7dcfbcb60 100644 --- a/STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino +++ b/STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino @@ -1,25 +1,26 @@ -#include - -const uint8_t reportDescription[] = { - HID_ABS_MOUSE_REPORT_DESCRIPTOR(HID_MOUSE_REPORT_ID) -}; - -HIDAbsMouse mouse; - -void setup(){ - USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); - delay(1000); - mouse.move(0,0); - delay(1000); - mouse.press(MOUSE_LEFT); - mouse.move(500,500); - mouse.release(MOUSE_ALL); - mouse.click(MOUSE_RIGHT); -} - -void loop(){ - mouse.move(0,0); - delay(1000); - mouse.move(16384,16384); - delay(1000); -} +#include + +const uint8_t reportDescription[] = { + HID_ABS_MOUSE_REPORT_DESCRIPTOR(HID_MOUSE_REPORT_ID) +}; + +USBHID HID; +HIDAbsMouse mouse(HID); + +void setup(){ + HID.begin(reportDescription, sizeof(reportDescription)); + delay(1000); + mouse.move(0,0); + delay(1000); + mouse.press(MOUSE_LEFT); + mouse.move(500,500); + mouse.release(MOUSE_ALL); + mouse.click(MOUSE_RIGHT); +} + +void loop(){ + mouse.move(0,0); + delay(1000); + mouse.move(16384,16384); + delay(1000); +} diff --git a/STM32F1/libraries/USBComposite/examples/consumer/consumer.ino b/STM32F1/libraries/USBComposite/examples/consumer/consumer.ino index 9cf9c9f03..cd49e7719 100644 --- a/STM32F1/libraries/USBComposite/examples/consumer/consumer.ino +++ b/STM32F1/libraries/USBComposite/examples/consumer/consumer.ino @@ -1,13 +1,15 @@ #include +USBHID HID; + const uint8_t reportDescription[] = { HID_CONSUMER_REPORT_DESCRIPTOR() }; -HIDConsumer Consumer; +HIDConsumer Consumer(HID); void setup(){ - USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + HID.begin(reportDescription, sizeof(reportDescription)); } void loop() { diff --git a/STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino b/STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino index 633db0cf2..13d53020b 100755 --- a/STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino +++ b/STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino @@ -1,11 +1,14 @@ -#include +#include #define LED PB12 +USBHID HID; +HIDMouse Mouse(HID); + void setup(){ pinMode(LED,OUTPUT); digitalWrite(LED,1); - USBHID_begin_with_serial(HID_MOUSE); + HID.begin(HID_MOUSE); delay(1000); } @@ -20,4 +23,4 @@ void loop(){ delay(500); digitalWrite(LED,1); delay(30000); -} +} diff --git a/STM32F1/libraries/USBComposite/examples/keyboardMouse/keyboardMouse.ino b/STM32F1/libraries/USBComposite/examples/keyboardMouse/keyboardMouse.ino new file mode 100644 index 000000000..5236a8091 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/keyboardMouse/keyboardMouse.ino @@ -0,0 +1,41 @@ +#include +/* + * This example types which cardinal direction the mouse will be moved + * and then moves the mouse in that direction. If the mouse doesn't recenter + * at the end, it is probably due to mouse acceleration + */ + +USBHID HID; +HIDKeyboard Keyboard(HID); +HIDMouse Mouse(HID); + +void setup() { + HID.begin(HID_KEYBOARD_MOUSE); + delay(2000); +} + +void loop() { + Keyboard.println("UP"); + Mouse.move(0,-127); + delay(1500); + + Keyboard.println("DOWN"); + Mouse.move(0,127); + Mouse.move(0,127); //Movement cannot be greater than a byte + delay(1500); + + Keyboard.println("LEFT"); + Mouse.move(-127,-127); + delay(1500); + + Keyboard.println("RIGHT"); + Mouse.move(127,0); + Mouse.move(127,0); //Movement cannot be greater than a byte + delay(1500); + + Keyboard.println("CENTER"); + Mouse.move(-127,0); + delay(500); + + delay(5000); +} diff --git a/STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino b/STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino index d45a31243..0ac7b7abb 100644 --- a/STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino +++ b/STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino @@ -1,8 +1,11 @@ #include +USBHID HID; +HIDKeyboard Keyboard(HID); +USBCompositeSerial CompositeSerial; void setup() { - USBHID_begin_with_serial(HID_KEYBOARD); + HID.begin(CompositeSerial, HID_KEYBOARD); Keyboard.begin(); // needed for LED support delay(1000); } @@ -11,4 +14,4 @@ void loop() { CompositeSerial.println(Keyboard.getLEDs()); } - + diff --git a/STM32F1/libraries/USBComposite/examples/mass/image.h b/STM32F1/libraries/USBComposite/examples/mass/image.h index f96b94115..f81df9c06 100644 --- a/STM32F1/libraries/USBComposite/examples/mass/image.h +++ b/STM32F1/libraries/USBComposite/examples/mass/image.h @@ -1,67 +1,67 @@ -uint8 image[11776] = { -0xEB,0x3C,0x90,0x6D,0x6B,0x64,0x6F,0x73,0x66,0x73,0x00,0x00,0x02,0x04,0x01,0x00, -0x02,0x10,0x00,0x17,0x00,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xDB,0x32,0x73,0x5A,0x20,0x20,0x20,0x20,0x20, -0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x41,0x54,0x31,0x32,0x20,0x20,0x20,0x0E,0x1F, -0xBE,0x5B,0x7C,0xAC,0x22,0xC0,0x74,0x0B,0x56,0xB4,0x0E,0xBB,0x07,0x00,0xCD,0x10, -0x5E,0xEB,0xF0,0x32,0xE4,0xCD,0x16,0xCD,0x19,0xEB,0xFE,0x54,0x68,0x69,0x73,0x20, -0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x61,0x20,0x62,0x6F,0x6F,0x74,0x61,0x62,0x6C, -0x65,0x20,0x64,0x69,0x73,0x6B,0x2E,0x20,0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20, -0x69,0x6E,0x73,0x65,0x72,0x74,0x20,0x61,0x20,0x62,0x6F,0x6F,0x74,0x61,0x62,0x6C, -0x65,0x20,0x66,0x6C,0x6F,0x70,0x70,0x79,0x20,0x61,0x6E,0x64,0x0D,0x0A,0x70,0x72, -0x65,0x73,0x73,0x20,0x61,0x6E,0x79,0x20,0x6B,0x65,0x79,0x20,0x74,0x6F,0x20,0x74, -0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6E,0x20,0x2E,0x2E,0x2E,0x20,0x0D,0x0A,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0xAA, -0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, -0xF8,0xFF,0xFF, -}; +uint8 image[11776] = { +0xEB,0x3C,0x90,0x6D,0x6B,0x64,0x6F,0x73,0x66,0x73,0x00,0x00,0x02,0x04,0x01,0x00, +0x02,0x10,0x00,0x17,0x00,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xDB,0x32,0x73,0x5A,0x20,0x20,0x20,0x20,0x20, +0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x41,0x54,0x31,0x32,0x20,0x20,0x20,0x0E,0x1F, +0xBE,0x5B,0x7C,0xAC,0x22,0xC0,0x74,0x0B,0x56,0xB4,0x0E,0xBB,0x07,0x00,0xCD,0x10, +0x5E,0xEB,0xF0,0x32,0xE4,0xCD,0x16,0xCD,0x19,0xEB,0xFE,0x54,0x68,0x69,0x73,0x20, +0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x61,0x20,0x62,0x6F,0x6F,0x74,0x61,0x62,0x6C, +0x65,0x20,0x64,0x69,0x73,0x6B,0x2E,0x20,0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20, +0x69,0x6E,0x73,0x65,0x72,0x74,0x20,0x61,0x20,0x62,0x6F,0x6F,0x74,0x61,0x62,0x6C, +0x65,0x20,0x66,0x6C,0x6F,0x70,0x70,0x79,0x20,0x61,0x6E,0x64,0x0D,0x0A,0x70,0x72, +0x65,0x73,0x73,0x20,0x61,0x6E,0x79,0x20,0x6B,0x65,0x79,0x20,0x74,0x6F,0x20,0x74, +0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6E,0x20,0x2E,0x2E,0x2E,0x20,0x0D,0x0A,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0xAA, +0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xF8,0xFF,0xFF, +}; diff --git a/STM32F1/libraries/USBComposite/examples/mass/mass.ino b/STM32F1/libraries/USBComposite/examples/mass/mass.ino index e64e40d8c..47c141912 100644 --- a/STM32F1/libraries/USBComposite/examples/mass/mass.ino +++ b/STM32F1/libraries/USBComposite/examples/mass/mass.ino @@ -1,68 +1,71 @@ -#include - -#define PRODUCT_ID 0x29 - -#include "image.h" - -bool write(uint32_t memoryOffset, const uint8_t *writebuff, uint16_t transferLength) { - memcpy(image+memoryOffset, writebuff, transferLength); - - return true; -} - -bool read(uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength) { - memcpy(readbuff, image+memoryOffset, transferLength); - - return true; -} - -char hexNibble(uint8 x) { - return x < 10 ? x + '0' : x + 'A' - 10; -} - -char* format16(uint16 c) { - static char str[6]; - str[5] = 0; - char *p = str+5; - do { - *--p = (c % 10) + '0'; - c /= 10; - } while(c); - return p; -} - -void dumpDrive() { - char hex[7] = "0x11,"; - CompositeSerial.print("uint8 image["); - CompositeSerial.print(format16(sizeof(image))); - CompositeSerial.println("] = {"); - int last; - for (last=sizeof(image)-1;last>=0 && image[last] == 0;last--); - if (last<0) last=0; - - for (int i=0; i<=last; i++) { - if (i && i % 16 == 0) - CompositeSerial.println(""); - hex[2] = hexNibble(image[i]>>4); - hex[3] = hexNibble(image[i]&0xF); - CompositeSerial.print(hex); - } - CompositeSerial.println("\n};\n"); -} - -void setup() { - USBComposite.setProductId(PRODUCT_ID); - MassStorage.setDrive(0, sizeof(image), read, write); - MassStorage.registerComponent(); - CompositeSerial.registerComponent(); - USBComposite.begin(); - delay(2000); -} - -void loop() { - MassStorage.loop(); - if (CompositeSerial.available() && 'd' == CompositeSerial.read()) { - dumpDrive(); - } -} +#include + +USBMassStorage MassStorage; +USBCompositeSerial CompositeSerial; + +#define PRODUCT_ID 0x29 + +#include "image.h" + +bool write(const uint8_t *writebuff, uint32_t memoryOffset, uint16_t transferLength) { + memcpy(image+SCSI_BLOCK_SIZE*memoryOffset, writebuff, SCSI_BLOCK_SIZE*transferLength); + + return true; +} + +bool read(uint8_t *readbuff, uint32_t memoryOffset, uint16_t transferLength) { + memcpy(readbuff, image+SCSI_BLOCK_SIZE*memoryOffset, SCSI_BLOCK_SIZE*transferLength); + + return true; +} + +char hexNibble(uint8 x) { + return x < 10 ? x + '0' : x + 'A' - 10; +} + +char* format16(uint16 c) { + static char str[6]; + str[5] = 0; + char *p = str+5; + do { + *--p = (c % 10) + '0'; + c /= 10; + } while(c); + return p; +} + +void dumpDrive() { + char hex[7] = "0x11,"; + CompositeSerial.print("uint8 image["); + CompositeSerial.print(format16(sizeof(image))); + CompositeSerial.println("] = {"); + int last; + for (last=sizeof(image)-1;last>=0 && image[last] == 0;last--); + if (last<0) last=0; + + for (int i=0; i<=last; i++) { + if (i && i % 16 == 0) + CompositeSerial.println(""); + hex[2] = hexNibble(image[i]>>4); + hex[3] = hexNibble(image[i]&0xF); + CompositeSerial.print(hex); + } + CompositeSerial.println("\n};\n"); +} + +void setup() { + USBComposite.setProductId(PRODUCT_ID); + MassStorage.setDriveData(0, sizeof(image)/SCSI_BLOCK_SIZE, read, write); + MassStorage.registerComponent(); + CompositeSerial.registerComponent(); + USBComposite.begin(); + delay(2000); +} + +void loop() { + MassStorage.loop(); + if (CompositeSerial.available() && 'd' == CompositeSerial.read()) { + dumpDrive(); + } +} diff --git a/STM32F1/libraries/USBComposite/examples/midiin/midiin.ino b/STM32F1/libraries/USBComposite/examples/midiin/midiin.ino index 20da70a78..61bb572ac 100644 --- a/STM32F1/libraries/USBComposite/examples/midiin/midiin.ino +++ b/STM32F1/libraries/USBComposite/examples/midiin/midiin.ino @@ -1,8 +1,8 @@ -#include +#include #define SPEAKER_PIN PA0 -class myMidi : public USBMidi { +class myMidi : public USBMIDI { virtual void handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) { noTone(SPEAKER_PIN); } @@ -13,8 +13,10 @@ class myMidi : public USBMidi { }; myMidi midi; +USBCompositeSerial CompositeSerial; void setup() { + USBComposite.setProductId(0x0030); pinMode(SPEAKER_PIN, OUTPUT); midi.registerComponent(); CompositeSerial.registerComponent(); @@ -24,4 +26,4 @@ void setup() { void loop() { midi.poll(); } - + diff --git a/STM32F1/libraries/USBComposite/examples/midiout/midiout.ino b/STM32F1/libraries/USBComposite/examples/midiout/midiout.ino index 3fe98b0c8..4e2842110 100644 --- a/STM32F1/libraries/USBComposite/examples/midiout/midiout.ino +++ b/STM32F1/libraries/USBComposite/examples/midiout/midiout.ino @@ -1,17 +1,20 @@ -#include - -const uint8_t notes[] = {60, 62, 64, 65, 67, 69, 71, 72, 61, 63, 66, 68, 70}; -const int numNotes = sizeof(notes)/sizeof(*notes); - -void setup() { - USBMIDI.begin(); - delay(1000); -} - -void loop() { - for (int i=0;i + +const uint8_t notes[] = {60, 62, 64, 65, 67, 69, 71, 72, 61, 63, 66, 68, 70}; +const int numNotes = sizeof(notes)/sizeof(*notes); + +USBMIDI midi; + +void setup() { + USBComposite.setProductId(0x0031); + midi.begin(); + delay(1000); +} + +void loop() { + for (int i=0;i raw; +USBHID HID; +HIDRaw raw(HID); uint8 buf[RXSIZE]; const uint8_t reportDescription[] = { @@ -11,7 +12,7 @@ const uint8_t reportDescription[] = { }; void setup(){ - USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + HID.begin(reportDescription, sizeof(reportDescription)); raw.begin(); } @@ -21,4 +22,4 @@ void loop() { raw.send(buf+RXSIZE-min(RXSIZE,TXSIZE),min(RXSIZE,TXSIZE)); } } - + diff --git a/STM32F1/libraries/USBComposite/examples/rawhid/send.py b/STM32F1/libraries/USBComposite/examples/rawhid/send.py index 19f7b0a4a..13c5a553d 100644 --- a/STM32F1/libraries/USBComposite/examples/rawhid/send.py +++ b/STM32F1/libraries/USBComposite/examples/rawhid/send.py @@ -1,26 +1,26 @@ -from pywinusb import hid -from time import sleep - -SIZE=300 - -def sample_handler(data): - print("Raw data: {0}".format(data)) - -device = hid.HidDeviceFilter(vendor_id = 0x1EAF, product_id = 0x0004).get_devices()[0] -print(device) -device.open() -device.set_raw_data_handler(sample_handler) - -n = 0 -while True: - for out_report in device.find_output_reports(): - buffer=[i for i in range(SIZE+1)] - buffer[0]=0x0 # report id - buffer[-1] = n - out_report.set_raw_data(buffer) - print("sending") - if out_report.send(): - n = (n+1)&0xFF - sleep(0.1) - #sleep(0.005) +from pywinusb import hid +from time import sleep + +SIZE=300 + +def sample_handler(data): + print("Raw data: {0}".format(data)) + +device = hid.HidDeviceFilter(vendor_id = 0x1EAF, product_id = 0x0004).get_devices()[0] +print(device) +device.open() +device.set_raw_data_handler(sample_handler) + +n = 0 +while True: + for out_report in device.find_output_reports(): + buffer=[i for i in range(SIZE+1)] + buffer[0]=0x0 # report id + buffer[-1] = n + out_report.set_raw_data(buffer) + print("sending") + if out_report.send(): + n = (n+1)&0xFF + sleep(0.1) + #sleep(0.005) \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino b/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino index 0d5631aec..106d83155 100644 --- a/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino +++ b/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino @@ -5,6 +5,9 @@ #include #include "SdFat.h" +USBMassStorage MassStorage; +USBCompositeSerial CompositeSerial; + #define LED_PIN PB12 #define PRODUCT_ID 0x29 @@ -14,12 +17,12 @@ const uint8_t SD_CHIP_SELECT = SS; bool enabled = false; uint32 cardSize; -bool write(uint32_t memoryOffset, const uint8_t *writebuff, uint16_t transferLength) { - return sd.card()->writeBlocks(memoryOffset/512, writebuff, transferLength/512); +bool write(const uint8_t *writebuff, uint32_t startSector, uint16_t numSectors) { + return sd.card()->writeBlocks(startSector, writebuff, numSectors); } -bool read(uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength) { - return sd.card()->readBlocks(memoryOffset/512, readbuff, transferLength/512); +bool read(uint8_t *readbuff, uint32_t startSector, uint16_t numSectors) { + return sd.card()->readBlocks(startSector, readbuff, numSectors); } void setup() { @@ -31,7 +34,7 @@ void setup() { void initReader() { digitalWrite(LED_PIN,0); cardSize = sd.card()->cardSize(); - MassStorage.setDrive(0, cardSize*512, read, write); + MassStorage.setDriveData(0, cardSize, read, write); MassStorage.registerComponent(); CompositeSerial.registerComponent(); USBComposite.begin(); diff --git a/STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino b/STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino index f0c75dfc6..55942ad4c 100644 --- a/STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino +++ b/STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino @@ -1,7 +1,10 @@ #include +USBHID HID; +HIDJoystick Joystick(HID); + void setup() { - USBHID_begin_with_serial(HID_JOYSTICK); + HID.begin(HID_JOYSTICK); } void loop() { @@ -10,4 +13,4 @@ void loop() { Joystick.X(1023); delay(500); } - + diff --git a/STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino b/STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino index 80c296feb..d3f9cfc73 100644 --- a/STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino +++ b/STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino @@ -1,7 +1,10 @@ #include +USBHID HID; +HIDKeyboard Keyboard(HID); + void setup() { - USBHID_begin_with_serial(HID_KEYBOARD); + HID.begin(HID_KEYBOARD); Keyboard.begin(); // useful to detect host capslock state and LEDs delay(1000); } @@ -10,4 +13,4 @@ void loop() { Keyboard.println("Hello world"); delay(10000); } - + diff --git a/STM32F1/libraries/USBComposite/examples/softjoystick/send.py b/STM32F1/libraries/USBComposite/examples/softjoystick/send.py index 5025db912..bf0eb32b8 100644 --- a/STM32F1/libraries/USBComposite/examples/softjoystick/send.py +++ b/STM32F1/libraries/USBComposite/examples/softjoystick/send.py @@ -1,60 +1,60 @@ -from pywinusb import hid -from time import sleep - -REPORT_ID = 20 -HID_REPORT_FEATURE = 3 - -device = hid.HidDeviceFilter(vendor_id = 0x1EAF).get_devices()[0] # , product_id = 0x0024 -print(device) -device.open() - -""" - uint8_t reportID; - uint32_t buttons; - unsigned hat:4; - unsigned x:10; - unsigned y:10; - unsigned rx:10; - unsigned ry:10; - unsigned sliderLeft:10; - unsigned sliderRight:10; -""" - -def toBits(n,bits): - return tuple((n>>i)&1 for i in range(bits)) - -def getByteFromBits(bits,n): - out = 0 - for i in range(8): - out += bits[8*n+i] << i - return out - -def joystickData(reportID=REPORT_ID, buttons=0, hat=15, x=512, y=512, rx=512, ry=512, sliderLeft=512, sliderRight=512): - joyData = ( toBits(reportID,8) + toBits(buttons,32) + toBits(hat,4) + toBits(x,10) + toBits(y,10) + - toBits(rx,10) + toBits(ry,10) + toBits(sliderLeft,10) + toBits(sliderRight,10) ) - out = [getByteFromBits(joyData,n) for n in range(13)] - print(out) - return out - -myReport = None - -for report in device.find_feature_reports(): - if report.report_id == REPORT_ID and report.report_type == "Feature": - myReport = report - break -if myReport is None: - for report in device.find_output_reports(): - if report.report_id == REPORT_ID and report.report_type == "Output": - myReport = report - break - -assert myReport is not None - -while True: - myReport.set_raw_data(joystickData(buttons=7,x=0,y=0)) - - myReport.send() - sleep(0.5) - myReport.set_raw_data(joystickData(buttons=0,x=1023,y=1023)) - myReport.send() - sleep(0.5) +from pywinusb import hid +from time import sleep + +REPORT_ID = 20 +HID_REPORT_FEATURE = 3 + +device = hid.HidDeviceFilter(vendor_id = 0x1EAF).get_devices()[0] # , product_id = 0x0024 +print(device) +device.open() + +""" + uint8_t reportID; + uint32_t buttons; + unsigned hat:4; + unsigned x:10; + unsigned y:10; + unsigned rx:10; + unsigned ry:10; + unsigned sliderLeft:10; + unsigned sliderRight:10; +""" + +def toBits(n,bits): + return tuple((n>>i)&1 for i in range(bits)) + +def getByteFromBits(bits,n): + out = 0 + for i in range(8): + out += bits[8*n+i] << i + return out + +def joystickData(reportID=REPORT_ID, buttons=0, hat=15, x=512, y=512, rx=512, ry=512, sliderLeft=512, sliderRight=512): + joyData = ( toBits(reportID,8) + toBits(buttons,32) + toBits(hat,4) + toBits(x,10) + toBits(y,10) + + toBits(rx,10) + toBits(ry,10) + toBits(sliderLeft,10) + toBits(sliderRight,10) ) + out = [getByteFromBits(joyData,n) for n in range(13)] + print(out) + return out + +myReport = None + +for report in device.find_feature_reports(): + if report.report_id == REPORT_ID and report.report_type == "Feature": + myReport = report + break +if myReport is None: + for report in device.find_output_reports(): + if report.report_id == REPORT_ID and report.report_type == "Output": + myReport = report + break + +assert myReport is not None + +while True: + myReport.set_raw_data(joystickData(buttons=7,x=0,y=0)) + + myReport.send() + sleep(0.5) + myReport.set_raw_data(joystickData(buttons=0,x=1023,y=1023)) + myReport.send() + sleep(0.5) diff --git a/STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino b/STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino index 0fe9b5509..e4f1905a4 100644 --- a/STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino +++ b/STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino @@ -7,15 +7,18 @@ #define DATA_SIZE (sizeof(JoystickReport_t)-1) +USBHID HID; + class HIDJoystickRawData : public HIDJoystick { private: uint8_t featureData[HID_BUFFER_ALLOCATE_SIZE(DATA_SIZE,1)]; HIDBuffer_t fb { featureData, HID_BUFFER_SIZE(DATA_SIZE,1), HID_JOYSTICK_REPORT_ID }; + USBHID HID; public: - HIDJoystickRawData(uint8_t reportID=HID_JOYSTICK_REPORT_ID) : HIDJoystick(reportID) {} + HIDJoystickRawData(USBHID& _HID, uint8_t reportID=HID_JOYSTICK_REPORT_ID) : HIDJoystick(HID, reportID) {} void begin() { - USBHID.setFeatureBuffers(&fb, 1); + HID.setFeatureBuffers(&fb, 1); } void setRawData(JoystickReport_t* p) { @@ -24,7 +27,7 @@ class HIDJoystickRawData : public HIDJoystick { } }; -HIDJoystickRawData joy; +HIDJoystickRawData joy(HID); JoystickReport_t report = {HID_JOYSTICK_REPORT_ID}; const uint8_t reportDescription[] = { @@ -33,7 +36,7 @@ const uint8_t reportDescription[] = { }; void setup() { - USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + HID.begin(reportDescription, sizeof(reportDescription)); joy.begin(); } @@ -44,4 +47,4 @@ void loop() { delay(5); } - + diff --git a/STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino b/STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino index 7cf929d11..a5abcd893 100644 --- a/STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino +++ b/STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino @@ -7,10 +7,13 @@ const uint8_t reportDescription[] = { HID_JOYSTICK_REPORT_DESCRIPTOR(HID_JOYSTICK_REPORT_ID+1), }; -HIDJoystick Joystick2(HID_JOYSTICK_REPORT_ID+1); +USBCompositeSerial CompositeSerial; +USBHID HID; +HIDJoystick Joystick(HID); +HIDJoystick Joystick2(HID, HID_JOYSTICK_REPORT_ID+1); void setup(){ - USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + HID.begin(CompositeSerial, reportDescription, sizeof(reportDescription)); Joystick.setManualReportMode(true); Joystick2.setManualReportMode(true); } @@ -20,21 +23,25 @@ void loop(){ Joystick.Y(0); Joystick.sliderRight(1023); Joystick.send(); + CompositeSerial.println("J1:0,0,1023"); delay(400); Joystick.X(1023); Joystick.Y(1023); Joystick.sliderRight(0); Joystick.send(); + CompositeSerial.println("J1:1023,1023,0"); delay(400); Joystick2.X(0); Joystick2.Y(0); Joystick2.sliderRight(1023); Joystick2.send(); + CompositeSerial.println("J2:0,0,1023"); delay(400); Joystick2.X(1023); Joystick2.Y(1023); Joystick2.sliderRight(0); Joystick2.send(); + CompositeSerial.println("J2:1023,1023,0"); delay(400); } - + diff --git a/STM32F1/libraries/USBComposite/examples/x360/x360.ino b/STM32F1/libraries/USBComposite/examples/x360/x360.ino index d97a7f392..73fa7685d 100644 --- a/STM32F1/libraries/USBComposite/examples/x360/x360.ino +++ b/STM32F1/libraries/USBComposite/examples/x360/x360.ino @@ -1,5 +1,7 @@ #include +USBXBox360 XBox360; + void setup() { XBox360.begin(); delay(1000); @@ -12,4 +14,4 @@ void loop() { XBox360.X(32767); XBox360.Y(32767); delay(1000); -} +} diff --git a/STM32F1/libraries/USBComposite/keywords.txt b/STM32F1/libraries/USBComposite/keywords.txt index 3092c0031..9a8e57062 100644 --- a/STM32F1/libraries/USBComposite/keywords.txt +++ b/STM32F1/libraries/USBComposite/keywords.txt @@ -1,89 +1,90 @@ ####################################### -# Syntax Coloring Map USBHID +# Syntax Coloring Map USBComposite ####################################### ####################################### # Datatypes (KEYWORD1) ####################################### -HID KEYWORD1 -Joystick KEYWORD1 -Keyboard KEYWORD1 -Mouse KEYWORD1 -CompositeSerial KEYWORD1 -XBox360 KEYWORD1 +USBComposite KEYWORD1 +USBHID KEYWORD1 +USBMIDI KEYWORD1 +USBXBox360 KEYWORD1 +USBMassStorage KEYWORD1 +USBCompositeSerial KEYWORD1 +HIDMouse KEYWORD1 +HIDKeyboard KEYWORD1 ####################################### # Methods and Functions (KEYWORD2) ####################################### -begin KEYWORD2 -end KEYWORD2 -XRight KEYWORD2 -YRight KEYWORD2 -Yrotate KEYWORD2 -Y KEYWORD2 -Xrotate KEYWORD2 -X KEYWORD2 -sliderLeft KEYWORD2 +begin KEYWORD2 +end KEYWORD2 +XRight KEYWORD2 +YRight KEYWORD2 +Yrotate KEYWORD2 +Y KEYWORD2 +Xrotate KEYWORD2 +X KEYWORD2 +sliderLeft KEYWORD2 sliderRight KEYWORD2 -button KEYWORD2 +button KEYWORD2 hat KEYWORD2 setManualReportMode KEYWORD2 getManualReportMode KEYWORD2 -release KEYWORD2 +release KEYWORD2 press KEYWORD2 releaseAll KEYWORD2 move KEYWORD2 send KEYWORD2 click KEYWORD2 - +registerComponent KEYWORD2 ####################################### # Constants (LITERAL1) ####################################### -USB_HID_MOUSE LITERAL1 -USB_HID_KEYBOARD LITERAL1 -USB_HID_JOYSTICK LITERAL1 -USB_HID_KEYBOARD_MOUSE LITERAL1 -USB_HID_KEYBOARD_MOUSE_JOYSTICK LITERAL1 -USB_HID_KEYBOARD_JOYSTICK LITERAL1 -KEY_LEFT_CTRL LITERAL1 -KEY_LEFT_SHIFT LITERAL1 -KEY_LEFT_ALT LITERAL1 -KEY_LEFT_GUI LITERAL1 -KEY_RIGHT_CTRL LITERAL1 -KEY_RIGHT_SHIFT LITERAL1 -KEY_RIGHT_ALT LITERAL1 -KEY_RIGHT_GUI LITERAL1 -KEY_UP_ARROW LITERAL1 -KEY_DOWN_ARROW LITERAL1 -KEY_LEFT_ARROW LITERAL1 -KEY_RIGHT_ARROW LITERAL1 -KEY_BACKSPACE LITERAL1 -KEY_TAB LITERAL1 -KEY_RETURN LITERAL1 -KEY_ESC LITERAL1 -KEY_INSERT LITERAL1 -KEY_DELETE LITERAL1 -KEY_PAGE_UP LITERAL1 -KEY_PAGE_DOWN LITERAL1 -KEY_HOME LITERAL1 -KEY_END LITERAL1 -KEY_CAPS_LOCK LITERAL1 -KEY_F1 LITERAL1 -KEY_F2 LITERAL1 -KEY_F3 LITERAL1 -KEY_F4 LITERAL1 -KEY_F5 LITERAL1 -KEY_F6 LITERAL1 -KEY_F7 LITERAL1 -KEY_F8 LITERAL1 -KEY_F9 LITERAL1 -KEY_F10 LITERAL1 -KEY_F11 LITERAL1 -KEY_F12 LITERAL1 -MOUSE_LEFT LITERAL1 -MOUSE_MIDDLE LITERAL1 -MOUSE_RIGHT LITERAL1 -MOUSE_ALL LITERAL1 -HIDConsumer LITERAL1 +USB_HID_MOUSE LITERAL1 +USB_HID_KEYBOARD LITERAL1 +USB_HID_JOYSTICK LITERAL1 +USB_HID_KEYBOARD_MOUSE LITERAL1 +USB_HID_KEYBOARD_MOUSE_JOYSTICK LITERAL1 +USB_HID_KEYBOARD_JOYSTICK LITERAL1 +KEY_LEFT_CTRL LITERAL1 +KEY_LEFT_SHIFT LITERAL1 +KEY_LEFT_ALT LITERAL1 +KEY_LEFT_GUI LITERAL1 +KEY_RIGHT_CTRL LITERAL1 +KEY_RIGHT_SHIFT LITERAL1 +KEY_RIGHT_ALT LITERAL1 +KEY_RIGHT_GUI LITERAL1 +KEY_UP_ARROW LITERAL1 +KEY_DOWN_ARROW LITERAL1 +KEY_LEFT_ARROW LITERAL1 +KEY_RIGHT_ARROW LITERAL1 +KEY_BACKSPACE LITERAL1 +KEY_TAB LITERAL1 +KEY_RETURN LITERAL1 +KEY_ESC LITERAL1 +KEY_INSERT LITERAL1 +KEY_DELETE LITERAL1 +KEY_PAGE_UP LITERAL1 +KEY_PAGE_DOWN LITERAL1 +KEY_HOME LITERAL1 +KEY_END LITERAL1 +KEY_CAPS_LOCK LITERAL1 +KEY_F1 LITERAL1 +KEY_F2 LITERAL1 +KEY_F3 LITERAL1 +KEY_F4 LITERAL1 +KEY_F5 LITERAL1 +KEY_F6 LITERAL1 +KEY_F7 LITERAL1 +KEY_F8 LITERAL1 +KEY_F9 LITERAL1 +KEY_F10 LITERAL1 +KEY_F11 LITERAL1 +KEY_F12 LITERAL1 +MOUSE_LEFT LITERAL1 +MOUSE_MIDDLE LITERAL1 +MOUSE_RIGHT LITERAL1 +MOUSE_ALL LITERAL1 diff --git a/STM32F1/libraries/USBComposite/library.properties b/STM32F1/libraries/USBComposite/library.properties index 3fd8bcace..e8e9a5415 100644 --- a/STM32F1/libraries/USBComposite/library.properties +++ b/STM32F1/libraries/USBComposite/library.properties @@ -1,5 +1,5 @@ name=USBComposite for STM32F1 -version=0.66 +version=0.91 author=Various email=arpruss@gmail.com sentence=USB HID / MIDI / mass storage library for STM32F1 diff --git a/STM32F1/libraries/USBComposite/scripts/midi_table.py b/STM32F1/libraries/USBComposite/scripts/midi_table.py new file mode 100644 index 000000000..9e6ca180c --- /dev/null +++ b/STM32F1/libraries/USBComposite/scripts/midi_table.py @@ -0,0 +1,11 @@ +from math import * + +def freq(m): + return 27.5 * 2**((m-21)/12.) + +print("static constexpr uint32 midiNoteFrequency_10ths[128] = {", end='') +for i in range(128): + if not i % 16: + print("\n ",end='') + print("%d, " % int(floor(freq(i)*10 + 0.5)), end='') +print("};") \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/scripts/send.py b/STM32F1/libraries/USBComposite/scripts/send.py new file mode 100644 index 000000000..9cdc9934b --- /dev/null +++ b/STM32F1/libraries/USBComposite/scripts/send.py @@ -0,0 +1,29 @@ +from pywinusb import hid +from time import sleep + +SIZE=1 +REPORT_ID=20 + +def sample_handler(data): + print("Raw data: {0}".format(data)) + +device = hid.HidDeviceFilter(vendor_id = 0x1EAF, product_id = 0x0004).get_devices()[0] +print(device) +device.open() +device.set_raw_data_handler(sample_handler) + +n = 0 +while True: + """ + print("sending") + out_report=device.find_output_reports()[0] + buffer=[i for i in range(SIZE+1)] + buffer[0]=REPORT_ID # report id + buffer[-1] = n + out_report.set_raw_data(buffer) + if out_report.send(): + n = (n+1)&0xFF +""" + sleep(0.5) + #sleep(0.005) + \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/scripts/showhids.py b/STM32F1/libraries/USBComposite/scripts/showhids.py new file mode 100644 index 000000000..a9ffe9bb7 --- /dev/null +++ b/STM32F1/libraries/USBComposite/scripts/showhids.py @@ -0,0 +1,3 @@ +from pywinusb import hid + +hid.core.show_hids() diff --git a/STM32F1/libraries/USBComposite/usb_composite_serial.c b/STM32F1/libraries/USBComposite/usb_composite_serial.c index 51fc3ac47..2441d7aba 100644 --- a/STM32F1/libraries/USBComposite/usb_composite_serial.c +++ b/STM32F1/libraries/USBComposite/usb_composite_serial.c @@ -70,6 +70,8 @@ static void vcomDataRxCb(void); * Descriptors */ +static uint32_t txEPSize = 64; +static uint32_t rxEPSize = 64; typedef struct { //CDCACM @@ -165,7 +167,7 @@ static const serial_part_config serialPartConfigData = { .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_OUT | CDCACM_ENDPOINT_RX), // patch .bmAttributes = USB_EP_TYPE_BULK, - .wMaxPacketSize = USBHID_CDCACM_RX_EPSIZE, + .wMaxPacketSize = 64, // patch .bInterval = 0x00, }, @@ -174,17 +176,18 @@ static const serial_part_config serialPartConfigData = { .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | CDCACM_ENDPOINT_TX), // PATCH .bmAttributes = USB_EP_TYPE_BULK, - .wMaxPacketSize = USBHID_CDCACM_TX_EPSIZE, + .wMaxPacketSize = 64, // patch .bInterval = 0x00, } }; #define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] +#define OUT_16(s,v) *(uint16_t*)&OUT_BYTE(s,v) // OK on Cortex which can handle unaligned writes static USBEndpointInfo serialEndpoints[3] = { { .callback = vcomDataTxCb, - .bufferSize = USBHID_CDCACM_TX_EPSIZE, + .bufferSize = 64, // patch .type = USB_EP_EP_TYPE_BULK, .tx = 1, }, @@ -196,7 +199,7 @@ static USBEndpointInfo serialEndpoints[3] = { }, { .callback = vcomDataRxCb, - .bufferSize = USBHID_CDCACM_RX_EPSIZE, + .bufferSize = 64, // patch .type = USB_EP_EP_TYPE_BULK, .tx = 0, }, @@ -216,6 +219,23 @@ static void getSerialPartDescriptor(uint8* out) { OUT_BYTE(serialPartConfigData, CDC_Functional_CallManagement.Data[1]) += usbSerialPart.startInterface; OUT_BYTE(serialPartConfigData, CDC_Functional_Union.Data[0]) += usbSerialPart.startInterface; OUT_BYTE(serialPartConfigData, CDC_Functional_Union.Data[1]) += usbSerialPart.startInterface; + + OUT_16(serialPartConfigData, DataOutEndpoint.wMaxPacketSize) = rxEPSize; + OUT_16(serialPartConfigData, DataInEndpoint.wMaxPacketSize) = txEPSize; +} + +void composite_cdcacm_setTXEPSize(uint32_t size) { + if (size == 0 || size > 64) + size = 64; + serialEndpoints[0].bufferSize = size; + txEPSize = size; +} + +void composite_cdcacm_setRXEPSize(uint32_t size) { + if (size == 0 || size > 64) + size = 64; + serialEndpoints[2].bufferSize = size; + rxEPSize = size; } USBCompositePart usbSerialPart = { @@ -441,9 +461,9 @@ static void vcomDataTxCb(void) return; // it was already flushed, keep Tx endpoint disabled } usbGenericTransmitting = 1; - // We can only send up to USBHID_CDCACM_TX_EPSIZE bytes in the endpoint. - if (tx_unsent > USBHID_CDCACM_TX_EPSIZE) { - tx_unsent = USBHID_CDCACM_TX_EPSIZE; + // We can only send up to txEPSize bytes in the endpoint. + if (tx_unsent > txEPSize) { + tx_unsent = txEPSize; } // copy the bytes from USB Tx buffer to PMA buffer uint32 *dst = usb_pma_ptr(usbSerialPart.endpoints[CDCACM_ENDPOINT_TX].pmaAddress); @@ -495,7 +515,7 @@ static void vcomDataRxCb(void) uint32 rx_unread = (head - vcom_rx_tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; // only enable further Rx if there is enough room to receive one more packet - if ( rx_unread < (CDC_SERIAL_RX_BUFFER_SIZE-USBHID_CDCACM_RX_EPSIZE) ) { + if ( rx_unread < (CDC_SERIAL_RX_BUFFER_SIZE-rxEPSize) ) { usb_set_ep_rx_stat(usbSerialPart.endpoints[CDCACM_ENDPOINT_RX].address, USB_EP_STAT_RX_VALID); } diff --git a/STM32F1/libraries/USBComposite/usb_composite_serial.h b/STM32F1/libraries/USBComposite/usb_composite_serial.h index 926901b6a..1fbcd8640 100644 --- a/STM32F1/libraries/USBComposite/usb_composite_serial.h +++ b/STM32F1/libraries/USBComposite/usb_composite_serial.h @@ -56,8 +56,8 @@ extern USBCompositePart usbSerialPart; #define USBHID_CDCACM_CONTROL_LINE_RTS (0x02) #define USBHID_CDCACM_MANAGEMENT_EPSIZE 0x10 -#define USBHID_CDCACM_RX_EPSIZE 0x40 -#define USBHID_CDCACM_TX_EPSIZE 0x40 +//#define USBHID_CDCACM_RX_EPSIZE 0x40 +//#define USBHID_CDCACM_TX_EPSIZE 0x40 /* * Descriptors, etc. */ @@ -102,6 +102,8 @@ uint32 composite_cdcacm_tx(const uint8* buf, uint32 len); uint32 composite_cdcacm_rx(uint8* buf, uint32 len); uint32 composite_cdcacm_peek(uint8* buf, uint32 len); uint32 composite_cdcacm_peek_ex(uint8* buf, uint32 offset, uint32 len); +void composite_cdcacm_setTXEPSize(uint32_t size); +void composite_cdcacm_setRXEPSize(uint32_t size); uint32 composite_cdcacm_data_available(void); /* in RX buffer */ uint16 composite_cdcacm_get_pending(void); @@ -146,9 +148,7 @@ int composite_cdcacm_get_n_data_bits(void); /* bDataBits */ void composite_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*)); -static inline __always_inline void composite_cdcacm_remove_hooks(unsigned hook_flags) { - composite_cdcacm_set_hooks(hook_flags, 0); -} +#define composite_cdcacm_remove_hooks(hook_flags) composite_cdcacm_remove_hooks(hook_flags, 0) #ifdef __cplusplus } diff --git a/STM32F1/libraries/USBComposite/usb_generic.c b/STM32F1/libraries/USBComposite/usb_generic.c index c9ed0b358..e8bc8ac32 100644 --- a/STM32F1/libraries/USBComposite/usb_generic.c +++ b/STM32F1/libraries/USBComposite/usb_generic.c @@ -72,7 +72,7 @@ static void usbSetConfiguration(void); static void usbSetDeviceAddress(void); #define LEAFLABS_ID_VENDOR 0x1EAF -#define MAPLE_ID_PRODUCT 0x0004 // was 0x0024 +#define MAPLE_ID_PRODUCT 0x0024 // was 0x0024 #define USB_DEVICE_CLASS 0x00 #define USB_DEVICE_SUBCLASS 0x00 #define DEVICE_PROTOCOL 0x01 diff --git a/STM32F1/libraries/USBComposite/usb_generic.h b/STM32F1/libraries/USBComposite/usb_generic.h index d665d8fbe..5d9258b78 100644 --- a/STM32F1/libraries/USBComposite/usb_generic.h +++ b/STM32F1/libraries/USBComposite/usb_generic.h @@ -1,60 +1,60 @@ -#ifndef _USB_GENERIC_H -#define _USB_GENERIC_H -#include -typedef unsigned short u16; -typedef unsigned char u8; -#include -#include - -#define PMA_MEMORY_SIZE 512 -#define MAX_USB_DESCRIPTOR_DATA_SIZE 200 - -#define USB_EP0_BUFFER_SIZE 0x40 -#define USB_EP0_TX_BUFFER_ADDRESS 0x40 -#define USB_EP0_RX_BUFFER_ADDRESS (USB_EP0_TX_BUFFER_ADDRESS+USB_EP0_BUFFER_SIZE) - -#ifdef __cplusplus -extern "C" { -#endif - -extern const usb_descriptor_string usb_generic_default_iManufacturer; -extern const usb_descriptor_string usb_generic_default_iProduct; - -typedef struct USBEndpointInfo { - void (*callback)(void); - uint16 bufferSize; - uint16 type; // bulk, interrupt, etc. - uint8 tx; // 1 if TX, 0 if RX - uint8 address; - uint16 pmaAddress; -} USBEndpointInfo; - -typedef struct USBCompositePart { - uint8 numInterfaces; - uint8 numEndpoints; - uint8 startInterface; - uint8 startEndpoint; - uint16 descriptorSize; - void (*getPartDescriptor)(uint8* out); - void (*usbInit)(void); - void (*usbReset)(void); - void (*usbSetConfiguration)(void); - void (*usbClearFeature)(void); - RESULT (*usbDataSetup)(uint8 request); - RESULT (*usbNoDataSetup)(uint8 request); - USBEndpointInfo* endpoints; -} USBCompositePart; - -void usb_generic_set_info(uint16 idVendor, uint16 idProduct, const uint8* iManufacturer, const uint8* iProduct, const uint8* iSerialNumber); -uint8 usb_generic_set_parts(USBCompositePart** _parts, unsigned _numParts); -void usb_generic_disable(void); -void usb_generic_enable(void); -extern volatile int8 usbGenericTransmitting; -void usb_copy_from_pma(uint8 *buf, uint16 len, uint16 pma_offset); -void usb_copy_to_pma(const uint8 *buf, uint16 len, uint16 pma_offset); - -#ifdef __cplusplus -} -#endif - -#endif +#ifndef _USB_GENERIC_H +#define _USB_GENERIC_H +#include +typedef unsigned short u16; +typedef unsigned char u8; +#include +#include + +#define PMA_MEMORY_SIZE 512 +#define MAX_USB_DESCRIPTOR_DATA_SIZE 200 + +#define USB_EP0_BUFFER_SIZE 0x40 +#define USB_EP0_TX_BUFFER_ADDRESS 0x40 +#define USB_EP0_RX_BUFFER_ADDRESS (USB_EP0_TX_BUFFER_ADDRESS+USB_EP0_BUFFER_SIZE) + +#ifdef __cplusplus +extern "C" { +#endif + +extern const usb_descriptor_string usb_generic_default_iManufacturer; +extern const usb_descriptor_string usb_generic_default_iProduct; + +typedef struct USBEndpointInfo { + void (*callback)(void); + uint16 bufferSize; + uint16 type; // bulk, interrupt, etc. + uint8 tx; // 1 if TX, 0 if RX + uint8 address; + uint16 pmaAddress; +} USBEndpointInfo; + +typedef struct USBCompositePart { + uint8 numInterfaces; + uint8 numEndpoints; + uint8 startInterface; + uint8 startEndpoint; + uint16 descriptorSize; + void (*getPartDescriptor)(uint8* out); + void (*usbInit)(void); + void (*usbReset)(void); + void (*usbSetConfiguration)(void); + void (*usbClearFeature)(void); + RESULT (*usbDataSetup)(uint8 request); + RESULT (*usbNoDataSetup)(uint8 request); + USBEndpointInfo* endpoints; +} USBCompositePart; + +void usb_generic_set_info(uint16 idVendor, uint16 idProduct, const uint8* iManufacturer, const uint8* iProduct, const uint8* iSerialNumber); +uint8 usb_generic_set_parts(USBCompositePart** _parts, unsigned _numParts); +void usb_generic_disable(void); +void usb_generic_enable(void); +extern volatile int8 usbGenericTransmitting; +void usb_copy_from_pma(uint8 *buf, uint16 len, uint16 pma_offset); +void usb_copy_to_pma(const uint8 *buf, uint16 len, uint16 pma_offset); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_hid.c b/STM32F1/libraries/USBComposite/usb_hid.c index 162cd4acb..986b03d64 100644 --- a/STM32F1/libraries/USBComposite/usb_hid.c +++ b/STM32F1/libraries/USBComposite/usb_hid.c @@ -51,6 +51,7 @@ uint16 GetEPTxAddr(uint8 /*bEpNum*/); #include "usb_def.h" static uint32 ProtocolValue = 0; +static uint32 txEPSize = 64; static void hidDataTxCb(void); static void hidUSBReset(void); @@ -116,7 +117,7 @@ static const hid_part_config hidPartConfigData = { .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, .bEndpointAddress = USB_DESCRIPTOR_ENDPOINT_IN | HID_ENDPOINT_TX, // PATCH .bmAttributes = USB_ENDPOINT_TYPE_INTERRUPT, - .wMaxPacketSize = USB_HID_TX_EPSIZE,//0x40,//big enough for a keyboard 9 byte packet and for a mouse 5 byte packet + .wMaxPacketSize = 64, //PATCH .bInterval = 0x0A, } }; @@ -124,13 +125,21 @@ static const hid_part_config hidPartConfigData = { static USBEndpointInfo hidEndpoints[1] = { { .callback = hidDataTxCb, - .bufferSize = USB_HID_TX_EPSIZE, + .bufferSize = 64, .type = USB_EP_EP_TYPE_INTERRUPT, // TODO: interrupt??? .tx = 1, } }; +void usb_hid_setTXEPSize(uint32_t size) { + if (size == 0 || size > 64) + size = 64; + hidEndpoints[0].bufferSize = size; + txEPSize = size; +} + #define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] +#define OUT_16(s,v) *(uint16_t*)&OUT_BYTE(s,v) // OK on Cortex which can handle unaligned writes static void getHIDPartDescriptor(uint8* out) { memcpy(out, &hidPartConfigData, sizeof(hid_part_config)); @@ -139,6 +148,7 @@ static void getHIDPartDescriptor(uint8* out) { OUT_BYTE(hidPartConfigData, HIDDataInEndpoint.bEndpointAddress) += usbHIDPart.startEndpoint; OUT_BYTE(hidPartConfigData, HID_Descriptor.descLenL) = (uint8)HID_Report_Descriptor.Descriptor_Size; OUT_BYTE(hidPartConfigData, HID_Descriptor.descLenH) = (uint8)(HID_Report_Descriptor.Descriptor_Size>>8); + OUT_16(hidPartConfigData, HIDDataInEndpoint.wMaxPacketSize) = txEPSize; } USBCompositePart usbHIDPart = { @@ -367,8 +377,8 @@ static void hidDataTxCb(void) } usbGenericTransmitting = 1; // We can only send up to USBHID_CDCACM_TX_EPSIZE bytes in the endpoint. - if (tx_unsent > USB_HID_TX_EPSIZE) { - tx_unsent = USB_HID_TX_EPSIZE; + if (tx_unsent > txEPSize) { + tx_unsent = txEPSize; } // copy the bytes from USB Tx buffer to PMA buffer uint32 *dst = usb_pma_ptr(usbHIDPart.endpoints[HID_ENDPOINT_TX].pmaAddress); diff --git a/STM32F1/libraries/USBComposite/usb_hid.h b/STM32F1/libraries/USBComposite/usb_hid.h index 856fd3edc..457206584 100644 --- a/STM32F1/libraries/USBComposite/usb_hid.h +++ b/STM32F1/libraries/USBComposite/usb_hid.h @@ -72,16 +72,13 @@ typedef struct HIDBuffer_t { extern "C" { #endif -#define USB_HID_TX_EPSIZE 0x40 - void usb_hid_set_report_descriptor(const uint8* report_descriptor, uint16 report_descriptor_length); void usb_hid_clear_buffers(uint8_t type); uint8_t usb_hid_add_buffer(uint8_t type, volatile HIDBuffer_t* buf); void usb_hid_set_buffers(uint8_t type, volatile HIDBuffer_t* featureBuffers, int count); uint16_t usb_hid_get_data(uint8_t type, uint8_t reportID, uint8_t* out, uint8_t poll); void usb_hid_set_feature(uint8_t reportID, uint8_t* data); - - +void usb_hid_setTXEPSize(uint32_t size); /* * HID Requests diff --git a/STM32F1/libraries/USBComposite/usb_mass.h b/STM32F1/libraries/USBComposite/usb_mass.h index 7d4f7cea0..93e1b6d68 100644 --- a/STM32F1/libraries/USBComposite/usb_mass.h +++ b/STM32F1/libraries/USBComposite/usb_mass.h @@ -15,8 +15,15 @@ extern "C" { #define N_STRING_DESCRIPTORS 4 -#define MAX_PACKET_SIZE 0x40 /* 64B, maximum for USB FS Devices */ -#define MAX_BULK_PACKET_SIZE 0x40 /* 64B, max bulk Can't use 512 because the internal buffers for USB is only 512B */ +// 512 needs to be divisible by the following two values +#define MAX_PACKET_SIZE 64 /* 64B, maximum for USB FS Devices */ +#define MAX_BULK_PACKET_SIZE 64 /* 64B, max bulk Can't use 512 because the internal buffers for USB is only 512B */ +#if 512/MAX_PACKET_SIZE*MAX_PACKET_SIZE != 512 +# error MAX_PACKET_SIZE must divide 512 +#endif +#if 512/MAX_BULK_PACKET_SIZE*MAX_BULK_PACKET_SIZE != 512 +# error MAX_BULK_PACKET_SIZE must divide 512 +#endif /* MASS Storage Requests */ diff --git a/STM32F1/libraries/USBComposite/usb_mass_internal.h b/STM32F1/libraries/USBComposite/usb_mass_internal.h index c3405a87b..26967c706 100644 --- a/STM32F1/libraries/USBComposite/usb_mass_internal.h +++ b/STM32F1/libraries/USBComposite/usb_mass_internal.h @@ -1,12 +1,12 @@ -#ifndef _USB_MASS_INTERNAL_H_ -#define _USB_MASS_INTERNAL_H_ - -extern USBEndpointInfo usbMassEndpoints[]; - -#define MASS_ENDPOINT_TX 0 -#define MASS_ENDPOINT_RX 1 -#define USB_MASS_RX_ENDP (usbMassEndpoints[MASS_ENDPOINT_RX].address) -#define USB_MASS_TX_ENDP (usbMassEndpoints[MASS_ENDPOINT_TX].address) -#define USB_MASS_RX_ADDR (usbMassEndpoints[MASS_ENDPOINT_RX].pmaAddress) -#define USB_MASS_TX_ADDR (usbMassEndpoints[MASS_ENDPOINT_TX].pmaAddress) +#ifndef _USB_MASS_INTERNAL_H_ +#define _USB_MASS_INTERNAL_H_ + +extern USBEndpointInfo usbMassEndpoints[]; + +#define MASS_ENDPOINT_TX 0 +#define MASS_ENDPOINT_RX 1 +#define USB_MASS_RX_ENDP (usbMassEndpoints[MASS_ENDPOINT_RX].address) +#define USB_MASS_TX_ENDP (usbMassEndpoints[MASS_ENDPOINT_TX].address) +#define USB_MASS_RX_ADDR (usbMassEndpoints[MASS_ENDPOINT_RX].pmaAddress) +#define USB_MASS_TX_ADDR (usbMassEndpoints[MASS_ENDPOINT_TX].pmaAddress) #endif \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/usb_mass_mal.c b/STM32F1/libraries/USBComposite/usb_mass_mal.c index b3a79c3b2..cd84f8bef 100644 --- a/STM32F1/libraries/USBComposite/usb_mass_mal.c +++ b/STM32F1/libraries/USBComposite/usb_mass_mal.c @@ -26,16 +26,16 @@ uint16_t usb_mass_mal_get_status(uint8_t lun) { return USB_MASS_MAL_SUCCESS; } -uint16_t usb_mass_mal_read_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength) { - if (lun >= USB_MASS_MAX_DRIVES || ! usb_mass_drives[lun].read(memoryOffset, readbuff, transferLength)) +uint16_t usb_mass_mal_read_memory(uint8_t lun, uint8_t *readbuff, uint32_t startSector, uint16_t numSectors) { + if (lun >= USB_MASS_MAX_DRIVES || ! usb_mass_drives[lun].read(readbuff, startSector, numSectors)) return USB_MASS_MAL_FAIL; else return USB_MASS_MAL_SUCCESS; } -uint16_t usb_mass_mal_write_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *writebuff, uint16_t transferLength) { +uint16_t usb_mass_mal_write_memory(uint8_t lun, uint8_t *writebuff, uint32_t startSector, uint16_t numSectors) { if (lun >= USB_MASS_MAX_DRIVES || usb_mass_drives[lun].write == NULL - || ! usb_mass_drives[lun].write(memoryOffset, writebuff, transferLength)) + || ! usb_mass_drives[lun].write(writebuff, startSector, numSectors)) return USB_MASS_MAL_FAIL; else return USB_MASS_MAL_SUCCESS; diff --git a/STM32F1/libraries/USBComposite/usb_mass_mal.h b/STM32F1/libraries/USBComposite/usb_mass_mal.h index 455fd7151..241f8269c 100644 --- a/STM32F1/libraries/USBComposite/usb_mass_mal.h +++ b/STM32F1/libraries/USBComposite/usb_mass_mal.h @@ -8,10 +8,12 @@ extern "C" { #endif +#define SCSI_BLOCK_SIZE 512 + #define USB_MASS_MAX_DRIVES 2 -typedef bool (*MassStorageWriter)(uint32_t memoryOffset, const uint8_t *writebuff, uint16_t transferLength); -typedef bool (*MassStorageReader)(uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength); +typedef bool (*MassStorageWriter)(const uint8_t *writebuff, uint32_t startSector, uint16_t numSectors); +typedef bool (*MassStorageReader)(uint8_t *readbuff, uint32_t startSector, uint16_t numSectors); typedef bool (*MassStorageStatuser)(void); typedef bool (*MassStorageInitializer)(void); typedef bool (*MassStorageFormatter)(void); @@ -28,8 +30,8 @@ typedef struct { extern MassStorageDriveInfo usb_mass_drives[USB_MASS_MAX_DRIVES]; uint16_t usb_mass_mal_init(uint8_t lun); uint16_t usb_mass_mal_get_status(uint8_t lun); -uint16_t usb_mass_mal_read_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength); -uint16_t usb_mass_mal_write_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *writebuff, uint16_t transferLength); +uint16_t usb_mass_mal_read_memory(uint8_t lun, uint8_t *readbuff, uint32_t startSector, uint16_t numSectors); +uint16_t usb_mass_mal_write_memory(uint8_t lun, uint8_t *writebuff, uint32_t startSector, uint16_t numSectors); void usb_mass_mal_format(uint8_t lun); #ifdef __cplusplus diff --git a/STM32F1/libraries/USBComposite/usb_midi_device.c b/STM32F1/libraries/USBComposite/usb_midi_device.c index f8a4fbaf6..09c1588ea 100644 --- a/STM32F1/libraries/USBComposite/usb_midi_device.c +++ b/STM32F1/libraries/USBComposite/usb_midi_device.c @@ -202,7 +202,7 @@ static const usb_descriptor_config usbMIDIDescriptor_Config = { .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_OUT | MIDI_ENDPOINT_RX), // PATCH .bmAttributes = USB_EP_TYPE_BULK, - .wMaxPacketSize = USB_MIDI_RX_EPSIZE, + .wMaxPacketSize = 64, // PATCH .bInterval = 0x00, }, @@ -219,7 +219,7 @@ static const usb_descriptor_config usbMIDIDescriptor_Config = { .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | MIDI_ENDPOINT_TX), // PATCH .bmAttributes = USB_EP_TYPE_BULK, - .wMaxPacketSize = USB_MIDI_TX_EPSIZE, + .wMaxPacketSize = 64, // PATCH .bInterval = 0x00, }, @@ -236,11 +236,11 @@ static const usb_descriptor_config usbMIDIDescriptor_Config = { /* I/O state */ /* Received data */ -static volatile uint32 midiBufferRx[USB_MIDI_RX_EPSIZE/4]; +static volatile uint32 midiBufferRx[64/4]; /* Read index into midiBufferRx */ static volatile uint32 rx_offset = 0; /* Transmit data */ -static volatile uint32 midiBufferTx[USB_MIDI_TX_EPSIZE/4]; +static volatile uint32 midiBufferTx[64/4]; /* Write index into midiBufferTx */ static volatile uint32 tx_offset = 0; /* Number of bytes left to transmit */ @@ -250,6 +250,8 @@ static volatile uint8 transmitting = 0; /* Number of unread bytes */ static volatile uint32 n_unread_packets = 0; +uint32_t usb_midi_txEPSize = 64; +static uint32_t rxEPSize = 64; // eventually all of this should be in a place for settings which can be written to flash. volatile uint8 myMidiChannel = DEFAULT_MIDI_CHANNEL; @@ -258,6 +260,7 @@ volatile uint8 myMidiCable = DEFAULT_MIDI_CABLE; volatile uint8 myMidiID[] = { LEAFLABS_MMA_VENDOR_1,LEAFLABS_MMA_VENDOR_2,LEAFLABS_MMA_VENDOR_3,0}; #define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] +#define OUT_16(s,v) *(uint16_t*)&OUT_BYTE(s,v) // OK on Cortex which can handle unaligned writes static void getMIDIPartDescriptor(uint8* out) { memcpy(out, &usbMIDIDescriptor_Config, sizeof(usbMIDIDescriptor_Config)); @@ -267,18 +270,20 @@ static void getMIDIPartDescriptor(uint8* out) { OUT_BYTE(usbMIDIDescriptor_Config, AC_CS_Interface.baInterfaceNr) += usbMIDIPart.startInterface; OUT_BYTE(usbMIDIDescriptor_Config, DataOutEndpoint.bEndpointAddress) += usbMIDIPart.startEndpoint; OUT_BYTE(usbMIDIDescriptor_Config, DataInEndpoint.bEndpointAddress) += usbMIDIPart.startEndpoint; + OUT_16(usbMIDIDescriptor_Config, DataInEndpoint.wMaxPacketSize) = usb_midi_txEPSize; + OUT_16(usbMIDIDescriptor_Config, DataOutEndpoint.wMaxPacketSize) = usb_midi_txEPSize; } static USBEndpointInfo midiEndpoints[2] = { { .callback = midiDataRxCb, - .bufferSize = USB_MIDI_RX_EPSIZE, + .bufferSize = 64, // patch .type = USB_EP_EP_TYPE_BULK, .tx = 0 }, { .callback = midiDataTxCb, - .bufferSize = USB_MIDI_TX_EPSIZE, + .bufferSize = 64, // patch .type = USB_EP_EP_TYPE_BULK, .tx = 1, } @@ -296,6 +301,22 @@ USBCompositePart usbMIDIPart = { .endpoints = midiEndpoints }; +void usb_midi_setTXEPSize(uint32_t size) { + size = (size+3)/4*4; + if (size == 0 || size > 64) + size = 64; + midiEndpoints[1].bufferSize = size; + usb_midi_txEPSize = size; +} + +void usb_midi_setRXEPSize(uint32_t size) { + size = (size+3)/4*4; + if (size == 0 || size > 64) + size = 64; + midiEndpoints[0].bufferSize = size; + rxEPSize = size; +} + /* * MIDI interface */ @@ -313,9 +334,9 @@ uint32 usb_midi_tx(const uint32* buf, uint32 packets) { return 0; /* return len */ } - /* We can only put USB_MIDI_TX_EPSIZE bytes in the buffer. */ - if (bytes > USB_MIDI_TX_EPSIZE) { - bytes = USB_MIDI_TX_EPSIZE; + /* We can only put usb_midi_txEPSize bytes in the buffer. */ + if (bytes > usb_midi_txEPSize) { + bytes = usb_midi_txEPSize; packets=bytes/4; } @@ -361,7 +382,7 @@ uint32 usb_midi_rx(uint32* buf, uint32 packets) { /* If all bytes have been read, re-enable the RX endpoint, which * was set to NAK when the current batch of bytes was received. */ if (n_unread_packets == 0) { - usb_set_ep_rx_count(USB_MIDI_RX_ENDP, USB_MIDI_RX_EPSIZE); + usb_set_ep_rx_count(USB_MIDI_RX_ENDP, rxEPSize); usb_set_ep_rx_stat(USB_MIDI_RX_ENDP, USB_EP_STAT_RX_VALID); rx_offset = 0; } @@ -408,7 +429,7 @@ static void midiDataRxCb(void) { LglSysexHandler((uint32*)midiBufferRx,(uint32*)&rx_offset,(uint32*)&n_unread_packets); if (n_unread_packets == 0) { - usb_set_ep_rx_count(USB_MIDI_RX_ENDP, USB_MIDI_RX_EPSIZE); + usb_set_ep_rx_count(USB_MIDI_RX_ENDP, rxEPSize); usb_set_ep_rx_stat(USB_MIDI_RX_ENDP, USB_EP_STAT_RX_VALID); rx_offset = 0; } diff --git a/STM32F1/libraries/USBComposite/usb_midi_device.h b/STM32F1/libraries/USBComposite/usb_midi_device.h index 2c66264c2..b378ce89d 100644 --- a/STM32F1/libraries/USBComposite/usb_midi_device.h +++ b/STM32F1/libraries/USBComposite/usb_midi_device.h @@ -136,10 +136,6 @@ typedef struct { * Endpoint configuration */ -#define USB_MIDI_TX_EPSIZE 0x40 - -#define USB_MIDI_RX_EPSIZE 0x40 - #ifndef __cplusplus #define USB_MIDI_DECLARE_DEV_DESC(vid, pid) \ { \ @@ -171,16 +167,20 @@ typedef struct { * MIDI interface */ - void usb_midi_putc(char ch); - uint32 usb_midi_tx(const uint32* buf, uint32 len); - uint32 usb_midi_rx(uint32* buf, uint32 len); - uint32 usb_midi_peek(uint32* buf, uint32 len); - - uint32 usb_midi_data_available(void); /* in RX buffer */ - uint16 usb_midi_get_pending(void); - uint8 usb_midi_is_transmitting(void); - - void sendThroughSysex(char *printbuffer, int bufferlength); +void usb_midi_setTXEPSize(uint32_t size); +void usb_midi_setRXEPSize(uint32_t size); +void usb_midi_putc(char ch); +uint32 usb_midi_tx(const uint32* buf, uint32 len); +uint32 usb_midi_rx(uint32* buf, uint32 len); +uint32 usb_midi_peek(uint32* buf, uint32 len); + +uint32 usb_midi_data_available(void); /* in RX buffer */ +uint16 usb_midi_get_pending(void); +uint8 usb_midi_is_transmitting(void); + +void sendThroughSysex(char *printbuffer, int bufferlength); + +extern uint32_t usb_midi_txEPSize; #ifdef __cplusplus } diff --git a/STM32F1/libraries/USBComposite/usb_scsi.c b/STM32F1/libraries/USBComposite/usb_scsi.c index 2ff3dfde3..9d7c1af4a 100644 --- a/STM32F1/libraries/USBComposite/usb_scsi.c +++ b/STM32F1/libraries/USBComposite/usb_scsi.c @@ -249,18 +249,19 @@ uint8_t scsi_address_management(uint8_t lun, uint8_t cmd, uint32_t lba, uint32_t return (TRUE); } -void scsi_read_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLength) { - static uint32_t offset, length; +void scsi_read_memory(uint8_t lun, uint32_t startSector, uint32_t numSectors) { + static uint32_t length; + static uint64_t offset; if (SCSI_transferState == SCSI_TXFR_IDLE) { - offset = memoryOffset * SCSI_BLOCK_SIZE; - length = transferLength * SCSI_BLOCK_SIZE; + offset = (uint64_t)startSector * SCSI_BLOCK_SIZE; + length = numSectors * SCSI_BLOCK_SIZE; SCSI_transferState = SCSI_TXFR_ONGOING; } if (SCSI_transferState == SCSI_TXFR_ONGOING) { if (SCSI_blockReadCount == 0) { - usb_mass_mal_read_memory(lun, offset, SCSI_dataBuffer, SCSI_BLOCK_SIZE); + usb_mass_mal_read_memory(lun, SCSI_dataBuffer, (uint32_t)(offset/SCSI_BLOCK_SIZE), 1); usb_mass_sil_write(SCSI_dataBuffer, MAX_BULK_PACKET_SIZE); @@ -293,14 +294,15 @@ void scsi_read_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLengt } } -void scsi_write_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLength) { - static uint32_t offset, length; +void scsi_write_memory(uint8_t lun, uint32_t startSector, uint32_t numSectors) { + static uint32_t length; + static uint64_t offset; uint32_t idx; uint32_t temp = SCSI_counter + 64; if (SCSI_transferState == SCSI_TXFR_IDLE) { - offset = memoryOffset * SCSI_BLOCK_SIZE; - length = transferLength * SCSI_BLOCK_SIZE; + offset = (uint64_t)startSector * SCSI_BLOCK_SIZE; + length = numSectors * SCSI_BLOCK_SIZE; SCSI_transferState = SCSI_TXFR_ONGOING; } @@ -315,7 +317,7 @@ void scsi_write_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLeng if (!(length % SCSI_BLOCK_SIZE)) { SCSI_counter = 0; - usb_mass_mal_write_memory(lun, offset - SCSI_BLOCK_SIZE, SCSI_dataBuffer, SCSI_BLOCK_SIZE); + usb_mass_mal_write_memory(lun, SCSI_dataBuffer, (uint32_t)(offset/SCSI_BLOCK_SIZE) - 1, 1); } usb_mass_CSW.dDataResidue -= usb_mass_dataLength; @@ -330,4 +332,4 @@ void scsi_write_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLeng SCSI_transferState = SCSI_TXFR_IDLE; // TODO: Led_RW_OFF(); } -} \ No newline at end of file +} diff --git a/STM32F1/libraries/USBComposite/usb_scsi.h b/STM32F1/libraries/USBComposite/usb_scsi.h index a5b121a92..8a99899ab 100644 --- a/STM32F1/libraries/USBComposite/usb_scsi.h +++ b/STM32F1/libraries/USBComposite/usb_scsi.h @@ -7,8 +7,6 @@ extern "C" { #endif -#define SCSI_BLOCK_SIZE 512 - /* SCSI Commands */ #define SCSI_FORMAT_UNIT 0x04 #define SCSI_INQUIRY 0x12 diff --git a/STM32F1/libraries/USBComposite/usb_setup.cpp b/STM32F1/libraries/USBComposite/usb_setup.cpp index 47fd3db4d..c711c312b 100644 --- a/STM32F1/libraries/USBComposite/usb_setup.cpp +++ b/STM32F1/libraries/USBComposite/usb_setup.cpp @@ -1,58 +1,58 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file wirish/stm32f1/boards_setup.cpp - * @author Marti Bolivar - * @brief STM32F1 chip setup. - * - * This file controls how init() behaves on the STM32F1. Be very - * careful when changing anything here. Many of these values depend - * upon each other. - */ - -#include "boards_private.h" -#include -#include - -#include - -namespace wirish { - namespace priv { - - void board_setup_usb(void) { -#ifdef GENERIC_BOOTLOADER - //Reset the USB interface on generic boards - developed by Victor PV - gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP); - gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0); - - for(volatile unsigned int i=0;i<512;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin - gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING); -#endif - } - - } -} +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*****************************************************************************/ + +/** + * @file wirish/stm32f1/boards_setup.cpp + * @author Marti Bolivar + * @brief STM32F1 chip setup. + * + * This file controls how init() behaves on the STM32F1. Be very + * careful when changing anything here. Many of these values depend + * upon each other. + */ + +#include "boards_private.h" +#include +#include + +#include + +namespace wirish { + namespace priv { + + void board_setup_usb(void) { +#ifdef GENERIC_BOOTLOADER + //Reset the USB interface on generic boards - developed by Victor PV + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP); + gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0); + + for(volatile unsigned int i=0;i<512;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING); +#endif + } + + } +} From 92b46fb19514dbfe59342191086a659957956da6 Mon Sep 17 00:00:00 2001 From: shodan Date: Tue, 18 Sep 2018 13:51:57 +0200 Subject: [PATCH 154/373] Fix for possible break of DFU functionality --- STM32F1/cores/maple/usb_serial.cpp | 37 +----------------------------- 1 file changed, 1 insertion(+), 36 deletions(-) diff --git a/STM32F1/cores/maple/usb_serial.cpp b/STM32F1/cores/maple/usb_serial.cpp index 1cca589af..acf4c06c2 100644 --- a/STM32F1/cores/maple/usb_serial.cpp +++ b/STM32F1/cores/maple/usb_serial.cpp @@ -273,18 +273,6 @@ static void ifaceSetupHook(unsigned hook __attribute__((unused)), void *requestv #endif } -#define RESET_DELAY 100000 -#ifdef SERIAL_USB -static void wait_reset(void) { - delay_us(RESET_DELAY); - nvic_sys_reset(); -} -#endif - - -#define STACK_TOP 0x20000800 -#define EXC_RETURN 0xFFFFFFF9 -#define DEFAULT_CPSR 0x61000000 static void rxHook(unsigned hook __attribute__((unused)), void *ignored __attribute__((unused))) { static const uint8 magic[4] = {'1', 'E', 'A', 'F'}; /* FIXME this is mad buggy; we need a new reset sequence. E.g. NAK @@ -309,34 +297,11 @@ static const uint8 magic[4] = {'1', 'E', 'A', 'F'}; #ifdef SERIAL_USB // The magic reset sequence is "1EAF". // Got the magic sequence -> reset, presumably into the bootloader. - // Return address is wait_reset, but we must set the thumb bit. bkp_init(); bkp_enable_writes(); bkp_write(10, 0x424C); bkp_disable_writes(); - - uintptr_t target = (uintptr_t)wait_reset | 0x1; - asm volatile("mov r0, %[stack_top] \n\t" // Reset stack - "mov sp, r0 \n\t" - "mov r0, #1 \n\t" - "mov r1, %[target_addr] \n\t" - "mov r2, %[cpsr] \n\t" - "push {r2} \n\t" // Fake xPSR - "push {r1} \n\t" // PC target addr - "push {r0} \n\t" // Fake LR - "push {r0} \n\t" // Fake R12 - "push {r0} \n\t" // Fake R3 - "push {r0} \n\t" // Fake R2 - "push {r0} \n\t" // Fake R1 - "push {r0} \n\t" // Fake R0 - "mov lr, %[exc_return] \n\t" - "bx lr" - : - : [stack_top] "r" (STACK_TOP), - [target_addr] "r" (target), - [exc_return] "r" (EXC_RETURN), - [cpsr] "r" (DEFAULT_CPSR) - : "r0", "r1", "r2"); + nvic_sys_reset(); #endif /* Can't happen. */ ASSERT_FAULT(0); From 188d9ce985678f72f4912cc742ee3865f92dfd7b Mon Sep 17 00:00:00 2001 From: stevstrong Date: Mon, 24 Sep 2018 09:31:55 +0200 Subject: [PATCH 155/373] F4: fix HID upload with Arduino IDE --- STM32F4/boards.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/STM32F4/boards.txt b/STM32F4/boards.txt index 3d76a1b27..00d487eb1 100644 --- a/STM32F4/boards.txt +++ b/STM32F4/boards.txt @@ -110,6 +110,7 @@ generic_f407v.menu.upload_method.STLinkMethod.upload.dfuse_addr=0x08004000 generic_f407v.menu.upload_method.STLinkMethod.build.vect_flags=-DVECT_TAB_FLASH -DUSER_ADDR_ROM=(uint32)0x08000000 generic_f407v.menu.upload_method.HIDUploadMethod=HID bootloader 2.0 +generic_f407v.menu.upload_method.HIDUploadMethod.upload.protocol=hid_boot generic_f407v.menu.upload_method.HIDUploadMethod.upload.tool=hid_upload generic_f407v.menu.upload_method.HIDUploadMethod.build.vect_flags=-DVECT_TAB_FLASH -DUSER_ADDR_ROM=(uint32)0x08004000 -DVECT_TAB_OFFSET=0x4000 generic_f407v.menu.upload_method.HIDUploadMethod.build.ldscript=ld/bootloader_8004000.ld From 9a489ca25fa2794bd39d4d2d46e1d9d3ecd733e2 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 11 Nov 2018 20:38:47 +1100 Subject: [PATCH 156/373] Changed USB Serial so that it will send to the host even if DTR is not set. Note this does not effect the operation of the boolean operation e.g.. while(!Serial); used to wait for the Arduino terminal to open --- STM32F1/cores/maple/usb_serial.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/usb_serial.cpp b/STM32F1/cores/maple/usb_serial.cpp index 1cca589af..a1e2512e1 100644 --- a/STM32F1/cores/maple/usb_serial.cpp +++ b/STM32F1/cores/maple/usb_serial.cpp @@ -119,9 +119,16 @@ size_t n = 0; size_t USBSerial::write(const uint8 *buf, uint32 len) { size_t n = 0; - if (!(bool) *this || !buf) { + +#ifdef USB_SERIAL_REQUIRE_DTR + if (!(bool) *this || !buf) { + return 0; + } +#else + if (!buf || !(usb_is_connected(USBLIB) && usb_is_configured(USBLIB))) { return 0; } +#endif uint32 txed = 0; while (txed < len) { From c7054992554b27ec6bdfc016347806454ab69815 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 30 Nov 2018 20:19:24 +1100 Subject: [PATCH 157/373] Removed LTO options as the no longer work correctly with the newer version of gcc used in Arduino 1.8.7 --- STM32F1/boards.txt | 288 ++++++++++++++++++++++----------------------- 1 file changed, 144 insertions(+), 144 deletions(-) diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index 194f6a53f..ad8de64aa 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -49,27 +49,27 @@ mapleMini.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations mapleMini.menu.opt.osstd=Smallest (default) -mapleMini.menu.opt.oslto=Smallest Code with LTO -mapleMini.menu.opt.oslto.build.flags.optimize=-Os -flto -mapleMini.menu.opt.oslto.build.flags.ldspecs=-flto +#mapleMini.menu.opt.oslto=Smallest Code with LTO +#mapleMini.menu.opt.oslto.build.flags.optimize=-Os -flto +#mapleMini.menu.opt.oslto.build.flags.ldspecs=-flto mapleMini.menu.opt.o1std=Fast (-O1) mapleMini.menu.opt.o1std.build.flags.optimize=-O1 mapleMini.menu.opt.o1std.build.flags.ldspecs= -mapleMini.menu.opt.o1lto=Fast (-O1) with LTO -mapleMini.menu.opt.o1lto.build.flags.optimize=-O1 -flto -mapleMini.menu.opt.o1lto.build.flags.ldspecs=-flto +#mapleMini.menu.opt.o1lto=Fast (-O1) with LTO +#mapleMini.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#mapleMini.menu.opt.o1lto.build.flags.ldspecs=-flto mapleMini.menu.opt.o2std=Faster (-O2) mapleMini.menu.opt.o2std.build.flags.optimize=-O2 mapleMini.menu.opt.o2std.build.flags.ldspecs= -mapleMini.menu.opt.o2lto=Faster (-O2) with LTO -mapleMini.menu.opt.o2lto.build.flags.optimize=-O2 -flto -mapleMini.menu.opt.o2lto.build.flags.ldspecs=-flto +#mapleMini.menu.opt.o2lto=Faster (-O2) with LTO +#mapleMini.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#mapleMini.menu.opt.o2lto.build.flags.ldspecs=-flto mapleMini.menu.opt.o3std=Fastest (-O3) mapleMini.menu.opt.o3std.build.flags.optimize=-O3 mapleMini.menu.opt.o3std.build.flags.ldspecs= -mapleMini.menu.opt.o3lto=Fastest (-O3) with LTO -mapleMini.menu.opt.o3lto.build.flags.optimize=-O3 -flto -mapleMini.menu.opt.o3lto.build.flags.ldspecs=-flto +#mapleMini.menu.opt.o3lto=Fastest (-O3) with LTO +#mapleMini.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#mapleMini.menu.opt.o3lto.build.flags.ldspecs=-flto mapleMini.menu.opt.ogstd=Debug (-g) mapleMini.menu.opt.ogstd.build.flags.optimize=-Og mapleMini.menu.opt.ogstd.build.flags.ldspecs= @@ -109,27 +109,27 @@ maple.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations maple.menu.opt.osstd=Smallest (default) -maple.menu.opt.oslto=Smallest Code with LTO -maple.menu.opt.oslto.build.flags.optimize=-Os -flto -maple.menu.opt.oslto.build.flags.ldspecs=-flto +#maple.menu.opt.oslto=Smallest Code with LTO +#maple.menu.opt.oslto.build.flags.optimize=-Os -flto +#maple.menu.opt.oslto.build.flags.ldspecs=-flto maple.menu.opt.o1std=Fast (-O1) maple.menu.opt.o1std.build.flags.optimize=-O1 maple.menu.opt.o1std.build.flags.ldspecs= -maple.menu.opt.o1lto=Fast (-O1) with LTO -maple.menu.opt.o1lto.build.flags.optimize=-O1 -flto -maple.menu.opt.o1lto.build.flags.ldspecs=-flto +#maple.menu.opt.o1lto=Fast (-O1) with LTO +#maple.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#maple.menu.opt.o1lto.build.flags.ldspecs=-flto maple.menu.opt.o2std=Faster (-O2) maple.menu.opt.o2std.build.flags.optimize=-O2 maple.menu.opt.o2std.build.flags.ldspecs= -maple.menu.opt.o2lto=Faster (-O2) with LTO -maple.menu.opt.o2lto.build.flags.optimize=-O2 -flto -maple.menu.opt.o2lto.build.flags.ldspecs=-flto +#maple.menu.opt.o2lto=Faster (-O2) with LTO +#maple.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#maple.menu.opt.o2lto.build.flags.ldspecs=-flto maple.menu.opt.o3std=Fastest (-O3) maple.menu.opt.o3std.build.flags.optimize=-O3 maple.menu.opt.o3std.build.flags.ldspecs= -maple.menu.opt.o3lto=Fastest (-O3) with LTO -maple.menu.opt.o3lto.build.flags.optimize=-O3 -flto -maple.menu.opt.o3lto.build.flags.ldspecs=-flto +#maple.menu.opt.o3lto=Fastest (-O3) with LTO +#maple.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#maple.menu.opt.o3lto.build.flags.ldspecs=-flto maple.menu.opt.ogstd=Debug (-g) maple.menu.opt.ogstd.build.flags.optimize=-Og maple.menu.opt.ogstd.build.flags.ldspecs= @@ -170,28 +170,28 @@ mapleRET6.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations mapleRET6.menu.opt.osstd=Smallest (default) -mapleRET6.menu.opt.oslto=Smallest Code with LTO -mapleRET6.menu.opt.oslto.build.flags.optimize=-Os -flto -mapleRET6.menu.opt.oslto.build.flags.ldspecs=-flto +#mapleRET6.menu.opt.oslto=Smallest Code with LTO +#mapleRET6.menu.opt.oslto.build.flags.optimize=-Os -flto +#mapleRET6.menu.opt.oslto.build.flags.ldspecs=-flto mapleRET6.menu.opt.o1std=Fast (-O1) mapleRET6.menu.opt.o1std.build.flags.optimize=-O1 mapleRET6.menu.opt.o1std.build.flags.ldspecs= -mapleRET6.menu.opt.o1lto=Fast (-O1) with LTO -mapleRET6.menu.opt.o1lto.build.flags.optimize=-O1 -flto -mapleRET6.menu.opt.o1lto.build.flags.ldspecs=-flto +#mapleRET6.menu.opt.o1lto=Fast (-O1) with LTO +#mapleRET6.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#mapleRET6.menu.opt.o1lto.build.flags.ldspecs=-flto mapleRET6.menu.opt.o2std=Faster (-O2) mapleRET6.menu.opt.o2std.build.flags.optimize=-O2 mapleRET6.menu.opt.o2std.build.flags.ldspecs= -mapleRET6.menu.opt.o2lto=Faster (-O2) with LTO -mapleRET6.menu.opt.o2lto.build.flags.optimize=-O2 -flto -mapleRET6.menu.opt.o2lto.build.flags.ldspecs=-flto +#mapleRET6.menu.opt.o2lto=Faster (-O2) with LTO +#mapleRET6.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#mapleRET6.menu.opt.o2lto.build.flags.ldspecs=-flto mapleRET6.menu.opt.o3std=Fastest (-O3) mapleRET6.menu.opt.o3std.build.flags.optimize=-O3 mapleRET6.menu.opt.o3std.build.flags.ldspecs= -mapleRET6.menu.opt.o3lto=Fastest (-O3) with LTO -mapleRET6.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#mapleRET6.menu.opt.o3lto=Fastest (-O3) with LTO +#mapleRET6.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#mapleRET6.menu.opt.o3lto.build.flags.ldspecs=-flto mapleRET6.menu.opt.ogstd=Debug (-g) -mapleRET6.menu.opt.o3lto.build.flags.ldspecs=-flto mapleRET6.menu.opt.ogstd.build.flags.optimize=-Og mapleRET6.menu.opt.ogstd.build.flags.ldspecs= @@ -238,28 +238,28 @@ microduino32_flash.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations microduino32_flash.menu.opt.osstd=Smallest (default) -microduino32_flash.menu.opt.oslto=Smallest Code with LTO -microduino32_flash.menu.opt.oslto.build.flags.optimize=-Os -flto -microduino32_flash.menu.opt.oslto.build.flags.ldspecs=-flto +#microduino32_flash.menu.opt.oslto=Smallest Code with LTO +#microduino32_flash.menu.opt.oslto.build.flags.optimize=-Os -flto +#microduino32_flash.menu.opt.oslto.build.flags.ldspecs=-flto microduino32_flash.menu.opt.o1std=Fast (-O1) microduino32_flash.menu.opt.o1std.build.flags.optimize=-O1 microduino32_flash.menu.opt.o1std.build.flags.ldspecs= -microduino32_flash.menu.opt.o1lto=Fast (-O1) with LTO -microduino32_flash.menu.opt.o1lto.build.flags.optimize=-O1 -flto -microduino32_flash.menu.opt.o1lto.build.flags.ldspecs=-flto +#microduino32_flash.menu.opt.o1lto=Fast (-O1) with LTO +#microduino32_flash.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#microduino32_flash.menu.opt.o1lto.build.flags.ldspecs=-flto microduino32_flash.menu.opt.o2std=Faster (-O2) microduino32_flash.menu.opt.o2std.build.flags.optimize=-O2 microduino32_flash.menu.opt.o2std.build.flags.ldspecs= -microduino32_flash.menu.opt.o2lto=Faster (-O2) with LTO -microduino32_flash.menu.opt.o2lto.build.flags.optimize=-O2 -flto -microduino32_flash.menu.opt.o2lto.build.flags.ldspecs=-flto +#microduino32_flash.menu.opt.o2lto=Faster (-O2) with LTO +#microduino32_flash.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#microduino32_flash.menu.opt.o2lto.build.flags.ldspecs=-flto microduino32_flash.menu.opt.o3std=Fastest (-O3) microduino32_flash.menu.opt.o3std.build.flags.optimize=-O3 microduino32_flash.menu.opt.o3std.build.flags.ldspecs= -microduino32_flash.menu.opt.o3lto=Fastest (-O3) with LTO -microduino32_flash.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#microduino32_flash.menu.opt.o3lto=Fastest (-O3) with LTO +#microduino32_flash.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#microduino32_flash.menu.opt.o3lto.build.flags.ldspecs=-flto microduino32_flash.menu.opt.ogstd=Debug (-g) -microduino32_flash.menu.opt.o3lto.build.flags.ldspecs=-flto microduino32_flash.menu.opt.ogstd.build.flags.optimize=-Og microduino32_flash.menu.opt.ogstd.build.flags.ldspecs= @@ -302,28 +302,28 @@ nucleo_f103rb.menu.device_variant.NucleoF103_HSE.build.extra_flags=-DNUCLEO_HSE_ #-- Optimizations nucleo_f103rb.menu.opt.osstd=Smallest (default) -nucleo_f103rb.menu.opt.oslto=Smallest Code with LTO -nucleo_f103rb.menu.opt.oslto.build.flags.optimize=-Os -flto -nucleo_f103rb.menu.opt.oslto.build.flags.ldspecs=-flto +#nucleo_f103rb.menu.opt.oslto=Smallest Code with LTO +#nucleo_f103rb.menu.opt.oslto.build.flags.optimize=-Os -flto +#nucleo_f103rb.menu.opt.oslto.build.flags.ldspecs=-flto nucleo_f103rb.menu.opt.o1std=Fast (-O1) nucleo_f103rb.menu.opt.o1std.build.flags.optimize=-O1 nucleo_f103rb.menu.opt.o1std.build.flags.ldspecs= -nucleo_f103rb.menu.opt.o1lto=Fast (-O1) with LTO -nucleo_f103rb.menu.opt.o1lto.build.flags.optimize=-O1 -flto -nucleo_f103rb.menu.opt.o1lto.build.flags.ldspecs=-flto +#nucleo_f103rb.menu.opt.o1lto=Fast (-O1) with LTO +#nucleo_f103rb.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#nucleo_f103rb.menu.opt.o1lto.build.flags.ldspecs=-flto nucleo_f103rb.menu.opt.o2std=Faster (-O2) nucleo_f103rb.menu.opt.o2std.build.flags.optimize=-O2 nucleo_f103rb.menu.opt.o2std.build.flags.ldspecs= -nucleo_f103rb.menu.opt.o2lto=Faster (-O2) with LTO -nucleo_f103rb.menu.opt.o2lto.build.flags.optimize=-O2 -flto -nucleo_f103rb.menu.opt.o2lto.build.flags.ldspecs=-flto +#nucleo_f103rb.menu.opt.o2lto=Faster (-O2) with LTO +#nucleo_f103rb.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#nucleo_f103rb.menu.opt.o2lto.build.flags.ldspecs=-flto nucleo_f103rb.menu.opt.o3std=Fastest (-O3) nucleo_f103rb.menu.opt.o3std.build.flags.optimize=-O3 nucleo_f103rb.menu.opt.o3std.build.flags.ldspecs= -nucleo_f103rb.menu.opt.o3lto=Fastest (-O3) with LTO -nucleo_f103rb.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#nucleo_f103rb.menu.opt.o3lto=Fastest (-O3) with LTO +#nucleo_f103rb.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#nucleo_f103rb.menu.opt.o3lto.build.flags.ldspecs=-flto nucleo_f103rb.menu.opt.ogstd=Debug (-g) -nucleo_f103rb.menu.opt.o3lto.build.flags.ldspecs=-flto nucleo_f103rb.menu.opt.ogstd.build.flags.optimize=-Og nucleo_f103rb.menu.opt.ogstd.build.flags.ldspecs= @@ -407,28 +407,28 @@ genericSTM32F103C.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103C.menu.opt.osstd=Smallest (default) -genericSTM32F103C.menu.opt.oslto=Smallest Code with LTO -genericSTM32F103C.menu.opt.oslto.build.flags.optimize=-Os -flto -genericSTM32F103C.menu.opt.oslto.build.flags.ldspecs=-flto +#genericSTM32F103C.menu.opt.oslto=Smallest Code with LTO +#genericSTM32F103C.menu.opt.oslto.build.flags.optimize=-Os -flto +#genericSTM32F103C.menu.opt.oslto.build.flags.ldspecs=-flto genericSTM32F103C.menu.opt.o1std=Fast (-O1) genericSTM32F103C.menu.opt.o1std.build.flags.optimize=-O1 genericSTM32F103C.menu.opt.o1std.build.flags.ldspecs= -genericSTM32F103C.menu.opt.o1lto=Fast (-O1) with LTO -genericSTM32F103C.menu.opt.o1lto.build.flags.optimize=-O1 -flto -genericSTM32F103C.menu.opt.o1lto.build.flags.ldspecs=-flto +#genericSTM32F103C.menu.opt.o1lto=Fast (-O1) with LTO +#genericSTM32F103C.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#genericSTM32F103C.menu.opt.o1lto.build.flags.ldspecs=-flto genericSTM32F103C.menu.opt.o2std=Faster (-O2) genericSTM32F103C.menu.opt.o2std.build.flags.optimize=-O2 genericSTM32F103C.menu.opt.o2std.build.flags.ldspecs= -genericSTM32F103C.menu.opt.o2lto=Faster (-O2) with LTO -genericSTM32F103C.menu.opt.o2lto.build.flags.optimize=-O2 -flto -genericSTM32F103C.menu.opt.o2lto.build.flags.ldspecs=-flto +#genericSTM32F103C.menu.opt.o2lto=Faster (-O2) with LTO +#genericSTM32F103C.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#genericSTM32F103C.menu.opt.o2lto.build.flags.ldspecs=-flto genericSTM32F103C.menu.opt.o3std=Fastest (-O3) genericSTM32F103C.menu.opt.o3std.build.flags.optimize=-O3 genericSTM32F103C.menu.opt.o3std.build.flags.ldspecs= -genericSTM32F103C.menu.opt.o3lto=Fastest (-O3) with LTO -genericSTM32F103C.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103C.menu.opt.o3lto=Fastest (-O3) with LTO +#genericSTM32F103C.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103C.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103C.menu.opt.ogstd=Debug (-g) -genericSTM32F103C.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103C.menu.opt.ogstd.build.flags.optimize=-Og genericSTM32F103C.menu.opt.ogstd.build.flags.ldspecs= @@ -516,28 +516,28 @@ genericSTM32F103R.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103R.menu.opt.osstd=Smallest (default) -genericSTM32F103R.menu.opt.oslto=Smallest Code with LTO -genericSTM32F103R.menu.opt.oslto.build.flags.optimize=-Os -flto -genericSTM32F103R.menu.opt.oslto.build.flags.ldspecs=-flto +#genericSTM32F103R.menu.opt.oslto=Smallest Code with LTO +#genericSTM32F103R.menu.opt.oslto.build.flags.optimize=-Os -flto +#genericSTM32F103R.menu.opt.oslto.build.flags.ldspecs=-flto genericSTM32F103R.menu.opt.o1std=Fast (-O1) genericSTM32F103R.menu.opt.o1std.build.flags.optimize=-O1 genericSTM32F103R.menu.opt.o1std.build.flags.ldspecs= -genericSTM32F103R.menu.opt.o1lto=Fast (-O1) with LTO -genericSTM32F103R.menu.opt.o1lto.build.flags.optimize=-O1 -flto -genericSTM32F103R.menu.opt.o1lto.build.flags.ldspecs=-flto +#genericSTM32F103R.menu.opt.o1lto=Fast (-O1) with LTO +#genericSTM32F103R.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#genericSTM32F103R.menu.opt.o1lto.build.flags.ldspecs=-flto genericSTM32F103R.menu.opt.o2std=Faster (-O2) genericSTM32F103R.menu.opt.o2std.build.flags.optimize=-O2 genericSTM32F103R.menu.opt.o2std.build.flags.ldspecs= -genericSTM32F103R.menu.opt.o2lto=Faster (-O2) with LTO -genericSTM32F103R.menu.opt.o2lto.build.flags.optimize=-O2 -flto -genericSTM32F103R.menu.opt.o2lto.build.flags.ldspecs=-flto +#genericSTM32F103R.menu.opt.o2lto=Faster (-O2) with LTO +#genericSTM32F103R.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#genericSTM32F103R.menu.opt.o2lto.build.flags.ldspecs=-flto genericSTM32F103R.menu.opt.o3std=Fastest (-O3) genericSTM32F103R.menu.opt.o3std.build.flags.optimize=-O3 genericSTM32F103R.menu.opt.o3std.build.flags.ldspecs= -genericSTM32F103R.menu.opt.o3lto=Fastest (-O3) with LTO -genericSTM32F103R.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103R.menu.opt.o3lto=Fastest (-O3) with LTO +#genericSTM32F103R.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103R.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103R.menu.opt.ogstd=Debug (-g) -genericSTM32F103R.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103R.menu.opt.ogstd.build.flags.optimize=-Og genericSTM32F103R.menu.opt.ogstd.build.flags.ldspecs= @@ -608,28 +608,28 @@ genericSTM32F103T.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103T.menu.opt.osstd=Smallest (default) -genericSTM32F103T.menu.opt.oslto=Smallest Code with LTO -genericSTM32F103T.menu.opt.oslto.build.flags.optimize=-Os -flto -genericSTM32F103T.menu.opt.oslto.build.flags.ldspecs=-flto +#genericSTM32F103T.menu.opt.oslto=Smallest Code with LTO +#genericSTM32F103T.menu.opt.oslto.build.flags.optimize=-Os -flto +#genericSTM32F103T.menu.opt.oslto.build.flags.ldspecs=-flto genericSTM32F103T.menu.opt.o1std=Fast (-O1) genericSTM32F103T.menu.opt.o1std.build.flags.optimize=-O1 genericSTM32F103T.menu.opt.o1std.build.flags.ldspecs= -genericSTM32F103T.menu.opt.o1lto=Fast (-O1) with LTO -genericSTM32F103T.menu.opt.o1lto.build.flags.optimize=-O1 -flto -genericSTM32F103T.menu.opt.o1lto.build.flags.ldspecs=-flto +#genericSTM32F103T.menu.opt.o1lto=Fast (-O1) with LTO +#genericSTM32F103T.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#genericSTM32F103T.menu.opt.o1lto.build.flags.ldspecs=-flto genericSTM32F103T.menu.opt.o2std=Faster (-O2) genericSTM32F103T.menu.opt.o2std.build.flags.optimize=-O2 genericSTM32F103T.menu.opt.o2std.build.flags.ldspecs= -genericSTM32F103T.menu.opt.o2lto=Faster (-O2) with LTO -genericSTM32F103T.menu.opt.o2lto.build.flags.optimize=-O2 -flto -genericSTM32F103T.menu.opt.o2lto.build.flags.ldspecs=-flto +#genericSTM32F103T.menu.opt.o2lto=Faster (-O2) with LTO +#genericSTM32F103T.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#genericSTM32F103T.menu.opt.o2lto.build.flags.ldspecs=-flto genericSTM32F103T.menu.opt.o3std=Fastest (-O3) genericSTM32F103T.menu.opt.o3std.build.flags.optimize=-O3 genericSTM32F103T.menu.opt.o3std.build.flags.ldspecs= -genericSTM32F103T.menu.opt.o3lto=Fastest (-O3) with LTO -genericSTM32F103T.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103T.menu.opt.o3lto=Fastest (-O3) with LTO +#genericSTM32F103T.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103T.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103T.menu.opt.ogstd=Debug (-g) -genericSTM32F103T.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103T.menu.opt.ogstd.build.flags.optimize=-Og genericSTM32F103T.menu.opt.ogstd.build.flags.ldspecs= @@ -717,28 +717,28 @@ genericSTM32F103V.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103V.menu.opt.osstd=Smallest (default) -genericSTM32F103V.menu.opt.oslto=Smallest Code with LTO -genericSTM32F103V.menu.opt.oslto.build.flags.optimize=-Os -flto -genericSTM32F103V.menu.opt.oslto.build.flags.ldspecs=-flto +#genericSTM32F103V.menu.opt.oslto=Smallest Code with LTO +#genericSTM32F103V.menu.opt.oslto.build.flags.optimize=-Os -flto +#genericSTM32F103V.menu.opt.oslto.build.flags.ldspecs=-flto genericSTM32F103V.menu.opt.o1std=Fast (-O1) genericSTM32F103V.menu.opt.o1std.build.flags.optimize=-O1 genericSTM32F103V.menu.opt.o1std.build.flags.ldspecs= -genericSTM32F103V.menu.opt.o1lto=Fast (-O1) with LTO -genericSTM32F103V.menu.opt.o1lto.build.flags.optimize=-O1 -flto -genericSTM32F103V.menu.opt.o1lto.build.flags.ldspecs=-flto +#genericSTM32F103V.menu.opt.o1lto=Fast (-O1) with LTO +#genericSTM32F103V.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#genericSTM32F103V.menu.opt.o1lto.build.flags.ldspecs=-flto genericSTM32F103V.menu.opt.o2std=Faster (-O2) genericSTM32F103V.menu.opt.o2std.build.flags.optimize=-O2 genericSTM32F103V.menu.opt.o2std.build.flags.ldspecs= -genericSTM32F103V.menu.opt.o2lto=Faster (-O2) with LTO -genericSTM32F103V.menu.opt.o2lto.build.flags.optimize=-O2 -flto -genericSTM32F103V.menu.opt.o2lto.build.flags.ldspecs=-flto +#genericSTM32F103V.menu.opt.o2lto=Faster (-O2) with LTO +#genericSTM32F103V.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#genericSTM32F103V.menu.opt.o2lto.build.flags.ldspecs=-flto genericSTM32F103V.menu.opt.o3std=Fastest (-O3) genericSTM32F103V.menu.opt.o3std.build.flags.optimize=-O3 genericSTM32F103V.menu.opt.o3std.build.flags.ldspecs= -genericSTM32F103V.menu.opt.o3lto=Fastest (-O3) with LTO -genericSTM32F103V.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103V.menu.opt.o3lto=Fastest (-O3) with LTO +#genericSTM32F103V.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103V.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103V.menu.opt.ogstd=Debug (-g) -genericSTM32F103V.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103V.menu.opt.ogstd.build.flags.optimize=-Og genericSTM32F103V.menu.opt.ogstd.build.flags.ldspecs= @@ -813,28 +813,28 @@ genericSTM32F103Z.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103Z.menu.opt.osstd=Smallest (default) -genericSTM32F103Z.menu.opt.oslto=Smallest Code with LTO -genericSTM32F103Z.menu.opt.oslto.build.flags.optimize=-Os -flto -genericSTM32F103Z.menu.opt.oslto.build.flags.ldspecs=-flto +#genericSTM32F103Z.menu.opt.oslto=Smallest Code with LTO +#genericSTM32F103Z.menu.opt.oslto.build.flags.optimize=-Os -flto +#genericSTM32F103Z.menu.opt.oslto.build.flags.ldspecs=-flto genericSTM32F103Z.menu.opt.o1std=Fast (-O1) genericSTM32F103Z.menu.opt.o1std.build.flags.optimize=-O1 genericSTM32F103Z.menu.opt.o1std.build.flags.ldspecs= -genericSTM32F103Z.menu.opt.o1lto=Fast (-O1) with LTO -genericSTM32F103Z.menu.opt.o1lto.build.flags.optimize=-O1 -flto -genericSTM32F103Z.menu.opt.o1lto.build.flags.ldspecs=-flto +#genericSTM32F103Z.menu.opt.o1lto=Fast (-O1) with LTO +#genericSTM32F103Z.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#genericSTM32F103Z.menu.opt.o1lto.build.flags.ldspecs=-flto genericSTM32F103Z.menu.opt.o2std=Faster (-O2) genericSTM32F103Z.menu.opt.o2std.build.flags.optimize=-O2 genericSTM32F103Z.menu.opt.o2std.build.flags.ldspecs= -genericSTM32F103Z.menu.opt.o2lto=Faster (-O2) with LTO -genericSTM32F103Z.menu.opt.o2lto.build.flags.optimize=-O2 -flto -genericSTM32F103Z.menu.opt.o2lto.build.flags.ldspecs=-flto +#genericSTM32F103Z.menu.opt.o2lto=Faster (-O2) with LTO +#genericSTM32F103Z.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#genericSTM32F103Z.menu.opt.o2lto.build.flags.ldspecs=-flto genericSTM32F103Z.menu.opt.o3std=Fastest (-O3) genericSTM32F103Z.menu.opt.o3std.build.flags.optimize=-O3 genericSTM32F103Z.menu.opt.o3std.build.flags.ldspecs= -genericSTM32F103Z.menu.opt.o3lto=Fastest (-O3) with LTO -genericSTM32F103Z.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103Z.menu.opt.o3lto=Fastest (-O3) with LTO +#genericSTM32F103Z.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#genericSTM32F103Z.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103Z.menu.opt.ogstd=Debug (-g) -genericSTM32F103Z.menu.opt.o3lto.build.flags.ldspecs=-flto genericSTM32F103Z.menu.opt.ogstd.build.flags.optimize=-Og genericSTM32F103Z.menu.opt.ogstd.build.flags.ldspecs= @@ -901,28 +901,28 @@ hytiny-stm32f103t.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations hytiny-stm32f103t.menu.opt.osstd=Smallest (default) -hytiny-stm32f103t.menu.opt.oslto=Smallest Code with LTO -hytiny-stm32f103t.menu.opt.oslto.build.flags.optimize=-Os -flto -hytiny-stm32f103t.menu.opt.oslto.build.flags.ldspecs=-flto +#hytiny-stm32f103t.menu.opt.oslto=Smallest Code with LTO +#hytiny-stm32f103t.menu.opt.oslto.build.flags.optimize=-Os -flto +#hytiny-stm32f103t.menu.opt.oslto.build.flags.ldspecs=-flto hytiny-stm32f103t.menu.opt.o1std=Fast (-O1) hytiny-stm32f103t.menu.opt.o1std.build.flags.optimize=-O1 hytiny-stm32f103t.menu.opt.o1std.build.flags.ldspecs= -hytiny-stm32f103t.menu.opt.o1lto=Fast (-O1) with LTO -hytiny-stm32f103t.menu.opt.o1lto.build.flags.optimize=-O1 -flto -hytiny-stm32f103t.menu.opt.o1lto.build.flags.ldspecs=-flto +#hytiny-stm32f103t.menu.opt.o1lto=Fast (-O1) with LTO +#hytiny-stm32f103t.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#hytiny-stm32f103t.menu.opt.o1lto.build.flags.ldspecs=-flto hytiny-stm32f103t.menu.opt.o2std=Faster (-O2) hytiny-stm32f103t.menu.opt.o2std.build.flags.optimize=-O2 hytiny-stm32f103t.menu.opt.o2std.build.flags.ldspecs= -hytiny-stm32f103t.menu.opt.o2lto=Faster (-O2) with LTO -hytiny-stm32f103t.menu.opt.o2lto.build.flags.optimize=-O2 -flto -hytiny-stm32f103t.menu.opt.o2lto.build.flags.ldspecs=-flto +#hytiny-stm32f103t.menu.opt.o2lto=Faster (-O2) with LTO +#hytiny-stm32f103t.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#hytiny-stm32f103t.menu.opt.o2lto.build.flags.ldspecs=-flto hytiny-stm32f103t.menu.opt.o3std=Fastest (-O3) hytiny-stm32f103t.menu.opt.o3std.build.flags.optimize=-O3 hytiny-stm32f103t.menu.opt.o3std.build.flags.ldspecs= -hytiny-stm32f103t.menu.opt.o3lto=Fastest (-O3) with LTO -hytiny-stm32f103t.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#hytiny-stm32f103t.menu.opt.o3lto=Fastest (-O3) with LTO +#hytiny-stm32f103t.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#hytiny-stm32f103t.menu.opt.o3lto.build.flags.ldspecs=-flto hytiny-stm32f103t.menu.opt.ogstd=Debug (-g) -hytiny-stm32f103t.menu.opt.o3lto.build.flags.ldspecs=-flto hytiny-stm32f103t.menu.opt.ogstd.build.flags.optimize=-Og hytiny-stm32f103t.menu.opt.ogstd.build.flags.ldspecs= @@ -966,28 +966,28 @@ STM32VLD.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations STM32VLD.menu.opt.osstd=Smallest (default) -STM32VLD.menu.opt.oslto=Smallest Code with LTO -STM32VLD.menu.opt.oslto.build.flags.optimize=-Os -flto -STM32VLD.menu.opt.oslto.build.flags.ldspecs=-flto +#STM32VLD.menu.opt.oslto=Smallest Code with LTO +#STM32VLD.menu.opt.oslto.build.flags.optimize=-Os -flto +#STM32VLD.menu.opt.oslto.build.flags.ldspecs=-flto STM32VLD.menu.opt.o1std=Fast (-O1) STM32VLD.menu.opt.o1std.build.flags.optimize=-O1 STM32VLD.menu.opt.o1std.build.flags.ldspecs= -STM32VLD.menu.opt.o1lto=Fast (-O1) with LTO -STM32VLD.menu.opt.o1lto.build.flags.optimize=-O1 -flto -STM32VLD.menu.opt.o1lto.build.flags.ldspecs=-flto +#STM32VLD.menu.opt.o1lto=Fast (-O1) with LTO +#STM32VLD.menu.opt.o1lto.build.flags.optimize=-O1 -flto +#STM32VLD.menu.opt.o1lto.build.flags.ldspecs=-flto STM32VLD.menu.opt.o2std=Faster (-O2) STM32VLD.menu.opt.o2std.build.flags.optimize=-O2 STM32VLD.menu.opt.o2std.build.flags.ldspecs= -STM32VLD.menu.opt.o2lto=Faster (-O2) with LTO -STM32VLD.menu.opt.o2lto.build.flags.optimize=-O2 -flto -STM32VLD.menu.opt.o2lto.build.flags.ldspecs=-flto +#STM32VLD.menu.opt.o2lto=Faster (-O2) with LTO +#STM32VLD.menu.opt.o2lto.build.flags.optimize=-O2 -flto +#STM32VLD.menu.opt.o2lto.build.flags.ldspecs=-flto STM32VLD.menu.opt.o3std=Fastest (-O3) STM32VLD.menu.opt.o3std.build.flags.optimize=-O3 STM32VLD.menu.opt.o3std.build.flags.ldspecs= -STM32VLD.menu.opt.o3lto=Fastest (-O3) with LTO -STM32VLD.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#STM32VLD.menu.opt.o3lto=Fastest (-O3) with LTO +#STM32VLD.menu.opt.o3lto.build.flags.optimize=-O3 -flto +#STM32VLD.menu.opt.o3lto.build.flags.ldspecs=-flto STM32VLD.menu.opt.ogstd=Debug (-g) -STM32VLD.menu.opt.o3lto.build.flags.ldspecs=-flto STM32VLD.menu.opt.ogstd.build.flags.optimize=-Og STM32VLD.menu.opt.ogstd.build.flags.ldspecs= From 99b9acaa80d2394314c7668ff83a4953104cec31 Mon Sep 17 00:00:00 2001 From: Michel Stempin Date: Sun, 2 Dec 2018 22:32:30 +0100 Subject: [PATCH 158/373] Explicit STM32duino.com platform origin --- STM32F1/platform.txt | 4 ++-- STM32F4/platform.txt | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index fbeaac41e..1f6fd858e 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -3,7 +3,7 @@ # For more info: # https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification -name=STM32 Boards (STM32duino.com) +name=STM32F1 Boards (STM32duino.com) version=0.1.2 compiler.warning_flags=-w -DDEBUG_LEVEL=DEBUG_NONE @@ -174,4 +174,4 @@ tools.hid_upload.path.linux={runtime.hardware.path}/tools/linux tools.hid_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.hid_upload.upload.params.verbose=-d tools.hid_upload.upload.params.quiet=n -tools.hid_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {serial.port.file} \ No newline at end of file +tools.hid_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {serial.port.file} diff --git a/STM32F4/platform.txt b/STM32F4/platform.txt index 03ba86f40..2da2c4397 100755 --- a/STM32F4/platform.txt +++ b/STM32F4/platform.txt @@ -3,7 +3,7 @@ # For more info: # https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification -name=STM32F4 boards +name=STM32F4 Boards (STM32duino.com) version=0.1.0 # compiler variables @@ -136,4 +136,4 @@ tools.hid_upload.path.linux={runtime.hardware.path}/tools/linux tools.hid_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.hid_upload.upload.params.verbose=-d tools.hid_upload.upload.params.quiet=n -tools.hid_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {serial.port.file} \ No newline at end of file +tools.hid_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {serial.port.file} From 91e0062f19e5026ede2d7bb5652530b23fcb26d4 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 3 Feb 2019 17:49:51 +1100 Subject: [PATCH 159/373] Remove change to USB re DTR adding in commit 9a489ca25fa2794bd39d4d2d46e1d9d3ecd733e2. So I can create a stable release --- STM32F1/cores/maple/usb_serial.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/STM32F1/cores/maple/usb_serial.cpp b/STM32F1/cores/maple/usb_serial.cpp index a1e2512e1..1cca589af 100644 --- a/STM32F1/cores/maple/usb_serial.cpp +++ b/STM32F1/cores/maple/usb_serial.cpp @@ -119,16 +119,9 @@ size_t n = 0; size_t USBSerial::write(const uint8 *buf, uint32 len) { size_t n = 0; - -#ifdef USB_SERIAL_REQUIRE_DTR - if (!(bool) *this || !buf) { - return 0; - } -#else - if (!buf || !(usb_is_connected(USBLIB) && usb_is_configured(USBLIB))) { + if (!(bool) *this || !buf) { return 0; } -#endif uint32 txed = 0; while (txed < len) { From 49d0cd456efca928765a2278e204d42e460ff3ed Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 3 Feb 2019 19:58:38 +1100 Subject: [PATCH 160/373] Default USB Serial to non blocking etc --- STM32F1/cores/maple/usb_serial.cpp | 53 +++++++++++++++++------------- STM32F1/cores/maple/usb_serial.h | 5 +++ 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/STM32F1/cores/maple/usb_serial.cpp b/STM32F1/cores/maple/usb_serial.cpp index 1cca589af..55ac4a3d5 100644 --- a/STM32F1/cores/maple/usb_serial.cpp +++ b/STM32F1/cores/maple/usb_serial.cpp @@ -56,6 +56,7 @@ static void ifaceSetupHook(unsigned, void*); #define USB_TIMEOUT 50 #if BOARD_HAVE_SERIALUSB bool USBSerial::_hasBegun = false; +bool USBSerial::_isBlocking = false; #endif USBSerial::USBSerial(void) { @@ -105,30 +106,37 @@ void USBSerial::end(void) { } size_t USBSerial::write(uint8 ch) { -size_t n = 0; - this->write(&ch, 1); - return n; + + return this->write(&ch, 1); } size_t USBSerial::write(const char *str) { -size_t n = 0; - this->write((const uint8*)str, strlen(str)); - return n; + return this->write((const uint8*)str, strlen(str)); } size_t USBSerial::write(const uint8 *buf, uint32 len) { -size_t n = 0; - if (!(bool) *this || !buf) { +#ifdef USB_SERIAL_REQUIRE_DTR + if (!(bool) *this || !buf) { + return 0; + } +#else + if (!buf || !(usb_is_connected(USBLIB) && usb_is_configured(USBLIB))) { return 0; } +#endif uint32 txed = 0; - while (txed < len) { - txed += usb_cdcacm_tx((const uint8*)buf + txed, len - txed); - } + if (!_isBlocking) { + txed = usb_cdcacm_tx((const uint8*)buf + txed, len - txed); + } + else { + while (txed < len) { + txed += usb_cdcacm_tx((const uint8*)buf + txed, len - txed); + } + } - return n; + return txed; } int USBSerial::available(void) { @@ -186,10 +194,6 @@ size_t USBSerial::readBytes(char *buf, const size_t& len) /* Blocks forever until 1 byte is received */ int USBSerial::read(void) { uint8 b; - /* - this->read(&b, 1); - return b; - */ if (usb_cdcacm_rx(&b, 1)==0) { @@ -217,6 +221,16 @@ USBSerial::operator bool() { return usb_is_connected(USBLIB) && usb_is_configured(USBLIB) && usb_cdcacm_get_dtr(); } +void USBSerial::enableBlockingTx(void) +{ + _isBlocking=true; +} +void USBSerial::disableBlockingTx(void) +{ + _isBlocking=false; +} + + #if BOARD_HAVE_SERIALUSB #ifdef SERIAL_USB USBSerial Serial; @@ -265,12 +279,7 @@ static void ifaceSetupHook(unsigned hook __attribute__((unused)), void *requestv break; } #endif -#if false - if ((usb_cdcacm_get_baud() == 1200) && (reset_state == DTR_NEGEDGE)) { - iwdg_init(IWDG_PRE_4, 10); - while (1); - } -#endif + } #define RESET_DELAY 100000 diff --git a/STM32F1/cores/maple/usb_serial.h b/STM32F1/cores/maple/usb_serial.h index 835159370..0ff8bd1c8 100644 --- a/STM32F1/cores/maple/usb_serial.h +++ b/STM32F1/cores/maple/usb_serial.h @@ -69,6 +69,10 @@ class USBSerial : public Stream { uint8 getRTS(); uint8 getDTR(); uint8 pending(); + + + void enableBlockingTx(void); + void disableBlockingTx(void); /* SukkoPera: This is the Arduino way to check if an USB CDC serial * connection is open. @@ -85,6 +89,7 @@ class USBSerial : public Stream { protected: static bool _hasBegun; + static bool _isBlocking; }; #ifdef SERIAL_USB From 0f868ecb7eb1a104de2bcfa45c294e15fd745bdd Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 3 Feb 2019 20:09:55 +1100 Subject: [PATCH 161/373] Fix for ST-Link / Com port issue #584 --- STM32F1/platform.txt | 2 +- tools/win/stlink_upload.bat | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index 1f6fd858e..6f38ca753 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -143,7 +143,7 @@ tools.stlink_upload.path.linux={runtime.hardware.path}/tools/linux tools.stlink_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.stlink_upload.upload.params.verbose=-d tools.stlink_upload.upload.params.quiet= -tools.stlink_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" +tools.stlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" # blackmagic probe upload tools.bmp_upload.cmd=arm-none-eabi-gdb diff --git a/tools/win/stlink_upload.bat b/tools/win/stlink_upload.bat index 160fcdf81..79d18670d 100644 --- a/tools/win/stlink_upload.bat +++ b/tools/win/stlink_upload.bat @@ -1,4 +1,4 @@ -@echo off +rem @echo off rem: Note %~dp0 get path of this batch file rem: Need to change drive if My Documents is on a drive other than C: set driverLetter=%~dp0 @@ -6,12 +6,12 @@ set driverLetter=%driverLetter:~0,2% %driverLetter% cd %~dp0 rem: the two line below are needed to fix path issues with incorrect slashes before the bin file name -set str=%4 +set str=%1 set str=%str:/=\% rem: ------------- use STLINK CLI -stlink\ST-LINK_CLI.exe -c SWD -P %str% 0x8000000 -Rst -Run +stlink\ST-LINK_CLI.exe -c SWD -P %str% 0x8000000 -Rst -Run -NoPrompt rem: Using the open source texane-stlink instead of the proprietary STM stlink exe rem:texane-stlink\st-flash.exe write %str% 0x8000000 \ No newline at end of file From c1aba2413d8ae07827d06b67785325bb97253175 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 3 Feb 2019 20:12:48 +1100 Subject: [PATCH 162/373] Update STLink and Flashloader tools to fix #370 --- tools/win/stlink/Docs/ST-LINK Utility UM.pdf | Bin 0 -> 1046448 bytes tools/win/stlink/Docs/STLINK Utility.pdf | Bin 1296620 -> 0 bytes .../Docs/Software license agreement.pdf | Bin 0 -> 101617 bytes tools/win/stlink/Docs/license.txt | 58 ------------------ tools/win/stlink/FlashLoader/0x410.stldr | Bin 46076 -> 37136 bytes tools/win/stlink/FlashLoader/0x411.stldr | Bin 45232 -> 36832 bytes tools/win/stlink/FlashLoader/0x412.stldr | Bin 46076 -> 32816 bytes tools/win/stlink/FlashLoader/0x413.stldr | Bin 48956 -> 38752 bytes tools/win/stlink/FlashLoader/0x414.stldr | Bin 46076 -> 37136 bytes tools/win/stlink/FlashLoader/0x415.stldr | Bin 69732 -> 40136 bytes tools/win/stlink/FlashLoader/0x416.stldr | Bin 76440 -> 39552 bytes tools/win/stlink/FlashLoader/0x417.stldr | Bin 70084 -> 41188 bytes tools/win/stlink/FlashLoader/0x418.stldr | Bin 46076 -> 37136 bytes tools/win/stlink/FlashLoader/0x419.stldr | Bin 54688 -> 46964 bytes .../stlink/FlashLoader/0x419_DB1M_On.stldr | Bin 54844 -> 64092 bytes tools/win/stlink/FlashLoader/0x420.stldr | Bin 46088 -> 37144 bytes tools/win/stlink/FlashLoader/0x421.stldr | Bin 47996 -> 38928 bytes tools/win/stlink/FlashLoader/0x422.stldr | Bin 41172 -> 30236 bytes tools/win/stlink/FlashLoader/0x423.stldr | Bin 48740 -> 39300 bytes tools/win/stlink/FlashLoader/0x425.stldr | Bin 49452 -> 31304 bytes tools/win/stlink/FlashLoader/0x427.stldr | Bin 73592 -> 37224 bytes tools/win/stlink/FlashLoader/0x428.stldr | Bin 46088 -> 37144 bytes tools/win/stlink/FlashLoader/0x429.stldr | Bin 70284 -> 39580 bytes tools/win/stlink/FlashLoader/0x430.stldr | Bin 55324 -> 70372 bytes tools/win/stlink/FlashLoader/0x431.stldr | Bin 48488 -> 38928 bytes tools/win/stlink/FlashLoader/0x432.stldr | Bin 44736 -> 30856 bytes tools/win/stlink/FlashLoader/0x433.stldr | Bin 48488 -> 40652 bytes tools/win/stlink/FlashLoader/0x434.stldr | Bin 53680 -> 47616 bytes .../stlink/FlashLoader/0x434_DB1M_On.stldr | Bin 53848 -> 64076 bytes tools/win/stlink/FlashLoader/0x435.stldr | Bin 0 -> 39148 bytes tools/win/stlink/FlashLoader/0x436.stldr | Bin 75408 -> 42944 bytes tools/win/stlink/FlashLoader/0x437.stldr | Bin 69300 -> 38056 bytes tools/win/stlink/FlashLoader/0x438.stldr | Bin 41172 -> 30236 bytes tools/win/stlink/FlashLoader/0x439.stldr | Bin 46432 -> 30292 bytes tools/win/stlink/FlashLoader/0x440.stldr | Bin 43712 -> 30244 bytes tools/win/stlink/FlashLoader/0x441.stldr | Bin 0 -> 45968 bytes tools/win/stlink/FlashLoader/0x442.stldr | Bin 48112 -> 30244 bytes tools/win/stlink/FlashLoader/0x444.stldr | Bin 43712 -> 30452 bytes tools/win/stlink/FlashLoader/0x445.stldr | Bin 41564 -> 30244 bytes tools/win/stlink/FlashLoader/0x446.stldr | Bin 48632 -> 30100 bytes tools/win/stlink/FlashLoader/0x447.stldr | Bin 73460 -> 42196 bytes tools/win/stlink/FlashLoader/0x448.stldr | Bin 40832 -> 30244 bytes tools/win/stlink/FlashLoader/0x449.stldr | Bin 49212 -> 42616 bytes tools/win/stlink/FlashLoader/0x450.stldr | Bin 0 -> 14128 bytes tools/win/stlink/FlashLoader/0x451.stldr | Bin 0 -> 43068 bytes .../win/stlink/FlashLoader/0x451_DB_On.stldr | Bin 0 -> 66056 bytes tools/win/stlink/FlashLoader/0x452.stldr | Bin 0 -> 43200 bytes tools/win/stlink/FlashLoader/0x457.stldr | Bin 0 -> 27068 bytes tools/win/stlink/FlashLoader/0x458.stldr | Bin 0 -> 27868 bytes tools/win/stlink/FlashLoader/0x460.stldr | Bin 0 -> 36160 bytes tools/win/stlink/FlashLoader/0x461.stldr | Bin 0 -> 40160 bytes tools/win/stlink/FlashLoader/0x462.stldr | Bin 0 -> 37264 bytes tools/win/stlink/FlashLoader/0x463.stldr | Bin 0 -> 45032 bytes tools/win/stlink/FlashLoader/0x470.stldr | Bin 0 -> 37888 bytes tools/win/stlink/FlashLoader/0x495.stldr | Bin 0 -> 33504 bytes tools/win/stlink/FlashLoader/0x9A8.stldr | Bin 33552 -> 31228 bytes tools/win/stlink/FlashLoader/0x9B0.stldr | Bin 33552 -> 31264 bytes tools/win/stlink/ST-LINK_CLI.exe | Bin 267264 -> 405504 bytes .../amd64/WdfCoInstaller01009.dll | Bin 0 -> 1721576 bytes .../amd64/winusbcoinstaller2.dll | Bin 0 -> 1002728 bytes .../dpinst_amd64.exe | Bin .../dpinst_x86.exe | Bin .../stlink_VCP.inf | 0 .../stlink_dbg_winusb.inf | 33 +++++++--- .../stlink_winusb_install.bat | 2 +- .../stlinkdbgwinusb_x64.cat | Bin 8970 -> 10706 bytes .../stlinkdbgwinusb_x86.cat | Bin 8970 -> 10706 bytes .../stlinkvcp_x64.cat | Bin .../stlinkvcp_x86.cat | Bin .../x86/WdfCoInstaller01009.dll | Bin 0 -> 1461992 bytes .../x86/winusbcoinstaller2.dll | Bin 0 -> 851176 bytes .../stlink_winusb_uninstall.bat | 9 --- tools/win/stlink/STLinkUSBDriver.dll | Bin 86016 -> 98304 bytes 73 files changed, 25 insertions(+), 77 deletions(-) create mode 100644 tools/win/stlink/Docs/ST-LINK Utility UM.pdf delete mode 100644 tools/win/stlink/Docs/STLINK Utility.pdf create mode 100644 tools/win/stlink/Docs/Software license agreement.pdf delete mode 100644 tools/win/stlink/Docs/license.txt create mode 100644 tools/win/stlink/FlashLoader/0x435.stldr create mode 100644 tools/win/stlink/FlashLoader/0x441.stldr create mode 100644 tools/win/stlink/FlashLoader/0x450.stldr create mode 100644 tools/win/stlink/FlashLoader/0x451.stldr create mode 100644 tools/win/stlink/FlashLoader/0x451_DB_On.stldr create mode 100644 tools/win/stlink/FlashLoader/0x452.stldr create mode 100644 tools/win/stlink/FlashLoader/0x457.stldr create mode 100644 tools/win/stlink/FlashLoader/0x458.stldr create mode 100644 tools/win/stlink/FlashLoader/0x460.stldr create mode 100644 tools/win/stlink/FlashLoader/0x461.stldr create mode 100644 tools/win/stlink/FlashLoader/0x462.stldr create mode 100644 tools/win/stlink/FlashLoader/0x463.stldr create mode 100644 tools/win/stlink/FlashLoader/0x470.stldr create mode 100644 tools/win/stlink/FlashLoader/0x495.stldr create mode 100644 tools/win/stlink/ST-LINK_USB_V2_1_Driver/amd64/WdfCoInstaller01009.dll create mode 100644 tools/win/stlink/ST-LINK_USB_V2_1_Driver/amd64/winusbcoinstaller2.dll rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/dpinst_amd64.exe (100%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/dpinst_x86.exe (100%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/stlink_VCP.inf (100%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/stlink_dbg_winusb.inf (84%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/stlink_winusb_install.bat (97%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/stlinkdbgwinusb_x64.cat (69%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/stlinkdbgwinusb_x86.cat (69%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/stlinkvcp_x64.cat (100%) rename tools/win/stlink/{ST-LINK_USB_V2_Driver => ST-LINK_USB_V2_1_Driver}/stlinkvcp_x86.cat (100%) create mode 100644 tools/win/stlink/ST-LINK_USB_V2_1_Driver/x86/WdfCoInstaller01009.dll create mode 100644 tools/win/stlink/ST-LINK_USB_V2_1_Driver/x86/winusbcoinstaller2.dll delete mode 100644 tools/win/stlink/ST-LINK_USB_V2_Driver/stlink_winusb_uninstall.bat diff --git a/tools/win/stlink/Docs/ST-LINK Utility UM.pdf b/tools/win/stlink/Docs/ST-LINK Utility UM.pdf new file mode 100644 index 0000000000000000000000000000000000000000..55b7fcba3f0069bb367dea3ed0d852fcb9dc24a1 GIT binary patch literal 1046448 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%0Dx!smV*p@n^uAnt;5nr}uaF_7F#BYlsujKv|NT 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Ý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


-a#e6OG^HWbN3) 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 z zEA;0JNju+l%FV5E$YFs=esI32GaH_fMWPeeN?`bL9|K&UxkX^e^G(xYn7K+lE<;Y+ z`ZMlcF@Yk}glZ?4qxRKD>Q-0hN#>o>hK<+fuH;P@rD8`5&dc8gBFb96?tg9-YV_!= z2Q#w?)qVWz&s<2Muk!Un$SIoEt^KLfFYPq>_V+y$Gb%0RU50fUe9ldLq6Uywo+*fph9=@tubC8DU?+B~lv=C>TEdNSSTc~r{K>e|_8q$8@=dK$Ck`fYJ% zx?h$@m*Dh3jFuLgyinD{y~6#J8Vt<#45HPug8K+pEd>UTl*t+LiNX-EP4<*iWlirZ z#J)1>CKP+0MeUsGsY3EXsk`qg>RK*x$w?v&_Fnrl_dn3r*&Rm&KhSmG&p^;4cdHqQwTaTES1v0n!CHpiZqRXR z*GXYV*EwoeMoQ}Hyr|9nurks(Wl}4p^vt1=`xZh~HJsL3Y5I+OpQaJPlcmLO7SIzd zEsEpMedk67ItP{Hu3pPWd=;R(CCnlh3IR{3&(_ja1J$J2QXZYh^nRC-Q3L9awY>a9 z8k>Fpo3d_qI9}BkD#nc{o@p?UE{48F*3=}rn62qioIvh6DpSR0=?l7^cn!jaCw?L) z(2<=D{PS`p`}tU{h+bajSibqgJ7A5tQd2i^d7X(?Vym^NTq>@^Cv0lab#H{~ga!_j zBM1>Q!sK>#g-vQ7vC_=@WjA zsvOJZez(_{wdUe-*eHrYVUgusqpjWmp(1C%;PPr&dZXTgWp)}^6lco zRxDXLTs|pKC)-$x7a!`+J%OBg+wM!s2oyTiHMc{6UC&jogeY1=)e!nU6a z=4`hPTC|iGtdImb<4s0o{+Ak+2)u9yZ$Pvlj@w2z5(VUQ=Fwd_O=_54Amv>>$l+Zz$IO97O9?-}xuOr&%-eI9_>FHi7%2JdEcbBl)@};c*B(ur zn{QJrKUzqd7gwxa>V*Csw|OIuSM;=pB1=s;t_OZH5~cSDh*?`DhJ0S?G=ZvBE-jeM zw<=a2O(e}5K+iUf&oi22`Qsgy=idwR4SmsH%!}A~5%I_G{=uB@K#q(lL!|&F*h&G! ziwl)@fr+U}xxv1??1{E{oOyeZf*(XTY4-NMD2aMS?^fs zy8;LkLLzf4{@qI*`~B{Rcow$1rRZit(tT5;!R{(;r$o*CwmgTXgs2``6EM=hC=9#z+z|HZ{q(tiuXF0>B?OA(B-0jyB00p9eAk+Yb2Gc} zpUK=O^2f9_%VX`b-hUStGO4hUPuVhlG#jzBxhghWKS3<-XPF#EKbOwFRKVn)@ zq+Hxm>6QH~yaHt7YT!_h&No9&|5h8=%#q37|J4?r&85W<`G?4f$ZF zmG56y?g%#sGR9>n%4y3_ie4^cV8~WrOOf(jyF2qer@dVLtNk;7Oojpy;Wsm#o|PNq zw9L7bb-NkcVQ1{5h_GtD`BmI+D?E6D;9y*oSWoA1#ER}LmcFm*w{+#ETTYS@@(z~@ z5}2GgmFB{JI3c*h4=yeTu^;@NRxzO*pT@{{CUc?@{?{m%RRAQTMn$rKBo|R`{8O*u zkaaKIlm?XR(n6qTwT8~Ut?$%zb2{~N@0Nqjq1#KPV4`DB;M{mJt@2^?GuOR}%Iw{V zUZwqM#*nQx?p@;NoxN$L&Dge(y>!_S|DhIHqx$@bGajz`#{uhl^KLzd#nJ@^9gg?u z-(RxeEJ^Cooi8jAO3z)a-y7kkk8Sxt--atNmP}0{Wo&%Z8~g*`9i7x@^W~ewt>%^Z zyt_g0716R4H=-e7xG4gDyi%Xno9)0Vcsp6c;m@c^G9#x&27J(G;Vj(IkQQLhqfst{J$!*^AkGlJdGNZX=^r!!$Lj zc0*T`Ll+&7=rXjLhUY66iMWV%q+jxIRC=)>B=+o*`JDce9N!JX8{vkJ{#YtGwq6VZ zi?{MRR1_^T|GXWoyEbw3JGH_Y%U8QvLx{l!H8gnOlLhuXNAGO4MSP$Fwv<^UbwmZ# z%?reHCO2q4l`>yvoPC3M|FML0O7rlN7Pzi zId={Q7iZC#e8iL<3c*@`6U6R4k*!}Rre1i3ImS22Ox}~hFy5@cxJjRDfv$#5#V(Nb zdK3_0?UQT%X^{K0Uaome>4pJ|c+ev539_fN*J6$_;_XW{7ZgMt@Jb{%o=rs}>7Tea znkk^^n|l(wc&p(uRjTO>TI}}<#KeS3a?^CF5zgm}UKKyc);=#$q+2j{Q_k~xZgBP; zllAa4Lfh(k-Nmr&BKzO>M&Kx6;=|~C_HR%m&DO=J&=O86p17SRdEPXp7(^IagPC)) zc_V^KiWs!sWOQ!erB>!ywp*EWDB#7X3V&#Lms1~Ti;ka7QHVhg2}m~+Kznl>0vYnH z;QQ$_LN2$>(0<~$y)ZxRyDCOKfek8k?pHBapsf>&6NqK`dxiI-(#yO#WbO>yFaGIh zq_L@49)ubESG{t;8+_u8>Kud){3Y-99+ zO)9?nH6tqvfV96E4?WUmL%E31c1^ZI0&^eNsu6YyLw#XV{{LV7D*wXGkc;2$_>lr+ejD z0rM2y0KdFqNprGyB%XQedQ!8h4-MO_S#H3N(f)&ki$|uvSM#l8^HUSD%71k|Y!$L| zw;0Tr$XYcuH*0^Cv;XT(h&r8ZRy^}Aj?_lTOQyI*qj$=r;Qi>3s7}@Bd(FiLda6Am= z$AF@S37zDD!&FpZ00rzcWz%Vx;n}Dr>@D)0Cf*o4$8QiDMy?tv3LmO_T!MEd*AC`s zcD{wdut3%0pXH(Q{W$!^mrC*4ov%{aQgF*)3fnMf<$5Fsdvn$Zl^?{?Zw9zae*;h3 zB2(a~K027;$2>G9`LZzF1!N9{+XG)sVJzqTfjh#YfF>I?t1h)l!aV_;<~Ha&H`{w_ zKV|1Pi;Le6P;!AaoX0QGsyXI*kowE0h+iR~zbC$2c);}!Jxs-hZw$WHw(?8u@UCQh zoDLvd!0etTNVVWlt$FnegGvtX7&KX&Q&2LW&ABp4Px%YO+d}BO#lLq`!%njp0eTYM zj91b5KX3$*C)eN&qM};sc)k@@nBU7Xe4;m%F?bmcgI)cjfjlLz2t@G0VWG-$sh9~k z9B34ZXN7$cluSf?>G$|^;J|t{B5nneODX~m>@g`o3K0L6tJwpJenf@%N?wJ#cwXZ9Vdk2v32nX zBO6NC;7H!o4S|H)y5}!=X#nvE%wtfbUI!MspWeNuFAQeWLHgnS1>1k-AF&Sgoc#)Q zN<9g}7( zs4F-~x~Ypb<{8S=BWo*{EoPz=QxK2puk&kO#zoBCl@`Ml=>Yd7!nS^6dY4kmT1Dm+ z;j;LUhmr%1J%zs(Zz?|PS1(f(|1&}s;f2C8@$=ILU#k=kqRziWW5jXJ`-DDa(P&gQZBLrmKj2c3&Sgf%rM&Vb*M70>$Nu18l^lpEz$ zv>abnIuJ`xTP;?|Wb@IPD>5U(o}Ql8t=ATw_*9Qp)_gw*C*7*me`v2d69w|%((0je z>|z4Q?>O0fEyJHW9xZf&Nv@nXXA9lGJO$LO6=?P zfIQ{XKjgRel6!Xj;cnr*Z92E|el}#2zgW~XGyz`!#6vOJb9m}!8fS^H-QSuiuS%(1 z+3^Kw=QxSYxu&P#c$UEw)nSAJxAJaVnB@qVs&`GZ-n5k(9Fyv}0Q zkcc4?2#-#g3;yh2UiYg|Oq$w^vJx%r_x<>N?M=7Clt8%4R7RDUERfV2Ahy>O*+9O@eX+^;>O20c zPRWRyHDNGVw!0}nO=Hs0j8(ouje#l{oIuM+X3{lrsYoK80LU2{N?72JXgo7LmAf!< zNJZdp4;pBhBs#h)$)L6bE@JP<$@;IX65r9JtFH`oNlu9vW-lrV*b(nAeKK00(E^zx zMDFbPkvWi1oTnjUj|>YlpQBZsqtRD~#I!w|im>lDjU9dJ6MD0q`-}=yMi#6Xj7dY~ zpZGgAPY5ES_px{4An;069-4Uc`y|6^h9vqN(JmMyGP~H94U?8 zilpJ(STSquS8(A)Ra&8B(oKoj^H1?4tQFHQIY0f88(mA3@7N z=kgR%xSfbVt_@Lpk(PZZ-U7 z*--?Z2OfvFc*bn33p%swHpfURjGLha_~1HbWw#bup6q5U-ddnJmKPZp73KgmB{{t8 zWSY#8DdbLb@sTD4&QeVx7n3A~1V&H-#tZ=8+Y88>G(dFvQ+w8i(*PfM@UT2IvV;eo zjUuJ!>t4noHIW`aJos@@&+9pLxIP3m(A9)#isGWoX~n*kgvfnnjA_#T9u`mXh(`=O z0w3~shznHng3o+OOaE>EdnAb&*ToiIP8G#ZncEUR966$Uthb~_e zuqIDz+3)ClCxRL>x7_q88l!vVp)3T0EN*k;F$8mJB0t$joBlYr-kgkYvbdRhO<)4o zlo5~TyKf7f1#|L8k7*44O70zxWR4QN|Ieuat?7V?D54181#bw@M@2yyBG%jnO$jz^ zDDTWb0msg02t|FdWC1o~1^2E9-HAaWd(nV38GKe>5x_-jDD;3e3=rh9+0_k`r3yY_!SVr0&nU1jHSVb>>Bnhg9p#t=i`4 z6@k6*9hWWp+9R$ru-#L;j#oZhmBX0Y$0I^S*1K%HsObGi2ZJsGug$&zCEQilZS#O( zX&CWoGX6@EGqfFh#_sH^pWxVMG$4mwpl>=Is-`6f#}S+juOn8Q34`;}bswz0^|Py! z9BUmKEc+)9mP$Ub<0z)RC=6%7(*^>NY?=ie8Oec~uiYgb(7xIU_NU_TqQ{f-&%K}Z zYj+xPCyi*z1T^@xWL!9SY5uOOj#*Lg`GnsfQAAOgs2%qa@6^R-ARO}oa7Q&thQ7hm zO`fwA#{WnG2`WzxE@T|CT&!>K1bNz+R#|r)uYb5IjWJDXCu+yO!Lyh|%jrD|%`|!N zyB-dTX<=ADFRWT2KX5nysiJ|con^AU1E$%sW$9z@i0%mC=z{4dET5Zr?egM8&5-e| zp?D3Hra(_S%8HPj47?P9YuO_&Hk3tv&txdG93DTQ*oq3Z0Jh35nlLZZSXexlQKkne ziMNp^?lKiNkEzzV2Nz%{T6ZA!7r$1)m1gaX6{bWa9KL2^wyT72XtY?Kpu1?rF@m)%Lm3l6lIUt@L1O?8X zya;>qJ7>9i8cd55g92buk<@QTyECaZj(J{pX0u;C!z+fpv%kvrJr8a8ysnT8$7v2 zcV<`Tfo#j#lSQP*$Mu7TFuWXy4TTKxv%eas8HK+}1@sLs;Jv3FP4mJbyJpb}j&&>V zO288ipW_vzEiz%$H*>2u?ZJG!uF=pW*AEH?M)-e4dZ%)mH| z`0?KQ>yLOkqI|%s^~|5IpztKkG-%QoDd5k8Q&T>z)u5EYnWAhTBXbySE4PZqJiGDo z8m=x8gB4{oxE-d=DD_*lBZ&$i8DJr5ppFt6H-jxS!bZ9HDSk2uPsgRc4kdR?{h&U9 zqK?V3YI4?&o51O3!{L)+B~j*XfVeOZ58QAAWs9VxGGS>n%TzK$@_}|T;-WKrG*7;A z!dN6W=p`fp_ZWc$1@cRsJi!1nTxj1`BtnacC2QJ9YHLW#=srTG(^a(?pX?Qfs^ny2 zV!QkDiy4fCdI`O0)9^m6HDTAP83CG@cEY8#y=qo7j;D1lvVB(lvM8kK))KTKEdR45fXL%x102pUsDq8~Jr;O(CO z>>t+}7>g05h3aQ5v;D3X;V-hCD}T z_!la``-%zqM*XNU(!>I~Dm4%#I~CN@ zn$%%<;Gf$b)gzF@7T?OQ7lH%~NC)=E{}}9C6Z6y|wn6+5NU#LhQyzW5D1)8;k(UMZ zrJ%BK{B2}m&3XM@QMmfg_Je+p=;~{>$SFqf1N!J>VQc_!Npf7b1NB8PTyKd<y;$fWCOSGMjXQ6#uX82ck1pV*wYc#8t2a^}vH?yqi1&>{dw zDj1U&6v1S~{a%U(0x1GfY0T`#I{(BCN zmVJtRuoO-p1vBciwZF9GeKPwqX!Z{_E zF-?R@%h6@*?l>&;B7v}STgDa{ncj~yp*fBc9hJVzdV4J0vjR8wJVSXajz?bi9ZECZ z;ij>eI6Ofh(xb6%jqcz_-?g48$$^-Ao_;HTZouT#znf(dwXdIfRVak$$|HXKQ3YJ0@Ap~#D z{;)^^qmC)U-x^z%X}$E8JiJzaZX>mC1AapAp37fm#3&6fPL$w_Vz1A65U;^Y;!L$( zk4WOrsm32fbAxX+rVcQePL=0hHEB+uy{TaFrN3i@7}1R(y|IuQ_&qOqPUc{h%5+hz zu^)?3va%Biu zWJmm6wsED#Gt`H7&a5BQ3$+jR7{4uaLQ&rj&`&{om)*P7qA}d$eE063-p{)&<>NnZ zC@3U{C)u=TzmFdt8$^GoO5a^tU-|LtZk4=&a|J`YTN2C2xiJVKZ?xajH_yqk9N3y; zZm`75T;PspCGnOX@AXc%Wpi_Ke)h_*S=(VJOuER}kB>vG*|CazumK;APbra>wpOJs z*dEQ!Cnqi2PAq)z@x(@HpeAwVF~-PM-$2n=Z0@yl{SlEgQ&8grDUGKyNoaBSoUDP%uKP#w9-c_u8+oDk5)ZMv)dAJFXB2ayLqI5UH=MP?We=(&xaeIjyLO%R~Kwc z50?a&Y_^kZm(YtJO7z8S1BA>~0d{9)btA{34fFj6;yl3oD7V`Wkb|U-uxl6I>zwXPDW+GFnK|@{K2|JNPjBPAOp`hwTpP5o5pnF> zW?wr}yYaQ@o5?hXvd4Cna&WI~sVTy8$p?zszjNY~gg<^474Ip8Kt8kDz*88i(Gn@`ma)z#HUR}8I#LWked zus6kojMs8g8~X%w#n}dqhAl5R&xPO%<_ku8jyse?R?01x26p??@k1X(O+CcnJeY(W2 zr>Cpi?y*;xTaje*d9N$mUmU)@9RUs~_iy(9bgkY_x*-wt_WhCl=c40n32Q#!@F4au zV`%Dv*ayyEr+ohE&s=uKg%5CHD^bQ1V2#&o z=ju7ZTUtM{F3zRfn;p!Fq=^as&4gmFoT{QQ6W~;wZFRLw_s~(Q?C??2jnBK~mdnTE zpKFfC9|x}wizAu=nkQ&}i^(+ZDu*k3EjKfD&}$y|RnFyLs?yrUrKJsz zC+hx4NGQ$V?dHNIX?d7mFPx#tr@)PluC7MU&fagm2urA^(Q!|a2{n0NYdzAv=CE5H z#430rU{9`=>)uNYgc-A?u2&e2L*BOHl124o_FVO3m2BYC&m!xN V3_}bp()uv;a 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%0DKJr*~AHjeL03owpe}1hu{b$ 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
2r4SkfbFFEdoFP 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%0D){Pep{{?Pkg$ba{fpXsEwy7ctDcKiOP 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\Mthx1a6XiUGOE1ny%OZH$ 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

dUcpP_IfS9?4+HX+G- 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%0D$Lif9e$#4nU3Jfyg;81hHSZ)?(ny0 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≠hvVt3e~+;p<@n<8hXfO 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
Ww zEI|rKrjpH6VnlG3+<|63jG?eA8Az60I?W+RCrc%myd&?Pbr4klaY|c$r z){RsJCUa&2Y6WeFN({p`Ij4G`W-)hSKY;-q>&?b;<)rR*)Y+Vb!(p4Y{XkSky5mX{ z$raFLPP2dplJWtv08TC@iuMZz9PQ7)Id23-xmKN?xK7}J#QhQ-T4q+8!q3F{!6m&* z)Nj7Gh`W#dX$=8}=YDO{lAJo-H&zVKM;EC=h#W5vg-~@dTM&QCz|n9FrXZVg4kC}cPoa2a^qSUwpy`abRv8sRJ5+(u+3F;Y0V5VWm@{uDd$99 zZdm|b>)h(Pn&|q%crG?Xh18G)j>mkplt6=2J7tM` zSLWqmc7F>4>@WNsz*XcE*Isk)cNI4!gouyhf3Ei4&>Xy?`s{&Nkq)$O zpk+SX)F2E&77%x`e{$z;=4CCJ?ULFX$V(7XSLm2#Nd5TCrQw{@PG)hw%PIA(@(){r zo}sH+?{i|%Z4tm^rbk~Acnx=KESTa%N96p3^tm3+3e#ogHMMv4;1V60g*u3yy6E{- zP9Byr&K{XbMiVBEVn%usZNjWOL!I<)YA`cB6ndCenIK+EAu)ndEvRfwVU90Y5;)8s z%}-9mjSbAk=Dkb}w!@n`Q^I^e=7Zc@ODVl()A6P^(j z&n{eGRBzCkak?95WrB6#k>~Z-*`LKF%0Jo;mhTCEpA34q?x5w~T0}_w+P_OPM->j9 z1)7Hm0>4*1+L-0B!<~i{Ziql0*{8P+!+z@6@`u0-NI`ZA3++%ONA=^ks&MCz-2GO` zcjf_70K9qF>WUb3se986BpVdwrgrYoy5}^pQUy#wq-jHv_hM1ePtoBv8#S6`nRKRmaiCw?vm{)@?i z59@!*!34e+KrI#q+1bcyJE1_)(@9Uy)7o0k*SB|LK(DxXm|obK;W>n2hOk9fOvMXq zsuBT?jDk?^2);<@CGjjnOxHv|SpGd4tTfupee9kw;t{wGcp25nfgGt)i%* ztSqOo@qB-Fcj61XTE_MELWA8i#IcpG)GBOsw|({V6GEUT@DHA%tH7NdMZIcJn1>3{ z4E#}h56#w03y+4}?r=qj^oV8Uzc^w25tLB9F~#7(K&gRV_&}VO%_%}JQ-rSZAmSDs z*!Z|0I+O_i-zRku0%m?+=V1dapbs^ zdveNHC;|SB&MZt3j%X@DG*vlyog{ywWI);+W(w;_yxYDVT{)H6zO2ZSLZxXV&`{Xk zhOLj<*wG7Q9t3m11wC)X=Y<$?i%&?Kt^t>?0_xpvUljiS(SVD;Qg)mrd7KDF;%->t z2y9Rq0OsWynB^G6xbv<{`BqI-APCJ52+fH~vinp81{(d>kA4%d&ax3XkIaaW1!sQ44;(FRxD@QKQvf@WOGo{0XSMau2j zagkfR8y!f}I7jac{EY*=8VtCi`Dn*>?o*I|UVt?lV_OiFPkodLAogWm@qXPR_Azs^ zYLT5D2ZH-+u#tPTC>>x{l2s=2iU;8(BeBJgN2$<&@2i8}PL}AEaWc)~Hz7KJ_gg$s zG4s*59?$^b)VESO)Y&sSs=>?`qzEr5xw-x|OhEP7&Te-kL(D{z^!oB+<%L?n4_r`G zELF1SA^XvS@8|8v1XAxnFj!w|`%nw7TO0y*Or|EF=( zj2qRp$)XiJLsdf-#k&rf5{KSRS^=Seke%3i$ zWMq^v^g|v)%RWBiuOyoec?!VCL9t58_#K(wf(Ee`q6kF$^umZS4kTw{Os5*U-i@(*6a}t)rz6Q>b1%hI! zQ^RR`Wvv49Impm100_3CX9amss_6I_@g$3?Y|8b~&29+nxi!}@6Rn86H`QzXR0cPe z@E@eY9_pJ#4}f^CeWq(0pG+kEE`Kg87*WWiio4sLtbf;DTO;?qIGnE%q6W^d-GG^x z?x#z$S}#|lyAj7XdP3nT$6H`-f1mw)^;k7Iv&1yVtLwh@)Gu|IBTW+b``^g#KUJ~Q z2jntCcvz(?LR>7uurOBCWkMSi<*DVKd^!&FrpuZ6GcHhbLFGXuxim%Jg$=OqBna4+V-_S*N^_dKV=?suw2$wZ& zwB~>(jRDfEW8r`eYVe!LYQF}n?`)@c`LjfJNRk^;Kab8bMMlVrFf5kS5S^4{BMC%% za-uY850&OqXovi(%e1#*9PuR4Glx41ti^V5VRUdLEZ=p81bKNjp^oQtd%hfK=tnk= zth7|-Mj|iAzbLGoeqC+w z4~O*c$JErjJTXr;HQ!;zUn^Cc$(-kZ9J1L2zXsb4xW8Z=!$%fgHu&dTH|Z-^aX?+N98v4fzcE1_-%=rwlPjYgrB-XcUPC>FZ5F zD(M=A?r{%!XvB)Xr&fxrKoizZbR@4zWgLvACZZCASX>cXnzM#`{iuzMCB(K_&wn>8 zAMDBU%eBuew5_uO+*?pkV3iW8FLUkWGdMIfG%|7#1k(eRU9T(l12I7@=gVc^RyOBr zk0j2W${p_Nrn2sq1+$KDV*_t)KJ58`Dq}R-?WLJ$RK%IwTsV|Qu=h&7p5=d6bqH5` zoC#YmvDWkkWzUI}k9Zdn0-|0HQGh4GZPan=rJn;j->7-pyFc^>DQ&Gd8{qo|+SY`k zR(W=5^v3||Q*&v(IRl)a|!i?w!4hvi*v+B%>)(ktWG`p=qHVnajH0f=V8gx94n zKU}55FrQVX1IqHI(_xisJgwHUizZWSjbSU(sdFqn*gsT?us~rRprtf82GE;1PXBxt zAuT8o^=QLQoY`4ReHi=HhPEJb@70>1fjkZmMAj@ZP9RrcY={3-%lXWViIDT&)_uB&-9fneqcKt2q8{D0czYA@;JQyMBsjN(U!ENa?l2un1u# zFu&2ND4eJ`BlSc7yI$$(q&VzwTRUxS-R)VPR}u$f#VU_-7$KA2fO3*ODiXlm`{HS$ z=fq?)+O%RuN-#iQDkHtu&H`#C>58TKf}XE?L)pmj9(vWL2*;1Kv!3|=d_`Jmgu8Oz zSMsoHGG_sI!d^(JLPlOrmco@9iOXF{pJT?PLgH^}Uw`v!YD5izIOZN{Q5_jkAig{3 zr%w!naiB4IJh8yb{jU2tr(KkWwjoi|IB%NlF|scg_T7m5an8nF^2vc|6A>V!eP0sjH3yBDqJRsSEQ7n+|qJP zezlhCtM9{G&+s6(4})QrbpaJO1A+c4i>O}-S7;{8m!1m%oY{|$0Q70EEGby(7=P_o zVAl$hgqRZNR%%jXsc+yB00Z|ShkhQrQzPo`xo+3{`K{MSLPmk7Cx@Bv13k$cYtQ|@ zy2C&UGYm6~BuyIB2PudI^v-mxhO^vXa`q}Du7|lH8{s13)*b8rEa0Z6cDZGYWoy{~ zS^tr|G_pP+}(wCwad_W`Kzi7|e!uh)-Y96GNb6_`ZMNd1Wn<3*TvXh+Ww`yr8< zk$#oK=gjuwQ)2OZiwbKn+oSE-KTSdXj9~kKvQ6RMH;ZduxLO+AGBa<~j4$s$1i;KF z!T^6y`P*C!XGO@rbL-n%3TL#}83POgWlWIPQi_PLNEmGXx0N~mf7K6ug3GFWiKc)ROuz0p`YsIK1z=RmoD1!mprrs|c^stUw8bjere?W5Nc9O<{POZ@|RCe@HHSPDYcj#7wzOUhC z4cO$PHK@&}zP)NtewXI3Y+-j3R(@L9U|sWQ88X&)_7SAnL=aSY$)(XRTKcwPIQh%W zuvw{vlY=B^S3CIwT1K#DS%zEx277r5o2|O^5QXD{-Slht@CMLee0bdKK?5V&R4Ty1 zIbyCN+u2foFe{7*f9^P#gGh_R(I=Fu#!cg1&jmPV%ry-sLPaE>H8BW7nkvAc4S*XG z*TLJOXM*4!H?aN9ZxS57?e}G}q@~gC*|BkOQhR@u8Dk;iQVF$|s`m@N=SoAPF1G^a z?P^s3QRKh9>y<|Pm9z3|9?6|0aT2vmcnJPdW>a3mDjr64Lte!BbK=X1=;Hq1BmO*)tzxa7tHb)OY%vyFW*^!vAUDa`&_Xx9-|~;zRCxR zkhTI`?dJS`*#Wh$d4$vEeEJ~>wLCNG6{R??k--+JWl~9<2cBgCqQAfVuw51{0Mho{ z&1%l(hb}EJUgB6V(NZF*oJWOt^G&vvL&?l+4NTmLz&1T4c%4zZF|jtPvh{PH^Ue~8-- z!yn=%o;~BkvQe(u!MZ=mP-1ch-d-;J89z<{de4y>$(17gy%+}**k3bKKP;j5>$&P% zHG?lT%B=Qfx8rmcEttW*@__yr^eZo+o1juY(3vj+^YJf>A17`kRt0B;Zqp|W2sD1s z12!F0{@b9+2p4{NTq~IhqJ(Ep(`-8ftf8Z4dmQeGrd`&w`AK)$?trX6rnhYnIAQ94X^MJmEO)3!X{e`qquS)O2@M}+C7`%(V=jfE6 z#%~jW1_IfgL&A8`EnnwZTfSm;GGzq!|YjRNv*g=;R&Hh_+c0ja&WR4fK4)$kr0Y zhEN)EjK(L%WB%QY{&w7wS2iK@bUpmAt67=r>+VO z5?1?-l|6yhU@R-!Sz2+h5z^j@?iD&ZES+i+nM3(mN$GRPh8g@w1V{tf#|#3@dJuzR zIxy8Qbzrw3vYE+v}t{qE2+NDvGr>ItU^IGHGA z9T$$~>y#!@k<)?B-$Iv;#@7VFb@>QrPPzy*|G3QS-AF))8O7n@TDUM)?XO&=Z7{E&^%E?K>oCRmVXt%tDO%* z;(9YdVPgM5%}*2%jty<}H$M;+9_!U&exFaUJ5a|T6om72^o)zxPQHqvpF#uL<3R|S z{tqFUAU_P)Az{NXgFjs2KQQfu6#ghGbY>b#yPEIZ6!C`;pjd(Oj|UMjcewS-C2AsX zrf}Gu_NSSnvLCbh_&7fQLhrGv;7kA$l3GM{c-Ad&EEGTp|B)N~Pd`w&n-c>21-Hg? z`Wo#O8V+!}!0HF$qK<#M`RA_(2-0J09N?ID!2f_PhFRwW&}|i|Q&?Yod(S(3Ak}}m zPDKOpdJP{#G>2z9)P#y2xGvLG_nCE`j<7VLfFAKr<$j!P&>4>q_JD6wHr0J{F!=^2 z;$pmyZyZd{4eN}N!rV~J|0*%f8e@dd`Ug@AiF+$*8k&hI!e9y)6BvCT+aB8w@x7r0_)M!fL{`1$oEG$5ir2F5#MiE$ds0S*jt7zXa#Cv z^V~^a%onO#(tF16C~CofK)yM8c39&!o5Z>!cWH{97}zpl{w4FMdNI81BK4JyM=XJM zS{+kr`}1b6sQ!e;2DRJl=QR(LCTOwM_=C}?H$>+}-oQ$&q7AdI$WG~Eru_ygVP;Hq zvQ{)Cp>$t zMcGSjB=+qj$6kEb;Jqu1ox@ z!UlCRspq}YKD~}*qDY2k#K3PdONE%gRDfQ}DIq7{rQ-iVd@Ty%^Uav58N%rq@>*Y* zhKj#82v)B-YYl&n(rMynJ$qbu zN$v#%Qlc%o93#4J;?_ugO7$4YR97UDOyM)PrDuX;V7uO|urdI7Lfq64AvncdU;hAr zR@CG1R5!o0zih`JPymc4YQdevG6>(8 zp#Q;N#pHz#h_7%5ZjHfZ9a=H7c|}~=Xlvp9{g(J0n=3L2N3kK2*g0#UJ8^wVT4W{?g z8sUaAhXSm_9Hl=Q@F30}S<1U{8fZl^6u$l48fA<~Wc8ML7m!L8nZ0#y_h0(Rzqx?Q zP~5V%;jsLyfwpjs$nVncxlg>q1a7#nd9<`P zZWa5s7--t6zP9f6&Bn=Lm*{-+K^0NAom7Q3F&rh!QK+d$4(YS&>xA-ozU(1n5rPUZ zi{wkVf_zXLo4IdDeoDaAduv_P0O0mA`so&apr{<}B8`bE}+1ps1^HC-ra zz_)xg@DK~=jOT8&Se?G!UFLcK<5xm8tHJb1vyTMu_BHPPFLwR;%p0R($8Q?gVkeB* z-!#LZoOGN|GXXAfX|Vth0l`9*<`!xnOievv$j@Ue@1HLZDOrJOtiQ7t94XorG*KI9 zJiuqkt^D;B9~ck*vN4GcT=5QOP(a0Q3b;RZ05n5vSVrWNgGddpIHUy{l=ubopUE(N z;_HvzPU2}yt-sW3M6^SRJJi|vZv38R^sdi8Yn@2QBB=-+QcEN2rO{&TdjuO=T-!*?gnxGBrC7St zIxK(b?}bGAx@cnqf1?)swrU`e8Z@A?Ss8TTi~k}CQxZV0m+69SJui1rv23Pwm;}`y z9pXPu^`Kd3rZ-X_r5^m%5B^FBNS+ATkS|r=t5CN8#$m6HPI(QKW8$=*h0+=R_w+a+ z3q-{z`TwsL#G>9TzY1{OZSP6ScgeO!X&McACu4BEUEzuhO&SSc^h{L+OTDaGKhTXT z58*=7$x1CR{kIK&bpd}Q@>wV>wN*Cw;lG&3A3B1nJ17JeCnSq9;QyjCC{FW-zNB=> zzav|EG4c<``TOOMS$d>!pBISeUjhIVN(Jb^zTKGvxau#F1;Ogh-!745K5;@IDo`TL zf3%uiF^MmanSUFfB6tH*f69kFVnB>NrnQmnHC3>z6$?F!?P=4{JFilaEn$8*9HpdF zjtM~m&TVS%3KwcB?eFlmD_3g=9=@I!VZS-BGM@H)Gpj5de4M)ykBwOP$_ybnlq+VB zF2zTA;+_#Z(k(S$|I+D0K~NrC?pwxeBMlpW*bj-m?S)Gn26kT55|v4`YJMSVqbon0 z)X?I(QF@^5FV`tYk(SKL{YA6HmENi{T|k0yMRR@E|Ksbe!=miIHc(Kchft6hIwYiH zkd_(=X{8a6hM~KWRCMSTX-R=0q`MpGK}x#2`#ikw`~Bj4-#ORy{6WmKXXo1YzVEfy zDlgv>0k@B4kDn^|OIM<>?%}W77i~__fX07xGA#s-+V`!|04j#UZ z9Uulax|Jw0WzKW@YZ+`}ZbFk^g!-T8l1XMc0tJjz_cq@GR~Ly{^nPXXx0k_4k+Ra) z7VgqGsv=oSU6w3$cn@VVUGz-ZBdN3cB-m^`g9L+ zd;Vk&8fsipm${k8(Tgy{<%m0-?nJ=FvyKl=1CV;tZxhc)-u#h4kehVsw}69KgrypoK*b9}A)&0OUCWG*Ri@DawbWHZ6h}skGk4-^d zupuvJL;5z9z@*Gn|Knt&gxS<&2=YY?cJ>Nu;Wk%s&8 z&sJzhuYw|RtmC|)6wl^M!?vF~;q;9^e`NHp8t&DokK9EzIu_vKg8S>%;tKiB-}{3e zpj(Yn&rcl@>0tzH3?;U^#)T8T9D<@NWZN#z%X?G0v_PE)pBpZ>l)PE3O~=Ha^pHgAzVTl^c1J8@i*1{?oT%{U^7ZaOKRlM{0HFtI+~xWV}+5o!dzTq z|K942VtIcM?s5Br=5nzgfj6RbUmi04{v2XrifPoWBB;wmCjMH-MxS1b9@afii3!10 zgns{LrC>mG!oRxhfmsS2AynQHI+-}&Lsj#cL2f;)zzk2^?_(5f-k+m;rMW&=1gstH z@8MyB)0YIPzotV39(+1f@*nHVK#Nwx0zYPp`YvZuC8rwXVBoHCn{lkkqZp!li1&o! zggN5r>);pxn^ROsG7;pI4Hh=|a5RDH`oPXv6s(<@15g3C=zmcG{-R(jQ+gzUcY!TP z5X|=_x_^bW2Y*CHDk@Z?W;KOp3pM_n+t~?ni2{Ch5MY%GD!SC{pZdl3R!;->PG3*I zMm!Zxm8Dem?aAk%yBa9&_kN1)lc&U@F7a6fO-A3w4;Hb%j4=&C2PZT?zHoPS&rRgi zi7}^F$m}*y7~yx?{e1pi=TIb)uT&aaDXij2V{3-5pW#yT@e16F!y_e&weJkajDSj#<&oSIm_e6c2S z$9CcN-f`hd{Q75$Ez$q*2itb(u2~-~^Zn~o6M=AOqTtsBAwA&_e?EE9`xVktx)%Fr z`c22(j5)HqNjTDRwKv?WXveD3)lURGRprX@#nHtJ;t3ZDbd9g5gf&X_x1>7ddiq0C zJ1sF~d)*y=N|*Vrz$}7PN9t7=VJc0prkn>X)I8Y0_U|yoG9b_;YlOBqnB`AwG zt;+uS);8}Gd03G>fWrZS1D;k}?K(O0TmNV)L|HkdcE5Q^IUbNp6zTq#Tmo2_;Q>MA z>ZXxEkgFOemmu-6ad)%*TB9>^e2(ulxzH%DZET9|F?(%7){sD`N9HpctRn1*!PdHm zr!@1X-UBCRPgWWgGa(7^r}}nZ_GwE>W-yTJqMNVJYz`VJ;iU2l%pZHB)wp&9uvb%dNI zqw0j%iy&?Vk@4&UO+c=ru$IJN|G-F9`QVs1+wpu{ zIl{G)3O_upVe*pf-}^YHE7Fkena>JbZCdN);NhnqHz9BZ3fRmqJ#J6?%Nn<{hVz!& z1Ti7$X5*DMahZRB2=e8M3?4XYmh zMsNuO4vcpxw-qgU&_; zCq8rIsYCrIOnyzY&ekGVgYWM8lDw!|Qvf36Z&BkO{Q$!JS{i+QsiiXM>m&u&tS=NP zo~uQoLro;MvSh+MceB)gZ2wDkQABD9c!unEc9!CNJ$(n@FXOH7*-&#$ANN1sBbvNV zhF+af2|JaX@cuUqB#P7$cJ#bi*S0&W0gMZ9d8qni3yn)iH=^Wrad~UD$A@VU(2o8` zVfvRWGqZ5vLT^6tswKAOh!*h0xP>3Ykj%|+FYTu2S6SOGj&5!TkJ)N`|AaP4{udYpMn%B2|M8rbFa^5084K)3 zwb$L)chGGOKycX1_@wIj-Mwl81ismf4^U@Z*EeQ$ys~>1xVSE+;(gM`@*`cu%;1&~ zbAIypzSwHlYmR}+5&=~8;C%~0-;zUC_359{zXc^U)G`VjP3JAY^M8)JagDi!c|iN3 zkf}oKZ0btZNW|=-7{8r)o)8J(BO+6wL%+c(mnJ!`?f0j&cl)!s8qJdSRKZjt%ltFJ z6=y?}vR(&F0gQoI#+&cuPxH;gei{5W&iVoZjf9ldW5*}>te6S^vD@E9#057UPFFsW zWu;Ng+h8EJ{^`@GA@>CNuEiPx%&LJ?%U1Ai@x@Pi^FxFKL}(}&anM%wpCk_d4L8o; zxXzR0;0PUKgz2>S9V3$FNxkLN0PG!sFtM^IkHK+#mOb4XlMCz|>A17<@$JV6y1p_a zLwXG24*;lC;yjM+I32S#nkw7lTK$w?|0}n1CuLj^1_~7FoBKvaEXf(G8Go!P^OMyj zyfbwimXt|i{8iGl`he}5brk>5k4k_m+T7W``XUNX*5t>7uhAryWjEf*6OkPk-F^$8%n7*^Q=87iJp1C`iLe0(E3}{LRe91Pa)f zFM{M4rr|5N_*=a^7)QUl<|)DDSpBz8zP}&D>DD3mrTNB>bLB2^Fd@q~D?035r5_CG z=l|FOo-4SPiOs0OtSFsOBflgTg-aZC$g@g zO+oJ66DmlhV$p_DQ={?fz&EGzHI7iM%&K6l%-wKHx3&J?-^!OSZ@YZ8A45oE)3sV& z@U#YW_i)|wKtV=$j%0TUYxhKuWK;m_DE0Rdii-z zy;&#*n$AdrXxSKh2!6TFSQ|~W^vfHs6=+wX7?KMNCQhVva@Ze^G}$C?3$YHxBRHh_ zd4{t2`n^<9rFu7htAPVYGO&?P=V-X)T5y>@3;1iV=^84&-9AqqQf|EMFtNX$@rk&t z2i%KxA565Xf2N+k`A=;~F0MKmr3DHJP8zZ)(hD9zs0s=Vk;TR@VcWiq>`2mvYS%=RX z+TgkJgWr{My{TWta-e5arj^dTY)>@@68J zU?;`bMMtR)3rUV6IT#{FlYfO%k73k#L~Q!YiqIWWJzN+SzAJPgaN+?U;G0ZMU+q!J@7Un(#+lrAj(s~bTp7ZT0 z4~D?hCegqb{n&||wgvf9ts_D>FKBnv^IVIw_}hQ#@VaXv4WJ0xEr}_P$D~Zxt(m=3 zAE`5ewS))>LNJW~Acij%$E*!r zH$FW8R9bNIb11%&Xu0WjjavZ8{8v(8k+W~q*JFkP*kGtp0F!qC^i%*~j2wd=R)T}w z=0<*g#ComC{k)@2^|c;>-s1cE!?CAOENVi2oH1LXzdCxCVwGa)P%PMLO$(tmXIV0V zas(qf*8H7o?-D{bq`6$@H3P8t_Ox6@0Fl+A;iLYxM-a1U`;86QgWL;bC@!bh6uey+TZCy<+?}Yd@q4qoI2fD&bFOh0Ix=CqK-R{zluyJDP2{ zlyucTNYzsRd9KqnCnUDc+kxW2fCSgdrJ>ZU0e@Qv$yrupDM1dmw7%_Bkysn_!s0XA zYP7VUJj2Ildx?0s${tRXh+$d;p`d`-;5#~m!_7byNIB&?t7>Zlep_z0GwWk zMt)C7&0J!;u+C)st>)z6VuC+kI`43uO5E`?B&nH;A{@dl1#<3vGl4s~_*-r_mZR&u zx~J!%X8)F62qBGSqvfrXe8=dFooio$?jM&a@BAK|y0$}hz{Y$>O|C|vfcw=Jnt6iP-`@_ZBg^QE6 z+{uWP)E6!XUJ>H|{ZUkO@bld{aSzM3^{M^ip`A1!^WA{~?SIIAG%%F55I=|z%Y8-v z;=%xD7#6^S3y@b<{h5MmOgBv!wFQU5ZDJOBLRFvEM~xoiwlPQiy9|H}7X>FHN^5w}qs~@eW*k_iTj%>9w( zN$jrxXP4({WfQ?={W{CSHYAc$E{g?aLnAQrCL8`yH|47_1cs^T%I|Sqtr2n)gp7Xt zyD@F^L@Ksqk`P`QQY@8n;YkA{`k=)_iQ+oj>^;2kz(>Yy)%@p4?}ad|nc!oWp-7b^ z0RSr4bRal;ZXZP1TyH1_xUu16Swx354#pRKGY|44{4g$MB1lPx-mx2)ad3 zrCd_u-y;5hU6(x>VWh#g@~-$Ius81%hynDno=Du|hNd5Ieu6;+SxkNv9R7Bkg;oD_ zw4@-`B>nZGg2L;xhqrPvOs$bk0=Jkdk#PW;C|F z1#P|>C>6f@#+?VSqh%{?OH961uEK(TO}1D2?LBrrd&47$s9GE~>p8M7+5vxaXQWd7 zS?ic|o{V}_ayp?xhV&`UNuwh)rv+pAyEt)d8B;`NV&0oU@c1PSm$2TYjtx3JA7a)* z*#7JQ=T*itagjq+yO&6d#8=m*^94W0$$nt8yl2Kn%D#Gl+#WpB95m?*$((S1YC7Pl zLJGDoqD^8kb3$k!|JaoN+4`82-BO3?DI^!|!_kVmFeR)1GKo%y>rN@J>b$6jPhciw83B_4P@Y70=;|WMA#8v6>!k?T zfmA4YN@*@!GsPd95)j|OqCI}l4{hi-4|=tAr@1(kNklD%&@m*Vx3v{RT?eh!#33cV zL(p$7=sOaTq+#-cq180yUx%i;708xhm^Y6m0w0%^V*-v_8v9|)?ws;U%w60s9leCQ*-WQiu&;3+{%md|`WoI$v z|AQz)sCq|`!PwSIzRQyoOTa27HRBTB;iZ#GlKn6#{OM zd^5^#)CbWMerj2NL-itf7DCtIcp=O6ZMFmLUD4s@{`2L$C!Oe8*0OH+WCIca5v(j8 z!ebt2D;SlfK;Tki`!rPUkjaPM(Z-|fqujg*_%C+{56G!ZDx7}-sOf3d|I5i31o+vw zmK42D!{LK*i9wA?YzJ{NRyQvJwYrUyH_fVjfkI}*G zb!A&u*=OK%g)f(#acI<`3bgX1d`1tLD{bVg<`PoilT|}Mro zd~`TzEVFF=UAPARD|Zs9G^{(&b0Q5VJRGIOdR^VB!GN+fYmBVw`mrDD-341Ijr_PU zlae%u8QdjgLt?7lKZ&JP7Uk<~S<>Qj3=c-r(kB1=x$R#>>!3pp^g1%K_L<1@!mqjI zX^dyC@6rtE9b38bGe+VG-Lj4!L2NCG_wkj2byXo(Lojkm072|vP(8o*5~c;B_$dW@ zQUB#QN*2d&_)tjVm|T2C*c!OQu|ovm00QW3#0#HNB>8Q$J>>L3_>EsZF*X>SJBkqh zPZh1YQ%PpfiX9PkPgvp3c$(W^Zzm6hmrQwjpG+9Hl#b5dv?%{ux=TO-e01nxDs$8C}zTy7`5&$yEZaY!&AD7*KAOI-KyndJ$I3G8iAvynD z^8HVM&u-1)Zs2Hw09+qgaU~*nrpzI-e;)G)@V7otdokDc5MN}!`C$a3{k@dh)7-g3 z3xhpFa6fJ79Q%$zb@%pvy8#2vyKAssaK8Cc^VoOzZ4LZ(3aG$Ys8KA_e*>Qk9Iz7_ zWL?mSV_-^aAG!*h-ixOBg?$fOZz6907pFAGfGFj~2M^m4xn0FhfAe;l&iCmWn!D=0 zlm2g3CD^%}s1+O^iU4{U3;2fn;qJs6D)O|O z|Gc;Db6Zq8{4i$T_Ye2KShN*Je1I}ULv4kcBJJGPa6-}Qr(Pp zMn!#!nXkPAtpES5JC;a~ai})1A{MmaAuER~94t1KJ`GswRbMMY;?2`pRPl%x+gvR( z0O%%}A@@zjv|I@15}xy9eRD0Y!)++8g2JGDuyNE1Weji$z7*AZvvwH^*9k0o$FPFU zxVn=PhH{c_f@h^<)AM@4#lMrci4L{0T+621HKei<)x&ApRQ@m~^F^X0OsWqnnp(7O z*y<|fO(TO>UPXO^Va;SlV8#xzlqf&s&-a5&Dl991xDgiYJT!-Hg!FdllCrKd!tbc@ z6<`1?`sjI6-|fFT|4hXCo}xRQzV@-qF-N;O;6n^hF*ufhPtZ*L{qcGZhjHPORCcUv8A@!?%&$gUBNX00$*QA}nPAmT^2yz?+QdN*wpK0$ z1^ zF-!F_%R=zlavHH25YMr%7=SEuiOPn?!G2sp@LYlI%eGozrOfC){XY=av9@S|CKjZ7 zn_fNewoj=!ehFENAk3&h$ZJlrIqN|A`Z!+|7ws|rnGh%o;=whppt#TuT*h`eZlY@g zA;~9!*mRX4FF7}(!^C1LS}O?kGSKYtHU)mBZ%?3t4~eldzXit)xWf=BkxotP*;?Hq zxU9(a56{UM_Ekw~DVDSsq&Av}(F)t3(>71?5R``{xrVvqhD*-f;5Ihc%r14Z?=JhD z@>l5X`pyi$@8Z`pZAPO&?!B=w-oapmA*6HrzE<(9=$Hs^j4>?}Dk#&&m=aYjCyu=6%{XJU=R<^-;Q?NB5B8!__T z`sbtt{FmBmGQY?pZ8H5qy|u+E4_;uDxFS{jA`(kvTYJr3Kn`y|Bx3izKs_YHewRT6 z>-Hmltnm4B2hmJgPAaRD%G&^3U#{Ne*&1P96!*{hQwNIRl=#6pFyNzRP9)MfV!sBy#6$p&P>Uz2N z?P|Bnw-9tk(rs^g#O%o z#hm_(O?C(!EGpNiuC|GC470F$dO;m42yi4s&otvR!nd{kQ$dP1VjfuT64evy2H!|z zto=JwV&_Qvdg>GOu#gmbKT<(Qu1_@}OQjh*Q;}f36(&CqbWBRTN?D$9dLGe7<(LZP zJHyubPOF6>@Syu$jIGIO{-C_DifZfnV*hy>1-Y<@+mO`VoBs<|4Q>9#BqF!6xFVK($Sf?xs!q44Y09}2V`k~oksG!`9|1f}KvVI{gE5M%ovTxWY^xQ^KW=&PjUJSato%+a zmHz|+#e%ihb9?P_qCsrmIZWR6JhC(Ko!ti{$MPknp?QEfQ24)L)O)??h}`A9;SZqU zV2kJj#)!>Brzs*xw4nw4UelxfB(7dL=NAe%L9!1_#um+nM>N;Of6bxw%?-VEK}GOq zyR6FlZ|bG-XjwNmzic6Kqg(l{v!n7J@3N-G7$NW~=V9>Y#W1wd!RWXFd)OPkoVzq1 z-iV>B7f1EC^GUNkgSO9-zL`Wvn#l1?p$6dhFokZvl$9l=0IrI+WP(CqiS|N0=9q#A zv-d^qD65UQl?cgCzZVzGj{f~%d~Dg$k;rukek z*TVVD+=9Z0wP|J1mBezRD)L|t=GRR+HX%fgWmlsZuy$Tqtf23N)K1L3Bbtgm{viHp z)%;fIW`K<14GG?xh`op}JDGn2zK zq(?=nxJyOAxDXD-`FE{l{K^j?C}0F`AMhj?m^?HcF_c;WkqK6$z-1JDNKRjMo@z!= z=TT|W0p&HLv$gR6kKsea0ttjJ%hAZl*w<5Pucm?6{7eHcv;a!(H8k%b?)a}FfpgZ69NU4)E3Uc@dSj z<6~Z1Wml;G(`}~B=!WzXNSff*PX6-MxJj3WildkWH{u30`-1w$t@!U`|J@&8h%*3r z9Zvddz7L<0RHh*jH%p)kroK!{aVxV2bUqfHM zwyKBuhxQbxjz;@lR?)QFz$Xh~9G-p~MvEj-A5|yy?y_~yN4(_qlxdW%RG?L*ePe?$ z^V9wGU7=k$!kGnB?WgnXsG=oJZiz^7SM!h#NJnu@&&gC8;trT9>X~v;j#CKRiYEwh$g0ct7~DNfhtLLMTKFNyBM=QpbV^M#BTor8*zEp19a0anAK*ZCp+gu19Sktl%!mBgpn@y6s`O6r~+v;aEvwe;6Ve>#8XI zW%9?+B;n8W#DQK+!_Ckg+6&nzabBG2)qt`eU34Zi$~13mYuYft>tj%|wWZkH@wHG79Fx;Dz^yV@yXXgm_eZkkt=Ylie-TPOC4jE_3| zfi{yA#~*ntGCGy{G_b;-zsO^@7gv{3W+g*p9CiLWH^7ATC;J&o4Ylu3%pP-7 zW{ab80f9ZM{ap@X8P}V5&5QetNu?64jkp)>BJ5K;bHdG$h%1egZN=@BbP7CT?~;p9 zkYg;NhN7wwJ$oUIe?Il-500Nt7Lsv#4?TuW8ulC}FnAGvjTv?oV!`^QUNaQs0v}J6 zaupB1w`|{5?pm(YTbfJa;m{Jy>3jWsxN~;*#dnDi>>>7{IyTlYo0P9oF7wv8mmvfJhFC@&^D{x zjKV&5Fe}zH%%VjsxiRZChuopom_)(R#MVTmAtGjfUWlkroCy<2(+6%-K+QjiYVWm)}lKHVl2tWQZT z2o4b8Q;rDnL+*bqCoEU0(V4MUQHneo!^+#-#f1dCyq zlsQ5ucpy(4-_rHnei}ZI6C7d(%gM>{*@ZQziG>OQ@mP+ylk|}GVYwbuYjWW*<`klz z=gty_ABHI3E|RK+ESzOYtipah;(4&@FetvD#ms`BB|(QgWkon#rs#>ZhFH{K2*X=n zr)sJ5e=&Zb2Y;`972QA1?E4@Cj}ycwmdlyKS0o|3O>8B70^hqtY4Z7D5Zlin$rYbO zD2rxXeQ&Uk(+46%rS65Q6<9Rl4|xO;v^u=4^9vH%c+6!j2Ao^7i^6vD_TRmKs5%at z-$i`#Ldx!AV-Je9IJh3}^&~=7(FKXzT#E8|d#&l(kqfPa*Q&Osr1eJp%sQ8wxT-Oz zV4SD?Ck7%aybkG}-hL-q#%ZCJMD(aqE(al1la4HRp%XQUHCB4 zqm0huOsp;+j0KQzr&QO7FP*{6?_}Gy`Hfj6uHnynMj!HOUb2;6SW0{;H)6^gMj#Kw ziHf0Zd;ZAq5EO?%QqZlO9Gk+2@|1R_;IvhH>dp$eJF_DtACADVBj+oh*A#m~@0)0l z&%0B-GM7ZA5E)9k>rzj~GqG1chNkl#qJ=g7VU(%f9Vda2LY@e!yZmOfN4_8x^^0tU z?g&0JU-HhgVt6C?S{_)(BjXXZA@Dv8GbCmi@^x18Jsx6fD~srcs^zF=VuNJ@UlR2g z7q2q10MX!r1!RXcv&PO|6UCmA#GdZ3ZWL~jUs-l?{tITT3^BlvgAVRD%lN(r+ZBPp zD%oFOv06Eu#z3p#+y_FAl%YFU?y#<8;U|k&cZQDg#re|+jOFb z5VQW8;v5_1Gk1D+{-VID*&Bj?!4469Bjew30C-fH4VD5qag@esb>Gr?x`|AcESh>XL|N7!J^ zp=4c+$&1Co)&y6dLp2Fi51%!51>O{T@TkN`*x&s`U-qFJDv40-YVHJZ($5`EnD~L@ zZ5P-zg{^SwyoIum3;qE4H?~8E0XOJcJ7q+xjhdmc&7ED~LuFf}DkgxR{x0hw&=;SY zJFiYi<|o~y01}tK1i)qA^<}c__3V2G_<(#2oPQ(Wdnnh21>pnm*+Ik9(Q~lZyLrvq zWHnZDFW==v8f;{#%c{| z1)CG!kJIJv(*<_wZ&Qb=eO}a%$qLYH<>K0ZV?%rh-lSi_5ddnnk8FQzkT4 zrg|A;n%`X872`8e){Qx@p>~<#zj9O>fV;(V)*t-YH9yEZ%!)ndB^`@d+;_&{9_+7S za@15dMPkaaSPBx>8Dt6O<28lh)O^T(&?VGMn!Fha)MZ!!8w^5&h?yDzyTWnEoRe2y z=xHoymjj%)N7b~{_)4!eWV?@8px91}@h-j2mlzXwU8T~U{uVN$rGx@`jSs}r-?WYq z`LjvCbTvG|);HL3eRyV}cTH(TTAC_@;^XS{w3xlmF5?Ssr+d)!Quz>_Fe)4>5pN~! zJKo1sJP#iJF&4B7YLP`BHLo!a+Zz@5@>HES`;DFAiwLNS&uWRG{ZP7Nu4#5ok|BL0 zQ-|4`M_I9dcuA2!D~lD5eJ9SRnm@^ED18{JdNpE1UvS)B*QX)Rz%;PSe34th_g;{| z`dNjnf3Z6}cQg!q@$4kn&NjgPiDTg}zlY>-!>*cU+)N44z_L;0zTW8Qhv4w6&5R89Awv~q z?7KuXXYuFK4A^?-9$qj0Mv3o!pNHtP(Z$k+@~=1TmNF@6NlATH(a=fuU6e%9%w#^w z&y0yG&o~Of2IG(bmU_lOw2_mivc#$)V{PVJ@jc)QBYsUIHOH-fYdtGJ`Z`2pQUWr5 z*DoSjb+hAOEQsh1IhCWsC=rp-{zhfaB zh35Up#ujV9$Ln}DJS$2BiMdb4z@)STfJus1<9#a1s7Tps-=|Ra>w3{22txi>l`f~H zGx%oQ*wH@Av7H`aS6U1*@kl)zYM z^SMQy^X3V?z<~ihFAOgbnBQ4!AS8kz;sfi_Y5A)IP5YQ^1?ZN z+0wD}(ch5j!^f9&U|Tkf7x30+ri|;=Qy22XvCa>QdtoLcj*y&LzA%=DDiN|KCM(&` zsJ>$R%1fSO4Ru}=)lhu;0)3pT8sLHc(>gY`JESeobD*O^ItmV~c!4O;q#gbfSl$J3 z0R|KG#;S_Hg`@^#W}_^8R4J8WAVI#;407&!?usG{?xQN zV9wXU($ll;*7E0ojY?Vbrf>^z#Zr{Sr$@GiFw#k!5jjDx@8=6M5)t(Di32laPuXA( z-s4y@C=%Iy_S^h11g2l!r8fnHOINQ9q%m8(0gqbp0Z{FOXdq;(GQd-&Ft03=)Tlr%s zmGYkCjY-?9#j5k4c02*yP#%pelhi)T@-TDzV6m2mDbk_VQg`B(u zpH=!Gz4gcY@Z=>COYInx`?HVAGZ=xXGPTz%SsL`dXVqmCDgk*>^$G3)c`JpzYfkLf;ap&DA9F^;qJI^=2oANu%r?_A z5AdsMQ3-7^>gDLy>doV%VQ3}kM%pPZG2O&t=o;nyLsK<($F3CciuQCdORwdEQl$pA(OA=2}%KF=Rw-R1G$%%@9vxl>~Lb0Nbkbq--N| zLpt}Q-ZawAaQegrQawe|yx?XX+22P9AXTvcVsgZ1T_IlIsW`?MqdakEUw)IhZWZ!_SQJ9$wycC z-guUYqav$|YhCO|hu1sLtmlMO-cBKpvV`}5(3cQHfJ7mS&lQ8c{`olidL{PVBHb4l zn|7H=M;I{>*>|?Wa&$QB)srs(2C78Vn)*j~f-?@oLUwiI&He)b!7bI!Q$W4o2+>ny zJi9Is;FQ_YeQ=7a4VwKut-13n2CD&nT%3UOtRu$1U>1-7?HyuxYHDhJzT`?mk|c;5 zh~AqM0}Vi^`k4LsM*q`}I;_4F|6kk#uAoE06OD{l|6=0~Ki5`% zgUyqRsgFXOr^7=36NJ5fj{H;e-ozy6);bCwnaF?Fd71htVB~{-M}x4^iL~&m_?auN z|7^bof_qVi!)OWfA-Md0pKKr~AfHlqaCN&-@i{vmxuODc)crF;sNhj-NNqzmBaC9$ zklv*wGv^lP%DVGRGh*-a7yjeaCV&IQLvW+sH}{t*19jSRs*&-+;_3%w{E1ZhmF5ks z2ULAj?jxuWa=pTL>P}8a2TNT7HouSSGf7Afyl5~TOV$SHl*v3Ml4&sm_zh z_!?l;Mwv0JI`LCdRp`Oth~WjD%lxP(QwXEB_4W1r{f}kgoy<~F=5aC&ZOqKfV%Rjy8~!j z3d5{Ewh_5n2_bPlhNj)x7g6e72OT7@pqQ{ox20ds-JCaH!e%^|d7|iMn$KUG685j} z#v3q{G+tU!qe(ClC)|s zxq%2}a>hW2>16|9B+Xj3w>K#AjJ9`-ZF%BrO#HK1w=~lwH)U}}2$z_84Z+CzdTiRO zW^^=(A0GpsNjr?c)l{9U269$9?Sg(%W=-P=SNV-38H`cxP}~5g8_^bYMtF(uNujdH zK@dF*_Y5DG)vkjoHeb7YwrX?EYu}>CxUAKzDR7TDZ6Pmn76$Kh@FSqaz5=x&_ zDy}uQw03&Hepkv3@+9{#AG+=*!R>j-4G!AVBc4!$a6hf_C{(IPr50kyE6x z{O$7oa$Dz_8p#{TNuvkX;Y3Dq75*et=hDydED(roeSBIsf3y3AjCZ0~|7%*>9tv1r ze^ya(;O9@5C|MBDU+uc8od_5Kk_JqgmaoV9oSyOfO0KmvDwqJR6vzz%#3+6&&|umZ zZ!=vef@})d!qHZ1r86Cc8V!O#3E)oD_ERVi-soYJ-y# z`1p8kUtgh0j+v#cm=sxCnS@~=%+Nc>k%hg8nU(d~5Q*W#02&P<$m-y?I?K_V%*;#$ z;;Cw@&Xnlim1~v3X+z>QMqNxRC*Q>D)eob}5BhnBC`3KSP$5D>LO@anR#v)>4pV0J zay~vj(XTO1=le!|ou8gC{WUBJ%3<GUE!^*l6_EZ zZL%p~+O9~-F16t+ztMoA{M}EbzBiW&b>uR^aCS6E>(JU&5a^pgcatk(*fA&0+t25C zSng0>8W`JjLq)|{qJ{f;lYlRVNiFJGU!VE-uL>?EU;&B(&2$1bq&QU&NN;*`VME;% zX>h(cn0a`~Q8LP`e=wHYjDEo<=DOWR|LXSocEK1}s}k{N5tKsC$A4PrO-)zs=b_fg zSC@RlrDW}+UU2QZDfL6EyzLVo;yA^IDh|J9REVd3;j1TtKkMu3TU(Xo6@cK)tn93; zPzeb+C|0QWT(!dz3a}R8S|f?e-%H*O+}Jhwc`hydb_<6V4&lxK$3r|s3$L1=NR+XH zy!_$O(Y!wmbCT!TtQ$VX3ocBFUwjiPBBj~fmI#32J;|LOw7ppGkGJ2Ncw+N&r%hqk z2Z;))rNvA>+ywNJ+TJd(@nge#VPy*tR#G-+RcGqTt4oTly*GR!kS(2LfT{vK5dhe{ z*J>^r;@Z5Pzmm0F7j;{^iI~>*zyB|0rXxN$|1atWX}~L?U_2jeYMn}?^Y=d;BiR9k zX+~s!qvbbF1>cE*UZWZN{nP{AEO88gw=_`{)XCzYMy%l9V&9Ji(0a|O7U*vm9$3A> z9Sbm~yN_Esb%DPFPl}eAis2H#P29hqo^H}Z^wua#42b8A@>hYfg!(9bEzrzS=5`*9 z%a`}>NTVVDst9xb17P_Ae~5jf=!UfT^gX9bO}3}KA+mz-9p&fRJko);9MYa_b*7uH zJfE-&b2)=$e7<6f2GL+17WRAqeezJ2-`G?bZ)x%>qVE0j-6C}TM9OwB%_ns0PZX8H z0Nk`>;`g|l87nc*QbnN#m+ogTSK1@m2UUG{VW%2PgKN+J z)P~a(oAsBC++N6G?&b4&WwQv|DM#0dIU!-9;gYGbRBC?m`Folb1{#P1nq8u-1O6`Ed_1UDd{%sU<(-hcLx?BpqA-Wr^O6Cel^-G z$>Q|FddirG#Fguv86SP&R^Mo0SzXHON=Yq_-#SMp%5IsS97JA~aO1*#O-jsKX@H;{ z-PIMptwK{_t~vZEbpD{v4&@S!4?Uk~EX510in6TIj;uMWu}yY(Uua$Bh}TrUMz0ZP zgqWFH_IcYy9xTv41?FVfR&+D^iF!yH90Tln0@CbjL*F}IYJoDV^J&vN@|BqqQYBtm zx(Pwtvwjl^QRduD7_?c1p3umB!79pL@Bf1ZsR+l?V%9HDv9*$vufk_eD$&H=5_JJw z^qGMB-QzF3DBCvuaq6tN2Ltok9Y3y+TgLS?he)5HY#kfVq_y5A;+FY!_WQ44f-i{$ zAiy-ssjqM8Y&O6fe?&HApPcQgI-jgj`kUx;{7g2W2L%sw(>n4IDU9K3shR}t-=I`xo4#vK5t3%J7wF3Ux;V%$kVo<$&x6veGrItfhU;fpxku;LCBB* z@&K8=?(+Tv@G*LfUd~G?0yITbk6?J<@Mj*ov5O$kA~u}i^-bOM?ezTHn?#n?KhIJ* zEebpKCo65c=ZtE0%=?8LVhjWFejxbQT3(iMB{=?REo*0>OI2oI%<;EcxXHILLI*bSEt3!q<4-YC zjw}FJ8;fK@T0|QyJy-!f0Qb$7K!=~Kwaz?N;8++{_j#LHAu6#OwDe&+`wLgvs3kGe zq_RZN2k|ZJKvTVS-mbM8?IAjP zyOf*9@D;~=%;bkQk0iUFj@rw7iM})q2IJ|n9=tNWXZOodU3<u&TRm634)&U5VC z#6?b@4n`cOo;JXWsO#<;(Yq`xcHVxzQcjyT@Vaf@I09t&gc5CV9j+n0eg)=AS-eSj zWcF(~aqK0Ds9~G7EGU>}otH@&h|l9iOGGw(FD9p20AvtsAf|Lk=pXB3;^7Z}^m)^B zkT^DNR^P!@xx-#+s3vXp&K-!R|Ce>lnrZ9YzStNpF5SuXJW@W{c`^Q~GC@9~^L{@B zJ|WmE`q$A_aoXOt`lP{r3o!p1l?#l8RN*y&pq~0N9>#acL6esmujx&d4r9Zbe~`-# z@UzQuvp@ay{40qpc_G93_{Vr+wADui*CWxt%ms*P^HOn0^b$EEZ(~X`+b>e(s`y*y z1%Yon0E&sNzuH$Xywy9zwfCd0L~(q52X=>F_@1ltEqy*O8Bq&dBJI|af>Ud3kK7nf9De+hX@|A~t zF;N~g*8Vy)F;nO?L8>8{JBgc(_G4l&H9EXo&`-Y7-b}h9j5O!>70r+Y=>5TS?6EA#=?5V2Wtnscg<5dApzA1e zukSeL7A2lFmG}?eCWYj#go?M3(cg`UytJ%;46P`&YboX*ME~TOERA$c7ei&RBsL)` zt)N;pdmel(ql5o0T2ae<}1q|~&c}?aIl&)^**i`kRXit8A zcxtVSXl67=m|(lKyD=H+K%Z_jMGy<4S}oa~v`ui(+GAxRM~n2%jZNY5(0%4rR^h+r z0-`J!eyMx{r0(di34S}UH79c355~AX_gpuTX}dvg`(mBf<~-xBGX+$utlcEQAC%PQMLD;=7DIKe_JeQ%|sIl;&m&egY>?*^5wSHO49@CRVUSial+-qeV`Es`4( zkA8X>0jFj5CinA4+hRKU;}M?@u?9RaFR84hS}maO5fXJ)SZo9(YZVB_RX}M9$tKH= zVe!-nj^ec}?R@QoDYLWwtwICh_WJ$PkZzcv0DO@vn;r7xb*8ECqLnMcs0L%Zxa{a> z2vC`T7y=+(uj~5F|3lVa0L9e=3&U^{G`K@pT!K3+7TkloyTjt{1cJM}2iL_Nf;$9V zoZx`~!5zNMb93)ofBjX|R&lD&nVFvU?wLM>>w@0g{@_v5X0h0*NCCwO-_-=*@%7J& zL0aAS62>uRGSCahN9nsOHNzBIsUPx^6aa-5c|lHHX*L!QToyglD8DW@JH`McXgd2D zV!38dJNIeFv`0hpQ$zoDMt^iPHC-Q@$UFxqJsAD>vv5{Y>#=#4Wvh>{Z%R%r7nCw^ zvIpuCJpL%1@OGil{g=Z~TxhJ>biLZ#^ncCZzRjz$x_hzn7+(7ii)4tILs)&#V_fJ& zWf?Q$Gdy2nDr@C+wXjY+fhn*U`L7Dcn~ei29SB|IY^9{!$wq2klJEzg7tJm0enLP-ngQ=Ej(D7s^dIGH4epC@#rHluaO>ERCfm(k#KI__cS7>J9sw1lGhW zo{cY)x3-2tTKYdAk1PxUBrqUY=5LIm&@s}|zSf;PpKh$1!*~}!tyd9m`NxrxxT(%d zk;@@dRCOj8S&e7g31X0RVF(IcMswGNj-f%wcgDFoeQz?HhONPZh&Q{56x$jureWF% z#yYH64a_hJ6XP~2L}|l+2Z%?9+NdJh0V3r(h#=n+-Pi1PM`gQVNNQ5fS{}!P?m86rogwg*QQ9;Wefr-LdzjZP7+zjY$c+jfa83l{tzlW8g}`9 zQH2Z$_af%yu^qI5JXE~qLs@F}MPKKGlCi0i-O^oi;YMd)ZZ%DZqDS=0@0VdydkO$> zL)9%{AKk9@+I-3S#knN}wVRwj(75|bOedh8BLh9aKkl9uXrI4CZkHj7nmPvZ{376I z9uQ6pdt#=}iaqFfCqhOfaXcc7tMP!5q&-D=8*WU30JW!)wA||oj3h~!U`+98LE;@W z&G_gbp@p96vYuua&~he?X}3{u`+EF~?I%cGWo@G51QH-rF%H@y7&T%IAg+T68nJ1S>|f!kZBG>ITsVElkNs8*KFo z^QrvO!@raQ%R7zvGG|uXkYgNb=Ow9v72XB_f6oMM?&vM=>xp`A zFa~oE;Y2?Vgejn1NJ0=-;!UZI1E7H~=zQVm5g>I`;U)Sltu+U0Q}qSJ=Ijno%$;7K z0p^F5%VRg32nW^uZsP0cf+@_(`-y4gFmUCH20~EXNyL+k2t&>vQ^&A4xCg@MMil7g zK3STPP}^ool^C&#eI~5tduQyGmG?DL`=cwy_Fvw>N=1j{4^o5bWTNYlkzHgN+rBC) zUaLn~;8hu8{QRSHc)3)Pf?vR3k>B!xBH$D^*cbKmwB=EuP|wY zKV}RTJl7a(fz@x4;Qof3dgjB+z9<(vX8bz3%T%N__^B(v=jS{XW#}b}ANv z#G7CGYm^In-DlDE$@*)m%?eH0m0~i zF&3j>PvBho*pVyOlzH^KFA}hQtEHE2ej~mb?vQb2r*-KnC-#wYf~2`1e$q(cg(rS| z*hTGWBsAun$8wB>x{(w(*?K-aE5O;j<0=mgi;^utMSsAj*Q16u9~bA_nb`&IyPj@m ziNHD$>gCDYj+)v4i_C7xofRm5qPOYZSdp$T3j8XW`f8FL=4_gA7K%>UH>FqM6dr}g zRtl|2m>d*8k5A`H2#!rO!)Mv9g}MV6yE>wfJHN%t9v`R6GlMm8Ss#y0{O&7gJwmYW zC!HSQ=Y2KtvwuG`gOE^#uZUsvEaRMnB=ev0t0tKlhi&N8nFK5r+Llc~&Hdl==^VmfCN=qLq zbYMTEi*g%xyoBgq(0z`MJ~j&hKPXu|!7A6*kxOHs@|zcy3`{Od-|#r%OAx2(+16G` zoe%BgmPa|l3aAq6ElXCv7eZU&#Q*Cn>}rTYJUvg&&O8r)@sm8A5Thps>@{@(uf12i{L8wbudPJbDOuC8-p~ zR0mvh=h4(DZ@T#Z7es^-0t=K7VB$VC-JLc?oq9WiRcrvdugD=W2JZm<|I7X3@Ie2L zyHi7!_G8U&jNQkY(3^?i{*BT!PhDUEHHifI4 zGg~~Zs%5WG`I%^Ullak$&%?fIZS}7!lD|8O2K0A?mI`cM>gp8Ap9EaDu|P8+P*I<~ zIuc5N&8bMsFM2s`a8&6QBlg>v(q4=ay$+0-RH^YhE7Q~jAr;27usNG>A)h>?6n>Jz z1#hiQcPO$2=C2i%CJeQ5p3sG~uKD`_jfh4?6qt~F=8W@TC!_x6Ze``&=jshEf3ar4 z6^KL&3iotkOp!}VFzQ=zaOc2_4JXLuG!=}s{NFTX(lCG|a?Bv5QI0p;ads`&lgsED zopmh^tMPbEtRK{U8}}<0Kv>>nq(xikyQ}rVsOKc6S(!^{ZZ4<)ZI;#N5%PMc%Pz&u zY;j24ZGgdX6uJ|e3t9G$x=Cu~AQDDah+-jP^0I+-n3Jglo8^|`kSY7tifNKU8kq~;1g8>ZGs7AQHdr;vxlk&nWvo4PyvlQm?D$t)tE1Kq%Nq%T+mN!EQPkTrygtbAD( zXwD+~{5eJOMrMDKV3KE3<$U`@2 zFo^(2@+@E+J;?A9g9itEiS31d8=Yg`-!V3I$|!{VkC#z;lz-ioEW8>Ge6P;h=QMJ=TulXw}~)@J}c{w900GF!x+T+OxV=jXgC6 z3IA)jnGV6W`S(y#ETh!Zk7xk7=>@J61PqQA_w{+&qfvC#g{2KW)U;Xq{qX)j+~B-7 z-bpB}PZa|HtQj`UF9tU~Itad^|4m`913P)wz{PbwtL6S_b>y|S*{n_ zhsba0Fk8r<6?ewFB=WUrMG*wJ4ZVx4t%M7e|0(2n4pKeh|R9^nPy^ zD*S;FD`w*^{U~eC#lMOKurY+N6*8LHXB|g~E&b)@aXC?l*5mNO;?vI@1pl6d)cu={ zp66|$DQG@)cVebwr@D=1cT2L-)+9p_!YXyJ(;sT*S5!FisGFnp6k4`prq`zN9mws*R;IKS=~AAudr5H zMhbY-Oi*j0=_Q3GZ}oZC1+KBt9o7GZv?iVH;GrV*yT{8~JrpZVbu@1w`P-k$ z4j%UB-!d3LR$J_(FDpJ4MKa8H7H3Xk>139W&87+@hZO`-^z^J|5gd>h3UnkK1g42QB~;-zXN5S~kKZ*~x{x!z2mh9nUwcAr zX2)j#lfzEFPx0~Rz=|>Oh!Uxkr+D=ZFBIL(0q>0|k5iZcH){3}RT0_SEl66;-A$7< zG|cZ;WqlcDr>lSkA-H`D_yLN@_`M|5YiG%=w_u6>BlsefE>>&J8fW?3S{dcbYm&8C z;zR@Ri8B(JX#1&Yg=I%=vK)&I6G!`_QX|qn+Td~Asx{6jjqFq?@91K(qUl6cx{nF3 zHkBRJ`_y0jYqE4V?c@k?JIsGR`_mTiwC|w~;aO=MMF!Pjx^j)!zdv?)pOp zsm#Oe3w1;r;`?53hU3=|h0U(2vb_g7v@Bt|W3|lUkpQ+@MDHS9TJhe}4El3na3$EG z1GbkxeDB0bBO9CgKrZxG{p?3Gl%+~ObBfu`_T-WSeX#jC2I{)LW#LTk31Zt8ML zex{{J`+lxidv~+Iv9Cu{D|x>qcN!7f*=O+2LAQsBlBH%6=;;-O@t33Xf^)^5mz+w= zi7r9s{of_%s~eB4wyWjc?e_oROWI)fi=KVGqOzNFO#9Asv=IF#7~rUZVpHPu=A zoWJ=J1I=|Q&L&cHO>!Bv!H2>@Eq4y)+d4MejaSRf&fubvi%-*e_)b1-+%4QbE!aLC zJ{}yHfH{G6dB7(`FX0WJ^4+f6W~!9V+YRLRRODyG3Oqk!Ix(89t@M!Fzm)tETt72U z9jzF1o?%73d>mk5udg@g_T5iAyY*w?Xu>-av=#Du?QN4<$Jeag2qk8*J(!$a-~38Zp|l8 z>oY(@$!=+FpR(VG*wLjjo0@!&q?FUkQju*%S269m*RS@LdwUH(Q%lEvV_1tl)m zFL46+c{h3w-M1IF4CwwUlF)pyl$(e+#ao#t2ld&@xk!ZsCLoSMIPZaZO-y)*T*PvV z6#qQrj4ZX**^NnQ+ z)Hq(%Om}Tn+hg#ic{Pm_G{*IVp><8^=mBPtr0&|(%o^IMN@~`+P#zSQP{RW>u=K)P z73uLr0 zye4Fyh}7@_Mq+%#wRHee5U91j*Iapntjb-E`qIMS^DS^XI+DPjiO>uq{rk2(4 z9t*uhjWBUm=i=X{Lk1-u5C1$N7YKNrkLL;M^hgj73{3}LvcMmN)6oIbkJp~uY$AqH zR9Ji~k_}ulcaMWqobuE`b%MbO{>V=9pMaz7M8^?WrL0E-0nGWGka*k(3H2o9cY6b& zYb=JvBxWO4(gjAQX8rN7SVw{7f`@o`9p94OvCSCiBdRP_Y_Z~$2@KC7J-)KD{N+nB zhoB>q9Vs1$vby>&PdZzrSdeDu(=+n=!6BD|0?1uVU@eZ(Dg~5-<3?}*F4G~B14D-C zCc%&|JvVV;q)UIfF0BE+OMG||JnBOOQGtZ zdAHa&{pSy$Y<3Jlz>5|c5YGUODgWOP+GgP~5$BaXf$~Z>SHn$00Z(v|f8{)^hyhH7 ziRm8x%0~^Y0eFIc50ga-AOx0}fB_}Y-vJQ|QO3e!XlQ{@cqoVJ|9g6&;Z^xR6M&ko z@PF4x=79TutNlM9Wo6J4d-Oj*btM_ln()7MM3#L7c0ZbXo|hW`FJ59QOiW=1hPD;| z4W^8hGB`A=*tpRe`|k_Xp2T30?c72!Xe>=t%H zAf2kWeBm)6q+$DpC{tanH-A!c6zBgRL?*=Zien`D%klvX$Fv4XXXACGme{|=>X}8v zfGdUKWFk>>Y|#y`r=Mm#?yb)TX~s9Z>uwNr{||0A6196He{kp{S5687iw{eUdtLxE zxBqi?-BQDz-1gtP6QUTwZ0%2%kot58q*d(rs71&<$H#T+>bW^-lX1<<<|k3>Kk~q6 z8^HtAe)SH<0|1(Bnb-Xm{f|yxb_`pHx_CWo7v@JDQ2*h;Ie`I4+vRj^sRQzDk~jT1 zHMdxvH5pdRrNBJB;c2$L)$sp5i35xNH&xF|17O@M3Ybs z%;s|Gw0vT`fIh^1loYv7PxpLZOfap-jCZN*>41u+W0RVz&3I`1%K=Zn-`X zubc0)UH^X@&3YRYj{4a_Iy|PvC7+vwY17C4grxnW7-&uMzcpi$>4G}*@wqiVm=s+; z6-_muf8Py9O?LcG@<>xM0S^aJS-T;SnkLt?`!5`~{0i8*?T-_Y@*pEws0<@R>_e)A zCup?112p$#v#g=nI9J(!^3E}<< z5e#v`M#y2FAKFI@Ko15OERPL4)V*UE+(gpT<#Kf#I`(#9tsYTCJCU z$KX|_Vf!Yz^~~3Yh&GNWh?Q{sEm8rxsVdoFJL1KZURqndNR|?4V$*Ad-Oc4pxeh=E zoXCdJ8VuzQ>ZF-5G%Yx$_zM}UuPF*bBrWo7Qip++yi7Q5oLo2H+PNFY0<;Q$?ZlUk zgFrqawlfEH!YrleEMr8Xx?vE+glSl1bzSGsMWXJCIr+Hi!|LOUY!n}lc}HLD;ax9h zZ7wJ>E+{f{$w8^#8+5dLdrJYFDs_Ow`@fuhM}P6Rp+CJLt@>{UfElZv99ag{^d93c zn~BF`cmV#|HBU8uK12RyCGKt>pG$CgkskQRcWs)lbLY0H>I4{@+Gf5<$X#9TN?Otp zlwA-)JEV(IB> z*QhqPtC#>2F7GVz40Vq2R$6J;hx|T^&}0A)k$)&f*p8vtJ#;!eRVKk`?zSif`~knJ zb`d(b--pZ|RAi=zqd8!8q*Nj1$U)fYQ-}sb-+{r_!+W;q^zh7@Xa+STxoyrn1rbGY zjNtDiyy*?R-|y0xZ+6%F3-#BU38#-+zBu zvI|q+?@Zwpz|&7u2hon`Ny^K6Wxpjz;C zZ<^Ha<-UYCP2)7}))2N!nag!=>^f`+jeT$k{$@1et}2o@g7T7$9_=%cF)<0XNAgGp zZ{l1}NKwHUAE+xTLhnJX350NHs;Mr1;N}QW=5NSl=**9f zzXj+mV=ROe_ZC9UVV_c3XM&q{&Mgk>45F17>Dsk7Bw^j6-MAUn6RtFjseW?-*hiV z+T9Y-8>uC&&7D&@`WW)w+Zylo5()=YyDQN$Y3x;lo{-XX&2`Zect#wkz3Zo&4XD;j z1CBAXs81X4v@k09c?whVE}?G3urW>~>J4R~AD_?n@X9Txj=PM6wG{+rdjrQFEI>8naAF5A@kTR5 zX+I(!64cXo?e%3>sqFhp31xE-9ySA8agmuaPsHwl`3YwH{qV@UlEmlQ)%QP81 zj2j0qL5Z|^ZY1EO?mP5MxLl9ttgZ*o>XMptVjC3$o!b)wJ9QX)TD(DIg2Ch+*`TDC zY{1+PT~VLA=keEP(!AL-kQ%Cf`G<^Z;;cM!!=kdQAllU(m=NW-w!Ud1*};%=FiH_yBiTax3#}slVg= z9D{B?V4!~Wi{X;SR@m%?!B3B3t)Y95_Fz+80$pBXxf`5L%f_kk!wXV5Z72p49 zYFkx=YA~pFhV=@N0zrTDHNBS&A80rjw9)ysNJ;A~7@WlYn=3(i6VhhXP7>yy8FC^9 zRNtGgNc}hDHO?=ju_GLFq$gwOcwYBS34>h&k-gsCFE<^p_q72JHkA)+ONuunT|byVexDObeW%?l=&f;g@`)23k)3euK zQ11sOx(d_^J7%aY8h`ulpFRacVOja?T3m?O6xNs(e$QU>_dE^}*Hce}@oOx!NmPvHD%omT#!n#+qOF zLlZgzxroHEk+qAVvY4j*^-E(RyuF456^jrRGY1*{APwUWO4=y_GWcd_e{O>Uy}UnW zuZLIpt=TgJL5K!2W;WVt-V&}BZgLiGu99wQ-s)yL=HfP9Rw_=8qW;35W<%FdMezy` zt$Ituv|WtEE#fh_OHA&wc-Y!4&*?3m>3kl@d7&y2Q}RYc=_|!(S@OH6>o>@-QC|w% z5yU(0rTSBG_*qlU2>PyLw&27|5yZf4_diDmm3|*y(YH@DN{E2H%+=y*%tIKw)LlR>Ec2NCPnmAxh#&(DPC7c2 z_2_S(DhSnIw95E73HA7BKMF)=VW+6zq$v+gmVchAm1VN|%&>vHn%pO8AmV3YFRv%b zOBHDL-6?}?{h7jZ%m3S8AC@0w;xnb^O9I`CGTqyEmvOuINf%-Z`9bekf^Kl`B1Uw- z`uACx-K%5sp}W3K{?0-{P5Y6Olbq&LIT?L1&&O&;<_3DfNZq)I4@EW|m4lPo5o6|qXf%+=R?8!)My@}2xnUAT7ZAU%zj!Yn z)FJG8S&}SStS(-PEfqOh6*F2DQQ}9}M8VjWTm!cTr-a;!xg}oqZcifULJFyp%#mEh z-yioIlHB^b2*?}_0~ePl)aGb6@Nj(nv& z)G_OI=m_H>!H&m)M!#`U2j|aUBJsw`V9i`Z3Yz@BmE@2p42NjU2_lvD?|mlpxv*W~ z_?(sKT$zuTENclXUi|PC+cI$ID(drP+!SK;WKh9JT0w4Fa&(lN?{-_Q4pguEAwHW) zXKyBSwGKIg_%$cLRcvi?A&AaW$|`_AcK8tzL+M)-u_9C#t76gbm6Srf>bpu4W2 zwyC}bQT@&2{=tyG^MO;CvYnfQ$lD?-B8(dgXM^fY^FIpXMqE+(#QSff7+PL_-oAb- zDbeVtt-YQxnfxQSFta!IMK&ck4Qdk$dvX$YFUoast$05jKhyMB^Sia!Js9vqemU^N zE-H{_lmu*?@wmM9W*`{lSdzNuQu7nf^>N;cN05JbLbjd~IO_hRKRrm(l@@TA<+Uhu z*%@$i-}^i2Erk3A1+A~guJnwXv`t;0S#QRT8SKr-+OWV@KQh2zo~Ft#Wb-ihiC!8U~rrJ|IB$$QT1w8Tr&0j)5 zhi!u+mX%-@qD|w|o;eDob$01~daXG^M)7`n*yg%gbNLf3I9n~aa$VR{PIM)X%T?p; zj&+DnRsuf6UDc4wC4fhBm3g+8X}M2miMg^xuY#FGv4TN_ zV5DI`j>k1G;_Oz7)o}XDKvBxt34y7I4kA-`Uh%V!culM1&S`$FHN;x!Xj#A5CxJN4 z@%}Ah10=(=0;N_k2U=oFo~GP2VE!ct)5Zwb)C{#o9(LC-+dCB-u@goZPR1vX%=_|; z`#!vi5>x!{Rl1cCfn|2GX}XG8j z*t!2eP5o|O;(xE?>DQ7hko{F4n+GNhR_sut5LP}7G_9?c%+*B^0RHj;&AP0%4%@+O>h-M1XN_xi=ymUAUE;Tk z?)a7;qvXQqzkf#5FF6})LYZ)jEx(Yldq4FnmY!IqN+44&AY0dks>YeU1jNW$yA;;4 zL|4(*CxraD@|d8~n7DazKA@8APIyaU978_Kk?E0EKg{YdVO;^-kz?XYT9&5sgF3E z9UVy=tqWp%oe)$s2y zo$7C`;cs2%aGC=;%CP#KYIKN&KwNNu1Lp@G|H3W>iJNVTn{P%%2-~#AgymW{IqVXd z-igw$Id0<3v*!1!*t;q(*`e8n9~PS1uUc|?F=<)-D7JaB|NW?0xkE28=J}$kzcQ!o zQ9#9~vmV~pS?U?-GGs z;Bj*Sy6S$KOtd^J$g6t)Y3-5wQ*}Er4uRww0z5M8KX1drO?s|U(=UF`mlS0@D(tx% z&>m$m9A!-(XO7zRq%V5MF8T6-f2xVDM?f-7jn3U@T2X0|vPz)sXLpHOwIKYeY@J$M z?OME_GUZOFditc{f}Jtx!=4NALG{OO$D$9dPIjUfonA3)#V{GwG?92Gk zM0(cgdNp}(bSnUc6n3>Q5lp!{> zHjgp@jb1;!Ybl&tPdYq^gM5d?+)Ox_iD=mZ=_k8mm=^}ssx_|YB4?GD@h~+b14rqW z(DT72KOf%;PaC>oZSrj{!-=5onpb=4rJVK|@1LimpW0TERud00e@-g%1;U?roc&my zCqnA+>dLcx%9#?VpYY{JJ4%dp1u(3*F9Ji^osq=4^~rMlBwXJc<$YL?caEsdGMB=w8T_$pfdfq9G!QPQE7?W zu)ys6KH~vHt=TLR^jLrVr#@&3*(4Nc>18GKXl}hqiN{-IqZG2Q?Qim&2 zy|J+Z%WqfVgiiXJ$YW5cd4(O)AHF~W9}z)W5z}ZKLNoN@pw>&qcb7y(mFr2mejFX- zT2kr?gNwP5)dDhA`{HVY3Gsc(Jrg9-TR6Iw#4097N#zHb(t}M90R`5V;4iGu%0gRxC#{79WSaUQ8K3^kmf@d|V za+bK`ir|t{P%kPNCP>h=I9Ik1H#`Pnv)QOIgUhyOI(j{hQIe7>77)_`nG)Gl*T$*`P7ve`Dl#j$0t3+Iw zeA5b=y42!_<5O}Ixe-R^OPn6(V!pi`;Kf14+fso~Ak5*Vz`jC{M0$^AQP z@np!(Exe`yiJ9wq^oNIRC^M_8Ec=BV@LGY5=7=JvF~F!qUMW>ysafB#+0QXnUn#XI zAXM0yDx+0QE+VY^jhoFIa`*|ZwxIxQBgjBnPJZo1|6z^0pCJG`whw6E3qH7 z)?^orumxEutOhqKZM91TT;ezn@;(W}} zJBnRbhdHz0(vH2%kK4Z;I$|{uZ*!d#HVIqv44ydsBy6PtcwOYH417uyCOGT}EERcg zYK*up;f8dT5B!zp=vHaO_1OW${^!oQg+bluQIYn``45HFIQNx5@{{np2+=@Y`6nZ- z8IPTn5d4P{;BYEx2`9;@l|Y8e7SUl?-^OzGlWVg3$I zS?u;{1GT`x=SSw$Ykfx2KrP9VuM7QuBh^O8mjg!y3~og(@=4>>s@$uJ>&JqR7*|7E z6X^NOL#h6Rx*vxy0Jp|wH6$71_5ygiNCx@`ILcPo$*3yWe9D{D-v<~b*=b3W;c03X zxxk~rOGhairx}a;ne!77)!;bB2Ba~L>q%Be*>Ar5Cfw8nDEdDo_Z2@d8ljxau!W5V z(X`nazr5>5E<=O)^I`0Yj>9pA#o4kcG*oV(Vuc^KDk-zp2#3Yd0K6gci&w^l5N5sI2sZuV^qT~5WOfT3}s-Rk7oL!9?PhPGMR!l zvFn~KUzLS2dG=Kso~C4st9wxZ{3EGlNvMIc)04K~M%sIP`FAt2Hj^bsX35-99F00r z^wcr3!tw#G{tk|w)vpx$Eu31r56#%8g2+l+jkAG|;k53DCajPz?{V6+L39OZ75(gA z5zz|;g2F{w8^3COK)Pf}cd=I0kr;lvE6_IRJskUb9`O8l_VUN!<>iI2{o&*p;W%sx zdZ+Ekst}yUjQ=}ARKmKdTVF3BCkLxp`adTL8JWsTWG+pn`OEvqRsh5NYX2bVQ~0{k zJ;^bn9un6($h#{|0jj{~bBQ~ASY9i1CHrcc(?6~SOklRfgv;<(BZ5}zbSTfmj-z|^SR_(?L}qtSQ$6wUrZ#t zCxQ|J{>6UX)Lnvu>l-2Zr@VG(GH!SY)bMXJ+D~N&(SEE}ivkHB?K!WOZ3ydN)LX18)#~a{R%GzlM2$QVLh_HL6-`aAgfmp(kw~Lg;;@OxFP*~U_?pR| z=-MLCCx#;+tT*s)(SL+t0q9ai;Ibh))5*=fYcJumqj&A9GV+#5_wJ#(0TlHhcAna4 znyyLe?hV1ti3uUyO|JK%StJM_vsf?Y@Q~qM6k%BL3EpmRk#K+I&v7`HG#jPJvubU+~6D1k0a!9p_S8byD&@O zVq~u1ttTeoPqVJp$X@KpWIs${MDF;cV)v$REEE8G0cvfs+ix5a-yW*kK> zPV1m_ZD!t&rx&vJts`gWTEERPN%T_?vA_~+tFAG$2v{Db3Dh3~k8Or}jNvwJ6h5`} zUKhpK)h$fLPeB7HO)gYWNWv!HG0k}*^RtO4e0K)Eco!w2CH|UC=#M0&2eX{Q`VRfO z*-VN{bjNY{xnnd7E_riNrX$5~^SN?W*^!K}1slg1oq5>04%j;I`fo(EH>rQjP<}Z5 zScX4>k|m5m!24~v|01Ukxt9kMP66{iwxEsd6X+fLVF(%`wb_qRjtE9EOiCeg$3XXW z2?|eI>HNviT*Fgm{aP^%U^pb-d`Q7W4Wotn5o%x%EgthY1X^$+FV@AZ?2K_BGrERb z|B*XJ8Ueg#79=nb#8u}&#X~btbEYK=SmP*~rYjg^Z|s}l_eo<=T;kPUq7zvq*BDNq zMHNHOjqu3Ka0tyH)oRahXfO95RGWbWTOQ`3jE(gQjK)V7$~@FSZ~xpn4W;W>aKVt? zFmr-Is**_Mf-Q&{iS7wJse7pmB`(99QO;NRsn<~_nm4~sKmkO<2LEts&OdM#nNIl~ zdud%gCxbe?ZHqRnp&*$O`&}MWgA+%Y9ZOvhPnS1A%Y&zS&ursM1GQh;xQO+YKE>xE zm-ez9asO5D+9IX454t%Q>6krl_PRHx$0m5Kd57#1?TJ$&FkE90qq@CBByUDz!-qso zit-1bWkqrQgzvWObvEf|+d)y3P%Lvdk?y-kYfqAaA)8_A&ma_RFeZ$c2|FghaY>9O z@$hVj>vl4*!pWpkATg_R?&jXo4ffy`e((Cu{PcF4t9?k5PXg}?Q3y$CDkX(6^26It z@wBMk+9*_&0qw=T>Jy{RAJE}HaLhEy1se}%seClc{`sN9#dv-NwTM}6lJT7pJy?5_ z_!Jr!xL!favsv*IO=ZvLuX?E`9tfp|NRa{OLD2GL0X*Ua-=B#_S8jpkJEvilU3{kl3X#Xr6ait(|(_n~KZ3v>A5KRWdE+ z4`GS(>NLK)0lgJ}+9rF>swZQSO;FY*cE$=8f$APfwgW;7JdME;z1;XGt#Nv})ldyW zM^ftEEu-xeo9!GV7a16CW`Xc8N?~QCsA3s@RBYji?wDrB!u#50SCp#NumU!3U>VAe zN115vYhRz^dLH|GEG#TCvm6@gn)y91OjZX5LEF0s1;qK+7dNEiVI@{HvGS?c`Q7VE zn+;^M!e5iGF&Rp$3SUJB-&kiyewS4zlkE+ync?3h8%gO#rb1l^{DXgG^gO_RD0z{- z4_UG+Jykgd#C5P#sl=&upHWs42`TAb5QOL~lbIBi9f+Eod`*Tp77v6nPy;(XwBU|| z4iL<=r0{vEG&{^VTMwEZl8OE>oLw-ST`}-)>8||Lo;ga^vBOoh!b$F4xIyC z^9HOZhm^;g&B?4;9oGNCN?{BsoZAc@(n^dV38B7c{P<0aJEV5(y=b|9J02@o<4+7*-_GXj@lpK@P;#8LJop~yqtmT0}0LvVy#bFW- zp4>L;{FpLIgszs9jC?20=2`nS8+bVtq3Xw<6+u;P=}ossQja~O0B7LYp7xo{~V+FYhO|e3-D@MauMq8bUV0@zDSbcy#`yW zUt(Wa44Q>8efIG&xcH`hUOOEfV0x-ElH!rhm!qHwJ3fjc81_!~w|d(MP9p-|(i>wO z-o$G3aP0aMYiR&^!9WvAHoj<=P7jr;izlq;PcZ$wQv01 zexpZB9jZv^_7zW@9=Dd%Zkl5N`(%>4_SRDiOEmNCCx$J3l|eddl_5|z_(!H$d%mnt z$Q5Cb^GH@P4N!MVmQPV3w?tbjAAk6Q6Q^*&j{Sr`!b10BT9F)j|GF9i&WI8iY%0I; zMV@~e3+!}g@$1JbzrqWE_I|hHDKv|>X{r9!H$mHlx%vY1c{w6^b_YPOP+UI!ZOOOU zYkIKrp|V)2yS&frtNGbzN4orc-o}d4uB6vaQ(|Z>(s2)MS;tpXOvkP9LYTDoXa=G0 z=t`K{e}1O3sFVz<@7EkhH&i92+qN3uAFN)uXo3%!2g=+v47n z%U4Gn0Q%UE_*_)>n=R}e7S=YSK~1asjMIJWX6|};4J?uNV!&aDe;-CLdBiXt^#DDx zI}Ar8`E=oKV%ax}ve>q7jRl&jr4q%R0xZ8`c%k%4<_*&n{SdO@ejL+6F^V^=YC=h0 z401btiBT`T0Muv_y>?&BqpQbb=W)MXuq3Te6bdA)GU7DequY|Y{zdv>^!!bt>CyrE zZMIKi8i~fJXp#&Y+%9fUt!yx)F&QDb2%MZ1W%AS&)yIcb5!CHUq#$ zuf;*n(#yDo+_5i}4+F%~aMxgmh}pXXR01OHGgu1mF^Ua@R#|&h9J~^r}r18BK6#{@u~o{iI3(tS1B7?6@3b zU!qsD@TWE%`}zw^wCcJ%8C)loEi0hVJW#y`bHM?SY^L?Q zR1LIu_D;AxE@X+$JA7__FV~wVJhdIX3mU>p{>{4Vqs8MrVSk0?T3_dS6Z3}V%QaoR zQ=CuLlz&hSP4nqn{+Y|9qFYO;vjD!wKtsOA0H>SRw5|7pwfc(wgVZlyS3v?o+S$*N zx^auYt(J6kIfwS$pNlk3`iF_pGgnDJo%W9QOp`|0x9N%II`?NJH`{zXH4+seAsOyeO_0b*sC1^xO~3F1CA z5H03A(~Wh-6z23Rp<1c7)F9lo3OTCVtaF;s9<rWv|) ze7SOuml>tYr#YTBgwlR}x|h>Ok}^i<#BHp=MxkSdrQQqcCdwD55E|dwv27B?CzbLk z_D^hjk#}d$?!TswYR{L-&QTZvQzJwGA4gL-&Ej={WULpIc)+bKA(+f|UD+wa+SM!k zEa&w0x-4gcA!t+DZ3{)uHS%R%eiuo8dtb6N9oxYt5>GbRF5h~3Lw@>V-{r<`C8O|d zk~FH<*MkEl&&g>ZE<6=yZxpwyg*4m(f6nh%ibck5@8s|H=XR~kZU%MT?bn6jgWF!W zBcdcBSqd92oa>L($D>JkG+F1>O-82OAP1)IuAA`3!&^65T>P5VN~9oJkldF%URjdS zE*a>)ag;!ck+1>`Pmz4iZZ`m|r3QPHy}zuzz$W_j^_>$w2{v~23Dl1_L+1z#Ee9}W z+b3$3CiIdFLFe9)G1zsxlht221Sk}KSk4wY)71-@kbO4n`)rp?ZTEZc+c&+#Z%DF5 z$s)L`eizU*ARsE94b>TvfZN$IwRK{k(ojjN_}L^?YVC{!}qEc=<+KSVXKC z;fz~GxAEn@i&}C|Qd;kBiyFAw-IMunJ`#71Px*P3jPYw+v+T)83z=2GnU9DxXWZ-E zb8VC4+|1p4di&JW4P%s|?Ip6G#5menR9ccm-D>H4E=eV~Wxhxr_`ctv@ulTCt485U zIO*}|<(G|ME-8x7UrZ5i1-oFD(ScRwhpMC+i4Z?=(2u{DwJ_hwzy~ z&)5G&%cI3B*Jxb?Lo{?nKk2TRPsSJ?B99GO{(zR6cO&m(w|q%~i2nc4N8 zPF(09tf+lGQpn1<*I4rgJK5FGro7o!$c4H zNa!PP_d|UTnr^-zvw5pX9mwJnYT$Sl`6yd!kGF>#91i2A*xePHr+DJ7=GkJx|BfQu zR-j7pY^MZlM-cZ(4G9zR!lqOoz#8`L)_ih$R3!_0@BW zHTUh67%WcpSnHza$&m#A(iQN_3zpZAiKd66lZZ7n?(JtRTz;%n*NWphls?Pz6 zWHesnXnGp1@0ZakLZ@>s4w@>@i#dFs$mCMgEEWf;+~JC2e)mF@pM+cgjJTwhm-Yt$ zYiyCGy6x>DQvC_Cpte0SfyY6c6=a_0?eBTooVh(b%t0RI^X;`(lz4KwU0}Gdz(m>9l-Vl001C4odvuCP@g?}_S{+ObLXh(sm@c; zGtyC0(=oDKyvTU*A`3IaCE~%r%*@Wg#lg`Q8 z3zul=XfIv5Ku>?+66d8$jF&EP^06@!4>rEbJX~B{JeP0W;N!b-LtOl(xcJ}w6;9g# z^k)IBXTnHHt^&@`laSJroPH)zA<{=q^6May`tu+KkeneSr=UE0?mQLA|7;`yoFVhV&X;!_CoHL;u4{7bh#qj}43S#0Uo=rtkW2j{;ffdo8Ib~y zs~5?|U&dbgNkO~*$gTwMldqmZajFK4K(OQpW zl~e(L%sXqJq5|1@3;u3@jQURgREBc$Q(14VQ^5IC!1wS~<&rt0YdXnBN)=64*4zp{ z);iN()5#F~AnaPBuDYPMP*6jWbqc5*ivVrF?>pDBWppXtq|_!s`10Pdc?S`b7KQ8{ z1_BGPLs;WezfI#m6N50hgOc*3d2O}lmM%n-EOnR4QOhJx1!%9Vphgvq;4G@ka}lquws1Z zi#LJ;Eq!7w=n(h8bwy}PR1Sxc0|&VfaVd00%KWxG&M zFO*ew(h8koN&`f8J=~}lZ!&AUvUUrwugOlZ?yD}@_x>BNLF})A7}LfZ<6Vj?YS>X= z39-$}mJ-Leo2nLUEcbf8lDOGJ{kr+}ZLdaO`rA5rqD8#d7Yxqv@~UCXfs#6~RWa2?jy zHMdHkhCNM%4>4O!R^oy{u|ZaFP8J(yOJ_P4E+FF+aF(>;hUUd9xGZiMnW66#j`N9l z;Arc~QqI=|LIP1l+&d=64Jo9#cp%hA(Oh-gg%%XO%6+F!@@BB`c=xLcRLWL2in_O` zq9bR^Y~x@D>P-qNcEmDDb~Sk%odT{0#at*n1(=XxA|8<8KR`p%?}(oQ#!Lwwgaa9l zb^_bb_jLT`m2{0OL5Ld2v^h4d5SpY^>X@^Lfc1yLW)x<5G{@fEYs9FTBt)W2#J4)j zQKUkN$fJ5gxQ_FTk5WAPWF=QjB>ie&XAO?=Msn)j+f%@$F$iXrZWj@lv9ohWPA>OE zDRZp}H_-=(dS;k$<{im&WLykdu61MU6ri*)pN2O5>okw##yKQUwa}3brgY%|a|$3L zxbOKraBP;~-`aftMd*)vVYa5*6|mJ)05T$Q$mb{z^L_^x>vp_NI1uZN^*#4st3+uU znyWxqG5^^`Wu~TeTdkEi`Z(#Q#N7ni-s;xBZ;j%Ne6apMu@r8fjRfSWR+k>2pF~9RjL14&B#cA*q(7^PIZf&&b!e8xY z{*E^TG^Ze=zfxR zcqPE;uTulIfs>MUH0a@2wG@SSz?%nd1r4*6p2Otx@?S7M+Guz#o~1dzR>6QhUw3jSByDH^&vl{RbdY#ECyM z)?9zA8g_?x_qVK3%5@L^R>57IHplw;31`sfPiEeRiNrN*mEXoN!Wx@7kNc_ll8lJw z7sFE(h}so80!4shet>>y?R*-me-vV)1<^~+dg$}$NVKdoa^b990HqV{u!>}ey5Q-Jj!R>vZ~xBk|r z)j`@~+UQfF0rgVY5>-nS<1&6dXRGy~;uIiz3h>K7!0t{>y}IG8lc?gd;ftpLPho8?te`Z$m0OVS+jnzRL%*XvBC1L4aI?|>#_OzJ z+6s-|-596u&PMvgGc^$vrRv$B zMv6`WxBc!&U(#XroX-Ucz-F^fFVa{NB24Btz(!J_R&ub*T+<*Z~8#lrnMS zsnmchhRf;$-pe)-PB2(#D{FLdR5hsyzA2SW@}w8ri0XRAb!XY1yy)Y2@F%TbCLsW9?QaCEXSVMk0c1*aawi$lj%vutT zOEGWOVE$;*X~MRvB`?cOdyzJNEEM?Nbki6T4ca=`7X@;dkeWB6}xce~X zwMg-viA(ZfW3lF2wk|Ysc%)#JwmUZ$LUIat`WHq$9M4ah-Tu(b@LEl)B0VA^Q!hJ? z1B9H6ih;V)+8{@{4N|{SwiP?CEAf@XzSWs+CJR)~#m72VD)_o>xcE?p6ydo4g(p6s zi|D_i+<&R7oV#1#!$d1-fvsJgG)lGF++dxlhjO%L<7WHC69qmaCK@^Fo}x72^4Mq& z4)jyE5zwm+IOh7p??$aa2pujd<`htg3Ea`Qt|GeQww1~sC0eMwC0O>>+nux~1!o3o zZ`9dw6jaUUMpy#P?V`%I9Y!GUU`uteq{foFiVUpFj#;=)BJXm5aFA zYf7I3J%^OUt5QN>Wh_t`@Lt~*6rRRKB^__u!8TSJ zA!k#f9csS071%s$M=$Y%pit{ve_6iGC`g0K2%Ql|jv>cH(kSJxveIT0M5 zo=30hLJI!V@?SWf9gQzs;~zPy7en`%x=v<#h(<~*%rIYw#-4OC-Tm*&W;#ZH{ap`A z{ysaGz=8KMxcI+l(+V6Yjlm`Sb*bq;yk`s(rM&pW+-U8;I15*w03Xk;uQ&_~y%Dk( zQF}%D8T*VjCe><7(GacO{(+*f^fDO^>w_P3Ahg*L6M}8CZu%(zoI+G9YarHC)Q?L5 zleakJuI>KdP(Bbp^bZ(OCt#w({sQCvzX$d=Hl6w#*mM=b8qpgc6N{vSYO4Z0BJ0Ee zGDY2r7fSlgx?Mfr$NxKUnp~GUK0Oz5cAkZDJjc>h)rKFfMg0gnI~r9f64#9m%oW{bUpWmN|oS76b`a95ch=W>)QXlnvV%@ zF7lPryDbPJxPA-#2g=p%?+ex6K(a;`FBCPF4JBLN#@59JqIG}U(zR1SnjH7h^}oC_ zkM-uYtqS_LoE-P07AFqP(k9%(VW$9@>eg*T?msRw*GnAeQQ#~S zF$P&3Jb#GRDxaNE$d$NK(3o_B{8yvLVW5yllE!b}C3>ON_(#S~nJ;3n7J2&!E2+%V?2ndn15)5CAG zJ8t^P)8CgrdHR5WMDe_1X8KXG@Et5l_%`w<@({hdzXJCcsoPy&l!*c3)9yX@+OUa_ z*~AR-m*Qoy&50_+c=S8wYWi3HlB=}lxtF|UddICl$0vgRRy@IN^`|lZP9|@Uct*$2 zJ%a}z5lB>ZueHsbLq13tTt5d#Z2^9KzUS~z1(SaYXd)){XNj3x91FkL{2k{j!Nj2V zCs%8FsD4qD0Gmgh0=(V0h1~F~`rgWA9zETO467T_Qo>;3|1SrJk8sk-2G0DI$l~yC zhyliPuk|-w;avP*;}f5H5g$%lw>ybuXPa2CrMQDjAmaQvpqZwHTXC_~SzlCgSO-5b zox8n@Kr}|{%4iJsWNkIR_jfMCvVcw2Bs*SGoTqo^)V>rCu>BbKTzTMKRGRKJSI!^a zGwfD6Zbje99o<3gPH)m7_wMZUcuN@io2R`*aLw%Lq@*0vc7HTd9*ME!+R?(eT$!q6 z7;^4|BqR8YzhJ*dMTLx+j%T9m?SK=Ip*bCQAHHty-ssO+snX*a$+Yv(rHk=iAf&vEvqVT@7CK_sz2y=*`BCM_(0 z6COGlZ;pBfO66eNHG5*KTS%W>-t%VM3Nid?v!birt|Gukzv*hbrJ<$jjoMcGeU?ds z*K^rf>4RfK)j0uh2g9+Q-m9CQ$@0PLUBX4Bvr&#fsMFNWNRV;_>|#$y)^@D99nkwZ{vT>E2q0bG5#rYeKu+n%X5!Bc~Tu~cKi6GbHl{Q!xWDgcP>He-x$t^G)v^qSwAQ{ zVwf*DA(ktR0a3L$Nj&1{T}dDhrqCC*M`*HHS%xG1L>hLwaXd~%<0d+xHSTymANj%= zxrGAAW2jT%H)Db zP;M)8 zDyI_$FxSJiI0vWLj>&Fa%58M8ovlT4t&i%)Rm$62KkP4_5tmOiQh5k6+jblg?j7VO%3ksr9;}9@!<62PL=Uq$fZiTf%M2}OVypYGMht={>YXx)zT~P z%zF2b!_$u;j4E1Al*lFMXvE8yu$Lj~jM8Do(Vd7-N0RlSuPx~f}p-a{#m zFXEhRx}=h%;p1ly`TaYixZg*YuBk4muHhLdOK22!e*45 z%AzoJATte;MvQ(SqP#%eNXgZ=2F<*-jF=3CH&3h>>&jJq%>|ioa`!G9Q0WyM=%xf) z=ZnhG;3RH#H%z>JS~|5F#DbvPef9i8RY2K+gms=UGHgOr;L=kw z*~naW&UYN~f%(!A!u}Tf3a;*NUViw#T-@(!L@WAeP|kQ#v!NfVTZMK6Lj|U@J%UT_ z-6f;)Z1naYXsBDTx6+s{>vo$qj~>x1Z_;M3UbvlxL_{m;KaZV7e3{c@inP!$4~gqb z$5f1<-ODEG#%*V4+v|twEU9ey#WTX&W6kCF>{vyrwzKP=5H~_uI@$`%L(%H3T`$ip zc{i)Nj!GCu0v+-UTyr0nkB(w(29$doUyr*}JHBA|rTcOnyrefh`u5>rU9PRM%R9s- zxw$kfI&a&zx^r}trH^A3_g=D6@>r0vd|CX+z@Bl7aoSL3O3f}odAGyF!zC0_NeTyk zEe`RWJM+;d)NeR|htsrxa}t<{5U7GzmAOBDM(XVU-b=j}YF>v{XpG`P`xwUBS{p^@ zj?J*IK(FuvB#pf*9&Y~V$L9vCLWQ<0K;>n#MZT#sXBAkE8d^0k2stKz#c@x4w5eZ+ zyD`q?>aM1`JohMQ$PIb0h&NNNv7DGemD{ViluYKj0B>y9*~)lG6e91{r90f|FX0R> zF^)VjCx@9Ejx$qI$TzE%RTXGt^qkKQoH#jrcnWAe(a3wgT@n)pF2V^nP^5k#{*BHj zfzl+vnj2Uvy?o?Fy6l6RvIA^mx{}mZgt&QQ!A@Zi6>$QFxN&gdg|Q;rXW7!HN7-{uDZQaYKG!9Z~SV^ zgY~ilr2x42pm5HNP95;fSs*ItX<6JA{NZ;^l9P|8fS{PYliCyWo$wm0|I9F5`5sT( zh|iHA6jZpfbntvDmA0>_3*Nhs9VQhGzJKBN#6!7cR?{g}=Bp*mf|honbzu~BBd|Da zFRrzaKBYouKX1+*EBcx&&sm`*i zLI>q}R3kdV39s4dt{kH>V#=f}<8H7_Q8d&wf_Y8j_e{?D7XNjf%tGno*YKrd< z_CkKq8SAe<@_u%|@rMlUKgb{GTmPg|`)BV5f5=GsgFNd)>rWz+es<3OL&e{?Z)^Sk zO#WYM^6ejy#yz?;Dol$q$=da_qGq5wa4ugqEWnrrepNxw1|H<}Q}|_EC$I(*W>*R} z`*Zp{o;D+#Yy5SbtG0kgY%}ISlhv@-D(S1Qa_j^+V=q3enH$9ktL$cC(5={qqSa%k zfODq+*V$7*-o@yc(HXuU@18436CXkbQ42O3p&ya=igFOuy@VGe?X%pJ_G5i#9+Ra~ zy~(y4{s)WwG9)7;DJg(Us%|bee64!*rd<=L#3vuG9?F>?zMwWxr;@wqfMlEX+$(D7 ztX5Sm1zIgm^M1}`{EXMDm)LZ(qKvT?O(s69TKQd0f-k%w#E70CVS0s!86l&aOb{w@ zvE&V5aHk2SYdJ1q2xhpnfaONkSM24!o%H(XK1D2-KL>0ELWrNoO*@?eUY!E!T!_nt zZ=i{pKlE_k3-}w6arYb@tjFBh4XV?@P=6(XV9r<@Fs5M-UMGuZV#xM()5^`SDK>S< zJ>NOLYQp_iit0kp8*7UfLfE;X%RsFioUw&d2;?P@qc<3W=*VLQrYNq=zgCLt|7 zO>N=Pp1hs^T*`wsx{5L1V6|H11rOH+N1L5pEj_IeADy8h%#sO?-F(h4c%q@)E)sj+ zpKEtD0~;;%)#M*Bf}5!X**~brIw(yj6hkyrSp1A)v2ORmQ`h|bZ-Y~oFF-7X;gdRU z@JV=Mi4%B!i46hE(SEP{0`SU?mFf)x7scok^;h((9b2`hfKP$5aN?BJ-IhMRlk4~< zH^RF|&hY;JG{LIGhq{dY5GG^b^d{j=1=8C&k<`Y?t)4+K+aBVq8*fFcZTZH)$zJJ2 z_~v8qEhjA36osrBo$5apXKhzNxJa0*I|bYmNaQXhpYYT9OmoP($t?c~D%>$XO~Zw* zfqNz7#J$D;t$?KeD5ge2tkR>judmWj?T*#=BLHAL&I|BV_ob&OiurI>sHaI_J7o+t zKZ9o%Dr!>?+0Gk49^L&;`tq8V^9LT|i6pLbD-2?68sOz&+7*o7Dd68$%xU!9D zN|KZ?nP`^<)v!|V2Hgn0%eC>36dzt%V&{C|A64oIPT4fCm-^CP&NH6Om#=(2_hx!* zJZ9FdVe%21k^ma&^+ILQ^s&=q`uC$-rh#Tvf;D;4@2&M4*F~OnetuR~XT-9E%|N(- zQlHc38ijd>KC!(y{je5R0kusNacit=ta}aaT9e#dsJ{Mh*@b6LAXTco?%$&s=<#qU z#w9Oe`o*$z0@(m{Nz z^(Z3Fo6X|8@w0fFV+r+~E!6o|eSE&e792OTa- z4-a41*4~o+Ymh2=Hw3AJPEP4{;|cLj?OjucQgSybDFl^JLs?B~Drc^49$g+JI^PMW zAVwHVan%LS&z8^3pmO#BV4Kx)Amuy)Cp3eoEmb(3?- z>2T&1Rd4Mh%BEX)@1M~ekM0UXl_zfE!$=9s2B!d*I$Ru%mJ;7tK$vwq67h^Foik=H zXxZAbw~lv({z!(6ZVC}xFmYV`U%;3uSer2L%}Qr+UrViBIJyS&%(1gwZkh((HNMAH z1C_2i2xEnqF;lGDE6^{Wz-vbu3Ff;5*U5jl5UpGcL_Q5f6Jvm954TA*$ko7e57gBX z?$n(fx~2q|K9Y;Hks4l$kP#=A>+$qAELBPu#<58{wN*a`pr!*&EJ>j|IlY2p@Xkj& zEXcOIyHOzPzPo{YdmM)ML zJD_pIo22NIQtkBTI2KakdKy<6RNQP4nujLQVh~?*6l+>dtLXG{`rSQ23dwW-PBaeeOjcvW_A8TB< zo{C%Nufkf|7Q}KiHv&|;ekiH@?}92A^Mk7gxa#mQk92)G=qRmPF|)QaM6x+eqhI_G z-@!QL-Mjq{RsXWh=(zunHaOZXFAi^kl&knf&U@OXw~k}B0Pe$;bA7ns>h8JeOKUf7e%QcD#$IKZ=3{lJ}Au|5*99Q42XBL9V$>1WLaaeT}sSJ zb|6*sQh-^y83m5kIxXTTR|N7cpEZzrv~IiEQv9D}Etbr35}n}MoXlnrI9GBYf?oi!u= zq#24bih$+(7Enn~SAifK(js&xA0uC4%B#&KU9bK44Y`AtNQ6BVXTmsFe|g#Sv}#q2 zs_0pkgC@to4+A;ZF(M=HyUhunCIcaewiBiT0z&e(xr{&Jd)Q zFhyn61u$EUCA;v9+}$*DX|t$RLda%Syp*D{sQ^CNGD{QYbWkzhffcqIq2=}0{lJ>~ z+;C&gM|5kC(D*~}z^9cG`~m9W_AsZUr9EzS#fm?_|LImsS;%~5F)j)sRt75Yx=*ri zNnU55s-&GUlOpW8_I5<%N*Tj*i(6DOsG)m(8=P#B9R2YL5TL+N|Qz0YIHLL&p3+J(A{8ZwcQw} z_LGtOmX*XThin*nCgOoETGnMuD=No2=d|f~*H$eujKMxp%YC5VJMYBLc6UCnr>(oW zv>X{LBmT4(WcD3vhKD=b(2zu9bv#yBA9hlT57klS1m}xgRvMB2=sJAgso=b&9(OTE zfdUiUZh2*V#!@G-F>xG=H;&MH{0wZ}YD06e>#FxFsJXZ0qkz#KSaw-NW#zn67w_vC zu3^zDt$RV5i*!#f$5t1)MvNCaJnC6z8H2J!9+q?in{Ph=cgs$)DsYUQOyNf^NN+ag zT0+Lm1&X4|8)w)$B>{-qvowxufHQIDpT+FGQHxopX%5MHvN8ee$k+5nnX!`^G`7K7 z%9%65UOSU1)+Ui=Q+lMBT3dPqRN5OxMT{2WbotT-A=X)wzzwMC!Hx~L+Du(c1L%O- zU(8QhTB=Fy9i`FkCyTj$|5WdWHrXgS{!WJ%s#Vv~YM_8i3tGJK`sHXsFR(g+zc{oF-C-&BX~*w3;~3yHEbTv;*HNuixq74kRRGJ)dB@E|On{)W7=J3YyYkI&srF?jN5mtQ)lUgRNF4NDgfm5scI4KZ z^oNvpH|En}4KbCr4>9KHcJQeq15pL-`6GoB9$1Qg&!!R&O?%3-sUO=SLNsv1%_P7% zXSt4t^-xrY=MBhUHvA^CGpr?R(F)P1YGK|@LCrVTfl~=;O^}W-qX5ELa{l!zx+peA#)1S4hQaiFzO{R)hKOm6wf{ z=O9zT9$UFwYM5$-TtZuXbNlercY{8ZlFE6wc}jw=l=p?11xQp`xd#KOc6VITKF;u@ z<+DmvC51mW7;0~8vWSzm27|zg2`ijs7;{F%;S9UmiM#&$>9CUzEg%Yp))#!{Zq(|ywY6B2?zWP_J(ro?YD>v8^thDu}@%mW3x&2pI z#`~~sueMnVhgXe))_piOmG9sWezXN+m0>fp1Npe9`4aQ03TA9Zp#ro~A?hM`36y)J zI8h%PLRa0JX*g*JwDg#BHn)tb=F-je625sG5PTVR*02nfE*=^C#@mw7jwy|tt}3ds z^2`$YRlllk5r3jIt+ZenRQSqKV&kOT;4=>(yMdM{?;wKQ#$oI*EX!7IAh&4AY*h-O zD2_#{vhfWnSZ0yNm9>g8eFP@iP1LZ+jLS5%8CPyLJrm<{;upAA1~texPuvoyUJo#* zSOZFTvfp}PTgi!}pO&&T&$Co(kX&7!R#%Kb+m(U^UtaeQ&aPUGOLG!9T3ZClC)(Oh zXjfa-aKe?!q-DF{&7WQ6F%NuLCEHl?5mdHO9S8n(9u?>K;c*oynZYj~ zG$~vwHG4B7)Qm36>oP&^ldWfRD^T%;_B)4HJSO=v(Of}N&Yo)bVg1fM-M9g;n#2a@{pP2mL#cA;t zT;G&A$uvIkSK&#FmibQogFO8(ji6UTP|A$$(_lXieSYTNJtABlZ=4oCvCrQf|Mwd! zyIjkYRqe~@MB?MolTGI9!KVOG;3?p1AMpuR4Dvjg%}HViyPvK^hyYe^2OSuB+xk zGu7!TbUE{k-5G(8fl=f`UUAD$QI_6|pXBp&sc}3qOIYIxhZ#@dE->CeTSoRKT@E6u zItc^DN~VcgTtT}4;-hcCfZ++{5~fJR zyL7N{Fe%Weh946y?hHx(nt*ndVxG2)az(g_9DM#>G0~m|X$e&u1a83w zoN!7qX1t$W@HDR9MkV8K1U~-hab0$ahHnE{{A? zq`>gyU}as=3RakmdwT2oWO-2MYY)Jda568W%JG+X*m9}EunDN|(qLu`*n_6QC{5JS z_R(a789K`GKr_QjlZIsbOw;k$?4*l#9aIlA%h!~8o0vU2^v+x^DyO_&K`eekmu+Pj zP?qs;u`cj@>5bl|X>;xvNMdZ|HVycydJ89?98_n{{a{jQK0(*pploK!TVaabP@*pL zQB#yn<9-r`aNavkhw`X(ow&xLbsN8fRXL8kXURJp=ue0t*uLYQKLzBT0#bPMM*p9M zBBeSeS{Azx0qQ6D*Pxf5$dz^ReI`N86^)$;jvCnT(OG34MBzSJHLGl}AHDL`dlJDp zedKl+_RS>FWT&%2G^ZNJ)?x1vnxy((iE0+jk#0eeam5*X&=;sVui>$jRH27e$A1;M zIDJ*s(uWM1lfiV-NOcoy$2z{^70J#oimIhh*gAL#d|JVqe(35F1q^;o+LV?LcSbcU zw&vI!QkMeXNjSSaOH4&oBh~Bp63hZ(s#c}AMj;&KU6TcPo`BsyV_e{yO80%MIq6a# zsIs(=H>N+fG`^lAZPx!4cS~6^@sZ=|*+k^b`!HSOiZMDw9c=5MI#fH2(!HxF)3%}M z$z!^QyNyHt;a1j`;ss$qWuC-HKJzGghbQ@Idt2ua>nXr?b2Y6z_dLkITBz6GRWj9T z(uA0mYNl>;2_UWo-YwWv_a~pKZT7>n`g)!_Nk!KyHKVF!nrKfU}Gk>^G4-|3~R2RZQQcfW{5E=Pzr)uVtkZp(6DX) zEKiE}y_t_tLayfW(J~KRE_KI#58ft?4`F9gmr_?B6mi1$F@0wiA$J6 z6WgsX#Eaz0d>(mxIb=t@Y*|)*zx{gO(&x8c|KPT`R@`X(?c@?K2?a(>WocpW=|Oq! z*!MlNEskQ(5EqcM-b=R+cBnIf*bY*ry=*T6i zbfUxH)6ft~#kes^b5qHv|NYg?DyYysCA0UK^V2@lNX!s?vSIsWHycd_LZS~a*a#Jmy>OMdD^n^>Lgpi*9a-!sF;gd85QyF#N|LhH7UaHXOwVOCcIo^ldrU3x9m26{LHLLWErupj4O z8g(MWOl$r0YVkY={^gnfaWUG9vt@)!`nC!O6`dVDhtDIE)@;9hJ;3doj^O3@$_qyY zLB&_M62Byg5mqmBzzRZqat{NNaG+v+&kdJppAmZ{k*c!l&L*a)yvXYwnS8CkWupCi zkhct+beMF#l?cu*w;Fq=8-IDoUo3v|XEfO!_#Y9eUhhc>Co;3_$MLj^@jm|s+P{Va zt3+ZNMoG2l?(UuD{dvgMC`{KL;wvdpXx3N5)+P#vqe1D&mxPU74xayYj8&-pDIlIW z%@O0U;yLn#R`xLYTh_j!vY?6#yG-%oDBDai=zU+RPV_aNASJP-awCb&veJVhg%O4b_h-#BW^uD7J`i$r6oxwwySbrR6$w3Q*I-H}2qhANG+6Zjkq>tm=_7l``ZU5Eb?d|u1V)F zPlpb39a*BVh$N{&B-pGw=87~`P@bXVb zQEn_EieU%yb&)4c9-<}Vy>;V`y>&cS8)xCt;&pP_Eyq4^MFq0fu>JGiHuKyOfz3C3 z!j=|xEC_Dun<>-va&o#GN5-LJtz5mO{+v$2*H$T2rdC5cu6s`__SVl3Y9l=-XJ2^A zFbFXsS>cjgnT7WUYnr~z{g=4X>Y*}rq*^^m+DnkO@Y^1Rmp(;BS1)&FkZVpJzFqJ* zycw#HszyyyHx7J_X~4LKku0(;gx~YZ{uf0i$-XLPVpTM*J)c{Jj4hqJeLvP6fJLC{ zV-16p`W$o5GMFINrt zlCjp)DhWkn3+r$Ns4?;R)tH}Hd1_Wy74~KSIHoz|uT-7V0=!8UW4ro+Sd3ouD6&^e z5q7o&nRPYlmf3hXMoZ2=G?0DEduDlxR&PEo>5jcHTKe(Ij!fmSHZIxVBP?+x)rM$)9?U{r`a; z7h#`+8}eQ`nyqKHy^TxxU1H}PQHTx7hX&n$#+!c+&P<9uraT2u@I!MY>h!u}HXo=6 zqhxtgXDmj$m~FMGHI?fqop|)Fz9;9dD;{-*M$OGTxqg4}E>A$GX0C9u{-ij@a8tIK zzkaB9p+*3+4C@DkHna~Sk9lTDAx3Kt_qY@6AoK6HbKC_E@Mf%UE#I9xBLHC@e|8n( z%f@G&{D8-r=U7^zasC>uHxqgGc59&=x=^g?#ldXz7wozMxzSJ=qyB8jl&PVuJ__)~ zy@bCA*?nUCqfhNZ3PoAd;ep1#f=z?T1Q*@K6%hOS46Q3&OM&)#z@ zZz7RtRi4%pST1!db%SJ2{>rb@rZnjZh)G-YwDEpcoI^`^t4h0ZUDEQzNbe>F$nkVY zx3A_pU*e2dvd2KA3t#q^l@*Er-xrgN0?L&SlOR%y2Hrs7@+RlTvX=?sb0*HxQysh@ zSXQP8leFl>c2QG-#6(@egwC_<1qY}eM5v{ALHDMNcstGGH;$u{H?!R)3V?@{5>x=D zv?}Kg6v-C1U3ut)WvRj(sxQrWHHh=(%8MCn=1j@hx>a;^MO5tgzMq|c)Kp}7pEaq& zhK%a%l-N4Uiw=i2VG!Sm<+-$Ykmci?nESFupN7}sp$XC??(`BXRr0PB#F=eVxn=_i zZcN~Ga@V(pj8{{xjUCMhTV>i!h#18!`m=M!JnSVv_;#!*%4njw{&-I1YGPwVmg7;H zDO#K=ZJV-5_q7+Ne?bv?7|&h@eGD(pHlp0>?`qjyn|LhS9u1@-UD)XcwXt`GWF7Mm zgVdXGU6TSZEzM9@y$JwOZDw^j(f$c=e!zS#r&K!Jt((bLGcPi^-J zr&ATte2sE(8SLpPQMTY+GKD5pp=agM;8aTGdnP2E^>P%Sv%zKly<``H7&z&8RR&?(i-t*)0PM~$v+um}%+HVxFiDopgObBFh zWUgQaoTiX8@i`dG#wl-6Jf3&0;SoTBQXo2=4rSmugK7a8x`$a8(D`*Id{#^lnZsaj zYu%pe_m%^nAa0!p#7&hg7PmrM!7UN$3ywdM4XfXbAIF}sJ7c>d>;VJiX-I4Ts;8YZ z2qezz$hcN&2c$7_9eJ15<`&+*sN=$uuPfgylV>e%RE&T&Ww%|t;X`JqSz-U&J4RO5 zL=9Q`8}Ra|?awG<2k|f!ZU}6C^YcykTCH3e9Qqm5e!C{uK^(~uQMvC)v9(!ILUpCq z)VzAzZlbak&4POY2&TQNU)GwWx0J?=AvoZ;N+jfxO_>zGC3YWWDu7%)PpJpra~8lVR)F_X$o) zaA0C|zJ~SZu1~E}1679)J-SGuXdy8mxWX7aEKGBF*5r=Nmq^u&Ns?-x#c;IbJT9 zOp0n^8SN?C&Ks8%$IX%wr%#rM533NuBf;;6#Myz*0d&Sq1H$u;&K_XZ2<>x##N^l& z@3>2O0*2LdtBE^OtoQWu%!Pl3wTHy8_P^iE?H}xH&szC5!=Ig328qUAZvF)C*^-e3 zO|$!?_F{WROE;C+2x*o<1-5LfU1wCyW=)P*IMT~*GM1-@=;^lSQiLf@04t5UOqPx= zC~BPq-)?)6ATatk@D}mYfHxI{4?LF_|2e;wr$zTcIq;B=H*Az!1sfNaDwl4}Ojl_0 z*n%6ih7C%3Ax&yE$7O$a8{n8S2c&PdOK0Np%v7!R0Z2y{B-$(i_=&;M^CZx}O zbAIf#l^Rf~BDf_Cbg4Kv_LdH&r7jElXwK?TDmZ2|)xFCT)OZRI>0W0)JOsPxH=QBA z-N7D-nGAR!NqkR63?9YlUb+6YgDHHiYS+^V+mn`H&t*Ox58~9-F{N?6>6p`)j#|d& zrM(90NioKx90C;x{|9^T8P-&@H4LMODAFvT(m_S(y-O28>1yZ@5JC_LNq`Wl0YwGr z3IftadhdjeiV%7y^p5l{H4uC^-rmLMobz1okMFzQKPMNL?!9Nt%$hZA&6-t^kDV6X zJv4K09(ib`OG6`Vfe@wxVHYI}Xy3sWt-^gfxdfZ>Wlh^%E`GhEkluv2*yY<0-F??m z!EN5>T029wP&Af>kd0ok3$gdO{dpOI0WJ8ZK}PC=-oCcuMP*f)m&82tWx#1uA-|TX zb_q-bkKGsp#8i&}k=488P}Lj!WBOvNYAP-8F z&#JlO-eI}elcW?Jduy8}=X5|uY1Px`&o!~wYuCj;wqPjWsHL3L4n3v8_D)L2z_m=t zJCW1VGc!}uLpTszjG+z;ia%g9t4M>xt#GGTf<%Q=y!uQuymxAOu0zW4)$c#|5$w<_ z9(;U6dLrf?D=Lshw2N6@ep!F>@cbOnaUo7>yDtv>ey2J#g^>F;yPH{eO}`sx-LA)F@+6Qa#kvI z^+B0E_mY(Z&G{drkeOX8BWOEjT^FJWWOKRg!1+NlN}a3BopBM8O&>k5cE@D!JUxQe zcjpI*MQzc6vFoU6e@*nbZy=>hHG^S0zkT95!PG_qIYIyVR~ zhruBD$13NcaW$i%v87mE)Hv7$W@fZ-2f z4=#zZ*%~f_@us)LS@%1~Q`E5HV@;k18GgingZ63mJ`zuO7%71oHx77Nn&T37%GGwT zvbO?+YC|HF2V8nt8fG8_j~#>4JD$;%jMPIk7gJx6U`)Osl&?}2;tgN(Sg}(h=QDFE zHF+bVpf46yL!J7E21xfkTs5f?bq-X z!M2pIaMA|}=km6LKQQ{eK17xv8i`gT9`A7?jNN3p^_bSuw6!vck<}iCS56q6F9WkO zH`&`@WUdet`JhpM>8!uF-uTB^iT$?myVRVPYguCSF{hnDBJp!EB11OY@%<&?(2oc)e3Bf6t`kI4P!XE?7&R{s-9owN@K&akWP50;w4^8I)Y!RXu-cg4sFb`mnJkxME=-8i z#p(t<%vk+m^CStfF?1C)W>RNaEL3%ywD>+ZB_YQLUme_7(?C&g5af_6WYAxV_ZP>@ z1-$=46;t#2p89&xj^4Pf{1$zYd#wrf#wbVH6gK10Qcx6sW}SKz=vF~uaX?-493~}c zzmE2)j>A#m92DS>)NP(=mAE_HRIpZWH2{~!G*8zrO^qnx&W9B>IK7G1;h0f2x;u}%&BnEH=q|? zM^zYuCATE8q%AgJ~YC0+Zv zoH5=bSy$Kw);YlYp4a15A9;Px+Y4#D0BRfU|DI9HJ7cUOB1A-)GQTqrz&QEBE3#P8 zc2!rX*`Fy0f^QGB5&8n2zr{$s@9!RQuTR~T4$=JFL8qUW$GgpBUh~0v<~_+rCEZBQa3n{&|Bdd>-AgVASKc2!$7^K66i>(!XZ&V|ejd$H6Pw>k$2eWPf{sR8=~UU^a@}2aHSEA{V^S zwR5b8-W>NgTu<5WB@uZ;U~a6jPrcIrO1kL`s7`t6zTFPVn%RnW;Qv@UH0($!0DFG3 z3+@ayx9XPdGL22CpP;LoE070V_54fOO^dRQ1b3X~r#h%}-@7%uor4^{rjqr(rHfm} z(9(zRx;abCwz2(A{k3$vgK)9Fh@mm=9DM08Gq{8?Aa-J?*w=4FaY06WHC!2 z;sL)yUYmfbY&!b(c-BC*N~J>qveaiB6REe`+l56XdgEztw`_ga;U;wSvc|m#fpFol zeD7C@@jKQ11N^WAc=!+t1HP}gk@u!11of!M@pb!)@<<9{@!lO zIP(giBjh6w7KL)FVM}@IaL>qH<0FS3B#k%z>X#zv{zoleo9Y`WX>*Zl=Zm5G@J@$i)Bu;*$u_{^)!K=Wpl-c){Ra92 zKpHapJz$6UlS*g*s*V>Cx$W2Q*(0?AS4ta3WuZ>^Li(WL=%E}1_gq8{= z5j#&7aby-obD;w=4&4EnLu^vM%*L&=#pU)JynLDWVSu$nMa+F!!!r>OyQ&`m`eTwm zNMWNgI9{b+i9BrdT z=LsG0&i2H&afowgVB_ktH-`oIMsRXhAFd9{opo@f`S!8QeSC9#N5<=4+rkfs53~2- z2XuPhCbs&A92c7!o6W@-9eANa22z(A_W8Z1u>gwgI)-+KHv3 zf79QKOVqUzsr~nng9IP3@>6eIygTk$GvM}=r1|cag_s}h_~l&)`Jcn^)ZNgjb&AQ2 zdw-3azZL`zRR>p~-;@681ob~NpTAyKb+YW~!+(QCCb~VxOl2Wrn+GP|ubAh-py1p; z(A)$VTfSe-HlMYav*?fXdtAvfSy9ROne|ifncFvxmz1d*@-0f_Ui1%=#XG{(|9H05 zc|%Z|`$6*P(R~d2_a7t~TwJQW!6m(g8^R6_8Kr^ZmcB>j?{J3t>F1Pg?F?#29r&H9 zEGF?Vl!cH*1${19Jpk;TmUD4B{bdMB%;)$RlY1xHPc2Mc&|fdzRKF;*WTxHl)mf9W zk}I$@(?vLdDB&JK(UMhCTpmJd_E95FirvV|Y(aMhdv&L}ROa#ZK174`fLP(MxLwZb zTPip5hf{BkWq!&xKo>J6XKQvW$~z=G(9WT_lEf9%`&r-e#9THkIBoM)Q0Gxm(Y2KL zv|e`~=0K|SVU-(*aivw~hQfiG-K!2EA1@qr;Gp_*+V?|~4qzmfpy2Ot?Zy**jMf#U zS8a-r8Bq9R=T5C|7dLk761j%+trqIaF4PO2SdY48l+WZm-gf*6*6^{kZD`!}HwA@U z&52Q$E-Wrz=vK7Zqc0;D4W95jlkwL*b|jML=3?qvks%4@+Bh-5uqrz*)2l1{s6bU~ zrt%X8@TsB-93#Gc1195_A0%}&faLP&D@%;Pazb;Tu>ir8=IF|?X$X%g-qKESPUV^^41e_GZfLRQuP0d?d52PjR}5boOlTpt(rc(MIY zZzdJ;88MYpy^2sO$4D*AMeYGkesq4XmiI7~VuF+L9LT`Qam+LHvU1^$S0>p)%vW zw68`?4w&Vek1s`hT_ZAw!)NY&56yKsz8qG);Z?m;ri(GSvi)e}=|^5%le4C?LECzl z?)$C26Ky+q95n$K{mM+A5aW(o7ij#{49%q}9``;V3yJH%v^iT!ef=EAAvq;|DpY^j zeua<|yc*;8tR>*I*jUkcL0T^j|8~}3l2O0!+qAAT%k$WWalIlNjz+^pN@TpH)!W@h z^7ow!w#&y7dk?((RIlaijZfu$+p+!LMkwzy?iQ>t8{QZR@ENYhW ztZwM|SZeMtvVomJwlXd*)?IejBR7xCEb_kB=56w;=z>96lQpT>9jJ53*0>5>Y({F? zo)jh55o$1Ye^>!i`EDQFAioRAvM*ZK4Nw|M7_>XzgxX!--`$22WXVp za(+A*!Q9R&G-c={3m>&<++x0dpj1b>J3O0&>^tnAoN=0+)e%J5RqyjTOQBQB>E&?Z zm9qBuH~k7Xd~r>PPAkp>&d39Q-+>PAB`-`J5RSg)Qa(2B zGI|0>sO`0_7aNRG-{fg_M)0*Ypp060(ZTt$!Hu3fZ_TZJMW2r%fo2jjkIV|bu<92H zjr)000~&MFfeD7YolC}$&9Rnjdze5vc4Sl*r;L1ZFm38_O;(`x7ilRWuFJ)t{ zM~x`--1(LqYRcN891jIlfv^1EeJ&P^Qy} zY1Yd_rhIUSjd?+ij4Gvv-LM?F-4#7pZbcScS5zPTSS--`M2SQ({0E5F zSKy}P(fM$@3%lmiV#(sSvP17~j=x^l6E{9s`9UHIFfUzsmy8zv5SEFzcwuU16Aq){ z5skZ8;ED9GIO{9-A%m(K#V#)p}gjnCC?Unvg4OLptUvQ-?fi4`67-EyxQdVMa%BlX8|sZ z`VJ?%L(~r7PgoMvm-)A-cPMz_;Q=9e^cWKA&UzVXYS1SCO}-bGg`4x*k{`KL48<6G zDL=_thE#Jl@;S^hPZku8k0bZfevoiR{E5EURMxuf)(B0058N~@V{sh)oe_dBz^}{@ znLCRdYVy#houVtWRN&%}=~yr2zUc~VgKRc-4E$z&<@4JQ=TQHGD@krr+Tm#U6R?E% z6nNWmxSw1P-6vVt1(WEim<_q#Gat|vt(&`&n51jkk+E7y`4F?WhIXTB#C@2)Y%VC~ zQ)D*CSJMG|;pbER@o|V;$iGyOrIw#1;q)SHiWowX4KK#_oX0Zc-AT-lYsShW_nVu8 z|7@BuA93dgNwn9db^mMqu240ZKi_Tau)D)YHa|$35>46lCz@_B|4Hc5zq-0Rk2Y)F zYD`bN?~Z4i)ysnr?;ggX9bejsX@)Z|PVFU-#cXR6#1ima=T*r@!Vc2bkG9^0Dr#9h z*~(`9B~a6j+`k zvG|d1PpM~T8-g`UE+H?104O*Ny9{w&=i#fXM=3=wne?AMW#({-l`z$~2v#hs23_PB z$|=lK;=nRkm+qlPgB9#kLO7JPdE!fRi_|l+@U>|cKIMCM9|L2bKg8gx^mZmp8$5W# zf=b0&mt_)%!9C-jSF#(vWMYls5&Fg_P-DvhN(xM&n$cXu0LFJ5<$t@7XxNBN9V zLF$|5ga$n|FAH^y?3#SxNtV3ojFXx}T0aRr4c(v3ZVPTh>TaKLAmtjEX6!?L=gV16 zuIwV>&T&3oRl>g3-$={CvYz%&K;z{yv&cFM_UTJ6lmgg=wW$`9P7hUKX*~*LT0!(_@3rim&`zaM@^e zYh@oLpfRM@wMelmo*r`Mod;2#&dbI_z5ucZ7{?+OYDGz)Ly@R za#n%g`unpSr!Yy-G#n5VoGySGZ>yi(lR9t^BG+kgHqL6>8m_`5?$9H!!1(*H$7Pcl zGXTg5q*0j}gDyS3@LgkNI%Am85|v&>g4If;-}4U}`pY%`amIWF+35B`kconT(`C5z z?f0kV%hf&8X9*nzt$F-aK7-(1B9`ZDVj9Q6F!5?IeG9_7U*e9abZ(dc%MyPbTDNnj z2XUbJseBoM!=g{w@3W~M4k}@zEBD#kmPjx2EQecIS`9T1qwART3DP4b`0}xw@JLli zvDI`M6SoV|##3g~*yVov<1bnL)jh8jve$-IgqvilMF!=;3sU>LF9K8qT~e>=KNKHS zF_rO?39`zJH65cKT_JzL_7Tkz5*~g4>hT~SUSDd+a^PU;FjAjPC0`&v>vRC>Up~SE z*J?e>*pm_Gn4dg?Bp53x@>0U$l|MSkbq`!j=N2PA_NZ?qM!g@&i~%*UZ&8In+ffV? z#%~O|ctxt)?f|~W>~QT?h_fegmbKiIFh7!t7#LOdi6o5rxyE>Pf0Bi9Lmq^c9ts4uomLz5{VclYpQjzZQ ze(>PziqdCm?W5$yAHHF1>gv%AtxsPl%jH|CD_d3C;cU<)`UK4bAHXA|&pcYOHVyrv zYokEO!2wng>%Z#391e?C))Oa=71WRI4ot2_>_&0tJs@EFiiC1M5e+PSzs+>+8f@-@ zBU*qf3E3+!2Bb^bMK&5+@KNoXqh9|bGqYuve33%O0HPgbAZ_P4K&0ioKpZa`cVV&5 zz%E@JYsr10-s;SEdSdyFLurCSb>2`%F(EpFR`xYUBC+5dIK)Nc>w?%|epq)QZ_XND zLMq|bSNjk@-3s}>C23D{OdL;|G`t#@agJ%Zu*GzjYIwskE_cXkJo;W;X~NKRfSE)i zmR!*y9E~1J^@&mZ9wh8-Ma~T(5BX(Wzn@*NXy>=7zf>|Y`(QZ&K{|w|7ixPdS@--Y zW{Ep5>uSzI+oyvESLC~_*_1A@2lfm>?MfU?o>O)gf;}l6WY|a- zn-xS4Z$e9yRd&{UTsP>SXE;UsI%~b(i%6odpmPqSGxaUlE^uci7~(bCGmkKj|w!-Q2|TL6#t_$h{KpO1>eS;*eR9-Tp#0pWIJ7iL37o$_G{(TC$DR zCnBOw(L!@!FX_ve6&bukYo9x!tcg)b^*olt5VetklG1VbS3n`Hthi#Xy1uZ}IgH^} z&vvBH-g1+dHfMG=OgNuWH+9$!M&b$$_xHg`<(_6RBN9ZnOcNetGD3q>$4#-LXzXoy zSXSJw?CLdG`^zt{SoH~d5*hRQP|qZ0gMeHjBNMbWX)7V|R73d6gzKrwBUTHio<>j0 z@+f&@{?tIEI(=1Dc7pC$JYVFvv9T)5@=p*woeh#J&WSex%qII#)^6W8px%uJ#;ZM5Bi~duBLMMtp{@SNl&cL0G~`{OC_M^ z58Z0zZMEGfG@2{?*srqz4JygC3i3d}UOgZ4Na0U-xP!j8E|0t?T$}9{F{r|0FME5W zf@tEN>#>Ny-!B_5yYC?`&0)wtLP_I1Bsp$Gh?8YamA^&{D90{pc0DX#5z7}gT`RIM zm@TiL9xg&|MtsB2q~do53voj@p|;YNoWf7Ak*frCUR2W93MXaMH<}~(R>+-bMsPMl zBzBRhHDC~GKE>3$0!>^oC!Ht7Ht{dA7H!y!ZYOZP;Kw@=`z+)c(lIr0xkWcS`H-nF zpOx*BNXOfN16hO3jE2VT0$VFjaV3Xf5qK$n0Bnprodybk=I%&Cy1QxMdVcdn$wItz z;Up&9_}DGLT-SpChzVF&R{YQ-ea1;HDs*=cil8^NuEy)b!)trt7Ev@gE7u0Z--ya~ z%eSl_^-+}^8Hu_}fQr($mENx9#t@wOR&Wm2h46-+E20-aTx5PHKPT`2odX9;rB*tw ze)@>Bg!5N~Jt=RalYv_ToZzP;n{T$0TiKMC#Rf{;q3?>A^XIN)ew-7knQ|52l1O$u3yVviz=>YI~ecqdN^bs966accStv0lkgJu-2q7$M>{>>`GhXVSF%Syibo-a zJI1n%?0Wm-I0ngMDb=0+vdw{g6)h!L+dPBIq&bvvZm1+;q*)d3bWw+fOacER>(LY zAoX7Ac!(2ui0@oxaV?csK?kb=>c&9smu$4qJHcUvs_3(##4NA8dEe6nuXU8PTe4jK z+%Q6p?+T?ewAT8v-oZ{ma6Q`2v)@17gt>OeIYdy#tZ}|t;%1+CuZtNBi3u!h9^-|O zX?n04N6#{Q%O=}wa4jtuxPDBV>XxU_Ufo94Zhy1FtZpN3Do*qW z{DY)`ReNz|kzNpFHs3BIP*OisuyX~jTmYC*BG&gaa|oZ`InE;oo_%R^z36^&wJ4n-E|^bp%&^FrCftk zu;w#Rd~+capi9}yaHpcuR+4 z4Zch@td_6IjW(R`J{lh;`pMYz@A+)1UiSu$dB59zM33G+%DH!RIc-zQC>%se5My!O zIwHxE-n-d9Ltpr=Cw>3uPK?>9lDBCgGhB~y=H!aZjNRkOBx*$;La%CxO)$NMWZNW} zU!xg;I1o(xxCuW<9)3zJ-ez)uzL%A*8cVXzCvT$nZqU18G>6FAeb&D=?0JKxIg76~ zW*#HX~Sk02y0t)C-?GfPL2t5=h(V zUq^wrU&t_*>PLAuSiw^UwspNSjENqy^yCJMS-k9kRBy;>%JqS~q4cx-saT4m0TISm zMJwbzkq}~5@3!pK;o*7hnS0p9BRYetSM~1y!HK#?7B*Z*>*zagOSjq_n#buhU0+f=)^SVBaSe_ z!-Xhh*O3vRRx3`BJBYV-I8frtSrH!s)b^}q3tk-ak42=@w% z?(H|@HUY`a$8T|eobqm|r-j}#lR(*jKk!#mP?vo+Qjr@kt!R}y0Dp`jMv%KhZx$x2GmW?q>dWRekPN)2y*3nUa)PaB5){A zEO~MirY7Vy2}lLAb7+AZv~TBz(8@%Pwudqz{J0 zRjiN(oLMz~FKb3_2xap%sW0zRA>Wp4$6#Q$_5ux=#J(q+XWw|sPGvy=;QR*gE@225 zJ9Gz{?Rg#8b`UuW-MtJJ!DjMsZD)G1GOSn-uZ@Qz7e=GB!}SnX-AWo_w-}%GJ($y= zWzkL23sQwZWi>eK_3Mp>S3(6+hQ}6=soh%MF89?__ROZ$mP|z#8~#mG(uFJP5%Wnm zmLY}Es6Gl}!)N6PYvPP3xx@qVc6#x9`b&0S>#C#ljaKsj<(te@$Xas6p)4PA6PGCyScX4YM zY3$v-S6+$RzG&m1R;Ou0-vEr=`4x2P3L(f#kS0{gST<{eKIyP#$VsR$qahh&4CkXp zrSusJ?_Q3-BJ<8{NP{>mzY^oM$sGd5a%R&Lqvs%l@GadXL7{e-T}gPQbxEGx=T&-B zZIiZn?C^7kqRf%$hxG-m>>JkQ?eJQQk6)Y#r@Wgh{g}%6=Nf7%yy)~d+y(wBmdmsI z$?72B85cO9zBO4V^u-cmq|FiU0*uiiDQ%w0rH~>RUt%ubNK@qLxKsaWZa){)4IW|AqN72;I}u0Z3a95v!cJT5K3$7h zuXKb|1Fq2%jV#39j>TG#M@U?wd#OU|9P!qiRlPy6Th#qBUZ$etTiWRncUH3;&LOV!%CiiwK~{zicx|@U z+g?Bna~otvAO+6>FK~bwX6A^qJL|tEmyWy3qt-SnvEa`bI+GTv)%*yCG2Cgfnz-y- z9QmSBfJ$u81L>lo%r=}eKdc@rSK8lG$BjlpOk_QH9nAAj=WnufQc|gUXFZUK24x+n zCR9El79j!UhV8YCysbDs0gs`6h>3P}{RVp-;5K)59AB{M$n&KYD+4)K7&G6yR)j39 zu6dT5KPOvUzB(|qX@Z)Ql?Rh9j!m+6#Sj-%NspVy{B=JMkgTilICg zNWOD9)t)1q>YvlZp=(N+6u#P!zF07c*_i{pB9;MUEX~zfugRaYGE>o9X-uLh2y6i> z3AJ%9`!D4ORO`zTi(m>{L)Xe>bGI~>4+;gBn;OyE+Zqy96edHT65G%Zn%nGP0T%PS zk<3ymLH(OUT|^)@E>?PuScfE*IGX+Sl<~Z`qNiwRiTN#5-xAtmEO5Z%5N|8tuG_uH z;K;Dn_1)?X4d?mIngT1!De=`Xb(Ii9Img;U~=$A|wW{(nlL`-1Or6Beu1F7vP%?b(-RcM`VX2i`vaxcwIQ_~>iJ@=AVw zc=uE_g$qp=w$^+?rwfAwo9XcI|8(#=ZNkV;-RfR1u?3I%2QC(5J z9rCMuuxtnWb-kM0nZB_8!sV>=qrN8t1xegI41}mtrPi=3kjZN=G8Mv%;*^iPKC7^i zrZ&{l%EP+dF9DXe$dL=>pBhRlsR4StRgL6un%cp(3vrE=35&mi$LXb`9zhwlLAAWH(VdXUpEHzEZ*~y`? zbwv5gKS(I$e~{d^yoUCST}^p;s4~E{&9D=5hCgV#rhJIwaphMw)_o<$Kf!J;wL<0_ zprJg@x*T85BJ(T9S84B+q8~x`Yo1#PL@rj#l3y8Wt-=uoJz@a=rsH}t*_Nkkms6K` z-Y|%Xq=(y#ija+^&c0Y2X^mVY!t<a_V z&M^~8w=$9&_3Hgfe^C3@sMc)xvOT25WS*Cgt>whq^yN(XMch4%UCx)m+;MPeVC-9$ z3~bNXQhj_u0SUL*yycTq7p%{bXdz59}1cEO2k(qzkaAySuM~9c& zl{wQ!eV}!pZLcgqc9zm(PE+!ZOJ8u{q&2VWwz@{Z8d;3lV(}xTA0&4rmgrU}UJ%69b6R-65!_;4>W@r?>?t@#AQxiU`#wOOgr(dgeKW1v|7bDdrm?#7B_Z4B{m~thn(d1l3Oak?7>P9sRzLapX}w zz?7#v`i<-vdIL}HF0`Jf&Odq`ISj|&CeVoY2^6$D49&4g&I7Ix&F&4_9pk#k81A75>+a&@+8zn7?Q(KYQ3UnNMR;5Bq^zOs zHitU1ew#4A4IQpqgz9eP+0FjyZ%0`!qo^Sq^0KC#M~k6=^>xv+N_mU5DtS!PqTmH2 zy(m*`q%_uhx+blnd$DQ6GT$#w_vu*7Hm10^bFymmzLTYa7S5<)@aWQ!xvw%@+1g;Spv1v09ni&hL`sH0A5nOmrSM>_*hkGu6@{A4qO|ekr266l8styY)q!l zj}*&=>Io&EoNiS3ZMgh4OBv)XqPn(GDbq2U)Q#Dub^0&(RcM|NMSsy%EEyD;M>6N zVO~b9xq)?jSQ((OFehHxF`G}4`5Q_8*$qLg-=-_7Ramzhh|_r1 zYUM4X$pY*NjTwW}9cpPd1Tf~?P||Oe(;d zgFA?zCkGalL&_&JW$vq~Mb66s3@#Dg3&_lCra>aGWqhZp7JB_XvSDWc6k&2v7o8{b8n-qwXd&hnwe;XCQjYV!y&i?{Ri2x=`KlGf5xcCHDYyipN zg3gM(dR|qfPKMU7{7E<>yMKSKU*Ysb6QPk&(l;3okJz5cn;3H*a# zYVVeQwet_i{33T`-%fXrlFxTEd)HfY8D<#clReP>%ckX!-xl7CN5A*F_HUcs{|b7M zfb82yP-mE&XMl@)7FZ&wlZC;H3yIFJ|L@1gKc`bTSM75mDdQ1mE#XZF*^{o9EF%&4 z14Cmwm;)1E5i$)pr9G)RGh&hzAJTVI<7c436g6kI6mok&3R+ML+15VH#~uf8G%Fya z9U1%#Rmlx1AiKpw4){`y5u7hvUW$P&L9$`76G{P!_SZ_&$Nz?;_zB6nBM;c#x193= zq8NVo=9F95JY?Hm-Y%}wO&W{IEeLYk7k!tZwRP!3w$}g=^n-+#?~nM4%bpoONFwNe z9LLsFdAF>nMu8)S^vQ32`5DTRAF#-^(l=_$6FwU5kG!?J*=B)(DX*?J4J@=s)3j8rvusO=WBA@UVk@JZ(;QE;;2Oj zh@&za<>!V__brQaf<8Nyp{@MK9QbV>s&a#V4F21&)1rTeomNC3kWMILAqlbL@X}x) z<}|_yh(3*C6Oxel8E{(35ov!1>1r$pyopJPu}O*wg9S99mNw@9_{uLV{71qAbI0S@ z)k4Bz$MBB?9zjt^v?Bz1T;3l6tREqr%$=ZYf`5dhegFigmXrHCAoej9zXD<_0zt9w z-qIB3m*UqjM>!osYN6p=0w95VNFAh{oWLEVqb1bwCt`wNpeBfuv4j-AgeaS&BtP&E z@F>nE1w2ZE{|bh!VS|AEQSr}q|Fh;}?0(h!cie3N1tpaDU(vULN|jxm?tzY503_W5 z2^}Z>q!W;&0+0^)s-q)({Pib2ffrHW1;7a)1_1KF5eWf7os0z@+*J|Kfx0^V5uRHK ze4Jtrb#$_UqJSbam4HHpB&2@j`W3euNKl0f0aZ%=q^%tA`@#lk4qYxZL0(~ zSgb$VBkc7zZdG$_!^!IrtPFsE1io(1*O~jM4bZmj!_T^j?{OiNfjrC*%aOe+q_F-z zP2D?9Pp40X*na7_mF|7V=fhW4G6_y!?eh@w0*Lt?YOwTP$o)AL36ZO@Y*WHyUX8JI zhjY0#74M>)gTi?6n0C?T2R08*WIxnUJR=p%Rdn#?w0NO$)V%9s_RYud zDehkjBhi9B-~VQgt~FlMw)4bH-cHKgdkJCGYgaW-r`-H(=(V}KHoy{28#wcG!#X;p;W0K)b(zbKpE*{AS>baaEb`;2hSN7*41c6;ekmPNjt?x? zp^+u)J+1s`rpiOBgq)i$d~Pf={-x;Z(+aa!@;A%})+c5@bv*p6M{(i`t%2a%ci*@h zZ_%`%YULaD4}&Dtab$v|?PG!V^!pE_#<^1DGp!XR*jA`pP(v;?kj7k%ciI*a{LqSz zXO)z17(5b9{D9+_BRQ)b(yVNEop|@&w->MId~8Q&i||G#TP26CC7f3~V@a0Wg=zi~ zbmz;>!grfm56|3C^;vylu9f~(*S+<|+5~C2E`{)yrkRJH`DOOOLH$oA;%we>M>}pU z5>Ec8jVra!a2(U=uh|eZmMBIpnsYp$sSDRl@ilLfJ#eV5hEUO#hz;ElDcZ)^D)(fN ztSNT~6u#zIS{b%rIO~MpC(iEFfRjRoqnjEsM57yOwA0&;UbQ1~)HkZr);EPaXcLQ`smJghI^KIGqj47Zac;|@ zEp)U>6R-JfMZ>gOmEQi9hC&KeG+H8VAp1Sjs}Lvd-ng`W^^Z3m3k2|aojR}hBx^!p(dr<_U}z~ z*23HmKW0 zN2O5_vo=@PoymP3o~dW*VePb^<>sPLS1NG$wN>b+Nbm4pTE{-_I8STl=xmP@_m%fp;ADW)1k!-zq zf?y#O*3+9^b4HMawFsKuo1@wsxLiXlbW$jHi8%x=n`eK@bn)XUiYn%J-j!=-hmJY-n29dJ7DKAHH z+f~{XZVv}aV{?VuAyCq;vK;1?NDHVm@O=DPfP?KPh!aefL-9C)%|P=3n-bCy$|lAy z!Uquqc1Ce=ej!mYad9DDHeo>_VF5wlPn=IkR9Z}2T3CYZ*N;Pvg6+1WrIqxfyDGmb z1Kwmgteu?fr3D0BTwM5FMEH@8PXvUdq@<1u5fY$7PyZAkj{;92`J8+n+6g+y7NK0>%HcRs0YnT)@@bUOT6f!m`U?S3L|2@!zWLE*=Y98iPMZ}9g2XzOq200{uF$REH!XGm)zEp4pa z?gDItEC)bO5k5gtJ|PJmAwg+TA!#uY9zkJgLBXHMA44lSLXR1a|4ZmU$IbsGyr!n~ zT_gm3+#=PxvK(l%jit1?kc6mDBX)g9B zc0hhr1j@-A0fGLNUt9hzs&bm_r~E77$SjVF{t1`7I&R zR!B#_V#u*5cA{i769n=Ga2|_8ercn(GaNPpJNl?@7OeKEF8@p-Pk1g1%Hkg zw%b5KPBu<<(BskbYy2qMIsNhW$8fT}UglvRT>KAyMWge^LcyA}lCz?~&qz`>IMHlRJ*)2um{vKrN`F$pdqQ6A}S6 zvqL^X{`O*~1QIa;>6mE%31+{bgr&s9%uv=)Gb=|VTv=0vALabyw!rbowzK(#_RqIJ z@xCqa&qn;ecTBkF(G(Ih}yMjir+{AS@O7`%q*(wj8q`c3mGc0Xy;=ogj}HJ##?5mJ6wN zel2GD$?nPPg&h2^BIm5jq%oR%~>s|_n%Nc5Z8{ZF<@ zjHMooTji9D&gvfqMdQq2_dLnnf3!LnGta)>5+Gq*b&{CO-gP%VAg&nq$oS^4gQKfg zIlB`F;mG{?wNio%Hrb83dbg3Vwuk*VI4&E2Kb^lTvr6e~LlAv(m>1`=8+6o>+oahZia zD^M)}X_TCBp3$m4)zHsI%QikNY7QDf7KK){it-J4_BC+aUsHsmE^t7SN2sGE=N!es z$L^XlDPKx&Vfnb>>b94)rze*%cR=?o0=U3jK{wNOEa}>lN9fer%^G*AO0pqMKIt zSBw=EAybKVd`JjY+_^iV!s z+c|N0{&tzkg2AJK@>7!c_6$F?<$GCoUl;XDi=N218QBLqIhx%ooagl2$um)k8KV{!p;!lR3>OH;DV#`)H9=s}rQcN{QN9OJO4J>B*@lm>rcOs}i-x zK2fw?`al+XDJ)4Nzw7!3)`@6 zsl66N*ddrmj&w z$M^f^-xraPJ;t{_Ztm!uNexoi@p*2gmJrpQb`!n8^(9&S6*k7Fd|K4c;W~9-#xx{z z0IkdP$v<>9n#2EAVj$&P-*NM@)H8MWUOq*G&tCZ2~3Lti((t-G-kOUskSmTEtHT`RLy9qblW$+mlmZY;E0U+;7ZLDn?jy+??hk27Q^319j?C1g-`i|nix zFIR#2(}7dZ;3X&yW+v!EgyEyXE`+TND>wIWVRuFL%kBoo&(ypyrjt49>8Nuhom%AD z(79$llk%(1h3WZ@;d<$N2-KIC+ZSVif#N zkggz$jh*$zgU`|&=*#D|A2zV_c?YI5)bWc9uT3~3bsk@Qo!Ia>&_wDM4W7M5r0sd>b(LQKR!V2u`4I~U z$&_RXPsZ*X?_}YPN8*GcX_q@tnidVyg0UM9hTSN>e{6krpDG}f{oHHM6Sr@5w+D!# z?(|WbNmXZ;eGb!fxDgf*y5ZI}5IaGLeQakcDkl(S@J@@b3CYWox}Ry7NKeMy&2BMT z_4QMDlmh%|iBdY6qJ%neNb3X@ZTj-lOv@83uNZtEkk_CnM85`7oYO}5Pr@(B(T}P#y&Q6o7im^Zc z1!{P)EbFO0oiwDyzWn6Qg-<12yeIX%;R+62MkWes$stD3*oRaLFV*{c)g z0R~#Ww}Yb4S|lO!QcGuw*1Q*ESDxCUc4Xd*L{rV77n|A(@ln|RXJj~v{P}DYI7|JR z$NvF~Ky<$i-~pb-vKLrq!@niI;|M-Dgn<7f&G&%lH^+&_khAd7u+F!^_fo7adl=lS zJeoSsRbN6tkt@WEOg{uVDzp|!*9C46WN^n3GY;j5LETo@RqSs_0_)Ns(3FKJT7aCU$zoj|T&GK# zhAh~S2cT!ZCWA6aO8=@X0MzCFx{N{YUy%{yKB}zASjc@RFL)4j%hb6{|eqD`o_(K|8wTNof`7 zJu*vJ?M@kjMO(b?&bIx_Bb`+5|Tzha?ihT`{cMTADR{4M%s4u%# z2GE^SCqUh9ESxmlV>s%I18~XefJFxZD$X^+Dw_osxWsjmHD*I(0ZLfnYP>7B?)CHV zH1Ay8%~RWa?)eT^Tk-%+p0~9O_}YAbTj1{q0$o5D1bU(n&_5ONZ4y2c$@@ckn?!ya zAWdbRT~89~iIJ{2h=`DmD9{liZ3O?b+5%sTk2Lw-<}$L*^8gK=8^NxNYmMt#!)^@T zZi72>O9>G!hR9mZ?sfqX-K!zO!YjeE@)}iT*A^)o&&5X)n$YIM8fOJ5Td}cp$s;#46Ui45?ljRSgsPVt_rSFs3~x)haU9NhJl7IvTlg3 z8{D3kjWQw z#d0#8^94d&367)9LhvOvEJzJpxe@#VQji+GN^3~tiW_|yTcqettoXByK(^sYR-KW8 zHJCDaVtQvtV+$zE9=Xvq#Nd=6E-B)af?RZ<9-BmC6{*carAeSL^5yzvscuQ4Srn-O zXai5G<4N^=g;Ag~i_|vIlT=T@&7EL0xzVFE`_#4|NLB--Eugme)fOL9`c!7G((F+f z0c?iC=pG<5x@4p!&?;&tI%ibpib6$Y@xjW_LJ{~{31T(!6=o5vX%48Jaf3f+i&os} zMzGY2RJWqFomhQ0zPcA*JBY825CiH%q7*Cpk(K@M%6_nh1ZsQ!>YlH%=PB>G%X_ZU zp1rVZ&F`4A+otTcF|(yhZEBMns(25sE_t{k4Yj4gmL%8`2dM7oy6C+A=Sbgv8T<21 z>h7ahK8X*3XDk6KtcB;%q94m_eE5{6;IUZtcitU=F8@4wcQB_k`23T_b+E*WAlMUz zfIc7s2Sqj{kxfZ-3y{WuZ5a?h5BUdyBC+#pLit;QBC)N&-(j1s5ajVKc?^-oHf2#n z3Pd(2BoQP{KlgNzeBj1vi5_bQj}L)HP1<07(x zkPN^{(3==q*16c-UFCV!;2{7Jt2oe>hPtvyPafS+#y3^*Ep=jBo!nNZcC@Fk&9H?e zw=_w3B5i7r4M3aN)Fd_-`kFY<)5N=2#(Gp;9qVdh9W~NcM?0EWTZ5IhCfZUHG<4b2 zLiTvAhnpb6x zM+J_5Suj0vP5r-KmHhqB#ea8I@Z}%z{^oh^7oT1D%SYaL`sz4OqQ$hKNCOcKR|cjt z3Ds5zc~sVb&J{EHGxliFldOT}qNR4E*a~J>{i%vOmUo2GR)50ej)3xX_P`KZK+6D1 z(pdc(t50L`s?Bbd$)z+n6?%tEXP0TL5{+4`GKo}1vC1q_Tfl~}T!B9F;8u2Ob7~K; z=a9h}F?wQVPt53!ncPvMD`IqpjV^*SVsM7^_8@5htnWqOpcaqHJOrGmbB0WwxHXUg z%-)2-9nm?0&_b2j4Vs2FNT3a7uf`EEcvIF;5rWx3z7?%*BKfQjKX&z?Q zku*c@RSc+rF}?(ld zo-*~WQN2IZ6zN|hn%^|1v??`({wb2XfD#!vafk8XaTQ9V8^|dV?2SsWGmxOb-x4r^ zA@)msbiSI0G$>^bWF*vIn}kKdy!QB+Jf}jyyW_#Y;svWEi%ZI+JBkV z8?63ExXu?<(bu%`N9UYhc~kTBtnJx3`_ogFtMm3J-;_W8(siCxGtF1d3Dt`d-Ll*S z0ggoHP@26uXTeX7@YLioCa;i-(wb`YyxV2U<*b3wYMkCvT z+M;9+u>XY3pK=7#j!*_ldobk)Bpv>w9m+roO1nQ{^Tn;+sKp&I!?EB%&Va%0*Hgej z9YJV=#g}k|v+h{Y6E8U=w#z+T+9=J(9GT|*Ww#cfS;OBLTx#`@^HXio;p3j@S@1o0>$D1#J(d`lNP znPL{0fjJJYLm{N0l4dn{rW z+mNu`N8NX{0h!dOpGu9kDER&soucuvB}k3r5(crM2kTTy2R6h$Fm#Vmc71uQk6~SM zTSJ*HyJyJm8*(EUfjpMv;~oO*AW+#ek`f+GhRm)3#FyEIZn=Tz&yd~%{pnM{=8zU2!9-5voGn06#S`LDBp;cTggf%Q{MoR)poqth~#Rabj6=6 z`Qmv{o-2}Zg-;`tb^^haGnfP%frP`Ku>0e7kfSGJaifxq&VUiipb26wcNiQ8+H&BA z8A6%@_U4Y{Jh6f|UWC#U&3mIc4`EPoQ%6Jz4i8~=hb&O>M6G1c&Tz&PF9y=pK)U8j zlwd2^1eyfvKpS*6pVsa(x+7LUoPOSuK+#7l-Sp~qZhb%BJjk~WitQsd1s3^HazN{5 zwskYpyqRv^Os(Hctlx|`ZpPMbhF6b*b>h2~BX9N4RXKE&4{W6aOYy*jmmGAub~UMO zRdNfiQblY7kVpHnXdn7%5+F=N-8cj2B?BU?)y_Z^?u#PF5l1$}QHIC}q7iOORg&2D zyJSZaKOHHudk1r(%`uAe&R0sG*N!Z)3&@ju6w1`TGJT-RP#mhWz>$Vc?zYgrKXkWG z{(YhUO>lZ+@WcrpC-LOh=r9Ybf1EDAM{x0{IDzz?t{(@=07E1 zJt97GL-i532T6ZY$aGT~_jLq8cGiWs&)-`1)58tRLk|)aBDeyTv4IY-B;19Eh8!Ls z2_n1nt`-8i+`c|{pwAx~@`uL4aZChb;Q+}WpaB^P8goo#;J)mRAv0iGPaBZvFTIJR zsB!~IZZMU;0Z8@rsh%O(()QJ#te0Qc{-^KE{@FiIeBz(S|I1h2_|w08?IZv5$$$43-+A=;U-D%- zu2i=qGYC``sotqFW1O{$Jp8PDc`e%OS^2YMsSWfk;i-Uc9Ycb&n#EAh>f)K39-n^Ij^67;{asKfO z$B+AjDwwJSQ{`Z?988sbF^%X}&))g~x*%_J}&_AZU zV}d*3xN~H8W@z@o$?i^89^JeX%Da{9n2L-jPfnDl0NGK#OAlms!gn7c<>~J*-wn96 z?9zJ(BfFEn!*SIZ<-0B7yG_b>63Ta!>?q%nSWm$A-B5O;z8h5@BReu!55B_z4$R(w z??`aBp-gPizRQB|Kz0WpJ3|3Et~`)no-!S*vu_~2GmQ9-k{#tcT6thPOm$|qsDvlR zdPI4;6fHX)<-0+khxFJG@pW0s>(LP3f$Yqgey-9G=)B8X&$7-dGzKNssKXQZ<9~SL z$?Mub{O0&~CQRRcNB`+Zr@#6W!Pj1veC?|At3O=6^v$>a^~ITQKlO8=(zvXo#_60& zi(l`IVoYZk2T46DU5l4msld|3=WMyP&EooYq2WYDXuIiZD_LGoc;<*$F8|U|i)0z3 z&!J%Moi=1wB9iG}+H2uVRe$~Su-copYB;U_-i04<(-lya=4~*;Q}eML7?6(6_^|tn zuUpHZbTuq__H)<$ux%LX_UXIfD9)8=ZZ(=;jppjn+zL&;ZXCalb8*&)%U2>9IGp;s z7dZbaEcz3L`NxPW?;ckt3gERs%J<8QoX?F%5~Zd9{Pd(2;!`y?CS8jZ)(5haV^~+2yq|N4TN^5`b5!gQ*;$}M1E!O|c!BexALBdBYL3Vb zg1aaa-1+NAzS@zedgQ7?aCc}e9+(RxvIE(rch#vKxI`5!*-4`PW2R##7)7+>hRI3R z@>4a(@*O+4!(___a;D~nz7ySE9`aqsck$oS_-^Nn`0f_xD`i5wf$V7CrK$Mt5Pe6K z_hFUYofqF7Qm3OG_%1u*yP@(Z-_b**XZdc69p6bA-?4(bJ~Ku@=Qafamhb!{!5#74 zNQlQ9`VM4=nN0Lukc#hmQjG656^Si%az~rq(`BGLeW1@B4t!@gE<5;Y;5(u`CafbV zP%6*4rzeR`9NME`2K8`UkK{IWOnOtt@|_OTn^cmMB|DPaqg}Wy`yj> z<@UJTo>02dYH!{jiv985UNwhHAOHH>AN%^-AN}GhAARU&zyILNAN}iB{=-AB{NAM> zfAp`O{KHRw>s#M{S**5*ahjq>X$|V#F-suriWYsMXD@J`7m#tf%<5)tZL84OE;V;b zO*cH%pVDt+>%B~^llF6|FzoKBXrk0el-3ia*xQ%MqD%8;{MbN>jkst29?s|AayQ~d zLSZeIuScCTps+U`Rmy1K9UVCF-f3gL9xK2)EZng9eQ$eUhs{J8fXaH3qTIAhUEy3> zv{b;qO>#H`goBUCP>8%I!OcGa_kC_G2#SmqB5z|97*AC@LO8{z4G}5)bLmxM&K*ue zjA`*itlp?Sn3O~KdH0kyvl1;f;YY|CDA^sBI@PHMIG2`cZ;C`4s4L3Xtxcl8KmM>3hvkJ3|_%=8X)#wg#(V$|#}dQ$Xp&9R06 zSf*n*({ZE0-EqjE+im#n*OSaVGsL^IgS+?WyJ0eOB)HpS1$PIG@9ym2?n9K!JSDix zf$UDicZ}@V$;^T8P<9D+GLx0hj0}AzVv?Dx_--&CtWEh2r*!(+z8lJp_->to1b0Mv z#CPIQm-Zb_Q`uIf;K8z|&7$uNqrN+)JOib?924TvF&+9&k5F@3cJ�DvK^dPh!y# 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 z z<+eK>yWjuCY-g__!CKt%kvx!P(QpLv-GK70nyVBY{SE#0*Dd)w?f{9xnNLH}@XtXe zW)oB%>@~q-wFhEtA!0h9YH$0pDf5YrEbpW;U`QIzd*4gmzj^HZE+w$OO88@*xPdvr zAt+H>CdYDA2x)u>f<77KRu?5x@S}+pMqO)dk1zCwD4vQxaa7DsxGhPnY}7TB5QPhm z&0kcwU-;H6MKR=wP^9x?3o@%wJqq+iJ!LPOMI_EKOEbL@Orj}Cvckkgy9iI!VQ4D( z{b4|ImEYgv@jFq714j`Z6U?gJ?F+>yQ^zMt5zGtZ?|geoE75*K#<66YeK4I+A^@v> z&ILWF4>9&DP9-lqUz_|!STMX1HH^RLzN&g8zl|KJI!_5!Fz+6K-2Wu z!sGF8Y2vX?=d-_DXYPzIA#eA0*Pzh+kY!@-2eF(ueS4Zl zTjSXCnVEOGcUo0yf2lw(=ha>Cx}02(F=lVcC&lr(%@Qe*V3;3~v!ugoonV*ZvM(2TCJ&2F(0E`mpe>h21u^5`}0;RWLWl;GU?x2 zR>1>~AcFoh0M{-qh~z;zbvfwz+OjH$Iqzn$>%Qka>>vMam}^PHH`(+K+TO=LCP}Z` zUf``+na#nf^t63)ghlebmVvTRsX@hsz?9eU~&?vdO%elaqizw zWC$LDpaA2?x1X>q_;RuwAz6-H6No-<=!>1@_Z{>~?STyZ+_L~~VLi*JRC^8mbf?HE zW-~Ed$T~8>0wQN;TyASz-;_d_WJWr%AyzrE z`@QMm8=9NiZ36>qx6)$0rf{XRUcD%X^lV6Yy0)oRxVPr~i_mYHoS@zE6mILPo7?m5 z+pVL$FaH^J%w5=bp0;vP($$g8{fz>WN?{h9lr;_LiZ(72ewmY&5cxlad-XxIavTcI zAp;ccCRT`$NP|-&U*U=sZ;K0e>s|-hFYnJ!14-Kb;~^A8fXH4Xb&(DNsJlXO#L8jl z$@v-N|3nePO8kGGS36 zQ^KuNewuD=5OD;s5#R}UzI>^ErKj0o#U)&E@!J!n zJjvGBt(G2RMod22GGLb#z-pZ6j}9Smx1KK)cuur_1F-0JYyg`(3W`U*2DOkr-B?3& zgt8n1l~W0v3mEBVF^-5vu}9FHUx-_2Hy0u)O4Ws1(h)#z#)CPwm=MQ6`&5dqp>6}m z`>{1`Uyr~|;f$uJ;u9s23ZZVg=fQDtR{m%hF<{o~$KH;`H-qzJE1O^^w#w^d{U_Yp zcg8k>&b5|FR}07%PB&7aM3X!k3~>3@RgdE3vh@N3w|n)qqIEpF2_76go>Py%nqOLT zv)XPp?abM{NkE#^S;Ed>cZsdFkpD4-Y%Jg6;ipsBMuQ*Xp1BHLBT0Y1-ET~D-+e)Q zS#J^_mGfjbm*MkioY(UQ&UNzFj>n{*4Bj8S`&g~&KR%uH0pKlv>)A`U2rUv?QZ6B$ zc})AoYfN>@KbrWicRwAwU+=cXrmn*uDJVO+V*2@+noj6O|86AnB`I!DxjKbf`B_V*}= zjxUBRo_AihRxB|+{eC{kt=IK@-a_%3me}g&!^L*RdC+bL3S_5#KS`@W?4TOYd@s44 zV(W|N`pJ&_&A&UXfY{W)9TDh%ZobOsIS*=;>L#wkExO|y-OQ=H+0l-kBRA`Qd{K6% ze-X^R$=y11E!Q*1fATZGPjc_QHh3NJIa)&;g+KoH6#;Y>M*Jpz{!_M9M7-?2ya?;E z?$r{x#RKfwB8bi6pWW#*$Ij&fefK`pod~elD!Ev@MGVj#1&+Bly`g!7jtxsorcVdN z0GX(BUvX0db4PZB3nV%<*{(<}16yXxZT?3#Nq(Ob84|^3O)3A_@JyL18gOcm2R}tI z9A;2Y1#p+_`R69PPgAb$&iDPV9TP9SyZ&pT2Me-)HxCL4W=4hlMh9F^rx^zcAA;(; zH21kj92-D26@Hyqe<^|~Z{ekfEQG|34~cm{vlWeJ>&PZvqHg@S9{RC$^~M&r%Q)!L<% zN`h)!U|SNlchIv(o5_Nf9{0)Rwd|qKG|Qy6@gE3P-!KoX2c0|cAJQX~+>Vrcgz>}Y zH1wYk3>DWW?+Zk~TcYxN+wb$=u0!~^jemS^XM)npu|CZRCe1I`3EWn4yR;>JZ4);G zQ;<86{ACk*JLP@>L(% zr*;_taR<0#6~_H?5GAKc_>2`UgN!w&HAkx40WU89!lqIVVRIW{=FTB@`3f+^&FhQ$ z9})GXWs#)i>94%anRfLnzh=8~)wR>N;!Su}Ia#ACvG<=VthGHE@Z&7Ql~PAs>@kH8}fP@S&9Gx^Zaber?nyQn7sJ!j(buu3m8{6-~ zmL_5y*UG)3QOl;aN_0$DMT>x5w2K!E&_t#T9L$ zNQwd(kwC!8e&?S)TfNX#n||>+kB}Iu@(V856BpMr=)ZC7JQMvX^c&H5ALtOpNPw^TWM{P{LqGDmtYIx`Ls7UV?~2lAeH7R zT!-`nv!!K2V#=LD+ZY|nWu~E`Wb0YYh3j?Lii52@vSHc^Hrjos!nl8sTkT^PK5R`x zOWQt<@}D)e^516<0-m_>IlWTsp1Jwj36uo`7jLDeHna zXj=hLnOqbn;`T12EZk#!LjXpH487Cw8-m~Tpqy0LNAf=>@?wugoXN#ol~G!$AbfOY zh$RcspEpnk*GS_YPWc^X{z`u|Ra8~faAu+sP<=2W;`B1AWF~1gNU7jyZIk@(kf;En zE~*KudSASAqP>V2@Vx(h8Z0X5Z$DsN_aj+C14Y#n#xUUaY7${F47X$S@i0f12m?9C{Dj}?l$Pmu}y-a_AMvov{m z{>-M^p)lGqxk9Sp#31ecUKD002bc}g(=r33hZcB4KgoH7a>y zn4aQK1?W3_@4I6-kw-YdR5SAKQ=H|5u#*n!`Q2J)VOJs{Tl-*B<9hh6b-pxmR_XclDr<^3{Is~UJJcc62Ix&B*y{njdlV<@LBVY&!I{{ZE%XA= zM0ZII2jKlH@7BgQ6DwjCB8sqCzCPBStVA1+&K|8rMFqTR!#oCw%j24STD|?Rzu5cvRq zXg}T4zm@xyqjbORafcoeWT>|Ehe$CNcDLGBRwwO>-|zR{0Zi&f* zFLy}cEzy3|lBnu~UwfKqGmq@mDXq&obhaINkZN&tKxVdS7Qg!4D4`-Q-5>c*pGrOe zOS}kF2|KK?@z_!wQRvbka0y#19ah=Pnp$<6ZWYchHz$^L_4+=O(*eE|v_T&)VAnCyG+xZ<}j8iX)Id%&8 zf~}11=Y|Wo;gD3=TtdY5pL=Q3gGkWZ3Bd3^;hffxu{Va65s$XP=W9Vgx^HSm;=E?f zQPI55%%5%t-?fO))9~5sasxoQws>gOc{w}4@n=J!;HB?pl;8KfM|?t#@3u?1$BQV7 z*LzquPg=SZ)yuC%Ax9jTuV~c`AFi(k7Bd)po*s_UA+4_quNkv5msEa2nzejno_l4T z-KM2A;AGVi%O-pMc02txTX@O-f)6_J7dZL?TZXYesK}v8UMA$=Nqp6Ml4DXSH^`nin79%F9>D|}>ln*_py zxH@ob+ILD)3(}2v9ok}~+6Yi=Cy-*d@0j?-`_capPT4`8zk697>1h_ihr(xHQU}gV zOo2V?|5W&46Z^!+`>4|sy1vzVV#G&RxGQre?5&GxU?)1_7>cQYhm9|3wWMg(357$`e~T?$%5WW-S&QPu$F%UtXqrY7GOV1VKpu6V|duJ97b%`Mils z+8E$8a_&ebbp!WCY-|HeK~O92iQo#;j(f?r96kPkm&8jJ?2tSidkew`HAIW48UCpC z08HM&=qPV4`lMC-2#J2^VIJUtHw+Ufg2%@=Y@SI&R2jf=@w6VN;GD|HjJ=ly)A480gL;fam7CSqV6x z#7yfQWT;*`gA>5OP7RRWXYBm2Ki0_F?~d^Jik6;2W_IughZx!Vz1oN&LK;5BaXJNc zeb!-3e7z;3tYEeX;qcvEcH*syg&E(vB!Ax*O9cB%(&SsGuSG@3Ky5HP8;dSGUpUCz zcg>8@k%2^xajLXr=@M%!|AMQP4kPEAxf>3=)fWs!Xh1HeWLq+vgpf?8()3RN95_`I zQ!&}uDgKH=0H#JUHNSXCux(LI6jpIQ$6WFwT(6+}LbV&P-kTyIBgztR6vQX?vkQu- zDSphhmjLsLqa`f$MuR>tg%IXP|03!~VA%=L(dzArf;#|a5B;wb$xnt6>&EzLp*bf= zFkD$40xQi}?NYw?f&T2s(463Zza9WFP8H|m{Hw(t-_tB_rA>DME;n#*x zq$f`AmkKsJCgs&C;nu}-YX7PF7OkNOKu5M7kWmCE^O%!3aR;ux$N|k5=d#oMvt!tH6QEMkN-ws;0-rcHC(cs*cwXvB|lQ?zh*bxL)W zGIVwFRh2>(YgWQIST_mNK=^TrC?rrBCUgVJ!~7ZQ_HS>DfsDQC0I`-++4pOa+Ye~N zIC!6_x}rclsQ;(`Ed|hV^iKvpH!JW1*IbYjz%r+FJEnBIymZ@+ry6cF`nyW?m<5J$ zEB3#9zD+9bez#EOY#}0cXH|CRy_+iBJV==oMX&kB)KqFg!3#S^@TUe|!qchfqybC( zcm*1_m6erE&O`;4t6Fu|6Bp`wfthZQs7q>MxuJuH`bdHKa+dyl8fMkm(C$j3QCH90 z#>VUBK;-teb>pu$|EnzY3-9Ii@gh?4rJ(G0_UB0{E1<)x5F2dr!@Pq4Jt_8&k3m8A z!F}3qGsgBVNR$S(yn8kZi}S@FIkhg&28UL`gse3 z6>Wc8jFAyDJ-Z9;u8{;1ie{`^mW_>#!C){sHfn3;*;)@;EM(0sw$Kt$Iu_^p#~W2U za|COvCPQsql-{^u>q^+@+9z`l>R60@r+y|V&_Uy*CwhD9x3|OINlH$f9*%Y-0-=3`v4Jky+AxIA(6XUfX zyN!eiCONMG9rl4DQQv-QiSu$#<`$o8)E4hbd|lEDdX6|l_k_fL zQE{-Niwkm%%uZ!%D{)LCVjT|4B3iT=*L8sG9Qt*+%q?cQ2G`(N@pH#L-seUFn0u=S z_z?v{jY+uw!iZkaJ|svO`5Z7<2gw3DIdSNLZ2=UmDSZ!rYM!2gd12WWp@HY?lAR?3 zTD%Cuk>iV+g^tj>elE@D%CCQC`PnEc%Wu*@>9{a^$cB&MsEoJ>^>jzud-um~mMQl1 zu&c6eWvRH^M}T z3znkxx=8o`>FyBw`8G4+Gid}EhCL4=Ed_O&@+9xj6FG3oaza%RW5Nq9-{PZx6A!g_ z=ttv(K3R|jKkfOYy;0TS3hHvb5T zh=?3TrdRsd>OIy}mm0$BfANu*-v z8GmPsWWGS?8&o-uy)2Jj7A-D+F28>={hc}uM-HOO=I(kX(gc(!Bnzw3+aCc}VN_(3 zXXRWJXz8^hyO+hRJ7DZ-HeKc^(!cS<7j4@{jyzo#-}Eooz^$#V6d&s>;U~Jvayw`` z5qp0~y4?I&S5#N$T5iFa6YXj$(UV&OiqcLW@Qt#+dk98gfEXCK^NPk|@_vv?QK8jB zY0Eb{yi=sdpCly~50wRo(o;ym=`e3sVLH?n${?yhELX?E=r&TAF8iNMMnQUfKl{{j z3m?uAMM!}M5TNw`$UJ&);Lci8I559U=%0-abr^5&iN^6ypzP;xduZ;2u;|hxCgXGtrKP2P zQdgkI$3hj^*s8si#+lO+d5&onI@&ptqBO~jJT?VS=hXUpRlj8EUJ2WsZshn%f?wdl z?!8gv82{V1Zxa|0aFC+%lWaKuv2&Ni=4(UV19-RNE#v@7V-`oYVYV4zBb86iejhpv zn_l&>6}yrc@#BUONEl?8;#d}01TkiRmq8?-v4O|n#1)6G{0|><&HZxCJ#)>MS-|J; zgv1A20(6B&eDKjMi{RgQQr(n@iCOYBL5dVBH~#8w1=%_H1QvM^$tZoARSySrBHq2;Y(r371~ z3_U)Ph}R{DvLo;~Rq{`kee(w&-~l*s{f|n$EgQiW^SoCVrer2tC;^;(Ai@K{rQUw5 z+25bFp_C@$n@5QgR)5iLQ)N*b$!e(Es;`h-^3vqoy+3#hvP$9=a*Eu1GoHI6Pg zNnhb#kl`@&!zKCi0BwSdeI)z)|4AgptKBISwMAMr%K%F4M^u$gF(bc{9-h2cfzvF; z0Cec#iBEfsrizlfy>p>jOkE7`=%=_6ZEv_=k+t*&-DLp+$ypN&*zz{gr+4FaRrJ^Z z#JZ#sP*yO}BKc?jk~Ka97XD1dfPEY%|F35K0U`+CX)$tYn*6Vk43TyGVlfuJzE6HN zhiB*l?K_?wa^jZotqG-d-v#fIM!nNye!^u=AD^*rxyBaaqfSo@iCeGoiC!osu5|rr z;~wp|OAm#G!4n_+vFdfcuIKt4%fXaGW^gtVB6@^F z6g5Llw*l2^l`ASLsXD*M%xJGvpXGw!JDu}Sn*#37(2ZeWK9p`AZ#6} zT?tJEH{ncwc{GDM>0e|n?C@onr((Bv31ogrgen_YY3qKeoIll&GM4EpFO1#?#~Z_g zSxav4ZIrIX{ikP`o>*uVF@be~y3#)lXr~hZ^|z&+O(7>mQg1-NC}4j?jvJYyVu|?G zRZ|EdJO{6nIsFj_iXQ?%J>L9kT*Zm!%#yQ8?76iQ-Ekl4mV)ZL^3XsCJN)%k{99Zg zE<1(2TSvG`cKFd*`m_n^OpQXS0Hd6F;pNi3^Z&v{9wW<-6QRVtDo`H#Ucg^NUblvq z!{wU)y$Q?!-sXUO><*p@C!Ps;M0Y((yP2jj{`clxR^pC1!EYK;lM=~b)<%#3rG~t` z{8?~}Dr*W*ikYp0KHDfK*CZ$1B;yCy#5nf^lpAW5wa+`|<;Ack+C?G?`$cW{!H=g@ zOuU0tyhAA0D0{qia-z9kK#?S9#U6%3pd6*H${5k~-ywl=5ohykTEt6@&EVLU^?uTk2T(V* z%^JWB9x0NCm-pfypbBUz{;QD`7`f0`ALH2xJw<4hoVK{#naIC(*qQpuT0*_leonf_X#TC$3& zj!_q*il*+N@VwP-me1={kX=WmTA@Hlu%Ax#zdhJ9pD<>jfN>kzw2Z6u$!6L^< zYD$%UyMBMX#o~X4cz65MvxT;?DqG8HS<4EiJ-KBW$}0kV#GWU=hCyDz6z3EvhAK4@ z*YRTvr7})GRgrw&A1x?~Rwd}D%sZ&gJ9zFn5R_WC;_IklW0|tkjr*6m2u#x09XY^X zUvv8HSC5PW=`Wd*4{x0X%3jXPn9zs#2dAd+9ndB|z8Z@VJeq|6ns8XOOSkfINV?fF zFz9jutl6*^aX?@&m^9v6pL8nFf1g4V<~7GQEh+vtMcpE->}!(es6t05uR5JHBD)z$Gr7TFlFvx@*}_1(!KirCl65CSTJVBtt7sTP~JP zi_I$Z+ld%`=$ish_HEbE>1k%#_W+UOXJ-b$K59L$y}-YZ){QuQ&0hHnpnj97K;bYh zN$YC{Ot7lD`s4Y->)pn${?#+Br{;Gge|;^Kz$WbIWRwpbWwf67 z=n@XH%V`0?Advl9VC6puKV2@Jw19LlC@{xPBhd2k!TBH?r(BHykA7Meg`R3%U4(oRKTMA@#KW6LiVh= z{5o6^c00zZeQd_^L;+n^=CzD8H&}qme%dA9ZtBJ9&NkY24Xafb}<77dOcG ze7D^%LC>m!2Q34(Xc5+1eY!@M-TU(VM6xk%gnKXaJkOG7kiFa2%^bE2F0oZt%YIj7 z*jM_{#?r=_B~WWP(`v0c_KU@pGrP6Hbf(Kob@3O=T20o!R4a|JzTuB+ndglLuSjWv z8@3H0xPwNw683AiBFFtdmoGvlV(2`CSx~X_JqIt5DFEJ|aof9OK7xW@>yRAC0=is&)_@svY`ZZwsIt3*BTKVvfq0hFb~=+!4lw>)vw}c`pkwLE2cY1aUSGWBG(w!92$lzu8E>aWX?dkr(?{1M*SQCTx-yQ@bA6OF~ z5He73Z85%bsO(q&Lj_}7TdD1ze9&x=s>(Z1^Agok7Rc6j9>3{PbhRL9>zQGCPa{T@ zz#Iur1cEX20R#sPRv{z*oYL6plP&UxFMW+V#3fxI`=iTuDC`uY-lg^h75k8|fpxFI zeZ>;{eKUhe7-w+F@IT71TeX*h`6s-EEjqXFcrJr@eepCObNxY7=Sz>@MkQB?=)AO| zJxfwNCTMIdL?)6&e2Imi~t?77-|>-gYP5%q^JPmqS+wnP5mU*G@>+O zTBcf0e_WA{lH{}ko@3&2Qc^*1vZ?|YP}}zzJRe>O4{jeOf)lajKS`*MmUcBV{&hpQwIkAo2_c;b;*IhC7aHqZ{+-I}J4z?p z3ZdUcn+ii7@WsXQLZrYMFe9!P#849WhlfurL?PEHI?o<_`~QYcf}4ZKsg!==_o}O& z|EchoBSvgv;kbeKDLmb&%4!JBdp_*{h0RnJQ4H|sLJG6!vrC8a<&DkkHMTBuY51im z6*VaiuNm`#FWva=|H4XB#ybnfy@TwI-wp8JwP#=6nh$JP#GIRkpBqJ=nnj+Pq@0FD z`g>prpSVt>o#xqyi>AT%@rCGGo$xC!A21ryL&oSKS9h6XgDLeY?oZ~|KQURld!h_I zz+E@zfSq)}G@W2_>Ue6 z>;Rz_5O3We7O)iBn8Mw$#=SG|K)LAl_Z&jj*b(;|NIq@-Ab7LRxs+_XG(qxhttKF7 z@#4mnp5==5aZ3Lt?RM#>UnIzo4X;s?&Q6ie#!O_Ok9a(Rh7BT352Yt91jT&;@~Cr8 zt(0uL@i0RJIQY{)+BLsGppyIx{E@EDEH`KBOE(*qzq75+-|d{5LVve>c^nWsi=`4p z6KeUfZb!E~fx9vMd38*zsW26`d{J=qzBa)=!1JInN3>$1$kxk#Wpwgbg&#ADKfLsPR<^zrQ#tW_8!wp9l zo6OvKT^~up9^r?xWyA67uRr$>|Az0keVVIg4<0mrn>gl6c4rLDTCBlnu?{?^wu&^C zg;GOeL=$3R5k&F=*%x=@3}+x`sy582{eh9zBJ~v3wQ~ zVG#y8ZV8(E$Ae$8&mm0c5?rkKd z)bV+N<>!Ztg1hIFmdORL_Wq^LGmGlQr^;ZGUA8@Ei^|nI>+!7YKO2E%j=!51XgJ0E z>Q7dBo9!pnCJH{7b{?Jw(QMp`g>5(u^vw^3)F{%`lcuM^R2Ecjg6!-5y#cMwQv2BU z3Sc*f!<3GSg+Z}GP~4toBR^0A*AutVop^IxU2ocNP}=!5ZJ33hb;Zdp?ebA?GyfxK z8m;tTkokZ?d5BMWm@FlphnfgK{`)(HOB>BizKZ+o$%O59pBsjt^&!mtmuPEr&aDd1 zMBzEHK0ZFJZEZ=nzz-it5@TDWKu{S$){0mM&S|kdVrM{M=);lm%R;ueaNp85T)iu= z*?j}b4fB=O>$Zi{8Zp1R;|EKo+|J+4@%|n}wC$?+?W*MMM!^m(QHlSiNSC*`dt?6} zdv6^TSF`Pl;uhQ`fyO0hTGkYL@oy9Cz|+@0VM2p%N3ySoGk4k5Th$Zhgv@BN*3 z&%1Y@`_35m{gECF)>>7wYF5pv>ecHve>GRb#i&JemeFVC?B$-+ke}Ry@ge$qe>(^AioyG&T#Je+D%|lDg z2O`Zb-r3pnp%{}yvVMk2@r}F6etMy3b^VwWL*-b*c8c~>)t^z;LnQN@+(MIUckgz7 z*6|Z_K0Qtps?jIOg@{eg&(AL}zf2gU!bbK$7`vmF=@V&rCE^v@*evlCpR2sP)%*JK zqFDG#o6r6ExNunC5&`6OFSFW)Us}Bh`ur4O$}Wt?WYei+2W22lof*F%r~Csfz`altyJ_M-^m8CzWE9sZEt7Oj#vN9mK1BBP-x|leOZ(-L!A#bpB;)uIFc%hyZ_w zCz`p>K>Xlt>e)iiW?RKPijtZKA;uFnxqg2%B||>1*1;KMb;gTOJ?F^q)%`c_;H?yD z4L^?SG#c`}R)X7s@9WxM-FZ$a z93DSRwZ{oP(Xx?henE+bK@!-I>wldDfL?RwWFt{s^so4!^v64Imr{CA&1*B>YhCj%J zmW&6}q+QwBVT8pX_fWhoZ%|&HSa|X_L+-{F%y_f!B8UU+m_NCne_r6ppv8>!RlT?_ z)A&$-b@iTV^Gj&@#WxRokFxH0j#bJZ4>9gRW8;Ub(}?=XKL=?d$%HRzRp3lkWu-V? z^|LH~)0ZArUO zrh8QGNJ2L5eW;B2dD>RTUfKY;$xsmi*IGipkR3AFOvtEOQqLG}p@c}~vk^z(bBo2L zdMTQz-QIk5xED^L&D!}{Yi~BL`rQ5b_0L#DVIKb%&uk9mI(Bj#n$9-lI-V<0YqEuf zsCOEP9U`_j4ypKdRyg6|p?<~0=9@SWo01#gl6kMUB;NelK6qmFx>f${-gSIr?6B}l zQXl@ewT8B4>ptFYVcB<8I@JTO~4@16$MCZveG+g;Y~oVG68srM0dH@VmF>0_bTK zIiJZY1*&xzS-qg^MdSdO{>O#e+kt?D>WJq=5kcK%NeLLxXZ9GPp%*Xx6r7VLwCPP^#`v_ZW6K@#So{J$Wa5C?C&F5rNqr4cle)t9>zV$)ZOD`3dEA00b9?P zR(ZeY^S=3L)a!X;zdd6>gr<}mcdVQ{gw$xo}d2Psuf1VNnzz;{-h&K`NzAB%!ijvA-Rm1vS&K@7sC^^u> z=b~jM-(LcrjGzArl39d1e|7_AB(RVe_JW|r z2!o7Qlzo~BE{#RfmUEzy3vfG(RiUUk36Bk$35w(=wC8N@v^7&+ZZuyd6;g;@1jfeI zO6raw@?<h*UqKb>ywzj_GzF#Q!XlWxhF2-s~Tm7u$ zDfl7`I!Jyu-aMhWV0W-y8w;WUk;ojN#$Th)eRmUmB-?7|+PAUncabw=pa%yeIv(62 zT*c)mTtWf`cCPC`H7y|^pOTtdP&qm=5Dp6qq!AcNiCICKT}k@7gy=QQlENzizsD0Y zNO449)A8UN`ss1hv@{d==L5;i^wfG@a(B#&XIu1vkrA<{VP&Ca_86m%GYS<=KQF%a z&lrrugQmi`g=s-W@9-P|?i7Y&S@9oBB13j510z4gHf6!2wc~*5Q9w?@26yn}I7o0b zPjWt**^RI0;gO&01xG}ylwwo?_Zm+5qo)N`tt()2{7g9Qf~1{3c2R!}1lbvfK$Wuz zl2=$vjHmUfOw0_40OZqvC|oIrT@P1T2m#{Ppn6XKmu5!vAlTF~rT`XI2G7`{AjAo9*%$h@&Br+MHdnt0Z{U@C(r>NPB0f=W?-12vm z-06JXSH76Iab-Lg$sp2O?_fJP*eJBLJooac)+q-e!B&erO~%c|TJw~Yl<#iM6&i3) zNd#FPBw-`1i#@F~1XMV-32k$Z7@Ltk$$(lm&QGo@$NQJJC-dzbzhoiBL!J>Zziw%) zso8jmC(4M4)gwuJLL)-+gXz#A&xc`x?`x~I8y1L5GU}u5&6luSNlQY=s#7z0I4G-J zcmJvJYZ30vXkq|$gHfYF>3!vg*{H2rB9PUd%wrJoE;$NB^W)>D9bq2_@%+g?wqO@c zoJ@#3GEoZzojDp*xVd4K%J<{5J)MHAGb%N#cu@peMWdJ#7y3!QBTFt`;z(=aFA0`+ z{VZ=K804VRB+c{G+2TF>$c!6O4HQkeqKrSjZV0Tzn`oAYeD6504fODvZ%~+TV1tYZ zr!9J#)PC%tL_O8)7%v3`4pi-{v95BM*^3O6&&F)HygeF>l_{VIj&-EIkttH=ig$$H zjFOTL>MWYnJ8)GlKHbM|ZI<}mm$%8{eTzm878e~v-y%a+4JhJddc(zwOljuGoumRI zrH<$J42WCR^PN+*VF@bd4u!qEeoiV+kPW@LxCqEMM}N+L{&=d4K`QLM*VB&fcX3R) zo#W`|aCVL{BrF`*H``4{&uDh9e}=d(l-66*T5#aRUwD;>0Qy+MlQOKAS}kbOLaXVZ zyNg7gb8{HGV)+8*ZB4eS%dlaiFipa8!d=tR;0U-O+6vidPGnOqSU&8TeanW|w(W zVtmWitIUZk&NU-jkSJ;3Y{_C2w*it^`h^(->~-qGR~u$CcIp=o zBc7$V%pA#w#S#j}Ve6jKPHB}p*7pc6M*E#_m-}p3ChEmr4DP)u1ZTv5lzXQ%nez-4 ze!Bi|CP7u zj;e^his}@Nf+ZF#XjXDt^pmpGr}*uCvGZX3`j7Kss|hVvQj`c4L}+s{a1;6QL8&Fr zx?pa`EY{KO(738LVVcF67P9Fxr8k`eh_0Bw+q76SHz)igm3AK;Qa6e3-S^b^YUv{F zW?c;A>-r)@G`7RlL<{7bVeo7*TElxTkumQm--ce73Ug!7!8}qV;+#u*UffJ?NoLsL zl8|#uVV{AyTscE=nDb zsn|fyJ7XeZSXbl0K9%WID82wmROu*$+yjKUNGj6H2;4eROHVU=RiCp1v!sI{8Etev zQ)0hVY7ug3HP+sIt{UtqhNM|iTr0B95^IDv4fidY@%OC_X=V35D^(-honoW0Wd74e zu_`#WIT4-5@Y0F|_rjXvUokPF>S}rx#!P(UZD?+FfS|-Ad4Og&oblqvGzxb``a>C$r z!slBYB5GMu>#E!-s=1l@qyKukD4Ce$0LC^Y_kwa22q4AO99{*Yi%Oz@xu{Ov-sp9j zkwia%;5)(VaC7Mq##V(-6n-gZ+cAt;F%8XfFZD8`pHY6x?DjMQzv3HoIq~F>PMH4- zd?-3JR=7Jh>l>M%7(N|R=%j96Ps-_UA4xIwmN8yDGx*vke&zoH=sWY-z+wGl;S%ZD ze6ztkDNp5BEuJ1yEY1OAfJ2#yOv2vAX4+*a2Yo&=1M3G+UBuQ`5iOIUQglm)G?4Q$U6NU4<+e+PN#B@K^xTN5IUl)-*atVBPDVEc5 zde=7Wdz<}3IP1ozY54I6Mqnjtw-!0t^v^VsV!c4H4GqyRkq&%=<0JUmTJ(oG7V)6e%?DJs*!gr z-#w07ug5ZZogW`O*GKBJyocP5Z;#FtGq{VYXw5X!inluiDAo-;=2kov2CSFTG~wr7X&(N9l!;g*%#^aU-E4$>NqN2C`53~j^l&SJD zJ_WWIsP&o8eo^_|XZy0@_2Q4YV^C;fis5pzDS^lMRhF1#<9r#fK~a^;r4pktf2B16 zi!+Pzpl(rJWnFV!EZxZL%$!FKM|o~ zW@8@EP{4K|XBQ{1u`L?p%-+Nb4am+4UlxTz#?vM=K{8KafV26J*BXSJJ~yk*?Z_c)y2un3E<%X8n7sWL6*jUOJxQE|H@D? zc7l`!K=v*E(!-(#cD8qQG6g@?$N8&1HG3Ch7chX8MZ?np%%Wm!4i*ynSBsxY{iDT@ zR!h(+axwEVD;PVwJV`3K+S0SAvq;-(*b51aHd(PwEsb?X3S&{L3DH*ZgFU-QA!)k|nLq_LRj9DX9j@l7dV_NU9VYfP;tUDUC%#1NbEH*Cf)=;DB5} zhWamQ6(@UBb+C&bi;9F4iw4-k#efBp?Cqs!&dWAfJCtxTm)K zZmN`}jSJX`Mal-!A_=gmJqR*iz;@;?761-54jv()->VD7Vzq~O*=d>U>Wg83bd6~z zoXp9_z6(wCrd_?#=8_yR%ZyfBK5-;U;xiRk^S;iodaZdECN|Ne*wTGjiG~KfV%Hbi z<*a;vNK)uq&%9xdg8Oyvpk^CmSx75Z@lw+Y6ST*NV61*<5WyO^9+IT z-$6a9QYsZhOU6q86@pY0=A{F4NCyE(pHj!7X%>chT)Zz5+}VA$rGe*0TV{N@JB7k= zao1<}$2}R*d_$UpQCT{;P4)$6e13WBwa|boV#A`>lXo~-RJj3H8QRdJa_rxKn%-UK z6HHTz&`(eV#K?ur7$<|pq-2u|^XQ}TrSZX}F&iRgUiO)#v&p(Nvr}pCz=%|Z0#q-5 zDGLeugpyCfZv*lY=-|qyc|_JT!^=HE2qmyDSjO?X9g}G`mU5tgufNKF7eo?Herq0< z;FG6DNIaQ{5I{WL(=905%_?(BH)N6)!I5A|<$|(-jY3%L*)`}XxLp430}gFv_Dj5H zxIf3MDsbI$Q796*D>E{z88U)CAXHL6C{#3mtEOtqj~A}WVP2An6c5|2ewyc4G|vnGZj-xKLdn;_NY zKZ=6JAPUaafi5qEVFG#Ni5o>h)3GB-0%fpou^SyiEt^DUelS5D z@oaF*<9)T94y2tObb;Ntf$3noAOp{M zEs=KwEg_dQ(6dJxyl8X*GIV=G792#G)@Ma%{$ZVw0@}lWB#_dAeGX>lY+~i|hpEtU zTkJSPGV}@RO{N5;5Ms+fg?q+^-^?BqlfPHkPW0Vo4;o!D4PUM$LR7p$qDP4;{KxPs zz(T+ONPz6R7spG-f|G>a5}^rJ(csT^9v|5di12$C!gyfmEhCDd2t!&2asoxxy`5FJ z?D9E2iA78ZeP1V)$me?=L*eERn+L`N!crkqy6FJJP1)>@{ntwY)Q*d{_E$4CL|gO9?U3kI_p=y_T5xVDpTHBbG&5F&7*RurVJCVkXN zvZXb1oxMdloEw&p2*>oRVLVWU&2k(J6)X&7q__g8B7yhb9#vp|-^so^V#^6{nN<=A zztnE}S9@3OFl zuv?w+u^0$mOL^21P?86j4G@1OQ5^?ReSGFf%EQ_wbymEypADgYKL zx#c?nCT2X&=zbpp-7UONyWU^oQVC{!>C9Iws9*TLcg!)%CU6y(EnF!799lbsY@Sq> z{+_8g{~DiRZ~DY@D66>TN{7&K+j%2-1(~Qk{`W~3shi>n?8l#$0T(Km@TynEv6w%ws8YopsU}4f zlo4H-o_(V_ADX%p#x#9IGKmMpq^cma8?Yugs-TtYwTk4S;-?{?e@+A5pum1Wm<@dG z@P4Hf3!C@x9DTv-ur@RYV&#g)k(2#+{y8xf-bF@qoHz6VO=u{L%JL;gNQ3x6>Ycu2M zd82aO^@8OVie-}LxNRqIs)u!Q=4S(^ceX<_t^2qmbHijEeb!C^b@uLAQ51;`PRTz& zS^4>oD}spFp2xA>)$Whq5f_**?A|P#zbHYrn5RF13ioTmtZg>AiUWR|;Frn<>3_00 zw{zpJEcJWK%Ri-psUtc>q)N?3u(D*_1nW|N3DX^pFysJXBIl#ABy4c@R>vX-b-+O> zh;2jD)b&==@$(_?OYT@Xr_Nb_d-;i)bIpZwx6@O5$;A!+psUno+sQOzGUCxBMFInF zU36n~(Zc|%hxZXAvK70#FmUziF`oAZ-2*)i?Kre$Ub}c;H-fG*&54eYiPrymCY6km zFIsqkxr`U%i(bVzFSd0EH(NgT%olimoH9PqNN!TOSmMigA(b(^5>;|y*4G?$oNO;_ z!yF$7@QnIQ8AJJAPFlJFVwEEfNv;?~_~*PURqNy2;a^h}exJK+iEUkq8n!bMK?FBk ziVA7@W(*~*=!zyDR>FD}=P_Ofpi@E1844(S7Gf+2ptc871Xvh0H}-o|*F6)?J`#N%CdjvY}S zNblef-#E+f9vxP56*)#8?pNo2lRbazN#KV!%8}ckRd$3u;^r&jGS!0^I z6i7Zlvl?&lN((v>#|r7iSPoAV&27T2B#F&nPRQKTU%(e&qw~CYwR?)XvT463jto)k zE9%=%zM9Bph^^6RkrN#V7F3Qi{X*-VXgaEyUFp^qR0BWFg?i86YTPZ}E6*;-7++(o z;GieiuWZq0rLK#ky~a`#|E5EXRg^XoILS`%>P~spTj90Fdh502{^R#NbW>!U?wN~* zciu^IHZPOZTk2uHLUY@bk8PFVfv@$ZCPr$H2;QMpSNnu8(OZ=7=nLO>cznIq^~xpH z>oPsxn_~#_0}d8#rWddV!`1r2b}&j7UbULipk5K3SbjK{A*9CUEssmFmF#>gwYtO+ zcGuv}RqiB#F9ZEmsa40Nd3hMq0K1607Oj~5yL!du_2LMkIlH#qUau)W%pgnf-2|LB zjTl1!0!%&h;C_Im#pf-I{6_95=}P)R4%DV^om_M*R;u~*GC``iSHRj$(G093THQqc zn&dBz^|KB~pFXLumA78w&580Rowc~j&L?~s`vA?#C_9sj|Hf%osP?+AHpWS~FpBpm z(4HzNa!)8lQy#>Q$+@8>hQ-J{qE|)utf%fbBrw}q_Gd{s?_v3d zEer1Gm}S~tp2>T9_v18BE9UDE8ON)r=5HDdQ;TM#3#XD}(p(9J`iCwW)Y*O=!H%%_ z@iO=D`6zbndvEk(u9@3SVmSM88Y*Sk@0NM8%((%`TTw&va3kxBIx#1ShC4Y z!Z-NFV-p7c910dyEf)r@Tp6k7tzkoalf!=9q{~W!lkZF-FPND)=2(0mJdXe4K22!+^ zg?XmT6hvrGTN?saz3W^8bkV&=hi``56e)Sf?U)?dun}8&=TgG551fez(F(7dA8WD`GM#mI_&e#17W{^N_{X4o6rKsKCBcA2TyKQuzl z_e;6HP7?r+mI~jG>+?nBgTm$g+MM?L1_hLbc4nZ|I3H2D@pOpE1O|kN!71=-FBe$T z-L;JA{nb!$C1)2ikoxk=lb5{5N;c2gXruR*Giba^dk2GwSIZnWBNb{(_Y)#eSmkDo++ z4CrHF9inD%6!@@v+NVhG6=0$rjVI_ECtM#U9P*QhWh1hWM&iEEzL#&1&&l^H-#)Tc zRzbkMo3jQWd_~GeabNb#S}aqB$y2Mh6;Ud}xoTm3CV`)crkoOaUuI9U1?^=-F3CVo z*>RKeD2ti%>v2*ZW8t!a>m@_}B}39B!*aUtSI|Ez*pzxDNFM07Qhr>;x?!T=G;0iW zfNowY6D=Bgeg5I8^L5CBaNBSuQxT&Uvw6UX@kr2O!n~W=b+k};P;9Hy`axClF*fC; zf^wS7!;jd(&?)9^%-7mi^vvh41HOIkSrb?v#|SNmNH(rX0=?DCJlR+-R;p`GpUgfi z%>{AO2+^_HZgr_kHg`%l4K%k`W}vSa<&gT|Zr<}Zk0UXaAW+dzik{#CQ@29yD5lyQ zzey&gsaBV*grsfnB0u6wQ1ZQX#|mjjQtGLKg}E2X5ea#G*#VX7Lgf6P!gEhx$8YT6 zH_*V&#>x6muu4Z!;V-O85$s|NGIlZk7X%?7>;ZvPtidh-6R^3ZognRTb2}}-5+q2g z&8f($=pYWZu$1v~0;_u|X_$IhoAQEag@sTAJor3p9c&@B0X%GN?40>L1SyOmP$8HP za{iReLILgt;N#@t19Ag?e<*}d00K@RGd?v5so%;VSArB4E-nsyEG+Ks?#%A&%=S*^ENr~I zyib(?flLqyCTCAO7h?}5J7>zLD*mbig20(NSvt5_+S>u1>NGa7cXbh@pn&89{?QX# zhksUX=gj=8SInmNwk#gT4lHcUtStWzVMWFNwYaVAe<%Sm{inEttCP*IhJ#F5z&2pp zC$JQvf$cxYJN&J$|DidM42UrMU&4^V;8U~*S(XEF3Acd=|C5X?MjT;CA zni(@0^MbgUAXpq1lQA0`hzZ2WX3E3M!D|XK=KM$NAmwH4oL!9VOu_#w&&38dWd{K{ zm_TM6kn)_|98AXST&zso#-^s+CZ-%FKyJ2QycX2>#J)RDnK#} ze@g**IXMlTEx?9mPWHBvic-wZZsr0kPcz%b@^`a;UHzlo0xW;;)L)W+TN98Xf2Bdz z8f1~P{BxE6?(~x#{x5xgjlusV-M`fSX}})~{IS3v3;eOb9}E1k0Ls6f8z3A3L0b2x zrvem||McPH$yfUO;p88`BOxBt-~QQu`A>QOCH4=B0mlIKd$-hbL|UClGSZ@$Zuhep%wT z?*CVE0mQfcPjUe}J2S*#%?05YJdq1HfXomlI2T0ezeg_kW$^!!Iv_JE5WvavTOAuS z4}|LRZ)^J-mEr$4-hLj4)qc|q{^srfHSc~K=6~VsXXoPl*Q2(@>J0Is)3Vf=fgxLr z$WSmVEGqhL$rP5YCwBz+os!kCQYio?kuU*DTtw}r{%4imee3c(6o9^e(dKo%K7R4; z;nBXg!<(9Y{Bx7J(#kfzY`gi{Q%%Q)l6Q8KGmsquUcPQF4=L6kkCyVM_a{$XtP-`R zZ&fSAZc<*FPK(eoUizz)uRJL}>G7saDG4RNxqdTuJmcX-rl@22a? zW)~hX)jL<71ub}M_+l4iqZU6(m~(NnT2UPFMN|GP-Z#XG)4@bO3wG?3ibtSPwIoJV z?c0Nbi4#@8ET%Ju#4HMJL#s>K?#oH#h_Z?GoS&8#4y`r1yL1s7J$^tox;(gVFLi(6 z%9#Aj&SthHj|nA|j7w8K)rVgYhDt17?Pf9!MImvw31x$0oc&X2^p12ORZPDu;g*@- z^Eva5x07d#sFxnR7}sTCU$d;`p1YSA+Y%B!TQ201K|M#TNM?TPflJ}tvT!q<6Bnz2 zh>tlK#Hd9Bo6LYlMIy9&(~>4w{^7HFe~LLVo#?Au_$xiSS0&wq%G*f^zWXtTCB#ZY zCNH3Rxf%jgaRM9&rTlpLeD#<_5y;AF%@%F&%RVeKnpwemljVGRoBl~e9dneJ9UKvrFpT(cJMvND>626bJ=0^=joHI2U%rc|6Rj13H0SJz38M2FEc z6+5hmAk6yg)DEbZqE-GPA9KYs03!}Y1gmGL&HMqP>jQ*=-_17{5eQ?9EI2z=LwAck zwjoRazM$pEFl28C6F~im2>^ezPRb`En(PoVrXHx+!?OpNgfIc-!n@IbF#%vF264j_ zVIifY^#I_q;Z?;X zVBVR=5~|?CCLW3`pO!@R=hLAJ!YPn&O_3XV6TjbsmH;LplyV9p)g}OFzQ>;$V4_C{ zF-~^#sKc9MAsgw&X*7VJNgv&Q z^1QBfoZ))!dkjYewHj1qXx8XElApM6*RAXX_A9oDU?*udt76n65e}=oQ#unw9)K=I z3@<>Iu(}DQi%NC#3jb!*K?WvD`{MgH(SuLWk;#0>0UXc!sf7;DAZh8a>`S|u8j>s~ z5(nQ>?sI6IO&=RP56jB;ZD>5l9f5k%{&&k2uW;%r? z+>4Oj2!Dv{X**jgS$5>npYF#c*&n4QILP%Wo~Wg~%p)ZP!>qULc;*w??!vM3#B%v; z1O{W7{{#0cvLIqa7^t{m-Z(q&DYS$~`-Lw>9ezTzr%EhJqw-W?Na3yMdld0VUeLw} z!Gs@5kQrx9Dn8#wKv7&Krz=jEUIy;g4QM=*$MoCOL?QB5Z#L7ZXDInm9r&e0vozk_ zM}LIDby(eap7(gF99NYW)3S>PhXG@gY5~_Y6Y^T)P8>Z~#LHK~sgjWv}BvFT7d%)}|tKJj!14bTH2)tF;FlK;&pifJrd*T2W4EpicGy5X%=@|Cs#&u zioBE2<}i32%00p^T%V(6X;C1%BHi+SjPrS_n9Ej{2`rk}rdLT^+@L>#Tz!$PI;zg3 zjhgr_QRulW0<`BsF=_G<#F^J=I{0&addlFPbyuQuN&$D%KniOD9LfVX`E7h5j1!gp zf%S{L`u9qKvIT|{T6cI3n+a_+bRC$7P$aS?&EB)h8pV}{=SAv=Z(CzWFwg=sH;rvS zCH^oIX&2R^9RMx3*C|q#xU^VM8|`C?RkUsmLm9{on8zGi&kTzV6)0&$c~2#$qhU0? z&0K-w9NG*^C(aLuM`J{#08cxxzA`LhJ3;%Ac?OM^p;;44uRAat=-ldMBjdzIMNb$% za361x<|{hzjr86I(feJaUe^k6b&eAC<2oXRalp2rcqYetkUQoOX6`rJWzCm8-D$O` z)lk`29?zfOsRaED2z~y{J!ZAIhnz2bfwE)XS4ta2u}k7g^do|#I6HMc-g|rPhC1WH z8U1#_CaO2S!`{(&Q4cf`OBj!Enhy^TTRSzS1TQ9BOEhDnj69*^XMesfqYG4hyE@IF zom@p>#WMRTyb+9LzLpV7io1(VK-C5H?qjs-; z93`hyEOHd_t2j;k=lsKf1w}uhSU!Nlq75b=NRdn@Z3X!S1Ig`?-uo&Y=8WQG(?+3{ zh|Hz~VoB5)QZ^CqVXIWRo(YX3`q)nv50v%oNCJ4MTBsjBVIU`vAEQhXV^(IKEKqTH zN9)G$AV;qTrf}NWrTzTMyz81nO~{X5Z-I1*1@3`bXCf7qo$O2g98nl9ZXB(9URZ835@v-rW>wJr zqoa)EEGyAHO&fgU{O$P;dAD33+USDNg%JJGXm_@y2qSh)7{*iu*H#ws1OH}4pR}g# z$J-4NSxPZ?77`?C$~cwwGX2OH;3%{J!pgcG3XK2aa|QY_Xq1iNQ1d`=X}9$<{0)kz&4h1+BX?65#%rG;S?}qP4zP>-_)=bX za5870lgeDUPF5wLXs86lFp4_L@x;BGPK$sl=6k~}SI*6(1LB@v8 zsG`p?z|jn6)3ESU%)sFNp*ZedLi3D3I0ct|W2>q?XzUv68Z&u@A#A^4Mc+Zp*S#M= z_W-AEmy@KrYQn@bgy(kD43A4@)O>!9@U)NUfO^ zdy~OnWi~YPrYwg=iqP0(5K&&cmTFPvyBpimh6Kdyua49YnLk?J>%6!~##v78{xE_= zvTXCYHB&2?^~_EwbDjiV$FaSgDtLFdz0HUm%-^|<@|Kc9`9OG5Ni3Hw_dN)})9*i0O@395R~V<#{9=Q!-wkiQ zUr8NiYw$e^pxFqgUAumb+(0$VH120lII^vyR=$7(@b z$xilW4^>H@o6!xDtk>YkcL^Awp&~*GgcE5SACbK2=_e5s#_&GQ-u5b>V@~2MB~(yB zGYVJ^nCq`1RUaXUCks4L1vXaD)!O3aZ3k?i@)n)%yDVgvL=Lm+-$zoVEjH{R>W(PA z$e+}Hjy#fuu$`zCRsvPe;;+l>zp6&?neD_eb}ot9^+Ue zm-)SzY4;$`kif3T;o=oosL1-O98EXfak!TFxtpMeS)5(|_p z&Npe?MQz=|8D>Xjr^1uWg*6iTd^-+VM@Zv)+dWRsmGsJ*@7^`~^l(pM3U$9{mc7#$ z85@;lAx2lASvO9HY@9mzT59y0eDbyMc9v@assa!4wu%rRmyIr*un4~V4j7ocvHp1r zbYxU%bX*Mb8K-RtSN#;vjm}Uq^m={feTKBM9f7h_da~Rb1HnTZjiw{5xhZ$js0$Pn zcOksS(ianOoZBWNg6>*1pH1dZs1kXcY3q*Dnk5KX&mzZ5k^5B2>DSY_%dHkFCR4=c zO{;az#1Z;-b!d$_apQId=K=1kU{K>GjDKuHn8JzCz#9{~4Q-4g@S5;zd<-OlNU_qs z*B>z=R?J1_r-ujnXVyxNIRufgQUV;$0EwP{MTh(W>?R!517 zq}{Jk)>b1!;_xlNqM;0MJ3AcN;2n~P$YI|u**aSZ5&krem!@i@FF#O5%pKBs^ja$( zG`doPs*OA3USm5b$B20vtNWa2GRer@_R7KiPES4e9KJFxk0 z`tj>Ljb3V38+^~f_dOXbpHU%9(L9XN$FVpv6G7SlFnl{7Wi{#mA+~_@`J6lcvB_rxlf2w_|pKm$?+bJwQTS-O7 ze8X@a18VfH2@Is5K74|mXE)Qqt|O|`0Tyr3LWlTG`4Vi|?kANBcUJdp&7r#4{0vbz z(K#j28dTQ!>11gXZMmMThcUq9NoAd0PrTY`_hUgbq!Up{)3hqtl9__iMyU7)iK>6x z+;OOsGRXux4d+oBQ6mQJ_BT;miaSi|;h576ah(L|2F zBBI)+XNro?^;l?k2yMmLl|edb3ZF8(o`{{z={7;vvB;k^cto}cJ|!gvsQkn-g0g+2 zb^OneLXN-f_V`0%_(Nm(Lu2?uWB5a3`0ph>{Bd3VvA`b-{IS3v3;eOb9}D~!Xbiuc zz`s4d|DrMcdSroYGyf-zf#Yvf?0?c2e(e_jJ8gmU7qQ{Lk+$$eo>2SW&=&s2!}vd; zE&QKHMBw-vwd4PrU;n?fb)QAn782<}{D0oT4`c-ZIe$?}An^folufK40Usbd4q00^ zZb-&22FQQd+W%{`{eP6Dz95HlfU}s*x;|mnlg_ls zrZy=9>ClnR?2xxDv|l5RDg(!dJD*eWQ!mvH>fF?RX@tHcyYx`U%?z3;T#XpL zhXxIzdV;Rp_oI&!_RZ6|_KVQ<=G@Z#OO$FOpDxCLcAvD9U+C@S!X&;KEbm(E1Ca?> zH^c={&~-Y}tiN~h{64Ba9% z5FxHP#nR@x1vDkZ_AJJ~Nqvutr3M2V{ZiS+r6ie+T1?7$%eZS#&byFhgbhY~a5lhv zkYq>@yv(7hVu9PTUJw$=?-nu!JG&q7VNsn1#mb{pT^dP82k$xoU9|-(o6{o^v+I*+ z$y~&pDb$$6c^{3gxUuv8I>#Lpf>nhStkpwnu>9c7!wX*M7vA#I zuTmB@Mx?NFT_m)mkBpU1*=CR=)Z{TifGP84{<-5vH?e4-cT*&S5JsEnvorAA>lhi{ zWTwvL#B?E|1+*@Q0I*i_s$kKvQ@084gl;N{V_{nV>Pd>^SOJQPszK9z4?2|7DH?Y2 zq``8vZL+7r8k(LE)BWg~X%|BXl6II+Pkq5rY|&EE`1p8IFFf<@Y0olp4n~H`svMOW zzSokqKK`MA*mR%jvcG$e&$fw}UL40MeXP>vrO^^`^u4WMsFrTz5z8*M=n~(hWL29? z-{vD?4rzoQoWR?(Gzimew(&)CY=CV5{n-5XfzmS zs^ieXeZ~_Ed?^?Y?>%^;vgzjYVklTB+p~A&{~1vDDK9Kl^K2hCH}jpeo;1**fH*2b zKSIo=KTlLOG`~`flFcUSRXI)z7ndVzN{?knj~h0i9xK%-pb>=0$6KgHcA)jG?M}=6 zn+W#j&t=Ua*R3BuA5~bn$}^olW*<*0m(DP79yAC)tTuem)z!7(T8<*&W;SfoS5a{| zT&V62!|=P9lt#oL6@Ub&ef)91=6&1>c|FfjuH-xXkC80?vygZ6KpD3G{BbONyOoeY ztNgmrA-Ap$7tI+~P}6cQ2wc_|Zphi!K#+RuxuG!Do|ov*UxY^X>vL*)Ew z(L4wGVrY06+6DhzVNnsn8|1sskQbEsowp%A-nONMK_I}cNJX2Y0V;~fsYjQv$+)jG zU>PpsG}J!!KA~tdl&fx;=&M3Ggi9KMqrF>K@zSv>ISMNxS)o$m;Io`kV1c@L`GDromjO9iwzS)qdc(H zN3`9)2Sa4cZsXFWkzYk3K8v14XoTRnPP!XA$@@Q;dhf6%ny_CO5k&#%9RURa5$RP3 zMd_d*ARPiIO7A60Zz45-(v%XZB3-0I0BMP+5PBy-BE2rfAoYvSd(QivD_8!=?#%AY z&ad3}Y<9=qn>yQy_Z12wIjcPf4qlhbTH)DxFGbqDb^g0XHN|kpl_0>WA@cT)p>9{6nycLX5R)4RaI}2k zpghxd&v>)kh9}wh!);r#aj^OFcxPRV*S!Va%X6x$#=dIRas{S2azNTsU z37Xk{FS9Ox+OeVuN4b%&_Bp|Fch+^X4)C2(it}p z$$*VyK#T~?mFUYGkn-cp!lG~=tixAtJ9r%J3ZT782#Yb?xV5dmRDp>~OW4J)sX0}; za`HnbY)U_6Wq0gY#F5>4J--zC@@xcUAjEyL$d8j z3(L7f+&>^+C9cZ^dwI(J%&(efDs(4nIkeiaSF!qLpw6~eKU6>ziN!o(N522y!1YLwLVH4e`Kk);8w{2UOED5W+PLn#O><=+B4UG%U0`YnmN9)fKMF z0kZ*nO&h;>vA9WJjNF0CAX{J|0aK>joBZskmu=!rh( z)=%X?p$kX-^Pz1_^3|uO0{cjTeTcyRtiWE5z}`)Py=lGQSIX{vL|lZJKw`O85567v zFa1bw_1}{B{;d@ndXDA}gZM1}O5WFNAnRt8AN)BLLe_FMMdh<$hST@qjuDQ$dHh8}^(7 z(r^7JX4Ac#Zlo8GfI2fIAykip$ns3FbizB~$xN(@niZt^nz+Hy2~bcM)j|zT8)SHr zW3-O=6Iv}{&{5K>C^@lHGrOqhx`U2G7p%M(QpH6?IDkJ2SWrHesjO`Vsg&^!jEw=j zP5qM2Zu>pBMH!j`^5yU@8JgI}y|)h#8xt1$Np(>-6>xI?J${?9D@SzPItxdO3t;yg znwrpcb6vsTF}&YnezwVbOjpjfRayVb$^r)m`QUy~(pkR1&Qnutz6$ns81}Ykyuwb( z{%U?wVa&9OlH%yz+U=cs7a?v$RB!jH^pWQIF6gB)>k+!29YypW1^>;$WF=DTd6gq- zL?iA~6_*A1%omhx6I+qcY~(P-a3x=&l$)!?82w_&jpBNRdrvHrA6o=Ct;N;ZUX2Si zpnc4(CQ4ghv+cESHMzj|)4E>F;zWMRsY3PJoOHV%=OV>T^Ns0PKe5=>VUxR1L3)~k z3A)7|)rYtTDSq!>O8IU4U>p=0am<|qt_eHu;>rUi}sKW*mhy9PD{_t|k zB?T|Y??tS9Cs%que>LeQ6_?Uv$dRq+uM@fOdeJG;8S?RtzWLhq51B(F)c%~I%AQ9d z7x{#?80yF-8cts>`AM%;+nM~R$}qXf*TY9KQHVW>U7aH$*HzE*6~dcjvA_$$_FP`S zg69Isk++n@n-h6g&dpWQ9{F2lmawL_Y^NPN`8xjLAt46M>eF+zI30WwpH|G>wjqDo zU$(HiE6o$LoNlD6e)*xvP3Y|3$FV?0nq^6gy})}EMIJ*=*@C%d##)+%LJIxSwPvA* zmvHF~mkB(RZ4#4f>OVPeiHAc^Do~SKq@P?WEd=K#gCk2IRMSHS`z1d3N7?}0@?D5xfO5oU105Zkd$(g@q0-+t(|jq%#VIL&_?X%Q`PveD~q&p9S|yBJgi z`6$GTM4FQJ`p|Ue#cf@ayc!#{RX^eF?Hx*Jo!^?OB~L)FP@9qSH|G_)yvX-CkkCu9 zOw`rn(dH|Y4vF`QB)J}RJ*4SORoJGk#xfErK$onlKQ5mta5&p*sSra2GgZ*CZ{ij5 zi)^oYtxE||u{6GpAG%7RI_r|0_Wa>xU97tVAK+%& zjxAQW_Uv~Mu-qV-2QUxk%Tx8GFDE{I%FSN)cmKLG`z*V4DywzsUF%d@Yjfo;1mFt> zRlWclEpWxFX2WB zXUc^%T~^!9FLh`14-7sybu_Ownq6LNJ?beu#4#K?RgB8_aMD*R4p_4#6;<<&-(JtwN-EiBI>$-tnngYr?v6#EE|3t_RDg< zbm}qhhm1kb%5G@ZFQ~Hi}pdTT0g`#Uo2D zM%eaDQck0ag%8$w>fB`HPa}Inn|14!+e|}arKOBTgR7MLl;h;rnx)wf>V!EVA?#1l zj?)2!oz0m>8sET$pHJ;8Zh!NK#VQQWb&glXi01}wW4=yW1W!-?1dc~>8kacu6go1} z(}PN7acd(Vm%ElEo90_^cn!~QpXJWz5)pC`roXG5dexbEn(~UiB8B7JON{}WtHaaN zY<1Sb1>Q0y{Vo3QDd-1UJlV`Y8P#n|P%Ljt=!mO{S`pXKc7xV2=9^LsUB>m|2K`pQ zR6S!>G+r%wOGkr#K(}qpNr0HnDe__z8K!S-gAT2pG*EQH2Vnez8Myn@KBkyek@vAy zELRw(M;-gsIDz%;n`)4#Rkcd1613u_LKctxaDcZa=6rp_cxUV0_t4+J3N#0V1AliF zXo?62Hre-eFX^_2`SqzzWGX#t-n@-U^Orld=et`Tlu(Cxk= zT3f@-4aGjfx+_^31C>zumF3|F6B)mnzXEzwxEK-9^K+J|dF791yHlGnlwY}(+IH=_ zvAHy7jnzNn3AhAN_t_?|9cjHF*Wqt{n4YQIt1+O+PK8OW;+-QBmBb3Z|VV0hcLr$4*`_ru4^GZWGgdF1f)j0&5#bPSQcZ`BLhLULX@ntXIa z09R8Mc~AC!rcL>5dg{ewR7vQrZ70ogPDrrcBA$j>82Dn}xw&_R#>)KY8+?S)3y0=z zIykDJOzxN8pWGZt?jHzq{j+i*)9P$W4e)t^vtA$+Sd6~GA+tGM?=sWiW`^Vs*2`!N zUU59d^#y&Ed6tMXFC*t!R%~BJM1Op+=-*-G&I7u81@UOVVWM%J$gz-Ay$@Bpj}0eN zG=Wt0mGS3AAS<)k?ThkCpMYD!D|4293DK;VR#HDx6gL9@RK!Qu{$T!f4=Q#t97!&Ey4zW+ zoMW_mlw+j)o;aXZ-P<>Jb?kdj{$j$;m$N;HTI@pRpH2_jeA7P_!uK112c`xGK& za3wZ<>zq=oQJN5_Y#D;-s%-t(M6M6Xyr>cXT?yG;*;JD{c|GEN{GnPz@p94LVNh~4 z?iETuc=-F#G4J>YCe&|j;E51;&h$~HGuH~h1?(fTYF72#^~3s?*~~kdH4snVDe$`d zHPUVG;_}O8yGssxH*Nj8M>3>6J|vQ_JxkypEAo^DaHXQNa0m8sw0x3+_Y=-X)vwXk z;z^NycZBnGpNOe-m|P{-^O)&7Xi&QcjiKJKZ@b5-`MY;y8T$85a|yxTU3vrY*6mLs z>A^K$4N-2zhuIFl^Bu@=mzLxXtTubbpA43pJkr-7;>1V;Bj~uF2ZSBkP?7uRTF6}d z`uf))vtQKee6^P;nYj|E^X)BU65?uWzzuN-aY>KS@>i5?w9>%)yQQ20e z3v11e= z3?^0p8WDiq!{ikTV_rfmpvMMMoyJwFAa9#MxB@xp53G2PB7e8PT~!S`%N*lw5A*MT zx9^g{SY__*)&H(QT32WMzTm|WP6+eT=EBQ=DY^EB@_@_*BkFj>bw;11>(t(EyB6a) z!4c(F?x{aeiwR!|&wa(%?L#T_(Gu8dj%HG}c>3qDKe(=*X(D?3{18W3&hpW+?daEf z?lCxGeU2fB#aCO9m6oA>aibrvTYh+e)MOh&5qEn@N{Dt;l>_ zuaFqQydhNB1wTeR(=iq<8Wtk#s(53iEF)CwX4nh|3(W!G$xrD}Z?2HwPB))Ky6WC8 z`{HlFPZAr52R8LWFu~?0=CZ)0Ky!U7u|L-bCUtsw8*PvBfYrqJ5LkyHK`^+qBGUe4d6?2g2Wnx|;{T*~+M(+7c|Y8y zqV%+vy}Lzv+0-Oz5*or@v^`d`?ggbQ(c3G&(Tj9vid~#HoevH;Jj^sTuCO*fCoZ*} zX~NRcbd1B8hF$vlM>9j8Cd#xx1e+mjDFLaY7| zA9H_LVhW#o(JQ$(>uNTB>rdX4h9=zu&H*dDWHWmX zBDTpff959>_*+{=2dt$nA$$orjlHwI7%Qup)b#oi+9ys!JW#UvU;~y!6>uANRZr{yZC>c(<=k5xt}y{OUTNZ_x=+i*38sh58ygLkjh#sM=@x8LK*-pq z!-)saOyi!SJ)DvLOTcvO;IG*4%debFfWwy zqgg;Q(6PcQul+Wp%Sq|*muV*Bw_Zhm0VN+0eRa1kmM^S7u~_W^B|T=8B_eZD5Skp* z@iKsAbN-b#p-_OJDT1$M@=PY&^?2U8T76-Bh-sp2PC6GzE;pCXTz&|Y9- z4!~X|l%e-xtl20FrE?-*<0pKFbi<-6leo@cZjXGLDEoDo781yYUC)Poh%E_6yxJI! zMXdKD8IV0CqdS6g75Q>~>KtQ`++TKShSKJ1A@FRm3_&jl@PbDehlv!<3E>EkAYb4-E5|4h7J93U9kb9 zRo0qq*&f5Dnh{@p+Q6J>!6!M0;o7-khp4*|?`qqhd+z!mbXRiZ_%eS*uYB{c@t;?Y zG9{(01>``D-@Uvm&ToO$^|S^q?<*3>#R8Uj2~%1xHiJkX=tvbwovp&>+x89)g5;SAkj*|TnK5VtFjfJG zaqY%7?RzFuY0$X6wwtvgrj5)8xEt7O2+Uqy6o)ZIc|Z<8dNBC%9!Z=0PD-oG?zeqR zyWGCz&vp=|+X2FUw*T$;*hJVd4c_2Joc>X+B7T()bHf6UZQ5(r+dZn>J6L|3 z=j;^BVwA99JCX#-_8$GK%2z^}Z(h1de)GmnhMR0Rxlc2SS0~zbs|k_w+Y|>ACvWZ} z4ASUk*ZSgRDS{xxOXj}6>&9}L?YwCH3Y_Uj252EctkVoyW5&Ai6UH>;<3H`U#H;8H8 zRgE2YwlH8;PY$66 zsSt93_BB@uS6=bb(iAwvs>aCVfN{cVm`?vd>d+EdwL#T9V{JXV-9cWQS9!oUxFzpU z`&-sujum0Pi9c1eZZEXnmMOd!x0n(|NxxK5sbHnrlu%f52g=*>lS(aEPy(a)m^+?u zmv-m9Wc!LqWS)aYPUAb>(SY)0SMCqrM%;>AcD&9=L7bJ8wR@P8p>^8r;4aVP;M1P|>a{(kXs4Cz5t6Tjf_$Ro<Mx9!ikEfr_zOnqmgRdKY@VLBt#!4x!*>BiwZI#}s$B9o?DePLO4`!R^x?&POUdCqg~fNdMb$5US5VsU#1*0+e7Xa@tq*C6kZ+R zLdBYvnIrrBcCw%Z&)SvSxm*d*ig>N>49RzRDCC<_mE8;5)Sl>qm>$(Z!FbavmEE|$ zLQ_7ZygCo|R=W&ll^w-$#}Y}aXqQdiI}(pb1m4MDN=BFAs39MQgWnGIDo7IAAJxKAgyWcIl>(*1qYp8+Hm!zU5 zxB%2}yZEIvCSTOa3TFfp9qO|(=zxtdl&j%xAJYaFfl)T>3%n1jF5aX;T_XFI5|-05x>ejQuWNt2t`p9-T% zU}3Bes3BYRlQ4OWc$~emR3ETyzz1%ID*$y*-5i?6SsroR{$jWDx-=@e@RpzRb-H_J zWRL$Ib@#o|W>pA&-9FVfPks*#4I|A@trcavA$ur|x~6Ppy`JD?bA zcDd7uvvz$YQfz^IM@8##Dm)K}SdXtGIPRFN-R|eoOP4da8KsZ}WxDVtWg(`pT1Z;v z>Ud9b8Cu@~yF@4xQTTCv>UlW}x`WFPrkaJ@r!pp%$M#J2e-Gi~99CpffcpD^5D>R| z39QHg9v$3AHdht^p5oj$$))0NbI@bnP(R;~L>sWqe}*Tp^vYTYQRmZhtFa%E*{~MG zKgSoF&}Yk0DVxkrdE0nj3X9Q0K1MH?4eD^dp`H)6?zb?7U)5lW9c;_`686utD}vS>|I#BcWAc5`t9GDg zhvr~{M^hYN?0z#?4_+E?Bj1~+vQajeB9o$d7n)9~sySF5d4nqfp~`3g6JV~^(L>4w zR@ptwo)CogkHjLZy`)8-13G zMol1}gV|)Rm9srPs^%K++zasab+5bp`lkaf=gqN> z;>qJ3zO8oNzL7?`cq2-Ztn$SSM21%JIt(0xFoD1M8=_`=?-j^k_|5xM{i^k15xKH8 zmFkLIF^GQ5MsQjWF}xNe00z6$yL8`@eW}%=qUheufWF22Lsbt&=;%B3ddWO=CBDCD zlq8Xeh87&Yl^Z`wgAy7OH#w>9g_c?)al&6Uh5@O~va# zqxlB;#WbRwHMX4FfeM|g4Te+MJ0fp2GU1K11is(;;U*K+r3h}Z#&Roqa{weKLswh- zUxhb{)4rvQ8j0%)S=-5cVkUn1)?*TK%S+0mLsj{Xgr^lja^sQ^4T*vjyQy&Q*UHqA zJ^E>CxXVZAc)jVe*cg*G+rn$1>&XHGr$_0HPL7U_pPnWKo7{S&Z-BI=s!M9>zx*un zBWK>fzhej*lZbp{xnO*Q8x!ngRT3bbhTP*4wy68`Jg%o)`!4Z4j)tJ)P=Pd)kO(3s zhu-+Z*z}Z4bx>@)Cb4pm<@v$qsnWc9V2z)_&R7etj zKHSUeE)cZAgS{f;oi@?;CdcQaUw1xjp1OmA z!7N5_0sbPcx3&9;YwKa`#KPup&5Zj~UIh~C&k%*Wkm4aB1tsI8yim_6fpW@UZn5Wq zMzT(vC=1m447vgsr~br=$eg4bc2-ad^^TUN$N_j<2rRq|7OePv72&9V++)PHvL0KC zd^Cl3{OcHg?A`M0cyL4xH9UkbJ!L6<>H0WZ7DfRVj{xpo?@?WKVx*x_FWzy!2~2yv zw*u=3ms@(WWzzW%>XK`u;z|y5{opq&7-Ud#UgvDv&g~WooA6@uEc3 zo%sK@vC>tiK3o-l2C+z$V^6&+k8)gNe?d~^eji%G1!`tR{NqfWxDuS9SGC2EgS3GZk&)m-L}TD!A!g z)X^m;HLl5GedEyivT?W}*n@7DtT@g2K_?lkR07M02$Yk8DLF~y9#>`QeQ3{*f)XAm zrw!8Y8AP766sY_31u)@O)7M6}TxS#&5)$GI6JPUcDxY8TEWq_qQ=L!J&e`8?jTuj4 z#L)C4eE!({{wgl+swAhuGsvMA&xtZW=hYDvq(#_k)np>@<28F*IeKcHSUdpw9)>4; z_J0inh}VR;xeyoEbGh#^SY);~r`oG)X725mnILecoF;;Mxe1&YVm?rEBtTK|0t%;T zC;=u>zNn`M*3iZwsFqU*bZm)1ls5*v+4c&gKFOa)3f3 zdz12)+3}eNx6* zw#T%|%uF7Uy@h_TIF{IPBCCmHox6d%0q^bICnlD5G=|{nwIbY5Ru?WpP*|Y`e(w-C zw1%myM~eO5tN0mE?0!)n+LY#?xm_9?(_DxfqSNXvls@d`UF}O?`TGtp5`yzPq#lGl zctISuk;f2u?58PUL_YzyK^vFT2@p%w)+ zD^s$`^8aGX%nA|-O^nxc`Ks}PULDOUZ2clJr}-L6WphECHoHP7#c62hz1onthVBF_ zuOb(Hbq2Alq2~XVWx!OKLt0;f&uh%&uRf?OHM6}F4yNpN5C2z#A%W%bEd*zRY=Jh! zU1fN%C`y5d-UA{La8ri~vSKQtdqsyYTLcgX7+qaFD?Y(NKN+Yas$u%=VqN6X2g?6Z zN?R}7SpH->#%dHcS6YG_Do}U1$HM4gUm66U|hG`1ZIGG^Q&x;8xr4>g`%2@~VpEnLm@JC;5 z;v3d-*QAVuEP6TEYGH3j{ot2oe@}odJKr1`Xioi$vx6Bz?=`!nkL&(l8(YmsMBjWqgb#P9^sw^HV?&{XZb~m4z6`0DW zWqdTm2`&C5O*h{P-=i|15^!8 zmWE49h6pHkuq^|ou@CeGim#n#4r8uVu3516Zd}D(0Zebr_bUEpn(j_p;G1wjoLccv zC}o2vJdQ&@z7NmhFKs{fyQFA(i^k}mL8hA*t0HZGAyyHT-ilD!Z4mYOzmlJa?_r<* zVh&#&yCOa7bE%hu$gcu*p%I-{pg!Vm&SY7<>3m2Dmsch|h@ENF*Imt)yQDs!&{yU& z9e--K3VJl9ZRHXjm(8eIDP=l4|@lYpy*c$kWr) z(ec{pl%|HpXJA^l6&N45>$*SajKIlr?X)L8i!=3Hlu#afHS?Ci6#J{s19to^sQ)6Z z)J6+6m!9YQGWSoycHQi1K4|?el*bgX520-*+~&BpZv z9gdl*W6(j+rF0_RPSTSycCTL#yR#;s{~3rfxW(nT?>yv;FagJlH6W?=m(Z>*$T3*Z zVF&l$&e|QDsxJ}aJl8?{kJa9dr9T!-TRy`fQ5LFNMO6on(-Ndr2k~84S8_ST8UQ>>*VS9^|9yiH7V5+Jw>19 zAMdYQphwQhM~`and7J^ECuFhckKLpja;rS9#j23Qsj7;2p4%_MG>gn#O~VtyC@=Ig z3O)HWyJQmYR}yNn;n{rgVq_&R^UHY9xVv1<(M7OtX~8Ar;T9+L)Cb0kj#r2E3c~dK zrxi}8Z6m4>>mBv3P(i!K3WCSy5KfO<>gBNvyogu@>J~?-dqP;1g8Ei%M*SsnNnPZO zK`nVKOT#g*OxUxL3K?~rc||=nY@&-hEahy3rc-nC?;*PDG1(?82=WYhomqb(=wYvJ zI&kXb`r34jS^rF`YS`;j0zg-*KqkFt%i)ZBPXIDYv{|3M`sckLC+fgmzt#Pj}mLuq`PE zB4+3q7-<>;8U|uN`P2(qpe3_@RaUy`=}#c$S$32SW#pu$gEma`^*u~YVcs}CB$tOu z_Z5NbnIWHwffg*KwIa5s0`G+65*_JD-P(RftABC`XvdbQefHhbW0p#nWJ%@4s`UJ3 zm(Gu?>_>mDz%Qn<2r|-4eE)t880oa6kvW<;9oaY)FoYaKAIAghvx0G&x(!kUAaO`K zQlLRP*REcYWwS3KEmpRf;QdN_y^2%dgQv~b++TnDfsp!Y9cT806>b$=fQInrexnW0 z5SGbC4CNh*8|o4qJgKv1uPJ%}YIvsa|Jlk*LnoH%=?7HPkW`LXmUm2|J&5Md|Jj!i zuWmVTme?u&x`#u&Ra5i5c)H*J+MPrxu|alsxt#au<28f+`P0i+YxI}}venMG$}GT_ zGnrY~;)6xjzuAgT=h5X4R=n}JA;13$dahZZFPC0*L%5ikAZcaG)pY~#ETTSDY6btv z*yAR8Z~1gR@J+d0a;6#bm@!UZF5u+PR%d5te*W!XQ28wF$>Sly^RMw?jR}SZU|nXF zA4IO)kE;9txM7t%kfl@RxJ2!|lqqHMpk*TbrHFoH_w4IO3E|6@g^#W)S6Z}7_xEJ~ zA+pI-DGq1u%&~Q&vfnL$uD*S1CKIfxdv~qz)18rp+DoY|) z7M}W2dTEi7{LJK|ROpXSgYww9eW>G#Z&!~(SSjP<7nU=*B8@C66EibGl*S>d zFX%Ubd-~bf*&C}Z)fus}j=p!}CniHm-n#7@@*q}uQ6WtQL!XaJTvd)bYL5elzBQdx zrB&cxHUTh9&|8BxS?21`MWnv|?E?eb+uP^o=MNjE6>hGrf}ez7Ej>|+2!>zI7s@Bg z6Eol6VORFGsg5om4a*L=McSv%vR^ut^~aIL)?SJvdGN>B*5(e2c@GEgAJkRmFN^nG zD_{=(4t0`+Z`AVTxGJyj6D>s$B3T?3mnydZ_gtop}NuFs~Ej*He2K>JTtdNY!LW~u`x+@hHFF} zZsc%KZiY1*8n`1FH8lu~_^h+l;juB(8W&w{+s34z7rbOp`9r(&r;nT4n!7JhQ*HeXJ zVWGf2NNdvAx9)veajO89FAyU&=F)8&q^Zsw^GTg=eT3p63I!#sLb(|HP4p+fc{xxTqNJDR#BF#)CTpuNgxB> zSY+Nr4dr7duo0+gZf99tZlJorImxd^{&~h;rSmY1x%V*ro@*=i55iId*5fcxr|6 z@#yhWrobBq-FJI@?gKZKJ9+9DGU@UJSuzXw)Xz2!+Ceav2SQ9e?-Ck^?UCt?0Sc8> z9=UBhr{x#BXJMx+VkZ#z%%Ksw2rIwPy1@hzRUo-f5sC)(TJO+Wl%J#MS^mcJKp;joNJKRy%i zxag}sTiXdaj>6*^etgbY&H0AnJ+~@=uLR8z;M%1r`)+bh($HFkS;+bWK?%Iy{n@Hk z1SwwK6?y8umS^~Lhq09S{Q!JgeAHyw;Sl)5`O)}?6*no6x<`qtW;lRwaF;-!lER+b z{Z&3|DWr5MsS0AR_S`Vntwjw1eMz?AO@6gP*E0dI=#R`5)~eWERe)b`IR} zB33{5wDsGit{ja3Nl4y2l!kiL!6a;*2t}A-CNvPU^1>4Kl9h(UmWv+cLRB$3&%j>o zx<-wsQ)#Rr_h0pY+Q+@6p9rg;&pPd3 z4_RRK_^l<11jQJxljJeCfYcVI_qQxBs{f+OEl>)E_WzF>Z7%7FL8TVfqu%M0e??^% z@lOE8uaJLMwX(rwUri~5Ett15EJm1C1*s7o>Q=rPY0*wi$9ca;E)4;>=c~J$>tFmb z$xsSk6HPY~MW1naRArnnxBK;5G6)aqY2oPzR9~_Uwgw36-KiZxg$ojkL9a0vx*~)wMR6qlaG21;v0;YiK7Z;2tSQlcQJo7v9{m6qMW?FgZoDSQWTOhL zLLkIvti-?hKeq;;WS1v$Bltu`C`$LeZPF#4Be!jz1%!oUs-ZY6P#j}SY}GFo{pSuD zF(xt-VPc&CqKzH)rguuFXpXL0iLv>LWcDNc6}gJPeAV5+t2f0ac;gb(3(@zpv;XRs z3rb@*>l4SSd0Q44F>li*W!x5lm-h6Il#X?e#ZIW{fQ^Ouvt!Y$Ae!Yv-s08o zjWnrN_~_2;RJfgG>KimJ-4Yw%ww43DwXlX8N&t3zr?#?z7Uxku1wC z8p0>qlsv%?X?7G?EXeByGL7(4aUMvQKWn1^-nY8^tbvk`TuM^!Yrx^dz7m=iFllSR zGUy!k6+snDf7?gSp@OsPTz;MM$y??$y=9+R{mHO3-CsOdjHCIJ|z-a zsg3oCA?zIlj+T+B09`Nt@QFG&Y|#a|p>1df`K3lm@>%@{ zKm_Veor3Q>dVI62zkIHHW004ZS3tnj#-T0J@!J?V-$&|L)P~J`oe28Aw5aC&zib{7 zM`L!#2Xg`J`d^+6`pC5J;B>$;Rcy6xrJYpR2a+nKyMJBTF?vLY2{2L6&NSt%M`f2U zwMXx;JKK~D!8Oedh0WUZE_&7K6n>1Mt>xrJ$Px2PW05-pIEp7~eUuar>{YLgyQMfk ze8al4qAw!C&+rUF?Bns%kTC0zu$RRf+bYFi3v<%O)u_(&=x;#U`WKs44)&c&di;m+ zPo)12D`2+x9ZFqP<&~CuLl(NQ5o$SC{Bh6P%K&XwriQn+f^Xy+REA_iCak`MwBPmL zI(S)Qsn9{~flP{?@tZIrMx!&F;5x&TMXj->3hyVMvvwy!e%PXGZ_~mxoz#$uaA~YI z?BJ94;V0LU&ZR^63{eh;+B^m}eJ{4m^Tn@uAg5f|%55}#y9MpG@qbMysw1Dxp>;FB zNb8VS`fR9#ufOrq(Cm@=gf^`>l!6?G()4!C0Z>kG-1w@vD~3J6u4=kC=-taX=;rXy zgC(tM6w+aU+xXcDz%c68lu}6_(MFD&tV`Cs7lPorEg)$cvh2-*`GDcvo7e0f9n!&d zV;55X~PP z3DDa@gw$U_Fc!?L)lU%R3oel7OT!$l!#nusj^p=#D@=kv`=%kM-`qO1j=0`0i{Neh zo+vP$TLOlE@)rm?e7lYp>_|pSA{HWFR{ZNo9waX00pZYky%o8aSvh-@C>vNe=dk9G zalj*q=-Y4s8qp)p5UY@{p)a;K-(w={gd%CWeRl>yirvg8)QrjO*ehz=iCW6To)7y zH(|c<-`>O(t!jo;a5?L}gV4T}&mAa?7nu1Z{D%I*gkrgW{WB$I7|--6FGo;w!8l`u zxwA7aoz?r$SA*X)+Z|~=1El_TfyjI@c1Jezk2mI3@h2@XuTscuGa#ljYf}- zpqz^5Ovy_hnt9vG&=o|9 zSGQt8C?uRrMl_y4c|t^!z8a9>**uU6YeR{$MDQj>w}x2jM}Rz%(EEOGb@0s|fxou! z&An&L$HUIZ-nNb2?{HZK_vc$bovi*t`1OLhGn;#(R|w!c7l^Unq7Z}m{&!~?c05?{ z-Dodz*X6{TC7cTnSC+w&d*IuQU5R~KmZ}~VS7N&4O$GQ}ac7K>rs;3)!Q_1Q=d zgqhg&chy-%-SJO~(304;#uaDc8GYFY^2*W!{-E!|#iLLOH6o-O$%cE!iJDXbte9u` z8=Py`6J_5bmK6C=KC(4KXfom?+ewbz&2ly=#9j+6pmaNf|8>Rkp<73Qm)mqOB(R2IWv(k#T~px)iV6E1nTQ}CQaQTcF`-6JR~F<`Tc+!vCIDt3MZ-Y>X)mOZgHl- zVUp5VtuCOWdh%cV&LR5k_|^|^f$(w~Epl&Et)Uev+r=h?^2hq2OxPs_uLyx_o`+tA z_I9LRx%Weu$`*`p_iR%P@P}x^xC0zkJox`dG`7fwiFnseCB4`C*e(Dv7eG`M_qX@V zbQCE<`QC#NJQEQ0O8mcSEm-w`0CrVMVq97o;5~6ROl?RUJmxQu zmB@0w&HxAPtKHS`(Y~TuW#IiakeID=OjebP{|h5bt{$+7ej7tqQi6wC$Y{dbk_u9* zIWqKO9JRg(u|300LQ>ceKUDV*exJmcavB;|(T9U@LWM5_QNtd*4>Te zs8C9h*c-&*))I+_Hx7NcqZ=4)^e>ubHY~Jou?_ksR`l_SAj)WsnDK|JJ(7k7NtD&Y z(T0R|6MJObf&6nk9Q|T`{t5|6z1Wu6-&n#2S*+3+(9tOi4Z5dz=gys?@9(O&N!dNR z=K;6!nCm1YZy&CaUu7GUz)PS01L!Bv2fwADFEV;S%n-gwt)fn@|7(vNH=BozRM}ad z2FpL>W(DB4h@u)k%JUNW@v{t8K+;k12?6xG;1TDLZzm;LxNV2*uNvvkX5CRP6Ni5J zB)ky;z*&|XgF7hsNL2*BfT0Yikqpbyoi2c6P<#Z~&flJ8#zcHsu=KIg zFD%68=ZP@vRZq#clZ+if5)%ASB1}@8$e@qkIXv9OWAh#aIX^}A8a@1q2G73xU~D^Z z&8p$}pNPm-o|Kf~v^rMIJ4702rUxWEgs8Jj0^8@=X$fR)f|y2UIQoQ15dRlJ%FGkN zsQMP+j-P5_fT7Y@_5WDn5FEYASJ{)jDM*T#;t%W-VT-KQ@160z5@k!*<4x6&Gl6N4 z%PBgx;%c&@k{+Uhb z_1mm8!gn7o#{YlpeP>t{*|s(+ii(Pe5+$i5$vHJa$r*`~L(^nvGDTJtNew7j5fDj| z5hOPt0*w*{1SAVBIkqH;e!CgxoH^&tJS?%)C;W~bv+Wtn&ec+P-Nr$gM`a5nOE&NFvNOba9UAG z9glHi6t1ARM>uozCRNOk)p{X0I4HA&*_fwP??Q}Gx%QHvr-s^ABY%~Yp@*S3b6672 zmqQMT7Pu31|K&V+e2yT+RKW#IB*$Y9%AVDQ?DtTx0+P3qp|FOBU+04k6^g>(Y@Wcx zd)^6I-+657SybqrvIMXcn#94lSY5oJoiIxYfUz*rtT3z>q)e0mbKXjLaaqd&9lCq; z2n|Owq9`a*Qc`xJLJ?O46JG5pE1bpO!pj8M>?@l%O|yBd92}GlfTSlZ6P}AQW_^W>PEqy{Y9V1gLt17R);%Yif1u{}Wq3@j7_+`W^yHR&bZf7< zD-Ppgp4p3+QC+SIeoA}hSfrqi@6U4|VkZd0-f}`K1x@d}SV%b)Lve)qZ;uzVnA^S1 zr(vs5kdnItqG)bZX}ru9yR>R_BvF$QppbdS0{;@JU~;lHavpE>%O zL}>`l(#qX^qXAc{`Z@>Pp9^OhXD}&>NaPJ569RMUh$wx^Nu?ekI;VtT2)5mIih$s8 zXx@`^3TTpX2)Mw+%`DVVnlj0`bLW&Cehio}V55fLZ+|;Xc1BkYj1m$M6logYLI5Qy z19pUf>;W*~!*>Ru%1sarN?&25SsUb~Qz4oY#v=?@fPl~7Ejcy770Bzy?&Q`<;9kmP zc(AmIbFKAksXAnxi-&yZj*%=^K)idUtHu+-zW5D&vlCYTB6sn$=k&WU;va7UN5g|LA z6XCD22`FQZ*moa|IQ|e!t5fP;0pyiW=r#WiVUksjd(q4j2FpG;@}^5^1_@#>*3wq< zW$*H_P+7tf<3?jLssiS=j1@v`VNF$I67-WY;q|wEGWKX|I-?2XXSQfgAE8gb*J17J zcY+ytqcvK0a8OjVElfG4wF=8J@ax%P{0lpnvfv4G=Bo?O?O;rqBjy-l{%MCcvHWcM z#xAPUWIdz=l-$XH#Hv)`p3-rMLWT2 z2zUU$pH0V~+ahhr5bz#yWt^A3(pW5xw57!#9^dak#;5*?^nRa|>zSRM4ZvDFmtB(n zp2h73;!%rx_loq?O#MEVweg*6W^n7H5aluDaCP{(TejQ;g}u~~zk~{{R;upyrlrrIH?_j{NbF)Qpu>^zC<^aSRy|3o7Yz^}yqikEF}tAH#V=0kt!R z7&;uGwdOJP(xeeZ6G(q=Ns(#Al*i!$U_EuLWq0PIeZ1FiI+KA)8IH2wWz(BgsgPXn z2Q3$oNqdh*RfENv6pe+$=j8 zQMue6yzX=iZmJ!?-13GQfqr;H?W1-GF*0K(Wuu!!bwHrUlV&!iS1@4o$O5>@%c6Ox z>y+HSf4bQVk3K4yf!4uFz4`=c;CU3E<0JE690vOqNk>4y08I-MkVpvTG;fdL_>`N?B2|L^P0OT88s^S0`8V{+>G_Aj4KzDfbm zsL-<@LE1|B*&buqB?8*_;C&W?;U-mV*CkJzs?JrRsz-Ba!7^Qkfl#2-! z$gZ9wVBo@b6%mpyedvD}Y%RHSZ6^&4$WE@KupRfNX!)Lmxl603EK^Cf664Nc;KSdF z2s1Wugo*1CiYePJvdXg4ldowsg!Eg`7OA8k`K~V538oc^Pvka8h)p=uhOt(i565JF z6_lorNiHA|I>X?gnU!=FyDRjI=e6SM8$Hcf0;{KwsY}$L8w`?RU*aMwC;LzIG@t)L z^(~Z8oNVKXEzx@yY&OB0GX(Ara2^1?n*R~r{JTVci-{q_(P@oK!f$s+Dlp8-&C;{Q z{ak2>aX_eFa5i4tshIo8W{^ z=(9s>Nam=SQj@QpFZ&oc-WlQ+jk~{1*yXgUjq4_b>sXtkMX{W@BT&;w_3dklv@E{A z0EBv>bJO!ZD(n*8{lI83Deh<21VQ7cc}>}jFe$W)-OkU)ot#5!xVvfFH%fzJ2*rt` zXH(dBE(K3s`=xmUWn(isJdO4=t>YB%+jA#!4N~!!p6CwF?4l*ZM7BcFn_B+#8q3lT zb!Qv+axd+8Bc!f;Z>oQUEM_IbjbGsg40c>NGW7G|vu{T6F_5_5>Ng*0{@s?yFO*2p zYz)?kv_q5O;d{(Rz>_P|dikh1u8T4#VH=V(C0J^+L+-;UVQ=Z4iJSMrm8ebcQ}8!jL(pTdT@W%|a2*Pe(%8BLKk6y;q}9@8*5{>NEjuet;`2CciZV{a!J=F9%uxB>g}S zD`@ESv&H2;Exz1Yjq=@w5fKGGskbkJ!7>m?ZysyQt3fC-KWeA#7q$+6ziF}cVw&sC z2nbRYqx8`Rk8wA$Mpvc@?{(YFEH3677SYkur>CZ-_Pp;j|K&aJAyyczuAyN8J9~m9 z%%qajEaxd%kirk3@#v}=sHi9Y7BEn`c0T&1c_xXwi>?t)?v`_po zZWBJlpniGgB^zK9jW>NIwxt{}`v5vn=ucJ0lx$OEt7}ev`ca1a)F!L<(LjifpQeAD z`>>C@OPQMs%V~h|qYlTN4E2369eSFe-i4Kg%Sfa)ip4V+m&nh=^8BKXE~eabhq!T_ zxbdK)@nEU(XeoNrlHXJ*5+|RD`(`habRSkNtflph`$ZxKn}Utg_MOsHH?DLU+h^x6 z9VSE7zYK6^N?7?qX#Y*X2Kc+ipOK9}i;w|JB)`^48aGnccy_<`0W~z~fYgP-kVIuJ zOpxz5^u%1TL_dkg`D=`o6B5cTO1|0`L6>YyJQ2O)I^mI2zE-0h(ORwriQnR~ZKjO* zw4xuhr7v~3*}oR_Yae{e$nW4MZey;8Uc$Gfvds=1>x;bzzWeiSB=sdh@;Kj)VW}Lt zd^fzJ#qdz%{*-2Wi}&2qkmdb;MvbRQ!XYy-Z+hga{>iqq>Q~lPm)W^8K9$GJF=Her z$`CLkUsB2*+E1%zJrwTBqvre?(z091ZbalAs6C8YjRUl0#@B`uP?61Jb z_gm*uTEZriRikju&d$;HTLd98%YKCOQJ=-5t}d{_?x@XN$3SHd&tsq40h%CBaKh!w zl35p%UhC@6YE&@ibZVCdHYH{8o`m$&<&Im@&y=r~t!WU6H`QRF)x6A?*{^w}sk9nm z%i?cg6W-DE6eDPG@;#hs^w}6F_`~!4_&%>$uN+4lXHe7VdzSeF0dAyW2?wn03S7fq zzG3P-w$&C)3gL;Vql@P9JC#)>3O4G^VCNya6wMn^~QX)m9H3Oj}z(^AufXrlUk z4}Y$gq8l1^vGl)0=&)+pAO-MI!IJvU70?6*d-%xhuT3=U)USyaFL`l)T~D}ZQ!p?x zWs&_ZsJcpj8yc zB?SEp<(_C54;zN|Z$}BAy#Az_5r0?e#UjuVVgSJMDSki=JptI4$CMR&SR%DcrhNAu zU=Fgulbk?cO5Q_ud=vGdk?speANoUDZB)|hFH`mygcVi1c)gpjKJ2n~c`ea=PEmBG zW>VMaV{p~9(2(oT08S-{@n5>WyZBbY(!KxA&InHZ~nzCwv$-p`>jLIFT!^sh(c#>lbJ+bdo0J*$mB_{k?#}X4d`R2=;j>^ znIf|#Hazs}YN1v;OuEo_^%WA8E{Wx&f}>efdJKAiSBK9*fq@gLS{y6dX#=&R)%(-) zHSTUvEMeQ5TR7;DHDG4hfd#jFC5nZnU{9G26Z!S889d4JU&-t4w1}m-%n5_r68$zZ;Amov?MR%xdH+s9eHhuB-9}^MF z*T1bmM3msYR*82v?WmzOlB3>|gZ9SV@yWwS8d4Sgzm8VDgWP@vW|ZR7YWi%@K|6kp zJ41LwnEGRRxEy?zG;0C^B#-o&sHEY0oYuJnPw!w6UOEmmYZJ|_H6B4z3m>M-vwKWG zc1sUFJm)SRprNPL3sWUhbnI!Ay0A^?`0~Wwn*e4zS4+N&6LZ z3QquEOzr+U?*j)E(+Rz>m-S!Wlxt|A%xuetOp4AmKPABIW2N?P=2Z9OpaTzm;qaR` z|4sD@2E@ug&QxWsVwD6naNSD66Py+UHB*08K4tFT%2zS~QPB@b8u)hmdMQ*;i??lT zY^=sx+NJ*}9301tQz)4BtG~fH>!KvsR(c;x(v{F>m%I#Exg}}#8fOL9HT$H1M0XbR zl}A+_93Zyd4B86ZZ;TFib~{lTk!_s!k-A4;k7uIDEdAlog($v>qBItY@)A#gdG##N z00YfXlsJyR4JhP2qTTW}Sv263uc*46W<1865tEx~Kh0;Fe2){AB#W&#FzA~35pow- zYFrGEg-}YDUgV)5b#B=PE-bDMCdD@h1sC=qACXn9k2E~rz`@Uf;91Y8m!G1D4P|vW3?c< zG)y~SzkD5R&r_!jQjOZn4ZR&a&8|y$GXui4jT{|!5u2U0`9Cd|e*YAG55#qI}ECTnh6SG>Z+@4tHf2kb91}m z;xOCW6LsE3$VunoLjR4Kf)XjeBdtta;ng~vX&|nBkajfmk32-J9{YqC`-|bPQIl}o@vKo4);cL7*tg_POU1n+5|Yke?Az8RW}Z*$={5Qs?sb7|NQwPrxlT-Ztlr=2 z-CMqAsWA#KVY9oWYl+X!Y5(wFyNYm^OdCn$(qm`hkLPaJ8!qZJ(QA&{@ebPYR!~q# zRd1v2Qy&ponoUsN_w#EVum1qDLdGB7mU zAV|^jNP%Br{9w3smS*kKgstnEx^HR$$y=KL#gIPfwA<-=61`(=pXryfTc7$NaN(749$mff;k8!i;RI z2vDMN@|}=|D&PO=yPbaf?vsVQfZ!Au2(cOdF|BM4vqbg6b>xl)b9z}Xfoi~yuV{2nr286;_#vg~BH%A+N$aim!VtK0Cf*~V$ zJ8qC2@AKgP*4Uj%N+~tWXjN2|xIhb}k(gGVHh!-N)BP;f&s+KJI}IPbC1>nvWaeDA zEVh;I-pP!RXIff&P=hx`LQ;82Y72{sK$>Hr{q1cOI7c8o#wg(g(*um(ZY#TywpLCweMN=vIt}`<5=iqIMYZ9H%*K1>>NGvQg3iqQoZ+T*7iXUcA15Lsb#t6%~or zawz?G3QV+*qT>c9SH62kg!DB<_B6&DB68RuOEdQ= zzp{rz@wmiOWAb$^s!xfg+ii7cIQ+QEV!zN9@X$>{r_Aup5LJ>={VgbP!M0c9SW7a6 z(~zGw$nP{mJZX^5{`wrIj&vKxT=m0)22}Hts7e{-y2>#;u(%Z$7dKELXn@_lR6SNA zArS4I$hfe7Z=nwODQ_kiE z0}u%vce%x~DehaTG2*pDg`o|3%|RkaNX?sNn-E>V)G?Ka3AaG#5rHNsm~0arqY(a< z;B9*yH)+oIa%;3wJ26VwtJcRb>Myo`xW+s8s>*)6O~tCvYJ-UHs;Zqa^W!*aTMJc0 zJdV}+bHK%EDtSlPBz8TTjix|MSrYI#%x`gNi^3B>Hj)N14KsVq<(j(Voffuy@rmc) z>HI6U)BL7{8q?;mChcoY%?MfzuGxIk0^kL%fd^GEkkl#XpyNQ|SV8?KdiXke6z^Nl zwN{IFs@pfVLea{Ij%LxGYN;m-fGy^uK`;lR2)yr00`ff1V~W zd2G@T>J2ElKfdu=pZYZMl&U9jf)S5#`<&3@8U0=2EwzRO(tsg>c1Bib7x<42aTDZZ zjZSsQP4R{#@gWg-@R6BXQ0F{BhkvG9g>zm-Rf${m0S=9TO?YDa8qL>{K5>63OdK(R zbVSrn`ASn(ijC5mbPA3~{4@b&&snU~#h1=t661c=B1x;M_p^@EY>p!`mmaFV;Tg8`6?v zZ}U%lAZ#yrV`#_z@zHH1X5ND`EA-L36mQS(q?ZLP*XPCo4(Ri1*NWTNXHY;0W&dzn3rB?a{LmKMpdP9RC zl|cNeTjTbDt#jzt(0Ay;qIMM};k4NEKk&g-__#_q2(BWA1~7E#N<0%`mgrD2tid>} z>pz2CbU>^n+UU9NTnk@#DBCa3HT6Ud zO(N|CCQ=dxjJeEMuab1k?BQ^B<-?8@U(GUIZ;Jy8(Wi6crs?Jj7n`p;>h~TPxTF0v znLFEV&PF*i4qq5M3_qF4_$uqUW#Mlr%(=;k%m>>nggLl+x{+4JJKl6RfTs&I{ zp1j<^r-V|kjnC-#)&i9UF`VGUAi*(ema0J6Om^W_*G_mMsD19IdrsSn$6g?B(11leF{fu^&o$E}AI^hn$NyyI1`eoGpbl;rzT0 z-TQlsj1SY?@`TfV)`2XO5)Kd9 znqACIdxZj=Kca(u@%@xSV{smJuMOamPGT#H1SxtqacLY9HWGE2hEb_E#drQSP=oIX zro~nkjzLw*3Yi#c4S&&%qK5ZW>lHv_r}>hibOV@3u;WzRJMLJ!`j~&lYxhd|5k|iC zbo*w-I#y8%NLik=>fTmoSd&q}Uyy||s!EzaZBP6oZbf-B2~9jwMExglp-%S~aFMeMq4(jNZA6UxE;RF> zPQQgA;JS+w9H==PG@1d&u`osh%n`9i_{4wl}9E0d(F)6nIpdbKj z&hPLJP~P=d@L?UF6`B$70tDvhbxhrki!0Z-8B|;P({Z7kqKyCPz_cid5V`-xEBo0} zM*gQrna)>w$tPrPv;b7glUDe*N>|hbAE`COT>=5q+Qxdp_meg4+XbB%Oa}FoZ+|Rz^l@eK z;%53&%WBsID3O;_ada?K>*lZZ(@hpN?XpAm72Ojx`SP1Qrt$y57)p4n7vl(f(^~c+^jZYBP0J$j(-UUm zq@0|I$&Q7K>>wB1@;{ltUWl1cO9(uyFIfB3y6iBHiHp*u)TqMI&F=U9g9P{&H?E4$ zP_=o1%gTB6Pjvz@l7-~?zYog(#)B)M<-%QHYv0M}=^uB#cY4J_@jEob`*G4gu&Tyg zlsAh+0HzsuZ*y22YG}v?Mu2~20#GWt8lQoRkEHl9OG!sk`_@M^tOq-@9CSVshn_ zJ2m+QuYFsZDy09rwM>%H6|dyn{E?Z(+P$Jx`?}h_{oW)!oR_Yrgzi@0fu8rktz(7~^H{eRpO%h$QFE$nSB`RAe?8&{=KqXXnYWQ<*VGrDSuTCP5 zC46g*>j@4;y%wllmpnVzz1{7sp)t9YQgu-RVZHYW{>*O#?kt}#g~-`3KiQF+{L{Fo z*AS)5=QDR3l@x*T`{q{l&fC-1*KhC48F~`Iv6>D`boI&!tU(L3*TF~4jXOn%&91-& zFWIAsilb*M6`W}4NVw~!o{^RejsE=h@E*1meYMX=U3-ho#DSVS+NN{G38oz#z1T1y zR^ksF?hLfIu1#W)$pJ6-_G+zP@q({Q1SDB_}E1+Ou+TvJ0Zu zqlqcF1cZdn*QQjo@KcQ#ciHb}YV z9zBIA;_KJHQSAF0m#h-0DA&mJ>I=MNobN_st=(pVKlyd41y!+Z-Fka8-nxw0;D;lz z<4Ajo{;`qaiQ$!ng}T6v%8cAjRVkms1LLBj3(Fd}TKz2@Xz2v{eRv+u+*I{19<*hY zXL^oy7t}=wI}`d*B1s9J26j@n(P5SlIW`FoA3jVGMv`B>dXPGoMTj6KU~oR7yXYyl z=zHodr4@ryl(6l~sVR$*4H+4k4@oZx9&A1IrT46#x{s2@Zuu^}@UXX6{)y20snxxQ zVOIeZ#dA_`hLvJu<6&YW`)JRv#QMaV8lS0XIl?N(jVV!9R6yg3?a!zlHH6*sa zfPEbN_crZlvAx}yCLOfIYm}C_&r?T6*0Txh`c`E6C8pWumg$#ltiTph z+uD@Nx>?P>))(k*tPO00rAK0CERwq+IUzyU*tif5qbAwjA@T6^tQ$`S^GTJvoaz{i zQXu;(HK<{fQkPdVb59>|SU~&l*8ltvLJam@yCp%XVT0NMpM9VG{#{2;ZxQ4^t!{2^ zdV0X@?d%jd(jGo+3!b+kvw|Iq<3)-Q4Gq1PH(Yq4(rFajBh)lBycqZ{U5sRHLxX7> zl$mKt{jH+1mR{0>kz50b44S}UJv}|k!o|H;KjS6h-uQN5b$s91o2U-Q$H(`EICpOc zy6ZbMQ#BG1ah?_%g+h6GcnAtsjMeQByoGA({J70(J=P{9h97s#yvB-#f!bg#R4vU;!IptRw0gDcHy}#S_!23 z>e~{Tq9NQw{eD+h5ec1uu#lweWh>gg&n`RQQ49Z>XN#9G+DD?v(Wf~_zkJa#Ha@sX zU`{If4jBFLg{=gvgM-oRk9=Y;wJAbbB&o)Xz4i)B0;OxceA zc@?Xu%OG2!tbF6g z540)rD;KCqIuO!u&KxFxnocccWurZLo_P9;b0j7d4Q!c2On9#c!K6TO+nsPc6 zd(4WA*aYMo+&te?j2w%+9&@mT-(&lXh&P~R4=P3MjnR4a2e)6>eilA~0_-@psZ`=M z96d8LBkFhO8o;5L$YuzRKZ%5;q{iVhF{XJ;Cq709Q|ejw=ctMO5{#Ek9575-6x;BK z5{5rkE12)$htqu+`8sqCdxEm(4esdc_V=Ib?O{@d7d$0We^H;`FXM1OzwxG9sp8;X zGnAoe8$o4Qv-qytahd%~dT2nZ4k?OAs~MslZuV3}=an7c6|xjZEMVnE#3 zRtxl4MgpVReX2#@{9o6YAG1p?)V2R=C%;!&(9O1QTvWkklc~umhDkAhqE|e?#gL*l zSS*(7mYVO-zh}#YpA=p{jObX<-$|>jK?*dUVTtn@!+n_J0P$DB85N16;#(S9%ZL5)kIka?q0K_>LH`pyfgjyDvqtXQl^?wn`J5^Z(izk-*kG`mBXLw zc$lBU7?2QR@1r*gIo}LRf78#J`n0QX&0Mu zto8Z0gTSDa`d1Nu6v!G9uXu(T9YgJaP7dVad?DRTYMqep;t zRP%axtm~U<<^fn;!)8couu?MJdt+hrD9GXb=%3}gy1To(x@f7Xe+-|_4>`UY9&SZZ zv{736!fpnQg?=xQPxxOU0z)0gzs{Q+5tzjOji&uYl#`=I$9L#_PSE7TY86 zP3$NZLO9G^A3I#gN{h{w$yUz7ut!lM%_N@zB1~c!XKX^GZC9LP_BpB&c0lNl z(v+}USk>QmjPHKc|GHLjY@U+)*~u-ME#fa`x?{R5Z4l|gmRd9P{t1Sd@MLQE9a_B# zxe>Z@IZZ?^m8M)iMkPxN>fq1p@Xm``Y96xso&?1l-yua`%^9= zXNZVE;z-IeUQh0s*cs)e;q9*I(Ej9hOS_|9>^bWBQx1uC)k66> zPM<{9@z_n-D+W)0aRi?FxsrAJr`rdCvXyj$j0=>V42VIrYzbOQEI>&m2t7q^CLx@q zV73p*(bCG1-=s3zZ0StqAU0h1aYnbfk>-2(H!8DNB-t@JoLAKqr^a5H^6-$U4^9a| zk}VWRW2P&;&raQ#7H(4NTGE{}c&(!)M!^pLc6GuQE|+PlyB1_QayFH1 zzlqP!;e0Q5I4-S};#>S~FB8jdx0U3wG^N)X@J?KjrrGJXlaxNGu5w6djYp`1p7v<@ z6@JfnQ~sO9HBb8LwYu8aTFSK&UW#NdSckE2WGO2Sxy@v1%FStsX2b7^wDdh<5*54G z#&nyrp@VbdS@kS;&Fpu(v}@X`cCiR~RnnQMcgY`!v<=yO6`ynE2y_`cr`1otV7E)< zcG^g)BDyUW?BOh4m-xovvz#WUx8!3rsWILU>E;#ZLd4?=b|XcK#ia~iyElw+de8@* zs~WXKDtMKQn9k5J`2`BP-zH)edpA;Xs+K(cpt?X|FywG-Fn@c;i&KiQWQQYmOwo0% z@z>Ery`PddNO`*$wR5yS7PP6x*~^bYzw>N+cnbX5TW4v5@&3WiB$1@f$6_a zdU`+S?yV|)Q=b{IzowYWH))W@2=*||O%GJgY*-6|4M{ez_R=K$F40T+Pq&1-&vgeJZVl1h3Q;p?;%?ddey?cr1ahpjjm{ko>R_Nmw@gm`qog3hcC zvgojfZDi+)ce)$4K(P)+b0Za;EcHJG7v$*MyarBXc{>%j`qYV0_tGs~`;?t4)k%h` z@^u>JGi$%Nak8KpwmMP?#_NQ_U1_YG>6xn_HtMoS>rllO`GUM;6FUU;Y;UXMnoii` z?UYH$!^MJCczwaM=kta2*D9WTOmx4;w)^SeiFJ41Jt>*Z?h`ASH)fgE@dzY7E-BGu;*Lr@joQv|P^4oFl8>cYyzjF#r zANVr^jXnUTjdAPQ<^6kY|}x6O5@f}O0OrJ|~%l(`Z>KwBtke=n$-4BQ|0 zp3IKa(*pZ_2YAhY&UpFq`j63t{@ft2e~QCUaWBu>bZewdPZ|>ue#h7KspkEiwVw9& zk#ZXn&L6lo`nB0zdH{rYg7ZEaUJ89=?EUTiiCPb)+-IxvzS{@88**}T7cX7};V1%u zxK$7IVrFixzpkdHM&Q!bv|0&hoq<#F(inK>l>CW+T-gmo0Of}H-Xxl zy&k*{Aok8rkf_i#g4I9&w4@H@ow2?{XqF#O&t{*JRV(!;blpcL!%g@K?BH+>kDJk&qD&I1&^UWDpVHGvQW4SlL|vO+Y>%+PYdZ`;elWPd&_&cdBQ#ZsNl}PEA+?q z@|qSlh`(-ck00KjLx#b)Wm(mPxJ0>BE!;s(8-%*26C1ZSw*pcJDJjW)7wKk&a629; zj|u1+?qMXzE6gPd#wNlgz#zy6ehV;&g5M%0+}fU&9zHGzZdE&Hhd;VL7Rg`x#*5^4 z-~ZaQEW+J`RY8!8mxotCkYAMTkG}XoFG4~L!n{IU!Xga({5)Ku48q{Q!b1P2-tgl2 z-J1;35$UGwVgW~hDa*JE0eOOk!D@g>%0V6q+ISIyOA6Y&_)Euv1()Q(+JUq3ybJ;& ze=MGk4j;b2@fvgM=m>xVVZ0J(fdhQ2!hcrPbVI_m5gta|nzHiTIta*vTgeH?SH^@J zTya6TdDtP`LDOn7ykMpIgz(CMAIyCXOM4(@a7D?9R|H(({o}%4rHCKN?|I4FIeH-6 zxaA$e@MRHjq!kc9!r8{dmVu8~P*hU#x4xdYohZCN8cowi8Zf87iRIx*30Sjh=DF-X z1Em%+u4sLH^o%G%Tt)4DhrM<6mB}A+yO@`Yt5lb2crB?OzC!4mNy%PC0L zTZ#_Y8Ta?`EuKZ{r}#E5E;b+SuLV^bsLlrYJaz0>54^8F+mUS<%bCvn@Z15hszFaS z{EiF!v319|Y-yJjCPecI=MdQi6uhG+&MY#e*<-f)_F$DTUz9PcL|v{cYd)KBD{+e0 zY9x9&m)~IIRcXHCix)H!hiyM>uC!R)fn1cxsYQAc;1e{(9k(tKevY`s_}oMBHM)^Z zy906Wj9@C;TEz?kSBg%d9t&9^=`gr{gNFp?+;zw!WzUTT5F0N6UnHxOT<8 zGU1MMk1t2~9DIy*&6YWfqM^V0>4p6dflqgHJh6l%i@vmTD)%it&{yw9$K=jTZTjq< zWF9hNxm0+~*r0SHQ9NP!l>%84tVnxFjDvR$1g5GwrRUSr*=ODYZp?j8o|eajZbF(t85l1v>-RT!cXQ(`U3w$*d8ulFd>P=J%}OBP9m0 zPaHJ{g&3W$QbQUdsllzZ;xX!nh5d(x*4#c?nqL)Duit&p-2Z+2>mBoxWQVt;AC(7P z{t_{kN&nKen==s!{lS0@LIVKCsQ!#f+S#90!q+$vNQTm@~&zzSR=a0S7 zv?^Ld_hw!@&9C6hl{#8s-r65~OyQ9ixl>^!EJZH*Iw$fH97EV|lz%7u^l@&=E}1@M zcT>EJqk1R0bGhqd=Z(})ZGLH+=?4Iyw+(NsU!6-`qp(`L)!ycmc$e>ttw6>NqRz7> zn&03jL>(WaGh>OHN#2|hb)&mb$n$+cD79iRwqCQ9M}bc!p)AWtnp%S4$mr^N!&jBC z9aK9X+=^9fWBT+p{RFy_SdXU`!m+q>+v@MaE~#CvuQB?zR%guR z#+&dW)p+AW)pl_qoXlKANF%6akzeXZlu5=QhdA|z;c9PDq6G}spW z(tF1gdoB=7$keSXe&O1}kmatcGE=Rk{s8^(9j&Ka$oaD`MJRmjCFjS2v!JvaA^Dc4 zcQw0q2DX){uQD%0WvHUl=Zptd^q0);@AInDO0F5y z(|`9^h;Z+H{pyw0wWq>pTCRcmJ4!^g8*RR)5}aIRi7g|~z@zBGF{+9B=P$D|*W%2> z-AZN8%+qY&uj&~cxcaG3q@r;DKJR^^EY8{mRA7GfHWS}Y{mqt#ca9W(`kqwYissoQ z{*~i3bwx{-NrB$;G~3;pBxR;NYi}_hWo@TLq4pE;DOL^7<@N2@bS$ha+Ue3eWs_=B z{0y98F4Ia_b)38Hfv7T}E1dq|b=#t0`@NnKg93lLk(YAj&816@_4coST-*(l_x2X? z;<-27o_5ItB^!J7bJ)Co!)uFd*3LQKpegEts|3qWbIR|R2HqgOJ$bA9Yn0dK^5s+5 zLMHLbtw6Gru7^rlx3{M#iA*TC&z*LTZ1ju0LtZb)D-@66Dhw}6x!z-~_>uR8?*^$k zgADm3v)TT=?cyic#1Fr$mrwq>K|vXsEz2xo#CBJ2jDE+*Xxr$WKPJ)6$m+>x-;?V? zJmKBy7dg4QU*pzof`rRh|#Tlw+z>!;?Zrxmj3?(;C(5ZW5 za*jadxh;3UN2BT0ebN_%etGHdo?+@s@_lS{1$zxTb+@F6#)V0r{(V0cI@JD`h+K}* z+wCu2KR@5-wGUM()L_T%rRu^!EH&~8-=m!ehnWqOs>I% zznbk_+M89Wko3}3HmdxZW~u!4O&W?o$yn**joCGkhqXgqgb_LUat^#Z_1oWV-$^}) z92C_@Y)t60SD(9@tt_98b-DcbX8^Tx@jJ|%m*xyrA>-{YmlGfN?$5PdyBecOx*Q<7 zDfCjtm$ig1X{aIa8Et+Jf}71x>%qRIU*U-CM#0f(1L>A0*HgpK786;$i8H)7F5Qm1 ze0GMO)3PbgOE#S1905cvMyq_AxkB{KPg@SgpLVNB*rasEqXzP>5GfJYEpuB&O{#<$(f&i-`jPmn4!r3)zemd z@Zgz|R+ebAeau8sErY)#&7S;z0FrXE^!4Lcp_k#OBoChRoiHhje2e_#{EdGgJU{Vl(ZVm_!21|sEowEeXT3sUxgPoNGi@u;5kD7}N z!q!gF*A1cVtF8n0b%2Xnu}Ddthe2YHlZz8*jRA6UbaoemByLy$+>Q_fzwxKJZ!jDe z@oOtJKNr%?hMN~`zKL&ykB<|S z;B@zK_OO6Bo!xKZoA{#*fQ8|1b}k-vNM{Con--QxPY;P3H^6mo-2YZsP3=DycXIld8dmUs6nF7-b37in6`UL4h;YJ3GN1?Ee<|0WRY-B{EU=jC2n|n+F6NN@CpM)%-Vv}Lexr_6JUNJ zP77XMD^4pxUbu*;fGFI`Lh#Sgf%;0$?j9D-aKu0A3-Kc0{8oGdoL1HXpuV860H+1N z5D%xY1spDH2^X;B6XrdxZv_{#M!Gp!fOWNSadEVRTi}!kiD`ImbFRQcl^xYxi<&i#+O{P(2s4gP=n zcRZQ@PkkSE``-clR|5Z)z<(w1UkUtI0{@l3`G3X@fUuWf@y165=gI{mHh|bf6T`IE_T<>!(9{MCWCZx0Z<4~^df-j|C43LbHvB|GWXvww2BBj z8(R+sJ^`LT$y$CKV#tr#+;FGJ9Z$IAa8U7}Vg(<`gTjGX-u^uRo|>&63))neT5H8i zHj0PWE!2eL3WOu{{TktFC;FREg%-jL^ z3-#}AabiIj){-v1bdG96thQPVqUfiKW`dCYwaJ`i= z)Aps^`9XhwG6j-qx0`h>p3~p@ztuf%cAj02syAvd5lNPG{&rz!-?;9yKJuvbSNhlb z=j_vN4<-^~jwCOIt&$ddZ6(n8>t!eoD~`l7M{3iaQrMFUdx9+mHh}}A!Im?vbm92yHa^H(Q2PoRUs3BX>4FuY z4^?l44g`;&2~;?0e;KHJr95s>>Y91_5CWWzta;R8c5?~v4Ue%*au z;v%H(^VmYW{KN9Vh$47F5gOejF5C)5h#eE=TwsiBh8W_CB6x`K#_)x$@F)>EO7zoF zMlTW(FskH7hHpL@p+R;SBl_7H9c-C3KH6t1d=a3*?Z_n}dX(73?bs#dO|ZRV+mSK; zE+s%aA%GQv?Hb>Sj_<@StK(Ce1en&Pz>GdUX8;*6Z_F+LQ+Cmu<1BG3xkU>t`O9TX zZrPj#D;#TXl`gRSnhh6Qe%(>*BL&W)jN>Y8Fyst{o7fbuYPM43Y;inArKd=Dfp}l2 z{1u?a4Hc*Y4POQctw4>V3lUnj)X~c$wq_Q2lKGZot|eJ$N){TDg_>lcDp@EIiv`JIZjH#UE~Zu%D^3T_ zq}D!g#45$c?#QLf|N7tld#;9`{p@F7`r4fr#wHV$p7@&zSYn`V?Gx`)vtn+^V37zgf+YiO5eW^f4}fC~f#MS{4MknBqz#n0AZ|e0 zCqQTdWevHYq$Ud#cf7?NPhp$LW4YsDTZj_jBW@4@2e$^lM{u)n9ms*Rut7S=Nr62h zwPn_=goI zU`Cene*~#{6kAB#0hoddVuHaPF|A928C`N#pPB=tiS)cNa|pdm&l_;r5VWFC&g&BZ z7ZSP|bWxcyf+j54HFQN7=#xn7fchuvth*w+i47-1SjlZTa&jlg6R!N0tAOiYxFh&I z($~a5w@M9Pa0WVK;%$g!iSU)w{-TB`VV91m=z{`=P*osI7{j%jG0?KwhaHbMmItU9 z!WAP?HHB+^j5oRCP$JADh|fQL|%MN)}W1k>@9MGu#}P0 zcyemQ2MP`>G6;4^Z3(G?klQ$k4QqVE5{Dh+%oLkYgA-XJtMcaI1>th?m!Sr(09;f@ zjBqH0enw!?K#)Ry+nrYe4=8MV3-H1=^TI8S;1P_#rNE6qQeZKGq+rXgThkH?u?Ea+ zX~{4V=zGC; z1KbG1DD@1I0(pVL0(1Z=e6V8wV1?OX&B@h3m7MA=_k!;b*%5g0AL{F4!_T(B1>SS( z!1Ez}1nK5Op-nF<<2MRLB>3qJNJ01rp?v{SIyb4|vvI@-QhxFtf|?~iQZc8r6*w&Q z0?aHV7a=_zh14*j;Em(&??FHlpk}@B#pq^`t6_|?15<-4HVHdu6Py`Q5DXqA7~~6V zr|!g@HZiM<&uL?XF3#<+#O$!l?SPAoU3IJc3bbYWnpn3JQew~!v_(c_WHykM*|Qt= ztlW`>9X1Em(6QUYZ*N z)w!|y+<0?tyfr`GCdRsqj^w6*|8F%I5VD`8PCp)XQswe zQ{&00@z~UO$!PrRhrSIjpgYYe)_1>r`!~P%#V;N^c5HNf%9m|f;tgB8X-_mA$)+>e za;93YRLh-id(v$$$h3VKS^^KzB2o=^vf)b9or#(=UUh(2#SvpG*h1THMQspAe1KTR z9;?`*6P9aJBS^Vbw!Uh~;f6*0 zUovMFP3Z+AyVJGtX-#ZO9i3D~NDW&-8YzlO1H&>O6HR~(D}_l4s@Q}oepv$&(^}{t1!e)y3p^t*7EF{H z1UvNAposyjBReb_Qj12449nuk(u$3)x>Z|#&7PNttUCy)qX1-15qN>FXD$mEA%hew zvx{nQ<~H4VHmuY)0=q{BMwV1!Qs8I?5bPkR0ba-pgTwq@7UTcn$WmC~hNLjq!>8KL z6ZeAfE@ABb)1b)E=w18CcOT5__0jR+I3qbeoE{&}P7LQJhCpdz zxI8gjofxhYL(Peyw#Wz1{?DKM^uKVhjxFyGY{7bK;(TM`e2o~YP*X!i)@E*eC^J5k z8XHQC4aLBvp~$77oL2jj?>Q zzFfzj>jv`OV7?bB5aB{E2=bh6FxLrW+i;36)AXhr-c$po@G^YqhA-3drD+$f;20c< zl|!0?csc2&hc)6!);-CZJ5h7RtIl{uq{?0jKtM<$!$}WCQU#P3fRGx;@Lr*bVzN%3+^2Ef`-LXt#}FP!*yT?H;iE#kTh_@0=jTr z8>%roRMqU_ga{B5lzb3r@RAOID&ep0Ft)MuRkuZyz6xi{TiFDjio#QtyGt8f4b%r? z{V{8XLESSJ-q~$vFGw5(iM>cTh*f)W%~n{o=2tAaWlMI^oLw-b=ZxqXCa1OWNmXu1+6rIdC zdK#-I;+J*?*p6T1?8N9JAP7b1aLj5$7(}Ad&FeOwT-c6MYdf)iJ7axRN5C%nXl3+J z5JKu<&9bu{WoOH#3}RzDu^XBiXN;)_n%zlUBCtYp4fwNPPzZKlFqO-NaimKuEO04I zY7>*%B+W7yGBbwktT8ud%*`8f3#QzHIll-j`6UZ27tGk0<$@q(=#vx~NDABt=x^YP z%Hz^n#RX<7tl4m-(S^5e=W`7uAajE9hO4~c7LXGqem%<|3mR+6$wW4sd4;pE$)vEw zdP>{g%C@hv;|FxtsDm|*CP=dhec1d0zXxlYfY3=3?7%yCer^QTwF}ej%x+R!)MJc-h>&_TvZd%d1tP z;rGJCyRqSS<0J1Thu=*PzndL?H_s>ypDmA^t&W_n6K6Om{{LJ2!TNju;}4W9*>;j^jXvx(uevEj4Pp|c@IaOiASwf&<9@2zzXG&HqJX#M%d z?lu1O;KB7zoGIv_e?xvoFo3lw%kh23y*FH+izl=q|M{aA&FbMO)yOMB7MZlt&y zE_8`}CzNXkMM8Pd3GrQ@fe?orBsP+51u{*48q@_c4S$-90|)V_LTM#gcO)BjKJXR8 zKM3Nk8kyO3L39$t!A2jVCH3S{{I^^gHt(F;6hj1Lp`_Vo>R>P_RG1WMTnB~-E}NDq z+A_x4H(-dh4AGW8($t3={NmJ5*{`VjO+NSZSz&OFB6U@y?yA&X zTX$6@&dQpjyy_^e*o(`y0>A6$jF}mIYD$y1td5PNbZmvF|G(kmqei0&-^IOf{vpSi5(4Wz#{N?i>cpfbIjK!e(bRJW zMwmC}7c96Kii_6LqOG)KFD={4D;!&8*;ZP%6_>0yfCMpb%+9k+v1rWD^t2_vLONg_ z4|_>shXv@`qsz}(k-4fecXh*4lLIfPD@5o@_SN|HOpai~r2X+yg{z?GOTky6o)Yz) zYCD0N3U^JYp#kBhmT2iB4BUF0NJ}4X>LU%@uyh*=&w^@9uF^gGF@-3>*Gc!?h7uc9>l9x616MI z+LctDNH?yg0M=`a>Oq1`u@^7z5~W_O)a@f|JYB>q)vi3JItp5X#8L4%56Eb zA{jtlU}HXNny7*osye!sa0!tPO!1C6(X}MH=0wi|l3ieCm=axMykm&AVFw*9+E85+ zWTAjZUDmyU4m8XH?DB4^LoH31(Z^MfPk)MkQ?FBHo>HT3X_;nCxybLr2<8TODJFcVwK{Rkl7*9A0ZzRM~Z|A zRtg|tZUpv>4e5XtMzp|dU=~d32cRt|vuR#tVF$zq8haN;bwndDDNv7^Z{J`Ds6`*N@NE} z1o6R~qd;LTERzvRoHcgs5iWl1F(Y{Ea$jT9-{dI$&8+~T0tlS8RHc24`3v?ano+G{M?2{o{ z`yc(~-QP%TNFA@g?0WrW&+9MwUVq8|#)}~Q#*5K6Ux>f?V*ITa({H_)dF#deTQ3$E zMUk_A^WO(`a43bp`P<@~FXS1yH(yA<`9kW=7h-SzD)z>&B5(XE^!f|F*I)30SAXq( z_1Df6)TTiBgq`;&=0f8GK$wZK8T+1}C zWt-Qtw7iyM%WM2o=qPxYINz;z+e^`0qg62!Jtk59$by^duXb zELQQShCFQi-<92Ba}Z<)TA^_ys6j;!Ge8aG1zcu=6p}ql3hY`_d)D+Wuz(a{O7_^5 z+0jSa+6bwE1%xUYfoB9R1r`(3L3p9bEYQ(LI+|!#3t~NvCe|gQU3H|R0^!b1sI3gN zHhp!dLFOvUC>p>8Tn%i=;dXE#CRDi*Hhe9)zr6u`ZJD>xvy*^2 zx9M?B@{%gf#(((e5Cp*=&I$I_!298&RCQ5uNeavbxk;hf;-Eg+c2jY@89=&rRquu}Uing2s;cv!mQ! z*=dm-spFa63dV33iC!A2%jUE+8_b@n4&R7p&!Fdu_#8UvV|oT+KC4YaMvo zjMkc`2|KJgYp?@y1VpgN#+Q~Yg%vAH3T%{8P=mcJVP06L3$M1}Z76)L%|L4_*j5HR zU^~=hbQtaJU<;1eL=dLl4vmx&?ouE26l;0YTi)_kND#0C-9atpg|0rd#K~tP;FV`XuRI%g`B~4)&$?fJ*7?%&j+dUdz4W~0rRSq-D>#!z?;3k9SNLMW z{7&~7t(ECwiC$rxEClU)UT#t1l`-8yN&%kBXPE_=i8iX`PQ`@Xk5)Uu4L*5 znfgBLkgn~es(Y!*E+2xOTQYbVKCh?jeDM2}L3(S;^r zg$^_k$+ttfR?sp3_-#Kt=YSVF-b}}nfg0MbbjOMROQLOyw|D?FMw@h1zz)Hxng)4_ zY<8F)8QOB?C_6AU2%2!``fAWHH6SlgOc0E)XG`zfGW%8$OM1_o;+JI)mnGt@Hr&wg zfzSXS5v{8Ob#!}FLjR{mc0go+6e2JJNkJFe)x~#d8Qax@=&mNZtB&*l)PTEb%ill} z-(YHxI!ojQTYil_OimAkSg?{`L#}tQ)IedO2_wh@9YwGs_Y-(2^N||XJtzgW6-Q;k zTAWA!Q=fqvQ1g)sE^cx)(DxLMOeQH@1uowrsA8!hJus<)`Xqy}A%S8rkDXPc)6 zK54?g%Mf9c3#jTTGLC_{1}&f+G-#{M+YiAO?BZuWs0J>D2_Cyxl;9zYHc}8{F@zb1 zPMBJ*E%f0hZ>`LeBVe=w!W6|Q{6W-woQ4epv=PhVstv)REMZxdyx@lv zI$NRcR=BGS_qIiLBHbMx`1sp@^3UyO-d=h9yDLw8 zXYGmatUvJ``4ivXdh%O4Pd=!5^0@8?$4yTiw>@>-@zinWQ^!3|9ruDC^tu1_AOD!9 z62u>@V~ghp_jBA&-sgDoKHHP`S)RPl@Z^1(C+<@{ey{TJ0ke+y8?ZksC-~ZO~ z_rJCD{cl@OzxnNd_0Jl+*A8VDYj7`o{>$IEa_tj$vgt{q``rl@cBAk@4PoJ`ZSE%! z!i)Orx%Nk{1+4$%a`dA@`+A>T^D2NEvh{;(eLut0kgo2gNe8`TnP85Q-*+QBu;Ab?qw|mVn&QX{6b-B-g@Z%VfT@A^SYlm@ z4B;ka1V}-gWmfr-i^YeI=n;$RHZ&1xt9f1^FYM{!`y6e2PaE44)DZ2dB0cg#pan0; z$qN;!qlAC}DXf^Y%cjhNF$I>4nI(ESq<}7*#95OfFZkPvKvxk2J&rukWjB6%-P2rk z)t2p*1xsPpn4QwW3yCq*lPy%g0DV18<{g%LhSu44)7aBKBZ>e@;g8 z=QVszDBV@8Q-L+Ij=i3$w-_11Ld)!Fs3HC|5o;XHj_$-MGO&(4-VOz@(p_KZgO>zr zpS;8KNNQZ15g4V$1JttcY?7ZM51nv~)S%BzlNYFTQ?m}xIK*BjH3(w*ZDP< z_?;2>J%mg#g~(to;TK;4gG-BS zdV0~6!%MD)b*RD9ko#Mk!LBmYQ-*iJc64tCM0Ody9mpcsrpVxH&~$^RD)*G>>u*k) ziI&-OQd>r9O-rrfBdpE>)PU5WqM@X&4tW9fpG2^4P90b{X{_&=#MD3&f6NP7CIT8z z3RGy`P@tssSC|@TD1haKJv++?&fJwjT)6`$2g*qAu>qxy^~UK2n$0u>>Fd1)VGf$I z1B(njywOckfDW#B3IgqePagc^e`@{B8;g$|UwZWT$|Lu$K61bGk^2;n-KTu)nCj7c zG>_e5IB}2V#67kX_t;O|<2rG-8$2fP+7EvS5fqR9V9RSie8%vOIdH z@zFcAkKDQQ@SVzszNvWVZrQ{4tbOmEJSd(^49W3}yC(0_Fu47B(H3O?z5yOKw={ zD{pdpO5w;LL2P>pDCy|`BM6w2J*EcA2)4|XKGyUB^8#I#hIm&O?T{Bjb;K(j51<-R|;`orhcVK&e+4kO&^}Q9xIZ{IqMSem}lcA`e zG~x{@SW0tLzzGrrQKX@DLEfp21*SkDzG#ipv};j4D$l&HtAs9{oxul``(KE-6b14XQ&}^QH99B zI`$@bfj3Cidy&z%19qW$PxX8C;(RVOE~RH~-(PXOPhZ4v;hbp>T@kvt6Gs7`G7Wm6 zvFL2}!AnXF?96%C5v0SS0h?=1j0yA6LH2yF9|4Ne69NU&lOYf39JcIeEIFHC5sm;X zJFv)*N2#a3HhBR72hl75t)E+SyuW05Z_$kZ;QPz?Z#vIOJr@*VoWP8+uwbpAkrh`{ z;_0mSr4ZP~QtI!ndpi2J_qe8Z@Ad^bZl9PCADTstQzB3(uyf5 zv8Fd1P(x)q&``6XB<6*E6Zb-zkvgEr!0y2#USRz|`o5d^jfNd>e#etnd5bWGKHM!^~jX-B3(3MkI*yWHK0zIh@cYSl! zSzof1=h3~_lNZL&H&*z0J^5hC^6rB1?7ZRhoc=en`qT5q_m&;#Eu){z2Ye>=S-}hD zB1)4m=-u}Mb?LL0HG&stv}cn&0=nTxPyT~7C)W*C+BMe)63;oAe`JfbtUKa`x&DC9 zQ7_Oe1J4V}=mkX(Qh*WOU$MQrXg;%GIz4B2dq#hH&h*}j^SmrDs*H^xiRg038sr*L zG|UV20WVZUFR&>FK5s5G?s{*@c4p4>&Ybbgg5}*MJ6eVvkVoJ$G7e2ERDY)z*icf2 zhY|L~Y3$N=WONI<^x@C){;C6fxb9(g2tzvK+B6!cbGFxc;|rt)78#fqsO3Q~(1Z>P zI2%6v6JdliGuqQrn$y$T)3b&%^QQNfZRe%Fi^>?pI%_UdWNC&YV(Zq7+*RE2 zRaL>JCeoqNqy+9bt_GxaNZ~-t3*-eoe+VR0*9NMP0)5-mo!fS2mHZ(S2R&q>_7!!Z z8X|)^-bG|!<46Y%o)iYWAfyJGZW#1}5Ecxf3S6M|=GE>j(0KD&e^CcDglmWlwp17I z;$9HdAbR0X{)OZH-z+`-z163`xAydZls)}_7&p%-$?EgW58wC0?m4?U{$fkW79dMV zd-fA3u53v*VP-@S$p&$R5bIU2ge=ywBn%=BFbp#z7?{*KR##W(uCAPO&N=5?odyQj zFZ;az|GnMSJ)<>qo>S*`b@lC<>U-bc`@G>B>&L#aaqJtqV_!EO{krAo*KJ3??mYfA z_wlcJkAKB~{40TDw?Y16w;}lF#D4^W`|dsTjQ{9uzN5FhkKXRQ`*!=?x0~*`&2YzU z+Bc5^=#(00=+?xjiMfB^36Q!jV>h4(@^`ST#i3umINd2rkvhEkp5&y95CW z@4Lin5?rumHZ7?kb(v!wJ+}$|%DT6tbmc*WRa-`4POVtetB!)wTipmXHPNmvJ~Sj@ z8MZ|tkc=4y1(sjYeUuogqkUDlw+1fw8q6$|mhFW_OLoqXn9@Wh)sZP}d|IEJH4++d zlS;iUC0-w8T!;}D)QKGxxDekaE>J>9+2D$=z2vIT*-Fz$HMPkLswlGVvr_k|CEFWw zme*#@uTC3Yoie;SYkG6Zc~%yDR~0|6Lt>vpe4Djb=Y+x$M}x=(#{n)})MYPlE>KF$ zxPX*i;(lw{bz15( z;M{ubqCPieMONSBmf=6*0T9ODA6kQH}>jW?GU>@>rM3rtv$G^D2WsTl*%fNZ2Jan)D% zxiC^EwlokgC8b2~Kwp9jbUm|vS!bO_DeAPF<0?rVIe=ivm{>GK7Y(sRLwwN~2OyA2 z0UYX3QycBUVw?B4AfSP`;3(|pX4cfelI)oiRLC_(8v0;WM>t?>t)BdbJE!&*;Tm8i ztW+W%xv0gk<7Hg%F)sMWxZvO8f;gB&MI>$(;tkjYS_%sk_5Pv(Xdu_npn_7m@6M0# zQvso^@P2TN3t#=zfAOC?D|_%R#e;XPJ$R?;fjc)IxI_EE9fpVg&h*fCEDwLj{_wY* z4}aVH$hSR@{H_1tzac&JE$F2OAK2Ss!!e$D@tS9R4}HtcWc&WNEZ_g1hWo#%z3-cv z`~F6C&)+KV`L_Jt@5t`^?&^JiC%ymgy>FlX>ZkrQ=K{6M$GPy?TXsMA$Q7@7Q;lH0 z6D_{zbfa)z{rEck`Ez9Xast?j=_Pss2{6 zwJmVr4<1f|YEpLhk$WeTA5;h4XZH=m9v5IeSXIjK@(tuW?7zL?;F*7GjJSylXWhL> zv45BgMQ~yBI$Vf@3k_X}_nnCg8$Or?a3KpW$gGJ~Ykbw3kl9i)ds^YjBh}Z18>V;{ z0pFGxIr3Yq)wL@aSkc2$qQbafP7Y`*A==S~o9bYVLqX=qtXk6&Q({pc#ihPt%gWs4 zHGcy>S`!=Slbgo$wkf;Ah`_aDNHgJ{O3;0@5$Ugoy2?OX?rW@q3(nHAt*~fL&*~FX z>d3?fLxV0prBBV8bGUz3JWYA1r;H5Oqr?T^U}KC6Ym5u4!9KFVC3l^sl1#bFy3~19 z^ldqkc^5*;Ycs}I5mhF1FI_@lF}yy{ECVI>sY`||()B}JU_{vG0vn;^8vz0r&eJ{` zZKA<1oL+HLd1}RbX4QXI9u)mTe(HK$*wZ){Sl=0ECN8`!M?UX<6YhpXVM71nCGE?T z2C@u@-W!PvdKyfcKEwsy4!AxS^3=JY#5+nsTjDu6Z#yw%d}T@xG`u!zeSN`kYQ=}> z4Ku<*cZ1&TC*cAse_a+j7xDL05e7Aa0w{c9#{9;D{gi~z@Xk6por&wzsd(q2w{(~b zdFF8v=QnUp|7nTyjad_*@Y2PNmo92vx~zK{f5cfUJR0B*@Xgw43$Es}x3l6W%dm$A zA_DcDhceCuZ(HJSz$`4VCFnUzVHP&QmM;F%FPC}>=5r5qb)t|bhgc^CL-k5-Pv_lR^`rX0~KSmDU_0~ z#|8iOxZtK?b>f0O)upyVtYMB+4Z)J$pV#^F;DV7^hC^HkfD5$)T=?dneJVJ8N%hn} zsGfLmDO`P6;hr|$JWbx+`_Xjc9kV@g-2C`4C&;A?Z!jLa(KvzB-<3gPq2e$!#sx2pC68Pp7i{}}fw;hj zk;p9gitC=d(wT)#02HK_xRmGsrR2^m0=p*EFtAdRB|Wrdw;Xxa^D6R&myoNlL}km8 z-ZU{T=%a0LVZ&ct^AyP`01D>Bk|8#)4bSVM%a-)2v#9jdRiQQ#CtYG>NNAxs+l-X&RI@O8#okRyr@Q0IWcEFCGk>X zuMtWdGn@;Kx-d@ZtnYDQhWUl-ae8WqB@nmejP6GruMa5z-iYb@5ue9mx&86UsAt#L505{K>6Zj{fQaNTPxmkYq3j) zJpQMQ3vF;=mAF9jNPAq61=;1X#{~y*0cK&&lA9r?kVXbFrA00_9JsIzX~-;4O^GuCCPEz}F5r5G|E0YfUsdid!$eE0nI%&KH^`hWJgbY$F*<+? z;Dy3nRs|aBNJkfET*z+Qa=RQ2bOX|Xa1UC?xInesPz_ulr{K;(R4aC5*4;U+zk)bm z5vC0{-GwnOh}9(F0MGybxKJ|^7YdLeP&S2YX7URiN2c!?=Ymj561Z^u=Fj>i64P&g zrGNS<$o%w^rl+5@J^drcub%My`U&r^f9U_09|oWKLExDmM4ovp{LEv~XC96I`X8^W z$l)&^4L$Q{_}7p6|K(BNul~{V%g3C*c+~!jN6kNf%=EJ#=%AlJuKxKCH9vpC@UOq{ zE-f9q>Bipnhwd!r!ssv;;1`mOV3xR$02dlNx%QQHs`(&p^V!sov@g*-64jB8ysl+^ z=fI*+NAfM)d*rCp+ubR3wmozA9656QVrZ1D53;pEme4?>M1+R+4sn4ZKXsX@js#26 z_x}C{p|a$o38;H6$FG!3uYwC}yzi_hE+`r!1(1q6I^YDfz; zG$yyhYnu!TxGWEF!4U82A}vj*sq$BpZq9|&GMR&Ek8wdAAF3k#wNO_PXvvsgSaDUB>~QqiSwnJ48=X)`CN;51E#0Iu#_YVU zOk40^Rt$#jt?DVlGVRGZ!{u?;yr5lV5m!+IV8p@Dh))m-Vj+TnG!L zZ&Pu`TIEnU#D%#-T+lNvXp%h4oS1>!>XygEtKQ}WOm_=N>KoCwf> zl>W6j+Zzi`<`<$DbQw01)TB|>|BwsTJual#m=m@5|G4Tqwd8z#&H^aBOk6Niol4?8 zD-XZBkwgHWw$~VR+JA}*vj@14Jde|Y3lhg0v&M11@X`d{ycKU7PK0v-|KBBqeSc3H z8~_b6vJ8L%>o^DdtKfpaC-EHM0uV53%1j&5unCjej0-9nq9FgP@Hgb%D(thAbHPYlnAL{o7#HT4Us$o_0FL!Q6MjJ- z9~fyWiMT*$$n82rF4zuo!5Hh{PS*wNT0U*)$*Wvh)T=MK0>eQ{Nd-xRwil_=iU>zx-ls ze%f{7dHWy!kL}r~UC%!4eeRdO=YAP{9{T6VbN?KD;pedzewKLQr}01hQwn3-r_LqJinVGa-xhzraq9N@xVet!4rN3KNOlWGQY-Dqi;sBNViyWm2h^MRKlzxeM(KP*FSRGk{@ zJ5MA&sPx|V%`+}^c8Z8A={ZuO37;!G-TZ{`w@4ZX-=7|kHgOrfnwf_^u zg`&uXd}}Mmxj>r>wtpQfCH-oRxbPiTM+z1C0u+igj1(X)(3~o`fIpC(%)$Vk(UK6j zFzy#r;DQ@|AtSe^VH3Dtkb)7m6mh{*+6dH;{~HrMGftA;o1hjtUywaV*Q7POWloQb ziGe=W(?;6rP($UfDm^8+BPV5@g++GFFBoDHOGfG}DSQo8umdBYO>FAZTSDQ84R7cL zE^O;?TgBOZ6z;DDy9$3x=50usUs$I0UvAEro<`25jj0);-o%vQJr{K5&EOl`{tsZ`U}&hSEhgl9Ufm_K<@3M;ZNol zCXL`iWzN3O1<^YoeZ4Lh_?&9&+*;%v1VecM0%hI-DO8E~H0euv8qQ?Xq|HCc1!rTt zjzld0EzJu7G;klM7M;ktUlaNZhF7OeCs}{tU4YC$b)=c=bD{I6xNt$unitB@S=PLu z4`hZKxF;8#Z!S}*=bS2jNuQfSfOR!l-}#eq!LY}LC~-mNdrLxo;Z<;F+6eyQZ6kW0 zRfONAzIOhazV`SKY-irtq&ZbK=0tmKn$!h+$cn&ODh66kOzB>^ta)WZ|H>qwW?}}) z2MV*(R`7W)BJ8tiRd9i$K^CS866FkmuGELLp}p*GEIO+Tj`BR!k@7I4xXh*?U2;O3 zm?Vpuo41x0oi$`5xT3&?HE;o!Tx=f=+&cgYG&0S&uomj@x~R-sTXlg8MQ~x!lqA2P zjnJb$KCh22no?4GUhb)`2V0sbxIiO(W|0fbHC%yfuz?F%x(AV)nUe!HDBh-Nz)&5x zxrV0D3o19zkXv(QRh|OlLJI)_e!)Q_N&8&zRj%xD!8gVQ&tbpNw#9{EB%r}0LV?Ue znpPOR#jWddA=mvdQ*Ix<_4DU`_Z$D3qO4b!HsnxsLsnDCs%lw7v(h9$H-VV_aB&{)QvZdxWL7-eK|8wgR1Mmu*SY_O!UpHss@}WEM(Y zG7I^3DAx+*+IZWH3j?8J-&3|^MnHp&oa_$EQg*E31!+o+42iyu znhPy;kd0)s(YsZ9ZpD^aHm4VjNnGa=TMjpZ(%)DQ5f?P^p)R#04tQ^KB4`uj6twXz z4K1b(*TOwTpd<6OR=stpyDD*(mxv4bIWtUsa$295(Wh{?;+~zg6c+3iiNJ*c{DLyF z2@r5PaPj^EazZJ%z($g0tffiBD^2n}R@pec>}F`NvDPzH)K4xu&#d~-vHk-21)5eZ z&(aQBZI(8$*la2tSLsP{s^=14F%arV`-=c?D}!&dT>!S)mO|Ej$yk`QP-~d^1z~@I z(}9b4!8;dxuZ^_;kkYfhGxf6Hg3VcUys= zH&V}AOLka>*QO1x%^2}_#K~!RKpuEcEpP#UwMBPp+1FWtH3$xf4(w4H?63HHD?a25 z?PX7M3HY#AVM6C@#aU|smI0R;xBzoHNu{I|{KA~IwBV>Lx$7&`V(2L%!!;UsV6$)u zCbAE-O{0p9RFT12xT_2T3N5*>4*$FAF0VKW%hueYIW@13F~#Q%@daaI2}zWr$hgqf zM0+%+ks8s;Pj&~gK}3fgYi`>@dqA7!)X0<|&u#!0BAg3VjlaY!19cLS1R@ngT4;>$ z5%i&hMv}JKzUme47#+Mq1&QP>ZoBh<0_B;aU!Zv;YrIJ#NzuAx4+^xuFhE91du<{Y z7#ajRK#9gqwYz=#@rQr(KW;gC(_cWxZvM>oZu!hTpTF_mFMRgCFMRg?FaFi{Z~fc@ zx8C&Nmu`CKOE*K0aDAEd@Rx+ghuOF2;LE}b_>1vV-@o;y`@i_P`@Zm3_x|;b_x$yZ z-@E0;<2Qfi=uMwK`nf-c@Ow`^_F%C&4CedzAF(>p5RV9$`}+$YeC$cLy_pVP!&Vr! zQ;l74A=iGt&;=SkEcHJG9rgfG9$Y2$ua=+qd^*~}#b%`CnxQ#O`!!aGh=2=nlS9Fn80zCaZM35aw>IDx0(EgJ zySVBoNbNa^Ei19+U>4-wnljLWmF8T4WdIsT$t@b#5Qwm;j*pOBtw#pRP*)yk%Y03# zr@jI%IM@uituSvPUq5Ti%$h-jJTzx5GDlC9UU_Js2n~6c0W8=Tl?#Mv6WsUpi`K0O+D2pGC);OODf0@7u_|*`fgr4$yWn?^4;akH9 zK6_^2;J$P8+KPfO-Bpdhj5rLMAqHRCkVKAYbg8B_4)xbL z>dbg8=04b{ z>r&wB{OqcSW~8!P!6r(S((>i^^C1``gM^Zi8OQ7vOuhdj7f2E%KVU5%n+{n@ib&4s zXWUZ}9=}(=-&foH_#GRhs{*m@^{_#jrb;d9N45vn|8>7jx|yq$d`-1KEaM|*mEGe* z#w5v-ykTM}dEf*E$Xxc|7gmWJHKSa2IRmW20Tc(YjVV=dkHk+-tM3-tX}0i?2^Xj@yA2=eA!-AKg^e zTFJ67JXpTvjZS|7k-KJYeRGO4ckXHUV_F%Ik?2v(R7a~b8;w!d!DFH$JKGCRPw*Ts zcRv~+6Gm!%ywnc+)Vv=b*7)SpQ!;$Ag+GjHUZnmW%jtt6gw@Sr%W*f%Ov>_9369t)rR+UUe7h| zQEo%NmVtIy(u(Gd^Kd;ycJb|$E?Z0>OzznD@Kx-R(bV;+zLDzQ==;_;6`WP4 zL}vlHwA$SAzo+%$v?AIp^*)MMh+5(b2tmGKL19fdH6rt;Tb=_AK?NF(wM1oq7=E`5 z_Su(Si+|5i3G^9oy-2V#8vODh;2G*2;cGkgH}ecS@?pQZ3!N2F#OKak` za#x7-ObFVj#)^zc50zB+ei~rg56@73hY2>AIg)NnMQ9{L_^_` z_8{xkZzaDtXDOoH61w}(JJHzh(KTbx_F}|a!h$jJL%M3qn)ex4xDo`(Xege~zVb&N z>8fq1S+lFUX{mkUk1Tv+87YA|PcnSC(_{pK zIWxkL1nA)bLq?7_99WjyyXk|U%u{Qx9PmlsENtc6>K~teaxi3}!-FU&zI-}|YB^zE zuKnYh6MdWcU}Bz_&GoiD&~NZoP-`UhZ7%N*uO;?h--`kyvgpv;gT{mJLFwz7 zuOaUSd8T?sd-~|gkw{kG1VF1M#QjM{@rZ`U9uV#2%hZb~V%jg^vbt&Y++8S*+6>NbesQ#QLbh?Wc zO%30OtxCEm`42c3ERMfHr78o4ljj&1uj~{S#oorFNm!NfDT~PBo)cUWmhVYp%X|Sr zlf%F$2B~k*vT56~o0`xGuJ8o{Hil|dEmEauTb}l+y%j9Biol(5vkMdgieGDtzB)K{w zsX5q$DN1Kp-w+Ua@@Z7J7t&t{pLF7cf*ZWAf4uNH9t!CJsa0;XW8L*?RJUUA$(9*> zpZn1IEzW9RdXS0r=YpcZMMALyv$etT+`IB2ZBlORyiLc?*?KAM@7Qrxzc5T#D(e&u zz59ZNO^-VYIhR2gR!?AWZh@Gp%WAr$0gRC7Q@)$*tm<=5mC*h-nksQ}54bGU=p z!nQvB`81pW-_L zK?0v<_h1@ZvTM&H`aNR8mr8-bmW6(7N;@I3Y3yVrz)S8oQ6GS_gsPJh&<7qZznEz0 z6)J*LkyqvDH2wOO6iWVbq%E$9^eWToiL=N%+f=^%!kNx>@#)&WNvkD3N;Mb;LLb z9wcmzynIMYwxPwbIGjh_?avH8RQYiD8Y%0a2mlV?fs*X!N!(%jqKU4pbL;uq?CY1@M6;k?}hUXC< zm9E_51dciKJQS9V0;L0T0dIrjGh-(WbOUjgfD;yRC~&QjWnWQRqY!i;)nTX*p|V_| zBiVRaq4SYYrYf&UYmr)2faa7cX{O$QKg8#vKjm6~s9#t{Ce#(f4oi~?zzblh=Cr3U zCMZ?rB6RIT6cV~+v6LM8A7Qam5)cx8O?fh>i~U3>ZBLjEiOcm z%-vm-C4(j>HRmOdAC0{h=%XXja)A~GY(-*hN3t^-X^jleQIak_OHQMewDWmrqsich z*ga&gGW5fNyWMnTKw(FK$M?M`Vyq}IAycf!wycF>H1C+PkbCtO3O&gNhjQvTJ@MN? z)p?g$^Ls!ate_9Tm@GiY&rA;Qm@rqo+D#w7B*yxan;G_~q~5>ZvHQ_q_U`FfeeY!y zWW^#vkmh+#r*=A%E;4TZn`C4WWmJM+NKiIXm9&!|@8CHDZ@U94q+7;ipH2q0Njveh zuT;LmJq`F+W8*;dIs+1=65GHE5`mptpdlLP^6S8?)WAix)lOYb>SDZBU+P8VaGD}Kmi-kEYI}_e--me5C)T+lph6Uq}d~jikXgB4qxN`3e zrXqjdGpoB9*O{M?=l>BI?dg!4Kg zJ;k|Of<3c>Z{Hqtb!d@zeq!)@zr*!>uE2&tnxoJlrF#%bh8q)rF!k14`vO0* z8ouZy`{@3bx{TD6-zWd&^H6R6m~bYTMhF{uel452Au|ijRGi9+X5(e3x_a|~6da06 z2$Q?e(`bXjIj8-EoYRBNfx>`tdzr<1!$X$%q7G#bw-J9A({Vf zKR1sjD*o9ongbs#`;YHar3t#?af3N|C?X^bR|fx>V5k}5W^}cb7Na9bf~5CFITMbI zhYh_IThxfTMYkH6`eesHsb?2f2-mz`{l%$#?423k#Lx$i0V6Pov7UuVsHq#Dikgc1 zNv>hYed^JWlS=FVvqn1|Q6h)~qG}stc>P zhFU#q+veuZ>RoBF0=&3Te4DTU|1Vbky}V4#>DI3f zgyp+)Y@&RAMc2xQeR^9qMc@6?z>xUsT4{M>nWmcEPpu^GK_Bd75NMIV;#|^8OqOoF z<4F!0P1jp&lU$jml;});TBZ4&zJ+yUJSl3sJvkPVbxN(=;l_!&iE6qo@gkJLG1;f2 z0-I3D9C<;7{hXZPCP}&E5h|bnwxds6Y$hBJX@!PmV(&Ka%|Pe@O?P%j=C;$1f#@S8 z+@4;;>PJuDECE6OSoQfnhNFZrqH)mSYZu zz&_9y+Nkt>+6!9CTE@uoCt^?vUhGyOGR#~PjUz^hldzM?D;8|9hXTqo3Z+C;STiq7 zENLapeZ0Uzv89$jC=-z1gy}Dans$X;-f2-;#tXT9z@%gL7=kv83Hebtqj2c7n zSsj-#@SnIbUUK;7vp|gS88zZ_B5@^-h|U0 zmwbqZ9l3N6k{<3UeWgu@EAfiKy$o>p)z5$>q~A2zHF?}W^wmrvx;yoHIP$nGH`V1jw|a3=bUB;`QgrmgFRs+Sr?9uy?pWf0efMzAn>5K zO5=n6)$gX0R|B)-@hlFfc@*9UK8ZVz-ekvFGh+UHpY(7YgVDXGZ=4w{q`IOO+4@_L zlJx2~+NiL0V?>~uD3GIp4@&9&H%PWlBXW<~rzEr$NIJi{f za<3y@d7!v{Zgo`~B*PI-iz|h+v59x&YWiTL)ET(ZT^TZFG~v<5k{yxZeD5KGN9RtBs_0=%OaRe1mQj zBNL92kvS&FIja~UA1?-IVgu4_p3o(Cj^p7ye``#I={%h&)C1y6WvIJ+*@R1r{47+@ zGC)Sg9QVDQen3c|7#dmGp<&U@(`3?!t3GA=tbbB&@dh|kyB zREeZcgA57|l3E((IQn@s6ofZr;Xm>W=FW#>#U;M>G-iUQKad5F>V)5;>xAoM(1RkP zFLJJrW98`zH}Bze@^|&v>xa-1QsMQ9@^-JW*h-B>Oa^pi`)=9PxZ=; zw7+hCHR?u<@6ofV^Wg9IRz%g@G?04s8qLFF)JG#v$Nqs13Ae_~DJ4rJ?rUD}b9cQ5 z4`bhSYgUgDj_dR$F`@qc0BZU0yCgJh#`6=o_K2-ik30`celjV~8j4OSLZnvmnFB?d zYiBe0?n3@3y8fSHX1r6gonLPj_=>j|MQvA>tU}K+%w)>%SlF$_;}ZMhbeH~UO@FXw z!SD#DR+7$BRGYBEH|-&K(vyG8dYP@zAF(M^`_*}Rj^7f+ZTy#4$LR$XspsxjwJpg+ z5yPHmjDxE`22-e&0vF2{rg)ts1YZUZ40nw+;smmr5}k0lJGOoAoAr;S=gI!kvHE0F z?ded~r%Jpd&7SVo@8cQV&yFK&%xD86(8c3--sC0KM7}hqom*7bo2K~V@&xih`(@)3 zn$XMIpr0+%wr~#*@|h8`?;oaDB4$JPKhIezeUbP*Kullz;@6H9j(JjqUg);A_SpNdVu(PrK_ZNWZ-S3fiDHTntkqazyc9l_SigkY?fHL=T@!6ISulGtaajA( zU!J1ot;ZJ?gRpojA&1DxZ{a{cWq6FdAA3`%=7y0u^_c5cmEwmz>pqIdAbn$aG>BSAxl{{B?#i zrQ4WIq`~L6hzTKj`HQ=aS)q;fy`bptCEbBIUZ0m&_09&;_tx$Ph5Iu;^f`-vI{^L~ z6V2ewusac&@s5Rmd_(Fn^fy?^Z`w z4(H7F@Qc;AUSjh7k)WqckNT$&%6vVSj& z3N6T9P8D~qV^lHgQU@aAXGs0Quf5}^Uc@7KWh27Or_)W(6na8|YsjDoy7&Yd0rl$Z zATt-hU23|VNL>6$WmK(ID3iF?sUNc4V96O5iU(W?4Y-hnhZ+mvHKJ7Pa%6~aP1(>N zY|#u2i4JXOEmOi0*1g;rmB_LF=Y9c2l+lH74L{CHVL#go%={2zJ@g+rrys!Zs|YWrosx^PEx)w%8H*pRnX7) zXRX?aRJA@^Hh6k5ARP!D5?f|9j^Fi8=^HI{9 zZ57T<;*aZHoF8NiH^Cz(kWyPI3)~@AxqSIMsYXb{BNqx!U#J+4Uu}NVcpj32NECD5U;iY3~@+ zLWE}CRAXQ=CA{-u+>loBJpmJ=CMv@iBc5d@*n+e`8Y2$;cfvGz)3fzg4{_ISpw>OW zfiarD*w4Gqfw0+7AIg<2^-@({t831%Ea(}ADP7SVi!eOOj&SsaGf2`Sy;EMN?;-EgxBhW*b3at;)SN;@rvDjBlOvs;g_GD-1j{67Q$2^0{w$=+b@Ng8dx%xGDOW=QKomETM=5hK?45^Bn|%R~x3*`IL*935fux2|m|rz||=LBt1{SqoZ@hp&BQyrJkt6Pnvy9|@(zi{eor zM+Ev0a?v`L@>e4mkfSDJ$Xoa-a#<`s6at+#SO^#-@=pL{m#WUvQ3wk5{z2@|zz z4b0E`4{;wWtOBo$9akr@)0hP-E>-t_u~Ldun6(D{1cIPDRJrqIThfaa844)j?z;pf z-l=Gr3stv|jEhFN0bp%U|24OXqp+;`lb4QCBpC=w`7T@Z(XP-;s{YkwFOYzSp5*)Nw%Cu8`q%KG`cR3H}rWZwDBmu?0EiqbAy8poCHoHw^g>9 z-pJy=j{f`&9l|CAwMt<L3|Jm(oIS*%7?>c%XF+#eqrB_NQbXMERU;Go7#s*DPke|Lss|eHdXIe{PN?h_ zB-o2sTWZ;eW$8}ZzUVa^Iso*NSF?^dPt9ixqcFeHH}C-LK@Ox8A=6Co{N=vo{puj& z_Ejv3$9Izt9#QG{#lem0lXQn7Nm6(lTsc}t4_$?&zoU;yKBmwsafUu)f>2OEqDOtX z#u0Wcmo*O)jYGoq#*`rT3MOW+tHt47D|%9DT?R$PS~|ICgN&l;WhNTOKFBzNH1`bn z9CwGYJ3t7=j$c)hFv)RxyZNt>My^7x&nyw$PAIchMSfnTi3|m?HqZ0XhqBQX(j8Gr zqY8K5=biy`NW5ssvGZACnvd~{wA^`_ftzmKx0PaL3DGJ_paPe~?%+ja7X5#VIomfk zo)x+_4fD)lnizB_#{n!B5gUVZdpJzRTpmR4sung9Qb<<1B1?k|KIl5aCa^~KX6AY?D}pNH(kSO-EYj_?!N=roe1PWm5O-z42{Gkpx$*aE=oPK(9L zB0TM)JPo$BO$B`*0MY1j1NU}rsfDcCyA;^5zAUUH?!r2NvB871KCEm6`by`JC)xCy z>(?#b@6or@|Az}u3f;!UU9f-tf}hjLG2;xI{p$8gE@6f`^$nj&NrV;{?MZO&uE$%` zQ}AC9mIXo9kk?&bVDP7->dx2$fzW201&$TL+-V{y(F9sE;wle8t<83oOxe5ve17nB+A=D3n*(6ob zh%78EXC^M(f;VWfHBmP_81OA~yMDWmG82+d&H9kFytcDQ8sUSR{Ot|5KL}95_W~Zc zfTrr4-_;0F31dOlfXre(x_}g3v>-uP2?3{-ne(wpyoEwZb{P0^)~Z<{=;Dq z=rdw#q=UH^Ei(OHU6Waj49ps+@)xIMO@Eu)we>@$TLL{_OKzX-rHglTMh>C)qv=ij zdNXEN-A^v+S*iNpf0BGtYI87KVcC8s!|qs13*dD+S7x(&&_&4SgX|dOr&yJeTz6)2 zKc!ZrxxSRTxu2_2J4A81lyAl1D=AgUBHCr_4S1-o6VAJYRIeS8iUd(jBR#}fFO`=< zojXRm5fu92d`(A5+jWoUYCeyG8`qFuZ2#UT6dwmd;y1g2L+5NI2`lz>_1X+DcK<1R z?Lp2e@#h(3JDmTqIjJ^qQ+E@U>{VZRY%6f9+IyRkbwYYp3___fY-(PkRY(YY#CZjo ziB*6D;$+1dyV*7G=Y6BreP-cWJb%EfDjLc z@Z*5wKLjMK5f|NHSG_0GICNY3Cz4*ZJF>2@sQ|99ZrW=p;K_i^%if$)@@0E;id{LUBx&1IFbOT`uulX3e5J%2s z<6Fn!wxJOnY+J8;FPwW2T*MIQi>tsg=wWJinFP{bjv@~;zT@^n$)Sh*#?-to{!AjT zv?cxW<%SIA-SG04Q?L-6cHLz7BN$^I1H#pGG=92@Q#Z5rPEJ7fr7{0CdjMs)W$1{+ zy5nlbaMn#wS^Nv->#m(2hybBzFxxafi8bAAS0KJ^akFi?j7%Qf8vnyfwR;J8;IW?!f+UC&4;Bp_k zqEgr@E8{|l#C)YI?a+vo2&!K4j)A~hWK0C~OTaFG9-L+9;S9`go`V#-Bakl?8N%iF zb#+~V^wY;7vt&nE@lF$5Q6sM^O@g<}T+F z-|BRLTKa8@-uRAnk)uCswdvzEsvjwiYsM$Ta8-Nr(YfNRb&=u;Awz|wGJUuGyB&*+ z{pG5*?Xmgsw+!Auw*z4tz+5NT5rgCEwg|h-s!my2SjzcRBZ;^4C1i4c!@*|`(5|^@vg&(!+LTkgwhswW?WJ0YX^wPj|hZZ%VU96fywSzlN_`619*T87tI?vdnZa z&+fQ9-iFmNuqMFFXyw#f=?22V+NqA!@lOfumYUK_g~t(x+82WsX#*cml$yxeGmIi1 z34h^|DnnbHH!tHIbpF6}TIg_sg`oSho2IQC_gWnHahI#7ng?IPTa%T8 z*5OrK=6A0)vrA8A;9nSK6MA*$)L z>y)WyejL2dN+bRa1zgK+_3qMfH{O3oS58Y)ReZS2 zNi3-_H(a(VYN%mwG7 zvC5VEJNq`a*6b49uAM&>+Zkj3$|%+J<%jhj_nhhdg*y`CWTA0?ds#A`=jDkx2b`9x zxhsOU&TRPkIKpVZJYUafJ~{BR+p%D7-}|0&u&rH^Xb$k5><;;G6 zicD#E=#Mjc$Vm_crcmfJRgwTO(@GZ)fegwxqN3%})4Ma$!>7L$$7kq_{lm>@-D?HS zxnRYxzjLSLcbd|IpeEb}u_;!MPbxoGZ%GZ$F?b*8-dXNi8)73KKQ$QFCmn7a_xHbJ zlEa-k$(@723AgY4iXFb=9K4mDZfcbun^F9|aq95A=2C^r&E2ByieuNek(3Pl4sWH0 z)Oma%oHe9HC0*Rb494@+HT<&7@W^^(eEbUr%&Y|HbR`^`7Qb6Mf&EJ0>Z~ARc5=vOD`$}R= zw$&e8c;%SCa|;FpKhMKab{}tkjt6;3N7!AXdWW`pbRXRWC2r#%LXuh*V=x;P1k(Vs z$&q%|PYY)V1M4=QoCg1!ANQYR6|=qr&02^@9(fdS$FV#UPas zQTk1-J=yg@Nlc}rcy!3odb*5z+_(gzIM?NKZ9H@}xO!j&fp`J-wsgq|=fXFi7T`>& z$ba=ez$d;y; zY$i2H|ADKJF9_>+o(G`W8yzn8w1IVnT^5?-hpz1x4ogkW{k8%j|HX>8x;D}3nE48y z`S%Oe0iSb1C>Vw9a)s`sBX@q~EKATR{u+^9mW~b^xI$MMbfjIs3q-$1csKel2Msj( z0O)o=fety*@bPK;X^o8*M3t)@_#c$N9@|tK%{&Sg=Q9aSUhlFIVS6_5?dVlO9d)_n zw1{{A*ye+1Ec|}F;v10{1qL%~g1jH?b}gG8 z)W0l#3&0@R zefafH%cVza=XTr;j``dEVEbSDLf%_SoxGaj37=b0^&>P{&>#Yecq=p3yCaWLa`@cfd@T+OF&tZw-bv`{>=f>s1J7wu||2Z=d4%`r~e6n@;MT zKpx(@AZ=&7P{YH8+S&rGtPB~}3>~t4!{^C-1+y4NkdV1UZ5QACd3P6uMm%?uV0Rz> zlr#R5=eC1tdXn~MIsg#@^1~&Q!IR!pB>>2nw;FTp3~1t>#t$b;3~nD{da+PQc^~!1 z^kLI35!k?rb4eb9ASa36u5VYCJQBtp`i{wBQP>(lO`G z%mSJzx;utN2e3N}g+(Vw&0U#VRsgj>4^VJO(1~x;OV_uHb)#a=DvNbs{dw~KF+~p6 zH~Yng30W)6N{D}j4nFWT)ISIP(lIu>3+!okRYofGQxc9B?yaKK2 ztX8dEhCNofJSHEjY1wxY_B{OrP9jr2m>3Apy4(qu$OLn=osPo%a+>4|Cw~`oaRVtV%Ey@pbn5I^+CVXgZ3l9S^%Jjq+}(!Z}``X)_pT%0DJOaJ8_GL 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

cI@%B$)E4G_avbn?+kKAHkk!kv!;w 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 z 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 &6ql;F zUG$!=CQ%gJy!wJdD*`1#6VHaR6d^%$HStQLdX`YhkK~EXWBv&vKcuFk2eb7oIySSv zzt7Cp1=t{w`4%jH8=BviALu}dU|+6CkRNrvRDj6Iez;`|WG61<#&f!{+b~%g@J&}v z_>O@fp+45a+=H3Az}iZ)%A6xzEzdAlacj-DgxAGg<`GksgcdxBj5n`VUpBwhzSX~V z%e=Sod9VOA_(m<9(&4m%7RaS%XHru87;1Ji|0&O{g@x`r z?J@W4aqro)QponO`eR>KFCF`G?Bc0Yx_E<=T)jYR(8=$pKeXWaZRsqVEWx$7go|_D zIF~3FT^ytgmc3SN@ZgFH zR8Sa$bt?jTiKI|M)F_yWkTp8B6ir2oqNXU)l@}#?b&=^>^iewyCzK_$0{Ro0LeJBv zUHIu)T4YFJ%x0wA&N1?144#>gW8>dt#>vyk5z|5ge47@^FJd2>`;O)) zc#f;V24G6dx~WPJEuQ0Sl27?~ttWn37Vjn{I9`(_YKam^DQg;jLbCFDlGynB_Stim z-!r-6wKbXh@YzcnFBm)ew#PCb;p;9>oICZb3HPtbY!-T3w$Hl!+1m1*9dllpQO#ZA z3CwODbA83}4KA&5?&wPvRa1^X`{WnGLSa8>W&hThq_vRXY}jJ+JM2uSl8tKgnP?tb zP}qT%6|O}O3omfb=-at2{SEycbg=N-LXX=j^b{6ygT+Cf!3B2F`T8W^WdEe_)xzAu zo2)ynhq;H`4;O62Pm_(F|8RSe4@FF$8R2PJZOfn(V~9fsrAz~1KI)BWTr|eZX2Q4t zCFnDgNKr6hOIXtAXryp#=CtgSiF9)xEHo{gXTjVP%sz}r)A|pj67z9TB<%5+b6ifFCHF=nwb;-T)^?xnLYyZfHVMK^zAZPaGv_iJ$)GT1#=7T4*p3 z3_vHBJc`lRLbVbeP`s(w(eD=^k2h%sJp9Ex}Z*!>Ve#b8gF-dZ{5XaMnROFb7Bp0=g zLer{qP2euD6}%Fox^E_qT)Zmtn6HiTa{` zGNT+{E_t!Vm6oEo6(nUSMwoNjbPO1a!I+zaj7-KjQC?PRa~#a8dNc^@*{Vp25I zQG7|XAW{%6;6yE9miZG!38{=vl$3?^!Z->T-Z-4>^V%->R4kOmae)e!?ejnrljCtz z%F(|v!zf2G`!Fm2MQt6W@$fRw8R!uRx`q*e5BjXfXYl|a4Ib`7a@{?dcQ(AAdAzF= zkN@a#jPFgn6u+|j`sKTCj5n^tWZkVtenLjRi2FaA-@YAR{{8{n-ZiJ^msRsRnlD~9 zZq?&^GT(Jv(SSXmkEa1qikT<8PiqjnoQT(7$8#}R*`U0m5JezFmB52-mrJDe5f<@a zy(z&1iBUtbM747j=Ut8h7yS|DC*{oVG{gzyyvNqD4YYBFK2PUI zw1j}s4V0R*2$a=hvWXR2z?&e)W-x>y$bm`1Rs!wQyUF*vclV1zZ~wDo>i45bXMZz{ z@l|lBrLYPd`omW0JA{_HI~&htCGXDKx@|BdDAzN3Xs}Rbq&foK^^L2i8jyYyF(_^di zB!8ggH1Iul+LSFFkj|xB+U7U)r}Ilf3r^G(Ydx>-rl}FkvEk$w+!ZVv+T@tC$Q*G2 zxj|f|ukwg8^S3UQx?2y9I4U1AWI3TIQbMKG9y&5LU-nV6=)i<*(58DFM!?my?Zvj& z@s9V-@bX@qK&-5qg~YG&O8rX?Q^s1|`I+>Y>9*{Q`dF&o*O!Fhqjav2Qa>Cf!svKn z#7nMuGsm@3D~lLB+3eU z$a9Y2BHWJ#@nb&-eBuuR-=TCCy|arQ_pjeg{tOHL?Pj>eg9wQRjKm}d^K~`}w8?B; za_b(3Q=n!L1o}v05S28G9u^FZlMyD8th$jT6Gau77R;OqzVBu#FcB?Y=4SF;ekLcn z&UiRS>HElCyUcgq*+uKS$t25Hk|_VMuE@nKOJps_TAsB6YbEOKB~&6TJOK1jTy>w~ zHVSK9dFmt41uJ5uX#s1tV$~U}5i|~AHw0G+qAZ;_y&4nPMRt%$$bz++k*LHk)K+M3!cuBuv@r%(!I$Yn+*7#A z_=Wl}+$(iSC4!XF>)qqXSZjf17u2)WJLuJcDqfgrx{jZb-Rn8ko3sDD2G@o|7%W(NJ3&@TUdL9|wZ<4LA-^i%YQQL0pP2s|tjN zUoY5!;2G*6vm zLjxAvQe8#U1JFU2SO}t@ir>BB&*?9TPjekmVJ)VS5_=wbgCo6foXCK}mhwwLSslkaCQq^~qyP$jtX@y|u8hji&(G=k98chSed zxw`WAU>Fp7A{~Xe&`3}nil;$GxFFBkva~IoNABh`p4tO-^O`7L!&8#Mvabdc)z%Tfgu%)E{3aI_Pv_hmlMvNpaStXoGRw8a@R%QM$U#+qY&mzkIOcvXu5!k}O%o3&dB ziPZ@tGl#voJXVU>5e)w#A^ra~ng1ad37;Oua$YZfU$-OE-~S?q*DRTKyI-f4^91<# zW>|#~D#jF zk8~E7*LmpY!ty#Z*BiMWj=$eon8+T7^UYjOk2_;PD05#>aDjcPI<4Tkg8A|<+>4Cm z$|~aleUs5+9Cm+Um=Nu3kKyxp43DA7R+Pje0Y$Xvn*u^emIJ{^I2NQ(!d`3%22s42 z=`$2E47U_ZxE~SouhfWnRk5_Wm?h96D;1^f(s`vFrCe!o=*Q|<{J-K+$%u_VAZ$4Y z2p4{QO%9WSZ8+9e4%Fe5tYELSe zSaz-2s?T-L_RR_{QWxusja$qcO54j;aI4ij^wq{)=JL|p%kI_J8|(eCT&6ZOp0J{c zh@7Z^)EZSpEWV~Xfo6eo=|dMq?}(CUSwJ5eD=))kLO`I{k*z()hRU&6fMb}K1U8$_ z5?k7(*)#vjzU+6@8Cq8A)>R>1P#B9!E|KSmh|5ZgVV@|(qC+DNHM@HNhx!6&D5L2t z%9_~5C@l5<@)C@9Y1YE=Gu#|nRDwm zzkKRnD}-KS^QM=dNHyXQrgSV`as1IYGT%Og-!p%H*W{nJk2-HoN$`qf!&9@af9(Ik$b&*An?TbmO5G2g&S2Q9zx@Z(hfMa? zWVUigUnZdS8{*9r@~bmZLEpUj`)}!JpMdC3s|7yvfukghDf|@aEr}0MGYCKqRmYEz zM)Ma)3yo)m!-h*k#M47|bcwPrLGt+-8OYCwnJd+N<`gh`k+uWa4vY_w8G(6$jsO?X zS=lC^4k~u;b&V_>DtSv$2H;TPbCetqDf!_U}#Rp$7+f6RP8Z}<6|Z#mE{^qzR-7oD^!QBEW67En@(YH?1RcYW1TJJ6hAc}GfiZ(Bp8gC z=g9bCWFrk)KWq*X@WtIWEwG2fJ^0R7vOy{x2{-oxwds$9`$HFsJ$s;O+LM<~Z-Dt2zd)g!3Wgr~ zUFPRIGQTf(1$~*fz-~r9aQ}ana-Z}^GJpT}&MxlPkX)zN*t5<*{uEe`3|Z0`upTej z>Qn$ShH*e86;_3}5jSv+Qls3cpXDBIHFy=vYg_R;i#BfXp-$-aTrcN(iTc*HAn^1o zjy5;q8vD_n!r!R~}r&z~iorP3?@Oq#%_rD^I^_XKMWp2fFHbJc6yv#cBV#S)EA zH(ED(SMaM{tCjot9%-BPI{%jR9{;}df%|~<1%FsN>^@`-5!qX%ng;?xfVQecTL=^1 zby6W`=c$3#Twm ztU}S0MW13tQ{HUH)7L$sDXBP`qQ66TawS>_z^Ix($F<;?DTHlSrj-*Oc9Jx(Km~(bGnxd#lz)WdG4^a-<;Ye7U+IcJ9 zQRq^wddu^lyagMDcWS!FRj1u}0fCHkySq=ws$5U1ZY);?t{a%ih}b&kXmXv5){&ID zi8tfhLs(hGNitnjC6(RNdkQeUrzpaNT0xLn?~;U>NW>4!HXm(`5X1aj&32J>j(`@r zu=~v~VbP?K!>@wzKXvayiihwjOTzW_$M!iC;Ia_fs~`UJS}XExN#|lr*U# zqD3nPXcZMXZD^o2R#!2$qFHOMXwl|Z%pP=~wsydegHJ@C(*ouB2yz*%G9aVPk>|^I zMqV!87dcq|yTFlhaYPUn5^K>S3%bvD4oXo&blWsCN`w;OOl3tj$L1=>vSTWzi%pq% z;{41?b)EXU`nC3T#;VQgkTt7P+0c+8JACzk#RJfQc$MCuKcsKadv$JuzD55^XLQx8 zclkVD0dvX;5S+PAfl4}0U`)CmXF|Kt^E<C4L4~a9%fNRWa08fdW zE=m!*$8#&bbnTuLOX!{=*(-v*N)d0C+8+gR) z)D@+y$cL#9N`YWJ4I1z|^+##Gj2}F#AE+N2+ZhuZ(-c|PXH3<1XO15yHdI$84=K(+ zztwd$^3Y;H9ZHIl1g&Wr(I=*NE&Z*@mbrk*ixIWOg8@>kRZ`0Ef{p?d{e+*y)X#aT zWy>q0myM}eaQJ#yJ@TI0R~NL0Z#;DGJ) z5f^GV7&iuQjCLkIP!ER=NB-phGW2ES-bX=ti{ zYG}59cIXN81oLBUlesCXidsZ&LGzgwZiTu;YtuHXJEWcR4pj}RYt@etqZeOoEH-X8 z7z1Jzite9K-jQQZfm=>OcbJA_Q_M zb;eMdL@7x2{C{e_N}L)Ldu zSC>4_$r;Ju6x9%2jFquVFf4PhKiqWK+YI}F`#T6@m_UtXIo?QFy z51f5^17z--dtRkmF!2U zIHi;;U~x(#ie?~`>aP=-CFNqYCYH$uxdA@1_R5Q-uG9Ts9M7BWG7}bc&Fn}_)pJjL;Z?K`=>vz~tngtAc7}9jx_QAulH0_p& zC$j4Sj5tJ0B94Z|#50!5si9m<1P4@l=JH>?khkrHyg#SQ4o!g5g2mmvXJ~~0csd+; z1?~Yw;53v$-loor0ky8NYj(msaiZBZtw}vw&T;`hwrTN_z>C;IG9_OOSiBK~*v+BE z=2%XaR$C=C)ug~2iwRb1M5_fz)y=jI8~o8bS6((NHf+e05eE-4KYpNfL3Y#?zMsmY zW?%cjH}kMW4DXrDe2yie5LCd$&TK{D>`EnVU#5(-d8r^$P^pyKl_fc4s69>@WltBb zRBlkt$bSpy14}B)E-tya?6R`;l^ZLCp+!RnG*pgKMiq@5aCyY(3QkYflT&7o`vZ5mE!P3`-4i^<1bX4=d@9t)I6=8FK0J zTki?$aAo_4CvSZF`>))*dG3cB|Ksz=H{ZJE*`MFM>e(x!lhZ@y%&2X@AJ!jv48jK< zYx}0<9|u>xz*M~5x%aKt_P<8_*L46e1Z8N$YhD6D%=iK9s}i?`n%8Nzh8fB1(O7z_ zE)>azL`$`7hJ(O}bAqkNYFcuthh}>v*eSsvU1Nd{g>{zGtxZTE5y!%!08eV$Nm24V ziTazg%GxF*k;no=i*g7glpdenNg*5)Y4|pj9hz+qo(!TT!HvQ8U~iBOB0KG-$4&eh zPLdk+B<7rBq`^e*nLOy^j1!_#%H{!F{gUKoTze28Dwc?voD&11C-uuc(mG+9DbMt? z5b0@J$4<>b;`LJL)OlS<>%1C+nuz5RkodzL01LGX@^VWOtrClpkq=nwI&SM+`HS%# zD;7-pemyn`|N3zArk`|QjhB^%VIffCJ7|(ok{-jnaB)qtq^S zN=K!Wk^rQHv_xu?Hh8CwNxhPskg$y8xTv2@;8nY=4YH5;4PY-~Pm&k`Y$$sDp1#c$8vQraPf%vAs0 zD9uY-Gqk1w&&oX=9Ubf!2M?YNu%%}YlM05XdM3jl=(%gk?HMf@ILL$cr zEQ?sq51^(X##UL2Qv`B{3NOShV?EaBp%9izEiKFI6_`*OltzUikR+#;+>r-SqK<+> zeM+T}dL}BlDMh3{36*Un;s3h%pH$tg?dZ9ocxa+_Xh-!WkB((Od;9ILZ+ToF z`!GA}?8bc)<`8+syukc}U?I^pPK+5$ zk9lD;4@>w`AuZdtBPj|Bij1@8Ulb{?30b27I#2F${}% zUXUaaA4sB@7I<3_c!p)uoNRNPEMtacMTpswBS`{90W!NA8ji%VG`dnOlB1#|^$tuI zUa=koX-!E@ z^LVYNX&x_gE-Q`A(@>5enMjo^-iK+0xq!(o)-!bL#geu05==;UF-Qt)1U`d(54WP$ zk)_IloFo<$)bk`rT9CuLcef?!ZflWOH%qZgt-y=1^1YqgiYUxxTafHN+Ggf>cSny@ zy4$Mcu}>uYN#4qLgoUCV#P4R?^>jm${M*9h;xD(x+^56lCO7&)5|C71xgk;kODKH) zvz`{X_oJRCZ|C-W^9pS5S=l`YC2sDSN%-%gG0`)|@~Ot&-hA@W(_LU9d%o@>%8P`KT&OCfN92dh%$*$+wCb** zd?~h>O5kq@B<)llVR$OvOXRQ@8dMofZc^mnZW7DPBC57&aWGcNIuG;=> z4eZ8ey1V*?Z2E=z@Ig1tbhKjc9~;kj>7hbwh5F;iqS@~$l&pW9Fgov2bsgO^UW|2YuM)f_zYuHC@$HVQOcEsm-NOYfGWlmeOZ!DO3oQV)_g+ z!_?YRsI`TUzjg_#$X+z=v_sXQLJc|v;y-0#mOy8NH&`GVDI^6(7{od;F(0`nqsyva5s+mk4f9H5pI3<(S=7+$a>xjre@ zh3aDCLgQjh;!Jf`XjZI6T%gW37ljtYI+O3%N5V&e z==xCUZWvuAyjDWNB+H?{8ddw!0Q~cac|K5X_6wAo=LO17e>+f46IobA(m;7)bZr=( z7b(vN%D){Zr*U#C*FQ?`&nwknz$V?MO3N&!ANAI4s(bi`dk(d%IC{&BhXz`kSFU>D zndQs2_RQyAy>Ig52YMfSy65cum(_KjWi}ny_vU+VzVUk^g=2c=GsiFuO%R7eod*?^ zK^5T((Rj34-G*5u56t8oSPaU2Jw?Tj9I>d%jQj&(zPu z<^WWzW&$}>qmD(R)EQ_#`au0K{BiKJ$S1LHkO5iEj>Z*1=j}L)2^Z3<0g0~~&@>!l zw$Wy=g)|URNU3MgK!nj3h%jg%!k~c&gD#{rln^9yZMgL(y!-S9sy&ul-;J-Ps3g-E zgg|2uLeMpQ-FRI=;rY>re-c~mK2`r+!hlw2d2#TeUbx}BsA^@!qtjmP`D*byxBa^H zsqUf|S1sGTW#x*ed*&nY!ijJo6gKwUx%t5}moh&;aNxDyy!-xd$O?BiCe40K6$`xX zTv+9YCJRg0EPE+Cm7T{fXL-pIB~jA+mZSkjgbEc2AWP-zMJN_0{m_q!t^eDz@3Zy( z;aL3^8lEbm^DGM2x##;C`4fGk_kG8??=qWDEhSZgWNLEx1~|Zco%D<(6Sb67dAjWD zM$`nnP~830#q%3xUUl*C;TK+I7qX>KwvMTLrfhV>?4{lBl38fz{gl~?XJHT%a&BRZ z?czFVoHQaey?Ac%8tFmluGD7#3zffOG$|AfhX#$Wd_Tm+&@_b1Ay5v_5@$)Xd)kjf7V2o%Ftn42M%rB#`YCQAdX zGO!>@LU+ZHN}64WG(;LBS4Xx)4n}w*l87vh9F4Gv$U_knc@@(pfcb*Px*eN5-6Z8H zCOm{4J!nE&;kDfkX5ARLZe<}HIICb`0V;?G1lCPK)4;?h`QXDRj-L>ijSo~3Q5a1{ z9Dg`Fgj`-lgcGJU4sWcXq&83R(e5QE$W zcvEQO!y>&T28v5GRU9D4V0oD&^BFb<5@rFhvohy;qI$hh@3`X*&`%wa_)l|R6QZ)x zvVo{3JGAyY5Z92`7?ms-4cm-+Z&|adCjGe`um`n(FdVvd-nX1o+ETQ;-s~b8{sckD5)E%vSJUnx*uF}K+|(J#3|O_a z2Ny++A~Skf{k01#@49RIjvf9?dEt{A%!}tfg|2%53JZI_|3LQ-CsanMe~)$9G4g!_ zu<<1jB{?VTxuc{%ND35AI@LZqoAJYx=ntyUA5^e1x9~K9>R>t?BJM<#`YIvnrG$Jm zEZ+w<2~qVO>hn)RwilrHqQN2RaE6F~qLKON4Z+S33{8yEcmQ!tq9>zhNpxehJ=z;( zqiR~}TR2FU%%pTkIwrAFe&LY%77i~OEz=k@1y#|wGxbd*8Vr^uM$QWfkf85(osjx& znzL-EcUKN7L{Zk%HA5pPSJGYpJ0h$a1Da^LA;5}?J6!mjm(?sQrD4F(xnfeLVa6(39g211&y(k|;i=jtoEd@B$%D z1hU9OUIv^bau9JTT6tELIdZ@}asaaiS?$P2jqR%8ASkwSGSTmvm6NcWnH9+fVNJIk z@1eJsNhm`qEXsm%yrFidRGiL&Al~4k!_IBx1G6BBH-q@RPr+l-59AlYQ}U}|m#|fS9sF88 z4BnH!1Ru+1!6~^C-;NvxLAe}|COnP6ktNRY1+yGxm2AEnC%zwY>wuWZjzPiIfa*{( z7vvl@XUVM4vxwtVg#dz%WboYJ$AQd&45%WI} z!ijl7mKXrJDix~5qT@Jj|8N-F;c#sn;_%3klE{I@%ICi$+;k!u>2B_Bj)qTkHG8dy z`r?XK?)>sdf{OF-Naub)b5kDP>#v6J7d;FAqbr>VXTE%?=SH@)`>yL3U%nFELt^PJ zMsXMB4j)^PukrN}%am##7X-$8KE}JW!6ZwO`($J#RrepA9lDzoz)LF`Sq?pxEd~M= zTSJgH@N8%*Z84)-5V10A$zF8IRdg0;q>mv4-tkKmOvX;umfZ? z&YEdGXfamOZFlH3Ze#NUi>MtbQIs{~1#aBh*_B9TSzeX=d`yb?I2N$HA}PA)Gl8G6 zg}4|~3a|&87AnMyo&_~Rop_->f*H*_!US==a;Y)e8t0p7Oz|xc=7`t(R`WLt%f*-Y zJ;qMo-}tjqxnh-ra;;1+H_Cif_ApTEyGdLtKE^z%J_Dac&nlbM9bhNFNB=GRKL3IA zDf_AMXWuFQj1*UB?UYKlChx-Z=#oyiK96l+F$l(&^+wl9U%&9830LAPg zzwYXf|6-2KP*}deNwO?rA4N7T3+wms+d1IFHp^INo^0sJ*DOIy3YO28;RKuG1Rc{k zt?9O==^}P_GO}pn%L!KBlN5lU;A2I@Qgw}fJRjEMq@M{99iKsJ3uXJXsX+jeKyAO$ zI-yNtwB7I-M@}}%aIt(l!L6ccj?`$u#n$Z>Dc6|hC?*GI(>O7Mh3lCe@U;K*JZcg} zCY)++4r99p{}CZ;4*zqUz9)4S-Tn(OeL*+t$%Bl^V|;sJ>XjW@Qca>)dXHh7_88E6 z4|RY+M$(6Qw69}Y)A;u6R9aPkXsbXPso@hvQ^&VgQ=pRAdu*$abkF*{3TRTKc4#Ly z1@UWRZFOjyFo?Y3HZTnBao?%$#rv)c(d(?rj(%X^+{V5^^dX+zCLJGb<7y!_mN-(v;yM3?mj zy0QDQHxHnBXAh$_JH9zczAz83L;sC6jS2tYtwR9=Dm;rM9`PFHNP}ABMpcF~CGATT z+hzEmQ5>OJ3};d#H^cZ5`y=sj{l`Wp*U5JZZyJ)}1ancwF9o!ySp(~oJK%$gSmnEd zZ4#Q4EA>a=WAbClF0@ zi|3!m^Nfq==Ov2iHw=?N`VB)f`|$jx%p1s%&HZ4%gv@jwqJO^zwRC?_KW|b{zuf49 zzOmYEYO!ow!%Me0GF};WIs7EPjkZ9$)X|g7ZK${r&*fNa%|5TMF$yydrZ-xhYNBPTCWu3)Z$Q%!4Go0tte;GTBbk_ z78m6tC!Q~f%rw!UDa{cP0DXuoJ+&k|#FRk;-qrK?ADCmh$*(~R${sAn?s7tAA3_;-&-3S`@06eb=qe7wT@9iNd@95w0j zN~9_iJrWHch(=7ZqfRT>nnAtH4N3nx)NIs z5!>%i`(zs*7%EnVX+_3vuzeA6UN%+WuW$c3Y6YYVSim? z_kOgqHYXR?=5#D&I|4b&E2?cG_ALqkt{%etg9pYgVEKXMek8c+*s3<&0LJ)QXTCalA!%W7!aT3Jr`z9?_~>A1YilcP z^?qP843yAshzaq$P}FY>?O!G(f_8TfDc5xej0pRKK*G+vX0*bSBc7Iw_vC5fq_~jtR&7=#X&8k2-};KWZ1+{pcy-DL;Bxc-W7=Cw$M3mIzDy zXs$TdMpMP9-b@*)!T|dPKbad=EJr**b!HeizEq6-a5k3~sR^c@P{Z)iN z6rU8)GVyyNnkLT0&YlQGJOkbh7t$Ms3ch8~cX#ymBI-|9_c4QaSKa-;@CD?_PUznM z7S{Z;PfI@Ie!RJv_M~mufrxv{5kNBSm(4v*ff67|K`&kT`1qF{np=2%@?6uue30C6 zzdfUXDvqaF*Dv*g9GF!$= znO*b?V;~k}_-v04{spFg0o-f2*#CbG7dx|oyXM?A5d2@)96$Fypl1&pb?zGRU${mD zf8QhayT<$%t}($^d(8Yb6q$ypV1P+40fbG-fufq#c`42sfQK5xYiZyBCp#<)oIp5h zfCNB|SVyA-Nn%(g?d(kqZ;0343ElgyzN(qTj)?Z@|)Q0}0^ ziJwdS8OpV!uiaWTm^e@wqP@y^WqCY4Tp^#7xB{=N{( zk^fAYa_h}LO8Z2Y(z5>K}>v7EyDZ_d>%q)Lg^8(7@~IqAn8r?U0!S znPaF2U4I|-Euv0_%zeV1`_PNm+^VTUa;g|*DkY-tR58|68Y${gqUL?4Ql^m17M$6l z&Jp!oj60R`1b$TD0)Yz!)`iX@)L9sX*NM=Rg;6*jDex#!Cqq69`gxrrICJ6IENJHV zQBfC)x~TsmO&69=7jv8ro!O{w5qKmtPlwJRYHs;-=;U>dkm1%&hfay% z>IdmTXnv5k(_Qqau=!D8?W5q#B^Nku)VHA4#a&(8EfV}9!QU=ov>kpphI%_{{x3`3 zMf`7L@_)6WRz&8+i7Sp}N}%%=R;ZW`S=bgO!)O>?wXjMF(s&EUP}zWtoid=w#IdxL z|Fvy_-+i_^3roao-?OkxF}9NyR_I>a5ewU*WEg3-a~4)9hDjEVp@{=B zb{b}Dws0(cp4lxNFFnfUL9=92FqWon5SRfcsyza$g1<-L7{Px*V7tI41dg?QXkycc zCN_O&V$+8vwnfR9J~XlELlc`mG_mPJ6PrFXvFSsO@@CiIwiNEH8e(KlV-JA{m>b7Yjv=qQ{l$VvI+rb@K)sDbK12DMV7;Cv2O9$;RVf?p#f(sAbjszY&7 z9(dL0Z&0(iszh4}X&>qeNIn2ugT7q0M#z+c456@9H($)lBkt4)KRtrl3;7DmY9}IgKTSjI zTIKK=rF8k)mihbAF#sg5wXJ)CEF-GTmg&A#TceP{K9VTkx!n3dCg_ZF`8F+ zq(Wrk$34M&)CrUd`Eh7@mX%p{f3oiS|HRyHXs;NEy+^ErNGv0{`bjg0jQ;m_eI_bK zd?w~x3^8706>$CLTr0rwiZJM$`= zD?Pr-iu4COHKldVnr3II)9{p5R4y#_EO0hdeY%ziGt2CmS6S_?EA?a*RC=0m+j(Dl z#uR7jyqa=PLvurwF-}O$%O6mc&#P=tslTSa+WAmbRZV%NbAmIkp{%CfnOjrtZm275 zPIJyLH9R%tHKoo+O1k+iJvCsK<4z^o(q?C4rDtJ{VN_N)%UaQ`(piTw>$wWt;5s~l+vsVi@Rl1+*x`4> zkf;&R*3_5Rc`M*AXT*qx`npzUYRx!j<-#)Pj*_nbhocMe3O;*JWiy{8_v(!Sc=rKa zpAj=kt-&ZpEmvOjJvX~ z@uMC}$NtzL)*at@>yhDn=WLbYkyW+0J|}kJ$o)rB9z_d~iAD}k>u^OL|WZI!-<$1%S0 z`KN_P?ATm~`D{r2ck{ob`HBA&;!i=hkkrqA9gQcddGfPk<@;?ZL^EGwJ8|ta6FTy* zAOGmH{nsDJo12%B0V(Tkg)}smr1zn1J|6m(kt8pdzeS3?MqUH_ZTZ{4Yvr}T-;vh= ze^06l;A!kLz|+-i zlGM+u7+0OE&I8U>9|6wif38w3P`?CRs1^dd)W?8}R0G(ndVzhaAGk&R7n0S*>Q{i5 zs9yzM8q-Bm%=cryPfAR8%uj*0+aDm=KFi)liv0;YW@qoPuLb^&{UY#R?U#Yyjm0Rj zu2?@Qu`LcfjXL5S@uWBs9I3$L9C#aZOm_SLc%$RTz*`;90q=3_1%BS~8{k8Z-;(Tj z!GULL$9czJz`y8t2l%q%3h;Z5_kiDb!1Im|99MxqMDP?%(td>}w7uG|f%j`~1HYqP zCRuwoK9QvOTjFmgC4PAPmk@266?2)!2+x~7H@$878FS3TjPmX9o4wGE8QFDvF>tB9 z9Cekw5w*|WiaG#qa6g1mciKC_`Lg}Xz>DmQfxlw^D)3VKzXGp-ueg`qwtOPP8}|UG zIq(+i$Z%wc`TiOBg5!di%k!xBY5OpvUt?Z;7DG@EjUS4+42vHId^?|)HJ>DEDl?y1>U0LR#;<{3!9;-i&q(}3zop=K$tOXg~a99ZMF~T<_Rug}h ziI2LL@IH_*a4liwLDSs)948I2BxL@-1h=q)yNPtmf=W+4xkX(sYD3fk{((dxQ7;ko z3Q?~X^(IljAnH>K7c5*rS44fC*ODsg1W^wW^(brppH$0e<)~Ktce1dZ@i#Tt8;99z z;_VRDQWD(?zubly4aGar?KGV3pb<2ZM$u?|GJkTvPvXh^|K0wPb`bP`T00I;!9~~) z>#*y!(IQ$#t7t8C(Pr94y|fqaY%kGqI!zboGF_8wk|qt8Ql%+Uwlr7Dmx?5hv{G6l zZICueJ%=%U1YXXuAA-D7tQwm zbhFJe^FsQ<6|>DbVYUzMG24foWRrQjiB$ggQXX$36$vDjo;JrXU&pN>sltQn7_{q5 ze#H*6txPxD>LEhTR+C;ctEQl)*19@cbD@@M2b)*5uhgEey}lsHyjl=iuxi1^1-)kf zx^}Z&SZlWR*+Rg(hkm+?3ihy=i_^ zMN>=DGSgbmG+v`EHnn-G%(i)^*&5r-)_dNR^A}rfmB=>9|0GF+8ij{y=(waJZkf_d zsaR^1I;BIhEKim_a+|zVUIkhwcga2Se)&9>PJ-eD%~2W^pR!*$g3pNIwnCf7w#2r< zwwYzJ^~!#BP<5)cYNOh%9#;}#)R@8Off6$-rZA>BrXprj%xQa;eY1U^{YCrL*b%Xr zu`^?~gKX#LZ~O#pdjB!$t^TK^4?rLGKP5|` z*#2X39B2^kOX93AR-E)FJa7eDdhCtdt(%O>o(pP!1Ec40*e8R+Aud0a0)$r~l~yTutEKf&YYcl`8@ zpN8?1JAQ7*Pwn`b9Y3+-=XLSWl5J_phL&y6vQ22==V>|M&xN);eli9=@5$}d#F-dB zOw*pVcX1WIifCr<28b96ybd2lx{GRGh~uVz$S`$sCg>^q0s}KyyJ4_xH;A z{k>QZgZf9K&uBa$bs^5#h;ugLoGlOU-zeWrg~Y%;2JSI%dE|E?^1Da@_xXV>Te7L)?I2a>T;TK~(^1ZZRZFC)9$ z(CUU(w>$*n!KcuPOygtGV8||q>~d(I4b8Kmc{VKH1Z&)|(G45j(6d~Q?_Vb;0pHrc zO&*4JINCeVjs!XTXJck%^0@xlBt!3EjCL41JkMfe>i>~FDwpPxmef}xQZxwM=g|Kt z*mwpWI0HM+z|J#}d=6eX123GBZwHMAIYB9)aiDwp&-|U?)GMb#ZXEdI`*ZPm8?iJIeuuSI_CNJ0 zG5xp|AC2h{;7^WgtB5PlzaDtM2O4{zu?P0|!0WF|}|y-uRnN%T62UOb8?A$=0kCn0?p5&Io_oJ5b4h|=%S>!k4A0rWb6UI)fl{)V3WSpF!F31O4aZ&(j1sr@v2r5crE|`7SoEzgy15PWCYHm%!6$s9cA3 zA!O=-{WO6RC8!Ei4RV85i*_MeFIpd{1=I@tsyq+A$Q3i) zDVM^ZZd@;fZ)7pv0$3Gid8p6y5bn=|zw<%dr;j6_+`=p8$ZmNd;>$jG;hga0!@%$# zK53%8ZH~PYZ_`}nF){K`inV&2GxdYGO$*Gs@YOlQZYViK>>?51`X}A@NU#xMK<(V+0Z4l>LP|En0Ghk-7WjU zYsIJKpaFYCMnWp0X)f?QkqOJK&(@tHpZM%b;6=;`ZyJ#&plABKVOzHqd7fjv@=QpY zTKk}}OXQVlOBW*F4O^BY>fLe$s1m#?VOxn@gO*2rfr$Qcc%oZw26;g~Pz$KFe>tVV zJD1>{O9S39t>}Uk=PWOESsv;YS)MD_gz4wUKs^8cCuB^|_~jDZFBMjG$>qQmXe+_5 zLR$^uIa!0Y7PJ7k0c|7518N4ffOvk|EwA>9k>^6=ynzVsgvMTq5q3pZo@v)kD(C_g9D{ojR zc5rLg#7Nkm5MSt+Aohwe#ahbdd!*)BoiSy36hg&6Z-4cUU;L&P|?GT(iyB7 zvnTg~-^#F<0gpvnAF(ZVAo>x1-iUU@mwlMQ$L_*Qk6Tv@h4<>P0-D6C6tUsnj>O;k zbZr>0C*skF<&nF5Bza)IF$14?H+G&9>^vpn6F*kGDg5u=5@fnhoIMf$eF^`6J`(@t zcN~gB_oCQn5(762;S!>(NO6v=`FfldRKanhD#qvAJ9nYL+L{rCF9|mM$1fQG)9h* z<7lj`$?=pT50VE_sytL4O5^0)<=bhze1|-O?vY2!W01MYax!JeDRK%;l*h^AC{w;i zzK15s>2f+vmM6=wUCxppps8}UJexi%=g2uUOP(Xor_afc;Inv+Tp$j-%ZO+5&tE?KaR(&~A(Nfeu-8gs91l_9*BC=rsDAMSC7}33LT?4Kgyw4oUzG z1`P)}K`Ed#^tp&O6EscSlRTHjeaUkb?F>*hXbxyTsDPwqguSTR$gFE}B@%E@^Gsf73>lX*wE1p*bUGp3l zbl!6cbhatQbG#`HG|h7gbQb+jHO+5U1!a4#MsQ^ARmIJtI5h>D#|v8AJOzHsYg*=6 z!{^Yn6?SfbecPLYQ%pLg1_c+A4dEpbiH&# zU*i$X|8$h!c6$m%-1fnSqt&Yi_#eL?HmjU0nH7Sf`8>XJKxxRA4OU(w#?Wo%cY)c0e;oXzNZyOqE!wNN9)|Ww zv`G3VL6>>n!=E|uTQ0vZXsu_mSd%;tWGlw|5tBVw2Ugp-ySZKDzsO0k4k9^Qi1Bzk zmfL9Z(MI-$=$y53kmn;})W~yAFBb#!Mau3BQ6O;+iey?&b#VQk(i4>F3Y8QHlNL>2A0S2sFCHfd}?9^tbjbM zkQGuh)0s{ND`G|DWyP$Re5{0(ke`*YGHPKJtb$ru6?0R7)v`Kzg4MG|3Na5e=*!H< zT4*r~ur~TCYiI4WjD=W;ma|UQNl&sxY!N-h7PG~)f-PZ7=xb~#TS_b0GPaDq&YomX z(kixst)OqPm24%gW~cocP&eDgw$TsRcJ>R} z$bQM5r7i3^_AB}cd!GH8wy^{3H}o_1TlPEJ$quu_^h?&q`e+w>nY~QUvfs1c({A=E zdzGGJ$JjC2!~VejK)+&tWPhZ+>?Au$&$Bn!8?=x8iT#Ow&Cakhw4a@0=jZ_YGy5|g zWPf3Qq2I8-vcJ+H_7;1Ke#_or@6ZeEUG^^hj=jg;qZio+>;pQ?K4c%#5%xFMPkpMS zD)frV)EIhIja40VT#Z-b>5u9lbr8L--lE<@C)HckTj`W~n|d3)p$=7t(rNW}^$z-z zI#L}=XVqjinJ%g+Y6|^TO;uCrk~&@;Pj9JdY8t(*rmN}nj+&un&}B7KokH)b)6{8n zRn1aALm#R$)X&l1)FQP=Qq*F#ShA@lYKg?uGPO)n@zhu?#i%uEjpR@lsCAO2demkq z!4d0-l@c94aqN(8(eU^y-LBa*n>1WgHC4Jpvuk!~gchg8Nh3A z)l#K&ZM-&Kx>rln(xeP6T}ziHY8l#eDN~!F&6GZ?&C=#ev$Q-dPkLC(*Yc%2tw1Y~ z9?=T5LMdOT9 zfx6HK&)$`rKwClELA{_op#7j1Krew_1HBG<6LbN6wxE3*^uD+!Rc{mbrD{C4S6;^$ zHc%WW5i|sRJjYj!0F5Q8tpe47JS5e&plt^&qC03B&8GQyGvdGAX`xP9MyqK(-c`5J zF4|8==s3Mem*}cwlMD~W#}vP>H2D*6n&kZrmqAVp||N{^(TRn^eTOrUPt_Y4CvMq^m?EndY*363xPB} z-*r{jfnyn;Lvg>_)rt3|8Hqb?Vyz9800d!hVa~;t$f%f3;etiVc4t=_7mp+PY zt`qtkNX&;sf$J!A*ig>_cRsiUuJd{kq?fu*xK_9@fA?0`>#oJ_?f+$;iA?<7h{P|A z%-{6Hir>==6~BhLog_r16K}>E;*~~JhCC`m9+e@F%8*B8$fGjkQQ7MjA(zT7ScF_E zUxF4^mLY%2kw4|gpK|0+`4A9tryRLcj@&Iz2O8f?* zxe8s4E}yH|)rPv$wFKo!*DBW<*LrZeU7JyQTswewx%O7ish(e5z!Coy8T^kK%9rJL zNtWM3ENmhcs)$95h=qn&+>eNSW*{QBAR-UbF!d3{WrT>!NL5#L8jZMYCZ}TyqH~wy zL&x9fZbv_2H2(kLND|E?L&Q3r?Eg4U*e~pbMq!{ZRJgcsS>ejUr>pp{Q|$6P@;d-m z)U2 z1ZIT@bq?%@-$E_MwLosi4zC=@@7U|L2lS3pz$KXD>cAF0i>P`_V4J|Gz4HZ!&u%UF zJ29`ntGxw*-67pu6xfIPRs{})HlRMzaj@V@;Am)+w=8f1dOoE#b_Y&}Hj0`{qBb^& zdJFm{dlLdxp>{(L)WKSJ;CyI{w;ud$MoU{<=`Qc!fG0%W;ei&^_CPyi0)Z=`L*7u} zTIh(^faK1CMM1ga?1GZOBFH#}2h3h6f!xp{i<1^u8d~bjM7_d0EwBRhjKJ#9YHzmC z8C}l_tcCaH1U878w<$jju%`B4iBC8W(J+`;nLP!p-Tlv;r}b%u3$>& zTEUTE8oalOWA9du3y!qz3d_c|U?%dD$L^?idvIFV?(Gds2`6~>!15mNe&l(#SUWqs zF9c_V2YY*i*|_^sa8Ab#MCx={_P!RJkG`)53qrHJZw8AnqiqFCIYzD?HTHQ|0?&az z_d77T<= zd#|_d2&egM!B9BU7l$Zx11}Cw^Cfbfz9GS7p=1*qyMrr{3B2zN--zJT=xgG!92cw( zuIuRWr3Sl7U-YF1H+7ul`4CR=P3AN5WkJJcSXBl*Gq`mC&kk?t$o7J3fi2;H;oMmD=@LV4OGM@zZ5x8jDQVk`866F73MKoG_;+`9`;WF>?%cefgntV7Pdu@xv&VO_ zt-Esv-(x#>d7W+D9XtG|pIC}G3S4l7@4f!>Pps(N>%a8G>d-9z75}2ngYaH^=Zk#j z?|cQjtJZnkn+<#leb(a0>O2enl+KI39oYFVgTDbeusPV?7P}F z8(zw7%L=E!Z*!58TiWultK>j3nSW}8Lj_CQ3I(S)JOh#y;l+Mxt3@WCYHJKH^Q&#X z@JhZ@g`f6oEoB`C{Yhhu+Zue*t!`V7HI>uWiLBV%)*aqtEaIQ4_zX%8mH5YF@6!Ak-ZzoSHe+pg zD>C^wcAjK)&~cuQ*WbJ>BB<7kbb6gn;0^;1dI)_oA;NP~jTwdeD>R zz3g)ZT;8jl_XAsCT_1xJ0_@i?7LRWW(8qDTd*fj4hP>B(b-gt$HSK42i5Ne-p1}Mz z>=JQ)fxhf(3e>fX_*x)8jQTnQ4c;5R9tZMR3fmJQuX+wa3}b-ZnlFRo{=LU)e% zue1$e?6uYU4r4Yzy5%g;X`tuW&N=U_??j-d)r@q@Dc^}6Yn#J&T8U3+8>Cxy_znbi zw`tnu1N&Nzw~y><@ILBJ4IJ>MfAd`6u=k1Y9K^s`$S?`s1vvQ(wx5E1Fb(G}a17@z zZ~|9{G>To*Z4Wwzdi!zZlJ}(5ai=G(L*u&uG4m8gdbB)5-is*Tb&cJLfT$fKPoP_9wOsw%mv8v9;Y7#M@dn`BNm^ zGTeH=Z-L0ayX!>z_O2O!2H`BixwKvy$o>W?(x68MJ?`k5+j+a)+cl5*86&gZ*UkJT z?SYnZz`pjh*Hc>VbZh+^30n~NSljoy^}AdUnN}Pr_@}ewes_%D0hUzyH@EkOCY_4)Rr?frgF%f0sg*XO~LH+xdu`tBs~CwOC5XM1ILDrk7voz}CheG{zo z&bE_aXD7~A&tt^?+Loi=JngT?JnXM;?*|!ITP@Bk*jWRXOhE6A(y0uzWysrTLFZ0I1>3tru#5k<$gw{^~NpEt;c&`?Ay3XDhJc0L`zJhlI18uc%bpX%vy-7&- zrV^djT8A|5n7x^<#~{;){9OqxBS6<%a8^>(XE&99>i_wZ1f6U zdwP9dvHNV#S+CGNNc1q!V)saIz+2Hh3OF71=sDU?M_`xf>fPHi0ekLkqKk;WM07vV zjjajY*I-YdhTM2UO}E_yAEtX<7|Cq|VDlmGmTqnDQKB~yeH`Q`Ajj6VHuRoy?d_iE zP4hMYeHQt>gWjfgZSSe~(ZeJ^;*IOR1@oTcn&=&c_`lVAt!10*TJMC4zD4vMr2Q7K zxv=*hL}|7^k?2aKF()f@?|nRwOIC=uYobI1k)L`PLqoqfna839UUnMS?{q)jHSOKq{j|s0*Vfn7=kMs+Y3wQOXxnM*D}j~e zhiHV11Tlkmkqt!W=(`*^*OAz{BXFT3#dkGuvBToK9=I&s zBX?wUmItoloo3)V-bDs(bY%H%z^OpG!=-y$`L0%V$12~e(p_ptu5U8*URAmq?I`q3 z1tvR6eA9ucj*Y(Az;uVh_b4#ivDx<|@TkM%djhRUPe-k9p(m-Mey1kz1p5svP`}yO zZ=XiKo5p+RY`k~wi$Y8KjATjnq9uKa(kP@1iFe9tzad4-lZ*#|yof&-|`I!UxO@69C_wOC&cW&%!l%HBi&j%!0 zdR_sodN*|p?9B3C>NvSGxA%BQp#hdll2P@^x^dsrm> z(lCX7X}FqxX_%&O(|55~^*i>R6MKV`%0H8#rLVXw0( z_8azf_P^OIYiEzyGuF-VTqgT-ZZEfwo#PI1@38;M{ffKC{z22I`6~M-%?Zs9*)z>W z&6`|==9=bh&Y+pm{FYm;c^nzReIzn1axJ$;yH|UWTdN(>zR7vCZ)xA+YP46izvMor z{hvB5_eGsSw}ShwZj~;TJE2>x+sU0Y>@@7=BMpCHIKammzGpbXuQ2?j;S9gh@MFUm z|BB&l!zBM1!>FVb%$P5e539b~ z34al3t7mn#dRwEd+16(3viWU$Z2N5oZAWYawv)Cqw)3_j+a=o-+n8J>@JvFvP$|?1TZL`Hc43F$72q&$n_ny> zgXN*{n2IS_p2}sf&@UYNG%p+lV8U_X6kIzC)Sxgdj0pFIQQ;bVnh;C@%;|_EV~b-f_(I6x;47BY_slV z-OH>>_loWn=F)v!m&M$=Y+W|1)>(B{R--G_6|&FiigZP6i|#YJP3-f!&*`?X*L1bI zT39a}I|?fay=-BT6f?|r7GMxy7+{1I*`{pMwprUF+Y{S@ps_s>q6DLmD5MA$+an=E z$P#jeLZL+1C^!Ib2Ji^ALcP!^G(%|pJU9erWUB=%c>c6gUrC*yyg?Ot2N-p~alsxtx6f3Oy->^@z87TR> z3S9*&&{gTGSfQ?7SI^cnE@m#4{u>Uuf61vX+Gu5T%u)V8VNd2Pc1$GXLx zPJU@{uM3V{u?ua%>*ycFui_F=2Yspm+bMu!Q9!W`eTMB&XA|_P_(thlJ%^}69%D(A zJ14}C6>^Q&6?vt`Yc1~lpl=o3Sa-@cAl>6Grh2zq2>M;AmA>&a&Zkl|2;y>gm zI!?IjLi$kZxaW*t8E;(J_?6EXKS(R>pf8tJ;)T~inbYou%5(0f$|vq~l?(0*&-Kev zb?1k?{vx?Qq@Oz3zlxue!{+OQ>dwW_t{7?D&#Qxe3G=nfB>Cw@b#UIrC2I9J)Ul8C z1$Rp@Z(MYDR$g}Z5UtcoPFB|ERrl`Twd?ME)Gx-plCN*L4^&RN4+njwUyKc^r`*Sa zV?_CB_le3`ka^@j9bD&fn<|a_VpWv;GU-ub66z|W`zq?FN_1Zj#;a1xxvnb1Jyn(B zzCk|B^bEPOJ(pZo&lOjZXAJYYtJE`2yiJ~)u5!<9lBMYP9bq&-&wMNh3Kk?ML+N>!uBQq}Cqpz%Kks@gnR2uj>lb$N2B_InD|dui1k zPf68&&qnp$Q+3eep!x{t06)_Fs`vJEDGsVmdOSE@8siyHZPj^CJ+&M1G^+hob;;9Q zb;Z+GHRkE68u$3CZhH1q-S+ISy6ZVuHRCx_^}sVwHRm~5HSam|zFfG}-lyy->OB0s zIy}C@^(lPZ$Ldt^wp8BlTtdH+6P5FUvQCsWuUEwq%3&;~%KLNiV(m(k=3A+Q@S<@( zC)b9=vbt8*O!4<*R164qSn1t!r;}jEi~B6ZBV`5Q67$MW3P@?K@PR6kNmDkNSM9 ztUu*!EVrlp4f}-aXmx6E-6J2?9j-sMKG*T;v?b5pvR>Dz>dcUJ7?z`yT;w`iogH!} z!fTil2dk}>`s$*}xav~ZaP=ml*HxESrdL;17FXA}Myj{cXSiM|RBxl}aLskC+Dm+p zp<32Kw7Gga$&6O-z`J<;xAgy!vFK0Gf3Esn^zRt{N7nQ|?emq$2=auRJuCvxz8>~&% z7QmfA^VS~gZtFhl0qbF_-kM`Q23Jm4Pg~=toCCOEH3Pl~<+Amv^}6+jH7?h0owQC_ zr>(Qr1SpTJPpk`{)L4_Ln62s13zi(xh@X-P@7TL9ECFK9!xHJgY$mfdC@Yx{ zN($?NvWi`Uk_uygn|+jvKoRL4UA_&7gH>O?xc}Aq;zppS2&Tk(u@Ty9U_3Xl7b*wK9)W#Ev>U9L+;FJ4 z5nAmR{bkc)7Dyiv2g+^~I}q|_K+hxbqpRqAooC=0}JQvOwlGr*|pezNZ$bV7`sVK1nIj!@3Mb0`OYmqY3~BX(*@*ZsUNIpDf6n1z^n-UECS!>WU8FU>#> ze>DTr0qPP@8O|N8ZO4XsEQ6;gb=cZK`>0Fp`CBQV2VN=u5n7g1TuP5;{IsZEJ9%%F6s>?EB^+>sbkExKMp3b^zP$L>wcy>PB_K1kuKvkDfp zUMFxk5Y8)(_9W(H#2K-LX}rWA1PKzJcr-lcq`_l|BF-$KYKQz`6J0pf)jw;%=*r5a zg_jdYFl=$6;Wj1Nup*Nu3`Myjp9mj{t2j!OtE%_%3$(-0`IGocihSt zPw@8=B9$H$Kb3Yq1n_*aJ#7)`A99Kem3aPns1x28HPr|YoGJ3yuM{aNQU$RFv72t~ zQ~i1S;;+3I%SY^MYizo6n8T3yz_btVYdzNImpi&#MQ=34Bb7dtT_r0ZuK9X@_Ep&7!yfpk zrc0G7Z3$CP`$EXqkT64H>V9GOz$Xw`nU84n*&;j%d*E-GKkJkU;Wvz7p?z&?FDSNN zg1>56z3;MzEW4}R0q<+B`>ZufenArv0-+6_pr8MJrEA^PC<)ki=_x=De*|%F3`gbZ zsf1V6TzeV)ctigfgzRlnrUHpzrmr|qsngNOPjZxerM~>5ixYP0jsffiEL z-$xOE5g?bkovN`4?EoZd#R#^(t+g4i3!2ek(LtVY4Lt&plemBV0D%UL1A#|V(9`!< zI?Ms(WPFO{y17AhE{h=sAo*5LCk&Nb3b%FnN#F=eAo?g)g&wUVjj2ojD^?sWc}T~2 zIjaGQ0gb8jdFbFRig7LfppMb^(0XL)gA9ma6>R)X`RZGqR(ku2wo+x#s{a%|6t8~b@;*%ZU{sYa zdsTngte*J!Cop@CTf-lBhoOf6+l&k*S3UJH$}Z*~G-R~3MC{uuFevN0 zqvtSuu>l+pID(lAL8Z@~lwRXtZ!OL>qYwN3yXH(fcwH-G&JYG@J2*WMJ@f%QAWtBd z<9UQ&yiguAzJ8(ULX4vwsL%<(Ad~N?8WFw$zF^!2KOs=#5Y8VW0tB7L0n{e(q72+3 z;g!VV6~w}jJabD%-;BuF-t0>{Co^2nsyAu1hDIFyv=}^dm_@#`QNGI$Z|7VZJu^5n zn6Z?2NUJ2QSf0oea8P?8aacYvJE54+T0--T2sQuKeIjj-F+0N}%K!TcQL@NAyhFqu zK{Ed-w5s6hIqQU{i?Gx^#3yJAF-iIgaPd1Tna`tStagqCw$Q(yo;c@mx-ThPsnU}l_Y$vf9 zdMECX%vC_$%)0*ENh~AweOh|_?3*t0SKi6L6;1ZmXAYn$bf)vgK?O0Lb*Y-?l3Y!W z?wiF0ov&XITW?=QzKg6^3LRUDod|#0y~shaHV~`0-VHUnfQb*173u*+FM*ZXOU+Y4 z7;OYF;5L%(rNW}eHjm$w#2%oc`Mn2gnGGqN+VNr{jJ-GRQ+w`v#TL@cmt%NE0S|`t_)o z4w1GQ-H1c?mUam4kS0E1>8KGl@kEzCv6@D!(XC?7)vaZZ{bmtnif8%H*{S3o#h3=W zwjJs8UfqUh*Grsfn8_Yp3w=`>v_>IaQ1KSCxUJyQoJD2}YmFhS!umN|F-%!}KZb{4Is)`!L%uMyBB1@i4{)i~ePJePgCD{4o1k4dLwk9QwBzrU^&$;~W#FDugL| z8#a^vMNE@c7za(L5v$4?@C}fR6oWyfN21EqD3j!HXx5XHzgyh z{`DOesHRd?CXo~DWT^_Ka7RlsaqrngN_|tfuB5D{6QES*HA0thrgjxbYg}$j1+H`_ z8A;0^7!4;$Eg2~pS;<(vg|v}bB+`)JwS2BMo4{?ig$glexfPz^#qUbcOIJ0*0arO3 zoY1X7hO0~{!Jb76)IB-{EmB9S=C_p7zX+(LPV%+Lwo&K5X9zMwp$EID=L6ziWU^dA z@zeyM8(X-awzB#qSZnys=$P9DYyoXg;Vrufa|L zXdoCcvK|oXXRIW=ZAz8I^3BTNKEZ{?TQ5r*H(bBI;1%LRte-_9D)1Z;Ul4dmlj_`k zb9q2Ji6PMyPW)3Wv8-5xOEp*cU5Mw_HRvq+n1101lf@d+uR2RKzrjCrhI#naXBm^y zY`L!5HEsOToUAj;4FBRg)8F&H_nLDSuO^p`VRbBuq?AP|l9cDZmK{&LY6{^>noA8-Y-Mp61bi9zyd- zrkBhcZM6mJiGjY=y@cnNq4}IXajVp|vjXWBD+f9HygmGr9lAG@=(nU?nS=wm4X6%u zUNdq{V68~BgQ|>0kW%{0@4Q5ee{;m7<}V`?BdM*%m(`6;OU=vDF1 zC!jre&RGOm1lhSmcQ>!ktK?eTBI;8rf{*fQ!}^F=Y+g~FMB1o z)Fngi&o3W_@Nx6>-Md|6JE(L~%@x8v*?)6X>Gnvw6b_?R(ENXYw<-b>{meB{`%D38 zs(nW?=;`M1Cx9H}1Nyj&LE4Q0!lP}F$nHb=-)3*PpY}W7r~L%L>8EdwdN_pNk>>;L zw@kb~VLe8AzJdtD-&uOQCyid*pWRoOKQa8Hv0o(plIV|0pQ&eF2)+mo0K3PABU}Q( z$}i$ODxb~~2)yh5+1D*F{$IZLE#KsBbYBHgfAtc>b3kVBjnkO7ls<(XYC3ElLD+Q+ z-lHE+Na@ku&io=WfmcRwrrOQQ&t{N3sNWt)y=QpmqE=h*-hzJ|v zMPcj#MwL_{?rbKE2_B?2Ds0P)^L#i{w1t2PMY$oHjvTiR^5Se zAA}ubXFv`au}xr)8#UE2ft0Kit*G>9l=dD?tk_UV)~WS~))n_`LkvQ^->yg{^wjJA znJ>#}FA4(uShF&A4?tvGp!!LwPY-rIxHQ97&h{H2^?ao|pk>HTIR}^j{6hv$U6OPI zblG1(KJj4;EM1> zHT2FyQz)-v>CvPO)wE0B{hwU@;^RKvGNsM{F#} zNQ9PgB>Xkk@Gzjg&h*4F9Hd4&4XGGQ>a)Jww7?F2ygtelY;kaWF1<}~sL5uW8Pj)Y zuCdBc6I|C_Qq&H;f{Cz5g7B0?HrnfUHyK6&-X+H`{IcWnvYxxgxc$!mc4YABW~x#S z#N#_(-s1DfTgtOHF7Os_lHhQsa{4wEfQK^k2+mhM*p{<&L4Gdu4W8d;?HXB6$RxCI z#LSLw?QI=d*J_nsA|u^SKxgXb)QuVf1^ivxL?&%YgkR_H$G5{_k`Vkn5?O;R!OTh& z!$T326WPh5RD`M<3dj2-k(?q8;|H?YT1&T2-Q)4N2A`xl>)B?FegiB#+OYM0V$xAR{50C3^UeUDJ%H z{|wJ16+uLWUT2=vE!dCn&pwDpp+Iob=lD_Ba#X&^8y7LTPZiJ=sE!%+;|R6n?>1yc zi}_8N=dOCuHt>b(!2^`{jx-148KDol>DT;wb_gMIu87}&R1vAzH=g&N5yl+#2z^pJ z0J6^%RgAwy@SfA?l7H47)s9q$YBV7iYpwzGW!i80i-7Y`0xQR?8)|Ai@r<>$(%LV) z@$hKCUL5a*Ytj;knQ+LBBAzn8NQgX){nFxK!;(lQ{#;qK%Y1T=97irkdGbP=6iI>? zuR)pA`~)NY8ZVAFT=(-+9tHUVo^KMT=L>;rgBu}NSYH&+kenO; zUlWC9zdzJF#_dZ^ma3pXKiK*1r(!bn{dC!)JF>W6@Ud-3JnAQ7L{n4I5w+0;+QUkS zPi)%rlcW>NtmHy^<}rxmpJkJT&{ieCcupg*x-ic7<;cs()=+yP%2BN(Y*HU6ChgI- zUr{i)FyAij$Z3LWf&8zDq*&{;{x{${3hk^@$MkNA$9+H8UPNjw0~bH8IW55NnavYOJdry^ zl9&cgMDbn_3hpF7K@2f1v54DIYEIP>CP4cLNfEY*ZQ)YNa}#ZuB3Azv-O<;#DM!)X z-lemCAzI)MYWN&j6WvK#sS?E|UQ-NAU+(?L6A<&{zgfMa_BQ_HAf2o(sQkteZwcS? zh~!arq#v}5`=sQN%CQ>;)>;}yJGn!vJIZGgy|~OJ$W>qdw4=;~?8~E|+vMpI#oAs1 zIfKcg>XY%uzV@5DGuQ=-%Q3N=&z*~LA$tJ3rNZuchku&;bybUM;VxYDLN!|*!XsHP zbO)aBj&}(Lh-MVb+J@JA{jn|lOc`>O$gu_K6Te537EU+d+?d7wlV3*BeEA*Y$$Qef z=S6w}&yeDSpuim2*?FK%0syi*8NoI>AWu03+1E|<{*7M7CcEP+_!+@3-k9#9M-dl% zfb`Q&Y~qmZS>=vqS3rD%9EC3ctLpcwZeMyt^6$0RQPj>VP_ClPX$mj=UF(qW2>*m@ zw?4jsn&M`eOMJ`v3Q6eMGaH1nH-A)M&B0qs$>H!?+Q5y;y3Or$t zu!C))%>oynWdB1hPHZ@Bfblz{69oe>L^J3LrVyNhZ_{F7f z=SXJyX6_r)A zQCXE(<FJ^n89&8B5d?{8F^mid+QROg?v z)Qm<=xPvkfpFEMa_HQjnuSL{SXwW;dpay9vEw{jKxOZNM+n!NybIka3s^#`H-pD>E zau)2{w;uJiN1wY8d*ra1vE;h5t52c*bb zxq)l#K2Yem~R7*cG(2Bho;jN4V8$r2ubyr&dggvY}x^jdG@?+e!MKK?TFi`?#W$0-OLQt)Ti}6p4skMcj$=Y(vNuK?kI9DeDas0TQ)4tQ zT$1OpDdzENkM6M}`!6K!eS=-nMnt8E2B`c8yjO1Mw;I9Qs5xr&oit8U%J(}d#|gEz zu%VrZMsCfZvkzHQS4H2&S(duD(nQI6$55myG!oZVq_Tb=szns>Ac zW$_2P) z2TTsxg2O;~$MyOuU<(Wn$%iOWw9u8&0jn0@%M&8AeMbZo6Z8oDZZ-=}28{AMW6xm7 z*d#C>hlXypO z$ET?;#Kci&6&GALa56AogE9uJ8oVy3fVqd{@KjVUw22=oZ#4J0^F z0PJ5yYW6!ku&O=9pYYyp$Dtg-TG#6itU72)U~+KreUi)5b;`f&FKh>+qR6w-j?h3g zp@l2Q4wnN2oeJ}9PJ~Eu7~eVdv24VbH_#vIi~X3i$3CE53B}FdB=lnr9P+8i?^c8{ zUMRVV7TLHiis?|lDH7Y$c~ebYi=k#SDA=3G3*wsCf%X>ymAX6Gzfe^Tfot`hCvZe? zcF?$i2M*{~WgSTFRbhzBREtguMWp01&}s-7X#aANb&*Jn5$l~5V&l7}eLuK^tAZv{ zhc*!?{%$ZFoT|2+^YFtvAa2lMPr;5z00GzwyaE3!bHJyCFW4xOASM{iB%u&N^#nR# z*#ZIT2#T{sh!Ok(>ZPxzR}kSDxiAA-2Fe`g*N-)B5W_Y$&@!=$AG|PA5C-Z7q6YB4 zFd~?=-uh5YwfSP~z>%xnOuw`mO9Hk6{d@(*K@GY7!rJEV#3URCanXdl)DMIAnmYsi zQSVhiyRo199WRZJxgaN?pg)f?;4V<69)6#-%*>!xp8-LA2*9|ZUCei6f#5zO620Qz z`6f}E3t}MQ#LRz3y+zWl?)#YeO%LumQLC59P7P7nfap(9)h9cQsTSE(vtXVGcqqFp z|0(M%rUNtxNzE@blS$26s%vD`t|1dnk?^;8l@?GROF9mZh1>tVICQN4+u}r==1+oC z1hXJyK-l63)NW*fs1!az5I~rN)za3I{DQ)Q8^EgeHH@sUCJ<`@jZphr?@zC#EO;f@ z%?~ULs0HMYX$tpZ=bQa(a3jcw<|2v2V9S;!ZwG-h9J;s>1dJaF_LJSKLi#A(0<(q8 zIA675{NzC!dV75wCvw8xR@fOE{orirXWJ2RdX9*Jjy2itP+Jh(J>oj(K4edQkoa&S z0L;cARaZ?v+`#344{~P0NDQD@&#!A9uqO$!5$&G3-(j*~`rjXcwW$H60mXB?pm6XK zvX7Wi84DCj1Li|!7LLw#U!U>;btV6ihKvd=iyjQxxjDu8n5AaDv2!8Qv) zgU|vLF-V5T0N+6i%vxBR+yL9b3T)9sH-N9#63PXHFR)k8-+*4i4*>vYdlZ1xlq!4( zuf-A26{F@pvkf*}@W5ojroT?^#KxFGYK>qZEI|+$*4eYSlMYR2ZrKg?29^!N0owB0 z?AKHlh#c!N$c*`H#kcQ*FqxJRMZGS9HgY`BP_Qam;wDcDO%W~HBN>nh%o8dx>UH+q zMn4;Rh*-qb;M=pst3(`#%GvEC>_P)LYLIV1K>szsfaAuljt<cX29_)G*Fg zfU5_8flWs)mA}=!&>uwU7O;zH4aQZxr5#st{QCU>htQq>khX@@7tVyb>J;;jj7)uu z4@KE~2>BTlUC;zz(+M@cY=}Y7)5owAP}A?X`*U{eNwTpSYAW%sfi16>4#WrXu{-Di z!o8i~kzldV)*w1&KK_d4RZkhY7f1^TOCWe4VzNJ~Um7PqfE>uO+d{SjzTw%^AR5Ne zRdtwi@jkoqz$n-a_lxItgRkV96HQNpK>6(|4~G-Yesr+#tjLuJ0NV+ z%KgVn`)MvbtB2u&Wkk=`wGYmeRY`%UXlN#BC`1nZ^qgZ}pnO90E49TX!-K|^(3j>t zCyJVEf(A^Txj)Hl*crSR6Uilmt z%JVA?=H-w>{Yg-X?g(-llbMAHgK?%VV_qHW#M1#IfCb!F7n%}>9}n>y{2r=V?95Ao zq4zFGdB!Fb>N$i^?7+Oj3Ti#!q>8udG`_TKKM?LlXOYl_A-6FN`~!y*xq4O*ms2|6 z!&N`f^v0)|jx+E(E7p*iGZFQK;W{b_)R$llb)i8Q2rlo32^uXVOz@l@Fh6-ThRR>qTOjK1d-I*s&EckdeprITSTqlX83`1 zdgv_VuKbXEDxTSSjW&a*B~Fcs`iip&bYVMg8EAP zO4CoCfsOMq?TkfyPAyY?WRqgT&d6l?f@V0!Q^(f%w+#&2WKn`=$c@c|8~DE~aancL zSf3dk-S-%dInnQu%zOjcuidE!=y<_=5%1x5WYO<FJ`{U(~-HS z!9{)zsIU1!lAkgR+t;39U4II~s-O^uTcLVC!LQ?ap37PQ0jj+(ILvT6$%UxZTc|Iz z4h%v2u<($jtPTNDN}nn-PrYrBKJcSUw^JDr{V*#mSRZ1*G%=uiAiEC!v%$R|9CI}} zEViU~f6IQLc2P$eda&c40S^P!NE=Y6M~rK#;ij<4b1`1<7KuhE!9x-Y^~hI}IEzG! z^#B;^$U65B1aY80h`L+fw??+i;}(4NS^gdQar!l7MS*HCp;~}HNa3~OE!I_@&cAbm zjzuDRUMRkKLH96qY3atWzBM@uzQ_ir1y@;JMj30;UvI%e(tghO52Y1pQr#z#tNT8q|3+h2~;Zq(n3_W?Xuf$WQ5P8cGdV{TpB>Fx**}`Xib2}pMXkL=m~X55qn4xZ^(m970*0azCD`q;Q%|>H8@}V zz<=w3Pe1|arAx)eIq;3ZE-xWwG;9un43i;$2s81+2bl8S;^-nc+0;fph_ZbBDiT;o z((G$F{9&nyW@MZ-QngMYMz*tHk#B!8nC={L{L^a{-{eYKnKQaE$_S!l3s^UoS2?jI z{-X93BGQv!<5jXe-U_6jk^zoSk{tqOW2I|kjKi4+apYo&X-$!+SWNoUYCs(-y<$gTp`+ZWxih`&AG|dy3Ws>n|YNv+cboJ?Lkkwa7^$V|QQBNNbE?Zvd+NK>uo*PyS zG&$hH@#>i2_{VK|ND8Beo&zeN{ML%$!Qz9w9u+tY-V*Q=id(&)81EXHGiMeD;U3zY z``fhwz9YDUdL1962Lpg~0Raz8oY9eR+yZ>7YsT39I;NdT2v`bBB6VX@;z!It`Xrx8 zH?1tO8A)wyqBu6TKmhX+x}&|m@c69@>LPlN3dj8;$#X_cT@%K(nz(@gFD7S-R?=aE zNPvKwaeq@cyIwO^*QwEB2ZMLH>j#2Bp=)dw)_ z8^i`Cr&90;Y%?W~SRWA}bBrD9EKiG6wkmRlb3PI!%)Ug&mu=k2)A5{Yrk|JM&6>U~HfYcRvT#c&mgyBGS9|*GdFyAO5SP-<3TH}GBMtQ(kN&^kNyS3_mJ+zT=Tiv>O+sL zg3ziAcx22V@r~=G2lpp%h`f#Y?Z6!9s!BTp&57R%l?1&T=z!ibMz8~J;J!mH;Z-&Q zO8KKX2Wm^z-5z)Zj=q?%3eFqmJZ+?-*u%La9CHI@!Y+81zM~KIsD_Qu4!u{zP6kb5 zD+u+~9U>n`!xPx)pvG^(bIf}03d`cHoNJ1d*ofd+F$_Zb%N^ge5`j&sCV*r2%8=mW z*B|2A3h)9Ff}}F7_BngVuf+QINkNme0o^gP)RR{I0S9#}Fc&#NjOk=Yl2b#FJ$8^q zIzcr8Rl@+oGErk-DZ?qa6`C%1X=bMHHzB;j7*#WS-f*xba=G!TLtD=FCU z!Y5VvdRKX)6CQl;$6xlJ`@SV&vF_6CS~YOqP+IF!II~?p-xB|{@^t=`f2u&vyn<<+ z;T>1n+nj56rTikuD)jGwv=vszL@=28qda2+-ICyNEgwV;ug6e>P=E^5%`G4HjN zl2kldJEYG{jkyoWKT!SRNHaK4M@B%EoC)w?lG-xolLOGLgwe-m{csr_`R5Awf$!oC zZ7Wzj{12a1hE56;O@vq_kEEP!P=Rhx8P#;=*Zc1tmn`9EiS!!s8BWuNL1BE?htI4* z2LE}@&px*RPk`KQb{J|Mtvr?*Mpi@hg(Ef zh+mEI;nCS4)xn#HM=(scRl$$S^$`wi8`ql?|L3PN4?=9kG$*ZZ6`KngewB0_Wi(M` z%u_jEs@O1vwCfF%EJ?1$5Vd))H8JmFn4E%Wmz+yQf)8p2{4iTSrgf)v*mWp8^)>dr z*0IN*ah0~&1CF6U_WjnrX2{{x=4#GA^|t+vO}0Fid#%DgTGU1Ed*3FwZ&RM5j_G>r zzSTP8Z?9t8_~%9`iK{`!P+P({THCj88&ANuO^CR2%uT{ai@pfydrCKm?{S6SQ{sP5 zdC{7n_u)>E*e%1K!Td!Z59k?5U-x6b)NkohMC~iPvH0bAlvjv+_E~I!Qb$5x2`AXtVS>aQ8S!J4swG5x@LyTYDYk zo+Q3~g^HWa@M_7>ewB+8WDs~-cpW63Bo3E|=YBU};}0?kJk7)=oab5mGjcr*y$;Dq z4pUF^mP`CUSwC)v?xnj<62bnVC|c~G{1x>a_(L7Pl6fDoS;1>`G)C&C>p5VjOi;I; zDt;dNiA%658-7fdgGtaPEPtFT+R(b9n<9Sx=ewV<=fGtNuaUbtK^J}RH8qY?e{~$@5SExAa|ZLutc0DgP`2Pt0?ItajZnVqK8!I`>_O#A{fpVIoh1ilB^!o5VsNn(46_-Q7J^7g$9xQI;aNoH7y zIf=|Pt5R-acQy6J5V}Q0D=JnBoj$=&b#OvhvhZtlvZmsxp_+m@j=FC994i28xuqCG znME&;snUGRe2^7v+qR5VmLpV33XiqY{Pi0RD4I;Z5xohoj-=ML3+5Crf7Va_**?U~>QHG0IX z)kwJqk4-;czTp3eK8bObmD-pn7xC^%%sgD1Qv0k;qy3w1Hw^>hrK@4lHGPH+Zed!^ z>PcIQhpsFW7{^&&D0iBX%#A4ZM+)I0q^QXn%p7>3Ub-MjnF<&6=BNMm`nI=viu|_nft70imUui?ldU5{kVvMt9%@2W3+iL`f2nS zRL;J*Jg_F1P5ZhYuXkkS9lD?+TZPu>xpxQZaAf%g;hyU@SbkP<0+-D$nN7DxF0M^S zmToaVDym&xUDUT`bpcINP`$X67~ZV6PNwz_PiriX!gi~!bI@KB@e&=i9T8@_#+>h* zlVHB4W?QL28#OXtvY)+o`*dr97gZVeE-*JZroNzQ+svNr)5Nugcl(pOSsB~s?k{oI z3x1$}m+`9xpLX(J$e|fNXG4Ztel!-KyhQDKJ7aR9{p|R$X>n+phStz!Eprt~WnYjc zf?Bp|-K-5f?(k59_`_C%NY_zG-u)JKn>i9lVo4dq)XzJd6PW7_ys zE!;WmUt*U{wXUXX_;M)TncNg#GUFn1e z;xCSVNnbWF0)^CX=q zvru6Via8adC!Hv>7r~N^O%uZ{>_jnkVK<8XBi2Fe-?aBlV0Ri-3`<41QwUTglJ#hd z$_THhswhKR)O6je!l)GG#vK()ij6fY9AW4X2!pMwv!QFNonAdU7^A3KS!PTE*u zWeUDDQtK+{Gcq$%L}5>#EG{_5eMIoAwO?&fk(pR{I-oYQ#zx0vX%3Q#(9{+sADs9Q z)H8bYD^fCo@+Yxpiq}|-zO&cv!`-UBD}F3^XF?Lhb$ISP4}4S*8~GhQ@A zGFD#}8PPb4MqNOkofQ>`)6pg&Vfu;#Hkuygt+5#YC zD0H(sG39yR6)}Ssg`wCU!5tx?`-8b$l(@hhn;>T2n1ItjRI z7G3>JXi0>OOKCX?E}uo#$OtN{u1PV6ujwoN@6Z_C_~tyflk69gdzde-IQm)K{T8*CIcr`1Y36)~xEU_%tW@ z4lmUs*s!d}MR`Wx8&j^@pX2?V_*1tn+SxHoTUXkFTGQ9HQ|;+Z(9d(Hv6VV}x5XP- zdJE5=fwT|zY}A!fb6_n(_c2g;ZR>-%-H&uldS1ktyJ!9a=@+`aBf}@vvCua9v`)nptlY5lUE^n5P_bIY`7+}L z791Sem_sqz!W>M=^KOUI`3iSz%ey1y;C<%rL7Vg~_TiExZRQ@#6Y?rB%gp z*nFinpi)}_33i!;U75sXnM9~!Vib@BT~zc|P?RPt>L4;o1rNO(f<{SFg^W?9NU2O> zt4yL;G1^BV+D9?^T_Ji5IQ3jOl_Hu$9nP&x;7S4FddRnsDY%dcTgHN}Xik$qr6QJ7 z9>o1Kgj*RMod^pZh(i+qjt=Ce5kyc4$SMONE(2*&06hhQg%p5=VX!lJ=s-vsL1~o$DwP1WGLULT&@~`f zKf$gD@r{Z#_B6mJsaZc z>yP>-+WIEk`X(Ny252W1g0|J4ZJ7ZZ=b;200~_@>?U^CTRM#2ljVnQfXc+f$RV9n9Nf?zj5SetsDrG;wY3 zF`3ydFTS4{0{e_FxSIveoe3-)<53&u(HnHp8#2gkZM%erW(bANipww@IJlEBRD~B` z{|^6ChTAObM!pi)!uP1ebwrnE+1J81FJ!$!-pE!sluhg6QQtToWd@uu-h_879+h@D zAGLPKeDN$h0{Jxzgnc7=#9n^|%6l^df8DdqBFAjX?Sx|zS5~10N}wTcG7PwC;c0YU$CKw z{0N2Ncu3wxIluzT+zXmg(E?j@eiPA>Dh6~`Er&f_@*X2w1*GNkH;w~@Lyu!%wDBMJC8+qUsnC)>nz>h&|H+g*~R;%UWz{zX(Q)-!@s{&I^y2jo4X*u7H zX3LeNgnx_ET|PBx<3c=o>6tApmS5q+*_+&4yGLEsg@2DG=ltyMw8x9AKzI3C2&ub! zn+C&Bz!_LK+wY~H9=ki#|4B|=+5H>Gvq!tGc&jQb&hq1-ub8Onx2{ZmZgpKh1O2K+KNYuA3Pp!}Qn`n51+Y!n|X zWNyVu|6t&}5aV^hf@ikveJ9K%5#xGF$(Q5K3T%98f-YiDRnz8t(kh;s3EY7hU zKh1-YT1{>~Ux07S=sI&y1ICE=GRAa^B+j%exBXNV)-T!;J@ap4D8u*wY_v&3e9A56 zox5Q~d{~K)qGXcx>(gPH&6WZk@15eppMR?!c3$qa!0*FRG(KG5%JE7mq_DQJE@M#1 z;2$CdBBK7NLrYq%7r`wbbApn9*2DApWpl%JJiH#(>V9IsDm!MgmMD&CcQUt(*uab_ zZMZljKUaOR?NHDZIx`KDM)rr9=GjSb`Q!z-d*>A8=U$h=igNX6F1RsL=dpvu@_TiT z62U{nJAV?v#0m$`vU%azyOQ0!eBOh$;z>jJ6J{yn*R9b?5fsat&5sLrqm7DNdxlN^ zR1J%<*6J5^3+It}fv`@xJ(P(nwJfG;$L**Oju1c3)x+km{jKm8GxpQ$T9do5$>iUN zyoRD-2%c_xPW#frcQrbixnJ)}f7aI)l$C3mvR_S4-cIrj5OQ z+SPYrBy(IIao0D;kGI;LLAUF>TU`_bbA|b!Us~EM$HSR;58w$}D7Xvss03 zT7`@TDQ_yyzsxc@Eqwi4-$3RhajCXlYl`=yo%)P?_Sf`o=H~a`WVMwH@4Dl+7ysvO z!*jB}6OKgsJFi536t;t_KbRYEGwM|1Kj411B!DCT{(6v?zqRb|<$1AHv$^sJ(3eNB z__==m_U0Hbrz875!t*hul^40xpGxAqCs1|BakqcaIo{D%?{)cUH(n3AFSUvN)?~i3 zh7t&lnFEi2>uYOk@Mn3PrbYgoahAN~Jh_H4Zt_n`-ZJy?AtqxLf&hU#w+!>`;w7UC@c`}oit*3Xg-ew;OOh4w2v^C5+B}}v_PQ&ay zE7J=_4h7`iB&ZdJ)_N4DQPPwtOV!*ax3ICxT`N`364TH&t}gJPo+M7x>6`2e4%DP& zr6UPvNJ%@jk`YO+gCNIe_o_oNqMN!3|B&8an1`p~o6z8~TFeM2t*~6+%VPVdE0po0 zua=n(ZV(({%3AVXw@{3;Us}G?0L@3nKr7#PC?+)oPF2?)-uqqsYO=ZSeEpwfKb9}1 z$2<8y)dm;tH{R6U5PYv&l_ks{1p{i|OaY-zlbL+a2Va>h~kUE`7$RyXNYt8zPLn+5T;_Q`bw$LF;7L zbovp_B9W`!W1#jWocVX*TI4B010&W98xv%KKnH=z7=6Uov-7Bdfk0*dHxR z_8y#vrTs{0T{jvBuZC?>i*aIr6BByA>tVl}j{>79T@N3}w|7Nv7RFeM>cz~@a{)I4 z0`Ux;u(#E0=rN;v>z49*n;+3rNs^!23dVPrG|?3`rk+2%&+{{IZ4bGNDPQzPHJz4H zKC-iu)gN|Zb-(UCLw#ib26p7O%@eqMUTs(G=w)NMXh$+i?XHOzn|(Z?3? ztL}QlkqLq&1ylAGyJ^i$Yk-O zoAg(!>S6W2fs5$=)~g4bhP19{@5$Tbbq**RsUv5TB~ungB`5Ff2J#j$%kcGoY15tW zZ!3Q%5WD_(Ya*X<`_C1#99=%*d$j7G*-U09pT+!XzT(aC88|Np+54>bUTR>M#++6@ zZ>=+pR*;xZ=L%QqG_x$5lsw*R;b#D7?bf}$ubI()AxNS;!RvK3ruc5WoTQoV%Nq{n zri7WWr&;EiF>#%#|8+foopxb)C|&Nq`JDUl6N&pv|NYZ7;wgVs+XbeEvek}1C>6(Dp5jeu@ z+`$wQfut&8^eiP%*IF>MvO=aR4k7;`jOuY9JzQlISI0QSD`0 znI7v~7}Qu^=~>WRUKm}SR9FGRqo%&DK&v$XT{^CQrn zyDdl%UK*ZSzw&4${!MgrGIth^l$v$*G51<~6FP)&5}&u^Yoq0J!F^ZoQb6Br>tF5H zI(a+*R+2J3{V83J?gZf;$?R*T#&~B#qx0!ktvFbB#%1&=RX(5Wvw8nTTVwCrP-Vb) zccRS^qY-Z<@36vtRUxN6^*G-r*3>zCx)gba`yshb|F@Uzet1p4{bceaD_NUClwL*5 zPL3Eh1arRI*MIx&M)Pog1it%EYDw6V+K`@!%91)24U>#gskj(|r5wWBFm~?K zm?xmRaj%InKF^}TzWgLP5bWoXhL4+ z4}rC)oB63vy|g^+%l#icU5BK9+0Gp6AKYD(t+eWu(cBIb+tbz~b1wZZxYKxHfpLrftL@sOqPWhumTD@J zm}=CAj1)fw}f1f3!R2?%et2d)?pnxc3jvVh8*3K3VEM zRl&#%|9G3STzPY+)%Fv_xGNa3} z`&Q?|RiB49PwU$KYt?SO=e$$b5Oe#ZC;KD6{q#F>`(0hnzKs)iL@B)vChYmHw)jN8 zZf1Jri2WJns^0he(En(+vT0LZ=&`cXwMoaqS6)2QGbgrJ$ohor=1x;Dj*4BrU|nUG z#V3b<+)KQql)X58>B+y%ef0XYEBUj!)>OZLL>ExG?8M8Z=bW>Otflzw(arZa_jQEz z&oP%f|1fn&LcisGf{*=d{`M}hFHQ(L6jT=U*P!H}rrLFT#QdIJyS$ZK+T)doPDKlc zFH037o$Dsd4?MkMf^PiMwG&s2Tl%}rbH|_^B1GFq(w}|)Iw*6f@xEc!GX3@bi^jBU zKONUv_0?^|OSfK)3EukiGV6rd>yNdj9p9L@X-Vl_`z+a(_T=AN9!2$cZduvXFyc$y z!|qM)`q#!@Yh7G5tmK;M@vNlb6$3X$g+CsbRC>8Ms-(I402+L6aBy|>Atf0 zfak>Zli7~@S@!0&0}j_6IliVaY}?r};SJHT=N>rfUR@YGe_joUJiB2)k9W7C2Tgr; zx1`OKKK*CQZ*Bza-fLH_L;rDTRo<}m7J0ht$$hdMt$9=dozn0zceJh#PH)UsH(O2`v1$4XlQO)9CG@5^U zsauIry7|K2Kj_-EPsKOqYc8A%4Gf7u@uLgoTnlLm`Mvc-`d(exLF?6$=@rFk6`^1L z>(rEq`bVFn^yt?ZeJ8as>&Tz`xKroMK2pDJO>p;(d!rt&X}+ufA}n{v`PS-7-KJKJ zUlN&Db$NHHvo$f`FgzQuRO#`l`@>v!recg~raUopDeQP+6t zT0N)y4*UG)0cnxa*c)s?ru`PG*00}cCTzL_*{e8uHkV`@h>@7s7Xr|@=il{qiB zb@89hHZ46^P}s2g!-BhedS6)i*1=t_ou?O(Ue=bf)$UO(b*}{9IJ*1;YtBz%FRthx zJ$T`y-|A{w!ynjl>k5l@hELyCzB+5@-d&+HuJt_?apuaf_ws)ES?{I|_ZJ+^3CJIP zW%8}a%HCHF%(+)E+BW-(hvgIAyFPZ?kSVo`-UtZjw8wpKe4yE3a(i56x^#baN=#>`~YR}6{-&0-c2^YDPiL~2KDXy* zb5`hHM?ldqnh06b1(<=yWkkee*gSUgp!C!P07McIGs0;~ zGJ4E|l47Y21xS!UNfIH91ZW@t10!M*ay^r%@97yMQWAA($*IYS8M?HQDT(P3ZR?^g zf3H9W2uMJcWS~X@=v5FO@5}XRF0&;N2oOnu!2c0sNy3s~5&SeL3EsDY!$(6%q4=_o zpN0XDX~*e61N0Ej%SvoN=)ebw2(VgkrV>Tr_0bS$`4q%jw#Ej)S`1XWG@ehyH0w38glK)i zgx3cYh4mSYtSWMLiG(?vRRFaZU?NJ|wLwCV7C#zGk*5L9E)s#NjU`21(PDsTd2=)s z6Rpn}Kv}B~Q?puMD2=ty4!B@Q_gpOvV{W}zL|lw8tvC)V3O?r_f?OV81i7_gge1;C z`d9SYT*DM-Z7eaZL2kWN9nU9md5@9I zFi?3uDDixV%Rh{t)32~7bMc_z7sA&E4F_*S;d&y*D&TFXd^|*e zxx5k~*I%#*xqe0S6l-f0i&*9Sqb-}mK$IZopD6KlB+4T1AEEoV20!sR{fd?)Z$ssC zO;q`{Nq}FQg!nq58yi>=G%wDCYd0yz2LDi<)W|-N@k)9^q9;3_S SJxi)Io?>8FSaRB%f&T$%%mRk7L>ihrC%-lOS0a+@P{C>{w z&Yby{^PTVe&Uen7nK^Urd6hL)QcB@$nkW#23?YKzav{pF4+S^{AZh8Kp8t^8Q?`F< zQ0&>czifeMElcpeeCmSA50)*Jjb`rL#x?wT+fJ^OE;oNJUCt{c@kDK<=bJ1oj!qCvunPujjYiR&KsT ze|!%dAHpA#;Ezd_%$Ux!KR%pSDL&(RU<|lzVj9HbR`_-}SfqXJk$H zh(8T$oUZXG{xq~Pd*p}@3{F-M$%*N8!10~F~OGiye;qNyJH$mg9bwzYe&6! z|Kkcf4SEf2yb|(0yuT#tMabLpSoi#W4;fW~s%ylL|Du=89HH+?5h7pYl@0&oZ`(e} ztI~E&7&&cZ`p6%ZdtNMREp5HD{KFmNt7H|zZunmKculphHE&O<=4EwY03T z@q@=j?&Q;Cfxa`fP3)0U-<95~m1jLEbG=pF^Cwi(TSf4nC-`E5d<89TzOS_wXBy5D zTc0%-JgMVs%po~S9vpF6Myn_HwS)zf{c=X@xj55ub)3CMDY+S^pZ4MR^Nn4Zt?w#0 zr?G65EcEX@>%L6ndspS#`*LP$N5Z?WXu0q07C$s{=j=kODD&8DN3|QACt+usDtXX% zh%$9mrVr8JHy#hU{@Cfk<;PZ*Y`De8m=*%;!GlWP` zCz(PdCX4FKNq*fsBT)#MCUx&g-VA@LInNZrn*na!>qlEObHzj?TD~Cs1-}sbSV2La zDZo^x&Pq8YWoF7B7p0u)*Am}e1iDCe%JO?yXr>ZlfIG@tovNXfL_f%BG9C8&c)AQY zPl^)WPan-ukKC!|TZ_!yi&BM18A=s0qhf^!Sla3_ZIcSXlLHHkVr5g5`BZ;(YME&j zpFmrplxm3f_QOzLk^1TO9G=qY1C&PpEi+0}Emiy$Kwr45NISR{Q5y!>S7uU5U;w^4 zHHd2R9suvi@*R*yX(|2uf?Di{p{J6jh*DL>o~f!j1x5&nYizpEHU-j?MFIjbK}*oR z9ouaiQlTeH#Q-WUSGaWo#_ZSW}*{@ko@Tb-%%0B1JG=Nj*aA(00XW zw3%`U$WsC~ZPhP4Lfb|oV+({}5B|~?qFl61YHbk-BMv9&z6BxG8%CdGn4UZ!7Zt z?@{EX?{7ukkC68)oTHE4s$F$W&Z`}SLjC& zVc0x!-mHeY`Uy4Fi%t(N>uqaq>s=qLi!=kbaPp*(O$phQkfL<0=v~_s2{%-Pm-nq~ zsA_NOX|3sMY6(Xg)R?fLuB$K79PVkbkfEx!b^sOOHKFRx6~)b>dTwoS?xMQt;Jk_R zii(2sx;nbS5ec3#y?9bd@zmn!Q)iY=Jah7-;EJwDaBl5F!6;Ch*4)|@5z?#mb@sHa z>gy2N7!gC%wQUFk;}PE1kgpE>O)JANtxNn|CT`WFC23Jp2f0MzlhVf2 zukR+Ng_7*jdYdA>b6Z*>;hr8)T3r;YjCNv{K)hXMcjD_(Rz{k7!e=zK_fcAJ;yx*R zY^}91>x9?|R}I3t^|&4R7ucW~xkb{@e}w>+;$C=K7wteFw}7>y7ZHC{F`EpHar+?j zXsot%_98GnSJ9Lx(vD8gR$>*05hF5|gDRlC3A)YcZvp28noO#ynOnCYRKBe4Y~cWv zwY7_DLrdlh&8Aw2Gi#R!-NwvYyl_cPWqqaa*ogY-g_Vn!)eA!;cSADu2&9Mz zQ*U1nh7GARwd9mO=r<$OEB;&h(sJ??h%Ta6{7Cw;N9HSd+7!U=NMGK_eDQk~h^o%C zm@g8uyl=&dF#72H z>9aS&RU3dySlk_sH1)Q1b%yMCl4Dax=OTv?-xzexqvLR29=rtCXCJgzF>*u1# z)00yevuwZ#Z9;xAA%St4xB>7A=zAGtBqt;H4g&q@E;&Ndz|p3{|A>B=mA_If^`W( zeAn>;yC`cgWBXx~k)r(YG6+r%6OA)A8j+i_$1*DSg2SxrY>77iO_NR`J`J)D;JGc1 z=N=t&o}<@zlb+@kVj^0Jik~N7#=O>W^Qt(!N^fa||OxqFej1CFq<3lmMmW;8V!e>Rk-ijJ56TsAh{J8FyB7vG8M4RF3I74QSvz-O zxw@1&w23P0pC`?7{cq&_)5!h@qT=h1vd(BG(Zuep4L7yS>+0+5<%MyVOd3iG?jK08 zVqureQdfmCAQPeyvPJb_j*8osN17t*?fbZ% z-j2zWR+N^k3$5Ud-%*W?UqT)ALjTxE*B%@9(I9)Eo4OYquSl6zTUl3$>u4H}Qlu^d z57F-NuMNb;zi|jP{6{UYXo99aOHXQFMVN@c}&Y zf#Z>(13XgR)VZqEcFS#^z)8w2Z^3dWf7C7C^;m&oA`XR^KS-#lEV3hJlF-&$c#vWZT^Q|TwFgYN49yqdC{*2(M6@O@Z|ik>sO`SMP-dJAy!DW2F!oUN6yLoq z9fJE;+go`2;#`C0wTGJ`^p}ut_{<@)8^$_W;=J^RZ*&1eY^(A{${>v$dV+5g6Y+}J z@Y%7$`90Q%1hHe^dB}_W_J!?c7#z)}Znm5Nx!9jNf|sy|luL#TQkT#jd`bEXxMaQK zl3{L_sJ`0q%U%9JuIii;(2F^F6XX1HkL{OiaNw#xNc}>e;2uAC6=o5?Yx~955cSKM zO>MnZU6Gomp5Ew_VIe>A2gWJybij7Lb~fwVI>KFjcnI{7f6@##pu0hd_R$~vtv>oW zApK9u4L|RJ3ZQMixhWXo$mD2$cRRRcAyCzM=5!E#57r)sGbYJvspW=tz= z;B=b0^*z1ej-H0fj^*K&7R-ymcz)ILaA$LCaC&h`LsO)qVcx>J>beHo{018QPY7%4 zY;I^)LO$cEL$T_Ki`C;-Kh0f{aHzRsaxp4s$IiR1HQq|HQB{4N%~9+>JT|tvv!^!_ zMgNCUQPZ|OG_R|3Mcc~IqOM3sQ#**-m9M;Wqmis=72y?4eeJzHQS=813Xj@o>1*zd zqT3Xq8ei4$KswTfDN)Ta#tZeH-WK4a@-EWW zAs)JbTN!F^>%iSclr(F-dchEd+t;sYYLAhBW<;O)gGELeNF4b@7`q~u3NHY>jaH?e~_4&Ny#Pm7d z08#y?1f6bBeSe|hA4&s8>sy8!>98f~5T|}!W*Npwqm3+mv(HFNf!%u6=+UE%gdoKE zM;k^_;b^~~u30}^H$gHI^i9LHbX4qJCv3%XA_F}0E}nP~P&`G$WY!lWoGbHoUmF;cHdVKfF1 zo2f=Zn&F={Vnk+U+K9|ynT9XRNSFx>cr(*7M*ySiKFj3)I$=%b%W?$R|H9;~5k|hx zNJ=vFd8j-+E7d5{*QFT4(D+b+!BpV10QyHMeQFfLvCQYA82i=vu^h$350}K}!sB61)zFli0%&z3SaY`Iu!n6%-1J+ zbny8KH2y#v=lJ-k6FfTj9vd28r(-C`v4wt8AZQrF@>6qj5j1j~3X~Jw2)#=ag5i{PQd-bR$QzoIt7Alm0ozDr(6cAFL41V@gTCqu7y;g)jmz*GMm9#?T881# z@jx{p8(1?#-Tgdxf*Zp(oiJt>jM4Q#AlZ;Z2SwZF`$*`0fge$YN=U-pH124!vy4PK z-^dsgM)2h!jJV@djYv{YLQdQcif;*F#6B8`x!qKKe{nJU&N`-@I+UX zug;XBa43U}`(~A%Y@Msu`J{1k)5j`!GbRgK8(y`FQP`!ZXF_spixHQ78u5&QM9Od% zOG!|12vh4yv$=rjBQ~DtW7c^A(t_utbOKpJL-%H$+0a)TsDwMHh0M{D|mA%Q?A@WjhqdS?8S@NVG9$IV;hM< z?C>s=fka|ZSvabVT3N#C2MUW3YX=hZqdAvZqPV1&~e+YaRqiM&S286kUXxj zkW4lxB#&DxB$EpilE;TFBooGSj=v3`&>paWhFmW;k zyA;cqkR01coP-^cnG7USj1;v@4o0jSNDPAA5?gytI=6J?4e zS9z9R#rltK={R#o4hala)ISrF<2T1cT-1WM_oU*XN}P~Sqmkb&gSV~39Z1H(XykWf zFrA^`SjR{UX*6nz3CXdI1-UF7uP8i{%@y{MQ2LhsQQre|5_Uba=I$jXP?nbZ=ej#l2KOwLe99x26DK@?MBp_s%= zv;vrMh#X87V7HEokOIlXDv(BTh&%Ws$$c`3oxi%BE)*hViTVMl39 z`bVsazY&U^#~^laGRebk9cd(xOe`ll%6trl+%znI!7WEo z^Kd;fZE9={2GU04-e!iTx@{E8qZOL0ZN z{32%&c1`49Ai&A>136X6))!G^x2&Cvz&JgQ-TkEy`Nm?`#Fi|qh7iXW{}~K9Eraet zrSTzBOo7-ZATh2VA+q=dT8u09X#}~(Vb{b9h>xuPT<&S7WSyW`-$XEeF^=_s6X= z!zoBy4Cie$c?(kx4CCj|Xyg`#6KA#qQ-JC17KZamehbX*BnQLS&;@YXa5P7Yhi`aW zfSHM}`Ya3|YuyA)chJG`&14oPn(R$?Fnpp^56sG32g5gOT)g4#Ar9tsVA5djFVTc7 z$$aO-#TDL0Q?W37iE<4vpP)5Z7`}zr1~0eikqnAxbR_ zpEzF)3_k&|FucO=0Ome)8Wx75vkdwe{mcePmR#gG2$hA#%8-{rU-9mWs={kd!+u?r)1{I<9?c~4O#0=DlyF&*{hTF zydgaIdCYSIC(pnAv};Nd5`De1sxL+XQmy<1Hw%pwFHb+bf|qClFJR>Mr=?8sC;B|9 z?8}};*?L05x5f;~%<~!g+Pnuvf`0AO(hx=Fu)^WVn&F?b#L7GYt6R8If=eC zx>kJ4D8z@laStk87;^F-ho{S%@J>k6wELh;f#rp}sfn3YI2_ZJs*R0-GgfRY`l{(E zcwgUQq@VJFu`zh9u`z4mp&?%%d10U~i@s@kLSb`5#SQvq!$16b-{#;Aconi?($v%5 zF;kYlN$V!QO52P+vo|2k^D6GoY8>{Q8Cd$J*Au0!9skCc*Sg?7GZc^+zZm*oKEw28 zulB9e*H7Q8n(mZdY=wt+nrb>T91&V1JOFu%Gte?CHn!KmNWaWrt^10;egn*qYPA|wx$G$q*SxSMMroS)+>fzV${1zcGe4$vDQ0rTYQrR04jUiBEg=AGvSG+m#VIpzs{oiWNxEu88DI_F!yO~#sO6V1&PcbFTqpGows z)-_YlZahaR$bMV7o*g&0L%4pN3OsSwMN)dD((R6m*fJ+(Z#KIFMdxgT56tdqA2vah zrdBOh(s>c!Mu3;pLzFTW6SC16J&98EY*osmsuVMObD~-bRHk_SL!Rf;7pdeaAF~jR z7Z+}aC?Qu9rY2IJz6fi?ORrCV;v#7#WdED0b-at-P}o2Lqrs(%)c*mOMy{7!T;Ms| zvXWOZWhF0T+z4=Ba0neNEA_oGEBExXGL2TQR}v{tS;;~)ULLs}q6F%X=K442Z&Lri zSo$aWwjc&J)J|shk;=yOOSehfP=ROLHsuNMfTQFJ6e86s4XSWngf(9IxE-SKGcj~U zBmK@cG}2U6i8pRz7$=zN(_S_<4qK$3G;}?JSXzCo&ug4#B7`RnIs4+gOw(Mt8-1!x z17&jnt!%X}>q{?1(Ne92pj6^0;BZx{)5Hk0taqT&Buk~Y9hC~F>p8fB>~|@YpcIl5 ze|+|2)3fyTf$H>7ooz}TjzE+;9D-;Z32-}vhZZY!67IYhYvo(&eD`A8Lxt0gjU#UA zr_2U;hsq@OQ)V4~(^Fq^CyJEn^M9oZ$3BPanI27y)im!7mq>ZLv~;=dl4xzE{Ex9= z-a5=e$$H+UQb1LUHZe0)eA44F@A&Aq%>iw}?NjfbcX|vD?1lj5LJir0epA9001KIRZS4qS5*3n&$f>iq5h+zqeSlo?_-?Z!tFo ziV}UBc%kWrEUCT#SJF9}JPhd=`r*Rrzw8PrvolqDx%djJ28Lx{@6*^~D1UQprB9o3 zFD~P!Buu$?7OppIbtC8dR+${GsxmoVJ?t`*?vIsuPkfofYgp!5mO1SnlsPkT+C4LT zc9~p1OH<2bt9WC-pg9Fo3*P)3qBg&%VaZ1=`GW1Z)>&cqv8_Nln?U+MP={VK3BAOS z8+Dn`y>#@`c*x_?H<{^$`iu~i^O~f=KbvnKnm=mPqxJ% zY#d&LVH)h4c8^bwGj6Fo`IRqdVn{Tv{=^m19Fu(w&EHIyt2zqT;u``JHKatrRTX#m z*4wV)5Li=dfh+&8S2$Atgfvm2X@PIUKk1f#uHSAqOXZ)B_0li zqmwUViSCBVGqId`!{WZ)?!MlJ#mm1OT@<}5FL*qQb$!@&oJ;OM3mwHz=sIq;SFQ_N zOVk%*VFZ*sp`)q$xD{U0*3)a3j$&DQdly#sR@3y`!ad{LurO#F)&Sk0mP#JqfzLs) zZvOa4xTP(E;OQC9Ro=0Pa?kiR;m&Y4(lfrVv#%%I5?X=v=ecTVk0mm+0;}o&E3AS! zw2GgDwyiw&3e-16R)%|v+nQIf)XuI@B;3)pCXDl*a7SBfS5GfKb+ss#lh=oOu;dIr ziJmY4-ioXb@<}&WwxTZ0_n%o}6_oK0QBlFMwi?_|FlJLBA25Zl?a!q5uCk zz}po;_3sc>r6p&D7FG~mR#%Dtil|spSzEniL8zj(`i#oj45@`4tH;(makAUiTI7 zL~eC1J)1voc!%}xGx6Q*=MC>rOMx8UhBsgUc%rqwxX&j0Yx{W{JiLE^`n(Mu*>XH+ zgCZ2NR`J0CGF)z5aQzo`^IF`~iZy0>o0f~>Xu7_G@RHJCqzkhVc`Q~#pHS2C<&p3j z2g0oZ{)NgWwec^i>~mhiqvu`C&S^(evzx2CZ#jklSU}d!6=~|^aP%k=mAHY@ zI3S)BPn#6SIoS=xk>V&*+-y_bz%(~7-3`oe12X||q1XDRr^H)F~<(WycTa!m{x08;}uohn%KfE25JN-q193~CP3;&R2|oRh^lck|E) z2Tu#sc`T=LfrXnSig9nzJHtvslkIehotE14P^m*HjgqFKP!2DLTM;I7E0lcxZI)mXebTEheK(I@nFr_a%MBd z<|rxm#}n1urT%y#T{z4la?KAqIDw{F(vhPo`iBtl8C>`{eru`HcwQS9%;zPfSl;0tOL6y zMn0fdV&nrlBt|}=cLp*ak7*;yptTvq^Sb`eG@9LSv>Fb{QPqK)uc5eRP}S#3{cGSjCRs- z|10HO;Y>M3)Qx3g9+Z`CkKk zvkSfs@HH;@Ho&jC;QIh$8TzO`j{~0LqW=sq+C`MU6Yx?O{2E}ysG{pQdmV7G4U_Um zz?>l~)aDT%0Cu;JzXL9}%O^jVNJET7`I7;2W~`GRb3()~5tf8mUSU6YE?{S4ygv%q zX>Y9mX91sO=O_Fs;071W|1WEF!TSNXxM2R78vbr9$TFCJIN){{TnM-t69!0U{Z|3b zbirQ&{5x0uVXbTaXIhm1Qow(4!D##9yDs=K!1znHDF4fVf98VU2E5Y+e+2j&E;t>N zXYrSB(fkE~o&JXQ@B;^Y0UD)u1IFJuMPbg{z0Czb0{Cth{C|L7aKZde?7v-bKH!}$ zcmd$iE_fy2$u9UJz~fx-ZGb1b;GY0q?1Fy}c&Q84&|%iO;9S60xcpxX_(m6e3ShT> zjBls^cH;Z1u6SGkerG74Y|6{QM&b zw5e$R^?*4q%8|$R#Ch2c%=X0DKMu_H#3?xr%=W|?*$#XGYDzzUN8@{3zgwfXAXh!cPHS2KWgZeim>k`UB1a zB>g48^8n}B@NWT!0dvwT>2Cu*1^(i90EFKIydJQVpMRIYx#Mt?q7MO#J~IlB1^n+W zxD@aWE_g0rPU@Xu=jUgpoL@Y}hQok|!G8|C1u$oe*Vy#!fUg0J?=V#Pw*uxgc7&~h z9|ZhEz>a-C0sNW^eiblheDhlf+P4?*YQ%S=4G+PrW2b+lzfS_p@xaePPlM-6Z5SZF zPBcV0;F}Dmehg6$nBPiR^!Gmr_k-5~Mm(r375%Hk8Es`9bAJ&B?xWM?hSRc z=+#uhwUMtJyIbB*FxTg6c`hcKzNjBxeJTFFZ^S^pbNcZ$oGwHs=2^QpmKVnEF8BE} zF-~(c+4SCie0L#mTig|7)3^5HOU1`HZvTO-%Db{3-><-TnOhN?{+)h&E%>ywE*VJI i#%vE@cV~ZO75Zn+mvU{SKZf1ScNXFglVsyI(*GZwlZI&k literal 46076 zcmeHw349#Im3MXbbkC(@bo!8u$Fgio*p?+(J|M8z)?vxW2a+!mCF8L)vJ~rLW@KAF zz<_PSkw7?pfdm$_1Y!atki{Fai$6oM5GR3P$0TGEzTn*)Kwt?W1neZ>@Bgpvp6QW{ zug&5}U-~ya)vsRFyXw{J>h9{UD{2~Q6-5#Drix-gsKX_K7d$G&7VP;#=#?TUhzkJw z@{vHUuU&m>j+%D(5JorHbI{$Z8(V#gSR!KaY-Y zpZD(j(X6@SS6A!}>@jnHf_mAgw_VnQ_ycM^BWwLx)(RwQ?M1DugD*6Y!{9n!OQ|zw z&wUfW->|x4o4anGm}qkS66#Mr`0cvjYVNy0B`9{ubS_e}%(W+md(0Qt{Ttqk6IHz&$AOJIHqrv^uiKU7J=5qu*qfSPL4X4t{k}F*qoqc=ZKV z%}*Si_wEPlUB#Y*kB<>I1=GYG9t*ShXi0nd+>+IA@9o{=s!fM=$*D@pa{J;kNvCY} zM62}dqvhcK0l1g1?nMo~Hp8lME^6c+yrJP*=*OKpQu

=I8;k_wJqc+FSFUtP*b> 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

HX4VqzWE@`_`O2N6;3XatO_EPPWHo#(4 zWT~p_X$TO=lkA_8isu^HC9}OgmmVAYw&t4gLa;MsQ%oVQz|2o>l!(3UB;GJb6$YH|rS0&Bd@0ONx3d-SI$yyT z^(zdc;9_G_#*~YW=KL^cvsdUY+o1Qtwwjo6qAt>^!Qi(Uy~66ipl5|ytdBm)EVjUvg>vv8139aM$^HlH^FE;8U2%_ zN}I`kOhzizQf-r-#FXREzg02*rX7l=DjuJ9!w$trE4aES$Lj;HS?{ts%OEPezuhWx zbh}xmon?Ah#`WW|s?c1b@O6|?Naq!lQ46m2`Yt!FD7iEYDOI_?B`u&H!<)F=2r&4a zM8-*YR1W9A3+B)Yq}}h3<}eDjS~ef!@#j9vQH&z#$?i27;Vi-FBpjfjR~2LT*j9KH zR&W24!?)(iUP z5sS5n`Tgmtu1x?KgxN^j#Fmx4 zCq?-SM3JGPWfVMx-&j4>7P}Vb{#mN(djx7Mv4)l#1XdWG$zo>5=^+&kq=8|5oZ*$Jm4@%WJ zn@n~R4PV+iRjp&Hn53%yYd)hW_baB>SAWK8hU&{QU(`3v{5j^NjeOS88X3|f)#-Vm z(usSMs`%(KTQk(U`)58}b#XEuxtlUD%{2Fb*Y{~nopZbC!<-Z*#qGg)<5b0k506sS zw8yVil#iLxK6Y(FT77fgeOh6PsFq06b3gG?N#;P2yuK)Wc&FLRIgd+OQ}{TRdr#SgbMvimX&1c%DZ106%p8lyt7nKB(0{K+nwqz*f*| zK#||7lp;;Q=Z8*Jq(gAyg{qqI@O6rEp()b?*U?0p;YH+0E4V$eFEzp$D!TpRtb-HR zR(!myxy(I&q(k1(4tYQ6Gkktuz?WBld)X6)f7Zhe*>w}AZ_T~mSl?J<_^THV#G1J3 z-Ggfa(`alMgi&>zi83_WV@2a3z9Os0Z$V0Xycj%nd+dZgE>P9X_h64Q(;k12_OK#x z{?Ys&ICRc~&R1k8vW-4Ds3ZGr?5ddy=dXA@?|H*lVmNel0e^Xh>h(cz^l4?`$Ebkp z(|1S}IIBvkP*r&9DuiVp4LotZq6AG19>3ml`o;`6{hxE6%iECo!i8TpT(cf_=)!Xf z`eRv+G4Yb$7=2yq9g;fyt*h}6FRT^$4MKS;-!}m;wv(S=U8Z#K$PmR7 zY@lGPNt4r)B+VC#PL-yns@Y#9&GC}v{Wi_Cf~`HEp~^*gB~AGWZDbMPRpCkGt;7&q zRdY@jQgfcRhFKFm{=$ySBumcZku0ZA28`_#SZQB`xl4|URWq&m-7QQXHUZs-LI z5yzt?y*bZVOec})8p(lEZ6woA6ic2bYme#jYAx?oFe_IivtN;!HqOW@xO_w({QBH@ zzov}bfXg$Zx8Si2k_#ukNG`XOoDvs&s}_&#^B?@IqAV~~`pReNjk*Dqw8{F`$+!8m ztj&g6-GqJs?Jg@gq$!3`eSxvD`eAupma~_)I2HMEFUk6s=bjSl$8L`t^HQ&g4LA}7d=DYiIRLpIRDEJ}* z^yZ@1Nq=kgZl7BDh}XC2WA4gF7TiaT^vraVCueO)o)=9!4W6UEm*n|$D$hx;ktgD# zPo4EO@I22u>uWV%v3PzGJXE=6F?lA=5Cr&0|0La^5F-p#9eu}*xX)o)^R^qIujPjm z=!Yf)PIHh9?2+B6Gr)yR!JZ_8M;#1`$N&=u;0F|zgEl#IRB5_|E+^4pjVjVrQA8G5 z0gn&&Wh4s@vw4Fe`vZo<+`GL#LyofD9-f1}#jhBf3Jx+F=HAVGGphSGYg>&mB^m>_ z(OJ?~bPfgx=lmNb_!QW)WkDYj27TFey^$8ZdE?0QBJ%|IjnK^Zi z9IR@J4~5h;)CLz2(A>>gzOk5Bt;j$aZthN-Xo-jITKN_Qji*tod|ewdkJ0 z;Mo_(@ga-933&#-*$ttl^_*op)ohHItACf`)3K0eT35LDEQ{385sOO(b&|! z?!H*0HPnXnzRg9{CCN}5mM{O?(G^NkSAKz~W9``zYgstDHWDxGXlbJ?-94dbq^oCr z1jn&RS4VqKjO)&u7_&k8Los~16Q3)ZHVw2?$(ZQ_l2Du@i_V(yuG*Y!m6HVJhE}x zq8Y(y%xXi{;+}3C)}O6jP+HoIU-A=dDc^N~I)5{QIo$(tEnzo|_VjijVc*>lYVGe1 zcXhOc7&DQHFc@l?G6i5~N7BN7g|DjMqV}whJ)EceA=teg;e9!=Th;;Lm^T$9X{@&TU|K8aLf9mxtpUy)e^V6jG@Mbg| z?HBxRro2H>8f(Y5Ipg6qqBN2AcM)D%9*p*2qAUMP<$x~~Ub7||S#LwQ{_2X@Ku335 zq8JAwc0Lw6whz0)EzVNWa5q={Eag`^P4Z?v>-xe(MB}&~jC5k6ewQeUi=x(#Y+Q2U zF}o{+CQbhz!J2lv%ri2aOD7a<^Xus0C@HQc+LR$ zJiz9M#E-kUo@~_<;VJ)#@YLr-cT=yc zr}7r^xcSKitzrYKI8hE$ks3)kisL)xlC!yf#fKx3R8S+iI!$T?M}A8A;}N&=lI5)H zM0;gW2W1PBREnND7|-=YKO{HFWzd3Gjv9k;C#sipvD5|FtPe@ckk_{+iW{Fe|5Qje zO$oSi5KLB1Jjpv@cx(~`@g#tnNdVQ7KuR4u`q@!&wiN}>vr@!388t%)g4Tf*M?>Xy z1TD9Tl-n`1e3o6%jRXssTrR=U>)918ygV%?mK}GLNr?>3!pYtc zv$CyjBA3-QDGcaRspXOc*qvcEM41#4siD!Tv@+ZgukDF8gk$j~y^*MVNH7>By&#F_ zU27o~7Kt&DaEyn9IjRv&7$CtX>N$AjUy9Q@oVbDCf=?-7=7ji-`B1c{E5uuI^V+*F zT~aoC&Z2hA;T*j2X)ETATifrCac(}R5}O$=f%)8Gq&4S`7~=Vcy^SZ#Z?@Yo%O6R= zddfV0m-zj$&pYsV|3Q4wtSJA9FM>c{x9W3JGuJ6RVC z2mDLG#SZunfTucO4Uf{x9B>ZcN(Vdv@Eiv`1Mme7xC-zd)zqKu+X8r<1HKyY6%P1b zz|c8J8?gL$0N>((e+l>t4j2=s#aA5g1i%kE;3~j>w)~s)Rs;U714dhlwV17E^ScG` zr4IOOfZ@Xl{I>yvX9E5?U_8xF!0!Nl3iCDuHu6iu%OT%$z(s)n(*e%`{JH~f0Q_qQ z|2DuA9Qy18{Lc>joq!*9z~2Bo-9hh%fX6#vF1S9$0UHPgn;q~(z*8Lh&IBBC=vM=H zr2}3LIO2dKfY&-ylFlIp|>~$yLI~?+GZSo}!diN;Fc*Xw1{x->~ zPYnBKzyWhXY`#js_8|UAz-12jUqIh}hlu$912{Q%!X>y4daa}U4*}cn6tVn^fRi&T zT;ecb&heJ)fPW1zCs^C?+kiR4*@piNnA41H*oA<~xwkf)4w#c$Z8#q=XP4UWIKcd} zo(&fR<`?E{xEwI&3EJ@afcdpD8?FM(X>~T-0GMCTvf<@`?RTW8@23EB{+f+n3z$>O zY`7ONCxO{;KVW_-$cDLcIp&&h^w1?)WE+y$63dTjjtfH{T8hEEnxzmD?g zlCpdNNBaPy3k3Q8SvKGUfU_L%Yk)ClH|VqQibn{XNP`HAvU~<$%mYur{8qsN2RsFE zy#xLjV7{k>yUMcu#ei=C%y(ePKLq%DfZ>A@-U#@8z_{Ba;Tr+-J+B4}z6bCg!0=It z|0dv90P}@r(mMorBHI5}3;rG8ZvozD!EU^=R1SOF^a=rQ1&m^{{`r7+0ESyi_>+LI zci=Ave2W8rC*ZpQXItgDqU)o8(dT6SeSrB|oK5d}z=r@ATKJa%|Iq=z1DJ0`pv`3c zOf5l3_pPk~)x2jC}l+n;o~U>sw2utP;|`x=o*=#$0D0Pc$(uOt z1GnBgQ*-Pxq=QpoVq>}82`EX+k346&k$0hepo6{H^!UCFZESDPenp60v<34x8u-KB5SsT~{fH)D5}`_=W}!G>~d#D599 Pv)n593*JCV*@*vt#@cja diff --git a/tools/win/stlink/FlashLoader/0x411.stldr b/tools/win/stlink/FlashLoader/0x411.stldr index 3967e6a2f8fdaec88505157200f574b2de726df9..af4671358c6f44e52fb669135ab43929305847d5 100644 GIT binary patch literal 36832 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 literal 45232 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 literal 46076 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 diff --git a/tools/win/stlink/FlashLoader/0x413.stldr b/tools/win/stlink/FlashLoader/0x413.stldr index 54cd56591e984256a2fa6de1e594a53525a7838f..997277b68c2852006fe633523762980e4e540ac7 100644 GIT binary patch literal 38752 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

SPCNvr-M<@lmVAqRcwo2=%SBLywI(9xEO z;1B2Ch=siL!FV&)4X;Jj{`%Ik1@op~R>J3}Q9FA2hqZ9#cK9SMAflCeg5Y9U5=K8ZWMksf8bw6d z1pk1!WX!_!!FCPjld{z?MI0O(ZRpe%|yi;r|3a;K08Je%*op2N=KF#LFZ3kAUBH;5Zp8 zn;m!@@KFaY1|D?a3xGd#;Dx}**3SP@V61|-aVPLjhx~frA3N|Zz%M!Qmw{h#;KzV> zIq);U`yBWs;9ooNuYmvCf!_eeuVZn2sC^6qKj^>)mY9Cmf$5W_T@E}Mc#7G+>G-L@ z4>{VyEZ}Dxcroyk4%`g9+kr0!{(+-@uLge3fv*Stg#+IKj8#~+{$B+?=D?2u|Ji}@ zBS8#p)RzAt@B|0`Phc#qw)wvS#_tH(_zhtEjDn4i0AtywjXwgu&4CScaJ-RY^HYE? zao};l%N#flxW$3XfIscPGk_m<;2L187qRoF*LrSu;FZ8w+G6utf$w$TPGJ0VzJgRA z0Ilj}d~-2cJ54LNExZ|+)^A&wev+ORN?Q0XU|Nc3;roDT<+g<%2Bvk}7JeLACR_W}<%@T0&-9rzjG zXUzUe?RzgUR*(Bg2g2_FFK}Q5gFk#=^G5^EGV>$(BH)W0nAVhE?7+)_&%?qSEC0)Y zmpJgXz%dT_dw}OT_)h>Ya^N2WZ*bt>0FQDUKLGr)gRkKP^_l}?y*k_Lz*ynJe(S*V zfhS<4lBI7eu-n1E26(%Je-AKzZ`79G3j8Aneg*ht2Yv(i0|%y;MnCPqX~0pJq59|DF^$(v}9`zjRAN2kJ*-x1I2Q9ec5SaQ0 zt#7k1^$%KPW?||dw9?DM)IVt9m4&H)&^rSb{vq_EHwG;HGBB+=vM~KpNs|Mgsz3b> z@+g8IpMcamz-ZFGVq};Ed<1wZaKDKMfxiWO$i(!^)OVu4)2d36r(cQx2C#K}8t{JL z7fpT^FwS8NI-Y)Dgcf86 zOdJ5FRpPYjllb&Y9Q0m-Ro>me^kPD#$^RxWy{$k?zDfT3!1M}3iX`wZ;IZ&0EsG`o z>%jDy1-cE#M}emTTlTuJR-BgnZ#4N?z%-t{1e^%Z7MK_iuXU163ex)F~;^tSYx zNQxyx`QTJ%ZzT6K8-?@2yK510J}i{G4?0_$l^?D7#ni*zcHYR?=OIV5TM$T&>VRH} zqq52Wp!v!XTlOQ#<%pk+KrtOpc9P9xr?pXj#Ghow7JUG6n4d;$BsUF#Vr#2{VH;5Q z&W-r95u9>6(J_j0oKk|nFiLI!FJFC@8o6Vmd{!bj^9wBk#yWWCM*KDer(Ay{&Qney zlOKwbYsKUu$61jke^Zp)4NZ(iU+_?QcSOlO4Y@0wikSR|qU6d~;pOsS?D%e!TszjH Z{wH;I$41#dkKin32HGE1U`K4k|6dtEYj6Mn literal 48956 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 DULzi! diff --git a/tools/win/stlink/FlashLoader/0x414.stldr b/tools/win/stlink/FlashLoader/0x414.stldr index ac9e117e351107bbabd54cbf1bdd627c921eaebc..4b6729aa5a688d5458e891c4148f6f0f85bed398 100644 GIT binary patch literal 37136 zcmeHw3w#vS+4ng!JF}bJWOE}BNPtaSyUYKxXy_-gC-|DT!JolQV46-s_T z=eILwp38a8^E~G{XU@!=IeWqUnkp%!a5ha83POeuA#sHe<=BS;oC1)v3{XG!px9e} zU}{M0-F2XRp=d4l`d&PJ;r#bjESHUD-rUCW_di_w`9>Mi9_@b6QOiM^jc;3@puP7&&URAS%zU|CJs8Iu-Yc<-1-aZlM9IF9+t+2($^`Mlgi zrD?_Qydv)T$^Bx?=Z1TBXY7}21orcCFRR%9!Y!@kdqd)uMyBORm+lj#V(%>nZfOn0 z@M$spwFksKSxZYdtlc2~Btxg{*8&#*B?lhL^%N%WdbDCMCHg1{684GiTN;gfWoYlC zB4pf)qsR?uDIDI?`xUAB!7rv!HY{r(x* z(>>x(!y2b+Jc>UJZOj=tVdUi%3!fj=y6-;E-c+xg=-IjN1$|=X&cF+M_w?s(8TI@7 z-`Eq+efy~Q_fX33N4>Y_$`Qj*;xjvM{gaXW$h$`BFP`_>@}9Bf{c=xSgK5xUXk+cD z=kI@1VW&Z_p^aBV-uw5LWV1$Dp<8${OqrK`OFde-c%t9M1J}35C4Ag zhxt|7?g=BOjm#MN!wS#y#jRznmsPyKb9|MoLf8%82OqDi_P6HmP1F31{?@d4zQ*na zVz>BlbYZkwHgdP%wF_nI+`XTZglC|_>o*NSK?0?Wp z>#jS4w?%Mypnl{bQNutLk1bp_<+*hW|XF=e_bJw73QS)>@ot zI7@1M%3Szk9cN<>%Tc;x#G=erPu?rug_QkbX6t!4)ADqjy+SE@nP)6||Jwz|?yS~# z6r9^wK1vn^cAb4+7V^EL^6h&utF^=X&P!U}U-pO}7TvibeRED{XAU(oF`QY z@28LEs7LNJ^UWpZo+W8QqzTamfBB6D3u=H{bOj@JDz_EITA8A|F=T8FkPMx)JC zKtR3{uw|Qm;ZfQ)8W~$41bgV$wh-l_i>20^@8;`NvLS2Zj z9b?`W}w|AfiTT@o&WK4hZ@R1m#jM>_^()F=qB6@BPS&&hx1Aj>k>e!^oR|40&6T_x~P4 zUi$ua6dMri2xxYgO<1rf8(0GP1I7bwgEq zQ%`G6S5r$Q+MvdS4Ru|8(dI}`gM|!NwY3ANjI0Y+cdjaF7S(fWLvxqZRfpzHoL5{N zn%C9Q4UTB&%;_bQN=v4eOrJWlY~opyCxupZMMHCI7Yjy#+O+1@rl^oUt*^7EZFOg) zCDhZ}73~$8H;!rV>Rc^6E`*&&uY%2n2ZtbbGf8-veqWl+!bcMHYio|wMVfoNqCLWw zv`b10Skl)av@s%%sB7C40mdVIuOMF?_?uQoU|N^>rA*qUNlVg_rVet6q#sKgQ@^pB zm=;R1OY3cl_Rei-iAH*QKxuVRtTNh(SqAZTncYdROF2K<)DtA8lc#E^D$dbSa(IE*-vu^dtX?epq3XP^a~U(jT7Rn6SGh2e@7b>|2Nm|t7F zv^KnKfzWKKg*dBrnb2*_yrqkm)y%J-FFZD)zIyTer7P-%AyT>_nR*0MMXDveuD7YT zuLr}1w3%8;Y9I8Q5$+ZLE&b`a`3giA(JOu^{W&8G6g+JT;J2kee`JC9oeD%%XW9ws zWd6-M!<8n)k#QDIxIKd5hw&y(syo|yg$x=#iL02}99AJ_vgWMN93*DaM2_5_h7spG zX3mBgXGPn3BSID!Ny^R;Xb!LGbW^e*E2k0}%Rw|%wD(RgBpLq^Pfl{4mi8Sa|~oNu7}7Fh19Bei}mid>YE z%9v#X_O=Px;Po<2lQscf1%1DS-3R;`fdKJW04FCt18BT8H<~Gdek*j$ZjJ=Rm~2d9sYxaXVeK#`hReFfgZpWB2?!U;+u{a z*hN``8QTw=ja21_7eR1xm}s2w(TLofGnP@g4;<$F&X!p7-#qCw;?p7fAfDUmc{!Kur@vn`EkAH1MeEge%SXgb3P<|_e7kdiJG7^Tt`y_|K85{u3@3PR-1fp98Ct z)jSw0`NqwfjTZ~oswn*?`mEnqw$@?n%P-RV zHDj#LTKA9GREL>vmSV34|nF2OB8=mESl+=^Qp6)1~h zZdn%XS{-fbIIAm)>-%;iI7<1W1SUHfZy@^fJDUSg2Cl5XUisBL&ZGaf@&<;n>$S1yS3x<-)l3V-q_ znFZgx1EZa+_J9eOp#=gQMXGy}h}NW)ZM{wpb(KFjlo=-jZ#`rhj6D=R#dmMZhv5Fz z_7)z$IM?8L?UAM^{Uzk@{pJwa4P%`w310fWe{>;3Y@6~%>L86BdV+5glkkez@Y}J& z`90Q%1hHe^dB}?b_J!?M7#z!{Znm5Nxg?M_f|sxdl}m;UQkT#jd`bEoT(Z$|$uPG| zRA24*<-37kp6Z;u=*678NeOd|2_{<=6E?=qho%lEKf;I|o^Mn*Imv;$4(I7-ROBc{pX9FN{V_PHt5oz3liE&V5_9EXAq zItfNiGf~rET7~?tCole{F+4smMpKB9!h;9On)nwU#Sd_XJz5W`DK(+O4Kt<{HE=pj z-Nv5YNJme@{En58mKMy5!FYbn%1CE(YiN2&X+u-Aqha3Sy6Uuhdl zRzg1JsYCJVNr=@GS3k{N(MY(tV{!>9Xy>l)UT?gaY@@3BI-6tIe|l_eb!Sg+G=~13 zQCZWrGCZ%Vb5+~w@RF`*M^ih9+SM<;eY26GXqAywO?~aXJu&oqUWG?(wDdLi#?WmF zTi+VR%Y!)c9<8~fr>!U4*2F@!=db(6&BhlsJdlpIVM z;8us*+d6Q!5hKmos9rF{;P#E{n%d*!Ul_4x{$SBnlwLJAh6^{t+8CiGj#te+Mz~w= zQ9&AxF~mqK6Q*r=?)ue@4;$}FaUVJWOWOb#d=3L1uPj!O#|y1qWuFwzZgDNeO)r9PjRoSZ(#8z8Fx z6G5jNR6kH;1cuUp(fawrjSSe5e3;XKF0&2el+i}EzSVD}r^0SMd-UkhhBpLpfzgIh zTr@fmpldb`*G-TNufAotmVt`>?nzs*oX7yrybaH!r6CxHs+#=aNvm&#rSIRNub~_H zboLO#7;1RO;#693_?MGb`xZ<4OEDWPkcDQSTwnwyB20?2vqp@d86)+YR7PVEv6*Ig z(~ZEa5hJp)(nn+s%QF1ghIb|~;LS?U8Uc*1`z@1yb<m*ohsS737X2&2GnBqtmC zJXD^Zon{p48&Zv7Xnd%^P#SPr5dEW+el?2WSmu*ajQ#5Tc#dKchfCsL=OZ9g|GQe9SZ+3?(361I{17A z8o#HFbA0^xNgf@1j}47)&@q(b*g`)g7&44u1!;MC2pTy~1ih}UTZ2L!pn z(S|v!03%bE5m=xAHyS5zhsd|VFydB^Wkhl)Zo*hq3(ub92JrPQ47kQnp_Gn$nq2*W zU^r!;k{&X=`9pK_bd2aQU>m6ndg>%Mh_6s#&=+yn9poL_xXgfIOe?hE_}uN5?szEP|qL;sn`L`7Bjae5lh zw&2b!2YK&`=MAw&L3&2uVM)57XK1My3i4~olexp@i#^zJZL;MLv?%?mxJ`*sN`FkZ z{IOg4;|_4*Q$uy`c;rj*+>S^75c7x*kK7UKV+P#ee#}qBk8MoP7jddHJlPfHt23o2 z9LgZ$zE!2CTIcF@K55+C^sx%wiphf3hF7g(6m}`h;?4b^f4QcL~WE+fnADaOu7}4$J-Qg1rz3pZyHXQVV7b#lS2{l zp=W>M^}u{x>{8U>sJ03mEj?l=;;EifXOxNaL)KZo zMNdPbHZqRDjyhvPa(s&uR}3VQ&0X?~3f`K=lq+{oBWJ@Sd+|JW*usS5_(oy~JG{$e zAdwhU7LID8R+g~(fx_a%+JVG^Sk4ueC@$&cc==2^yF%f4T!meVGnuq2B#-MXB$G`F z$>aGJlF1holE;TEBooGAuMv7V{ha%PuB!<9liLE`jSc_QCgi2XQ7JvX#Fb=uci895qYdp)Z zVg1Lp44kYoY8iJRjgE^5Ksds6XGB|*qX(a7(X!P{2i4kqJJH1az#n9fje zykn$=G#WLz}<_de_-G$J-?v~E(Fo+#lm=t2Sj$}Lma%xZv^kK}X zjYdzyF2z|)NRDqLG6WD6OcIH#gXLJxjFv}uWM1@gIL0=%)Bf>J=RgG} zBqwh90Q+a4&B)+HfE5QrEF_b-2BRz_lMr_6NRciN5`AJyq4#JD)3dE}AKNOYhyhf1 z(0!!$cNB5;*r7NRW{+;B zL=Gkkv0KL_NP%Qx6-c8vM4kf7EQ`p58d=9Gb;jd>yp&+;#iS8?e4`hVv7#@_~72Ja6tkhN@5W=EqR=mio#D92`wQhHCl`g#gyv)1~xyFwrst z55x5T)unzlUS0Z=J$fKT48@4*8Lv+59O(PK^i7rkZKh*jNtJs%_>UW3u)qiB)*tMeSIIhdzBs5 zBiD)2L7KFb96nN^UOqr-=^qTYtt`oZJ4qlPm>_<#urX{U9vXtWNTcRD6XQLcE>8 zr#?3%L%w48YDkE`;VfPj8RB9ruGcb!C`!;j{_z_!t9x5b_%U~$UlGJ*DX!R;U*s&t zu8CX>1UR{VAg3zX`XY+#mbH@+7-uA~yT247-&pLLI6oV!Atdl6eg;EM%b@R~()bW5 zu0Z?~kT};55n22KEzTAHG=f~?uxsL3#7B02F88!kvQAK}Zy*>yoxpm~3G~dstE(m| z5S=Rzl|hvepA^nq^w%ux<=CIc?%p&2>?Pf|1qY+MhxKkcJ8!}$3#8o7nx#F?vrDa7=43&VLOuL83t*}?ENbRnEJ9L>?<;Tzr-U}oa0 zJ`2OgTDJhx9da;yGntKvCi^lR44){~1G75M!SKx*7jL+Gh=X|@m~@!?YcwHCGT-@d zafP?gR4fc%qHG7|L$n49!?zH-fmy_8h7UB8kMeWjtqq7=3&V%xX9IH)qSV6hiSxC< z@Dl(F!z=twVD3YwVPQBr%cPId&uoHZDNsxZDhrL3Auofz@&RN6Ml6@&B`g>uHDPQ> zZ!dxbPMHQmr7z9VL>8W?{qu1tlLJ28BlQE1%dAt!{X9h*vfh_mYML{0)~4wBLwN4@ znCAsgU2x~3?WNu%fA6g7OHhDRD?h=_LSx0tGmfm_WtzYX7SRNkN6IP7UNxcm*DCq`R8{`a3^>5HO zPT!}Sr8{b_OY$#=keibH%k(X$2iB|FVhdCrViT0VL#zOOxG*_g6G@t;zX}I=Q&d&G zLIe*E4+op=HaEfMIm)|+EqH8oPA*6Z! zh@w*vD4Ht$O%*7nX)ON$VX|@Z5@_*v&3@CLH1^3ar<1GrAp~#H!)9_(>YUq? z{9B73nsRQEe{=Ce{&rKJc9*}4%$F^^>~RX6QJ>`h?5W=`{NWTGtTXN^^MQ3D4(I6p z;xFF>Go)IrMpZ6*$|E%|qKQ$OWI)2chEHFllBaykLNs1nxE-d1 zJWZIINd4tSSR-Eg{Q46YNzDl{uBC})c=5`f0F-v z#K5N7$;>`d*_iR=izRNTz;pS<$`jxLN9mO)M5@_o{y=ZJ6wnRT==tcywwE9@T&$z%u2u~bx&L#O-rn!6%`c#_+%GMxS z*;-xJmtBUUrCJL?sl-vhk*ZXui4ka7??I(WmP&tiR4SUT=i&--z@?B^DI_QU?3~G_ zXZh;`)#;%+7b|r*0#WL42%>Q$!0j*|TB_9X-ggPs%D2?H`x4tjMbnMVBW~%Z%qDn; z$|UtuW&?fGQ(yWW6e-o`|4J2(eU8*KJ(?J+X})hN15ao73v^v$MLS(oI;92s+M&I`IU z&C1#4hUsY-rRZkfxmM@L0iY_HBfujl8l9i6Y5u(^I@{{}-e%Eys+pT}zPTk>oaEoa z3r#mqhRktui@WRb_I#dcz+f{bhu?b}S6Lsh_lhI2IxmlOq z?&YI@iibQNeT$h3C1m#r@r(lO$>?U)t|UhnqzXd)BLS;xvHZ`ExsWzQA0`;Tvhok|3=$Y z90F@T5(DIT4C7E5$D z%s&gunKvx$>+SCAZCJYUv#~|dyYfRPvRK!LZ6~ zk|%UDb)T@pYub8x?b1;!OKfUOaep{qxd>a-9ZNnO%o77Ut<2&#L$(4ehZ+hF4)V{r`kjFo#z0bI`Wc z$6tZ^rs(QOZ%JG8Dwf*W6^=$ay4FQ--V^C)Ywhak#iyo6xhwlYY>{0(Y!g1&~V$;pkpE~sa{|0!wGNk?; zqN=R)?C`=$!Yk_Lg)8_y=oANdta|__`g6{|8iXS1vSI%61X$ z>TW~A#f~~=C0u>RD$Xt-j<5vV<7kUB z+KYRcNV~G7phFb&ih`EoaIOF7QL8Ay`Z`#$bjFD)*?r{}r=RXjUkR7GfwBZ3k(5ZA zl)yRJ4JD8gC{x^QQ{BKcH!$4|%y0uU0dS$$`lglb5h@f1!u>#M;i6Ix7f4N9Aa!wp z)P^@>$~m#ALJD$C3>pAa12>&2So44st9?o?`;-i74%5;K#o?Tj#W{EL&vFgkEg+f_4F&4_;j)dId#AqlBCx$~=nDJoE*>Ywx#pfs~ z_a_q7+@=0_B3(GlB67_SIy8Z%S<;cCD)xsEi5Xn@1b%C&(nMYx7w5C@n7HDyi_?vb z^SY)gCC)r@|Cw%3GdAIiV?uVF# zre>m92oL_BTnH>V9dcmOIs3>Bb3TXzlb_2OJ23e<*Uf=R|C$RX{dN~jI{yR|2{yx} z8})kk!_B}tbRG09#z60>fF8DscScX2P&!d3nxahwCjCK*D?*hEs1-}9qF{zObvfG7GfF9KOAto3oZg&jR^y!v;M09XSv|d z0DjF?e^~39|Ctu!zYOqST`=0d_@)bf1Tg-REyn*M;9t1lw*c>Q!5;v=&IM;+@+|)H zEtbC!u+!hr9)93}FF<4TZov3Erx?t6yLY(YhXLR1g8v8bvo4t5iT$?=E&#mC1uq0V z+6Au$JlO?b1bCbaz60q4IO5k3(f<4rOW>%fNyrervY~B$M|;o zZzsOL=!(aM;CJS;JMqpr*+Oj|u?%$1Wpm)O0Xy^C$=?V#{$k!ES^!F07-uV z@I1izHvB5!2w+ZnCH*bHr@>$R4uJ4q0B;2B%!UEt>qJ9T z0KUa=>cPIh+l&BlP}YUu22jy!x%g#J0c?c9dz68MPg!%jZV z-sLnimd*MBPSq>zb2grmo@b}bPdjNd?Q}MWZyXThcQ$_YaDiJ95J;bDrw$)KfL==_ zTpRf+u)F0wfw?}H=ew9}`jUQp^=0_`z7YfY&h5w7aE1__m}l+YSY8CXyWD5a!Z^*% zWYc^5@qHJ8+v2Vuo4&0dUm8Bfar+NsRo>P8_EGzb*Md(=>r#MpZOrxn fc6auN*Pwsqd@0vP`Xkugd}ky6FiAFHBmMsa&e@0R literal 46076 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 L!5c^^8}a`GC9`y{ diff --git a/tools/win/stlink/FlashLoader/0x415.stldr b/tools/win/stlink/FlashLoader/0x415.stldr index 12a05f02f5837bfba10328681cfad68d7cd937c3..17429f0307c837d20f57fd509f035a72a939a7e3 100644 GIT binary patch literal 40136 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 literal 69732 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 diff --git a/tools/win/stlink/FlashLoader/0x416.stldr b/tools/win/stlink/FlashLoader/0x416.stldr index fab670e41a1e5e28185d25f0ee24080fe4b449ea..c72af26501280b0b9640358f6f001f60c1fdb1d9 100644 GIT binary patch literal 39552 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 literal 76440 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

-KKvn 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 literal 70084 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 diff --git a/tools/win/stlink/FlashLoader/0x418.stldr b/tools/win/stlink/FlashLoader/0x418.stldr index 94b420499462dcdabe2abc219e8d4ecca6418d85..d047b48d3b03e269ebd4e35668762bab6c97650c 100644 GIT binary patch literal 37136 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%0D1hfIeK9oUVx^P1Ao12YFLe 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 literal 46076 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 N6#jxYkYYB%{~v^oczFN- diff --git a/tools/win/stlink/FlashLoader/0x419.stldr b/tools/win/stlink/FlashLoader/0x419.stldr index 6e22d66b51fc54d306122e85bc3606e1d3da3e9f..3c0be227a2c6cf56eec809c8f4f1ea71d9f9ab2c 100644 GIT binary patch literal 46964 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 literal 54688 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 diff --git a/tools/win/stlink/FlashLoader/0x419_DB1M_On.stldr b/tools/win/stlink/FlashLoader/0x419_DB1M_On.stldr index 9d9e0c351b8ceda6f71ac5c4a195bd96db19692d..2c276bb5a9d3310632274acc93b74008fac8c007 100644 GIT binary patch literal 64092 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 V^@Z%D|2U3s8|oj%iI{_Y{|o!AM>GHc literal 54844 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 diff --git a/tools/win/stlink/FlashLoader/0x420.stldr b/tools/win/stlink/FlashLoader/0x420.stldr index 3d361c30602dfd669175457de49b2c5770637e1e..27df693ccb32eb521f18c084d593fadbf7cf9372 100644 GIT binary patch literal 37144 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 literal 46088 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 diff --git a/tools/win/stlink/FlashLoader/0x421.stldr b/tools/win/stlink/FlashLoader/0x421.stldr index ccdeafd80dcaf9ba82335d6cf1a1fb4af1c578a8..a942da9723248af9d4cfd918c3dd8d80faf4b2a8 100644 GIT binary patch literal 38928 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

K0QoRAsc5I7#!Wt_sbQskz6d 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 literal 41172 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 F`#-jIsL=ob diff --git a/tools/win/stlink/FlashLoader/0x423.stldr b/tools/win/stlink/FlashLoader/0x423.stldr index ef0f67de9eeb122c20966c8e1219d2a1ef38335a..f20655cdd6227540e142999b2941e78e5c7cfa5e 100644 GIT binary patch literal 39300 zcmeHQ34B$>xt}@bo^#J#vL_HofSV8?KoSCkO$9=wY6HeTC28Nw^}K5ajUhm+V|Smimk7>RfF;*;==oXGw0lUZjyqpZFune^(3== z%glV=H_MrG&dl7cWtHWeb7ox%%Vh*nc7T zcW8VE#eRL!xnDdwaLKyEwBt zb8F@eB?I=gl<9j3>+Sl~g%ZDdyNbIMcBqDR9Y1d5rte}t$KFH1;w}yx>G{DGosaK+ly&X+ z*vRG3U)d>ber%DWe9_U)soz+5^P-y%kU-b&mAP=i9XN%sb)Ogr|mDK_{^eRK3}d+x%EYqI?yaN{Sf7o zv&+ioB{PqlT{8VI&9r&D79C}U#pTZ&=05dDsH+>g9#hNJF4Y02C6-^1@#{yEy3_=9 zPuvjRrSi~VHo|qN>iCYXs^d4q-3RwXSH_V1A=j6b>>C>VuSXnR2~IxFvF9jSOX42a z{;tDz&ibKmJbD-yneLvU#}I#_>y4ow9=>7lK$Nq0&v)O^yw4ob5`MGKY3B5bnbS+) zjh0(Ibl;=Dh+u9KIqm4$hn%{eX_?dgxKbykf%!=`^E;x2d^#pXir`_FGrUebaW@ny7LHI^C;|>u|L1UmHvpVhpg27 zxe+KaD{g;I1WM1+_YbQu(#_h)%FQy$Tjn5_T1uO}E5qb;?N2vj*}GEBn6eM;ptxmD zf|*{xg)MWaURvfbmU^C2%nDhtf$-chgN&_B7goOe%g=VXcApq#z;QT6j-5Ehis3rp zcAq%*TK56<=Rr1FJNR1no)lh#aRGkI92ymPa8?(aMNrG*j&e3~@gsb+ftJv@UfZLL z_EMWzzvyW3de(In+S9PTuXTTYNp8@0w74a=rnF1pxxvEOxi!Fabu$VL0TmzZEX+l} zX!>|`FbiCxYbfkS*s^mfl{12M)qK445uPW?YDZalqO5k5)o$db?R}}zCra_v_=35! z$uI75FcBheAM!5#I170?cvj7Xo!yV?<*DUEFxpIll&O24Su|Coo?0_CSPWT3h<-V> z=DD|68SBdacv`T+s9@7-KG;cm$021pQl{*EXknp9Sy)qul&nRBNLg4j0%htSj~D62 zn|e^XPrHrW%Ds11%oXY8*33n^&K40O-Q1cHorVvi408wfsdIO6U;F{Y^trnF586|rGpIF z>fTIQUN-SUhMb0Z+M%JrCrE}7z*QmNDxROTH?_tXF*NuQ$uQ!B1Bg*xBmRci04c)= zA%o8tGiUFrVD{1C)>SpDg5*lNxU#B-w@8}|3chIC1ToVlgMvvBn+ytG9kEFTWU<4f zBhMAG_^f9F{&qyyjteCOqp8dq(3ILFtW1dDzbL7;twE3nq;{UGix_X z-K)sj&4LvZsdm#Uv_p*!It$521Jq*y(B&4_7GJs=}sA9Gfwm5-HWy)po$#KkyM(b3Z zs^Ks+LpPj;VYm#p;cesDcR3AwDbR zvTcs->JH^fuGFTmUp@QW^Zi-;AQX9_iU(}S(^QP`^}xEck| zMZ74*s52LJfOxM#-Ls^6II;0R~#rJbr1Cjp@lr;lo1rd+5)BYV0 zG3#NUq1gLS>{7E>b$dUzP3jb_7!Qu4(9_x}$jI-Y;K>^EO*OR@gF*ird5x2?CKQW1 zkEq*zH*zKl`W*^Q*KxPOO@JB{3f;k#tHiL^-vh!DOy2XH%!fH%zYjjUP}X@Ui|#S~ zt=CvQ8e9fP_I0bv8*1BvmCd#Ff!5XHxo-86 z=JwXQK-+4G^p}Sk0F(yS`zxB(7SyqdS=GK-3zt;*W{;aacC2r9b7KoQT7Ao>6ig^A zm{c%j(zNm8R!p4WTie{~n^nDl(Y--jN?owFm2pF9Z)yvzYYNo++JeokVWv2vn1<%2 zbZqD0Gsg>a!jO~S~&ceEN*bVt1 zbWpUcv0PIPgZVhqF#S?l1JI|f!J4fXE&d;BvvFt}=z2_zwAD~k7!5NDn+?t zj({f@0Y1z<*+X*JUqtH`4M90gBiBFK5HQj7(PL^pB6K~2rmX!Hk&32JnDG?N;5W+t zO0TB`D`Npz%xv#xiJGJ$Jre&JN^G;#3_^_+t)Xy$@iCf9=;;H^;?=FOkB>>qxD^SD zLDa=q$H$BsLzoK*v!;FR+5iUrF_X`|4yM{fxT@OL+J=TeL#VA0ggJ|e`I{g(7qtXh zYr~=DCcoLxcwXYL^`JgR)DYwO9?vxZ6CoR8ubg#;CL`11|0|es-wNqPd)j9idQl1E zYc!8AbpwzVchuBt1`Z)xT?e9R>NTVD2=g<-Sf*Yxbvl`v?r=tLiw2}col9q-xW>4I zFClq1Se=VX{OfBQ7;o|>QI-SH)?Jr^@G}U#56*!7n>`-U;9Yp9zsHBHE?5~G3i8?2cc?mH44;9y_FtiesM0K`v7olC zP2BDoznyDwqE^obgOwn*7u?PV4JWH_1Vv&%wc9eM-wG%Qq$WB17Ki3k3jcx{+E*(QabcV(6=NTi(K<|O9mo?Q#hM)WSgma1DL)Ni2y`RgW zWhp3q*z^I@rk*Cq@*LjI<)T#Y8;Hbx1n(-O!u8X$&ffH@i{3YV3r|Itz%Zgk(f~0# z7^u5=38uvSDeg|?+6gr})Ilq7Dc}w?NEfDYKHfg!RBV z8$)evwGA}EZwxd==Eoc}f?+gp5ADq(v;HafWD>)ja;icwEaAv~&*6u5qfzHQ$LR24(u*(Cjp|u+s zzeaH<@b5!Gd@m9&7KvLIk8;#0h#^CaB_l!CG3P50w_uAlPV|=9M3bh!Mwv5@Y*s_4 z*!rWqme&z+Gl3!#gZhTRI4x*L@LXA0rupHMIzh7}Di(YmN3|4~Z z&HR34h^QtHURyZjV<6)XDDv*Rj^1T3dT2PiS})n;PjI>T5JvC#gk6T&?IIi9i;8=I zu+0r%vJypY^P-X^2A{jhHqxFl-Ajr$jauD7VV}=nBhx;o>s`n{`9xtoS|+ewHc5%t zge6*cH{hfp44V;BEF&@!7H*t4VQo=Ihkq@-KKh5A zu-`)S*hrOksweCyL(EfkB$@RR$?-?(D(1s>d_I7$C_KS@*iMiS+ws3P(e{V!gkBHZ zJurCK?t#I>b__;5Y{y_C58E+V+rzerw>@kpVgO%fKK0zJBs`?#j!%qv=6*;#b0=EQ z+fOoh^S)@upIeFyY(et1kY&l9)zCkxZCFpQY9%%hLC@Wq7iwz=Hv`CY|1$+pIgQ zp+OqBjqx9;@!7({zlGXX;vQ!Fk(xJ!%=lgpGd`+HGkQ=?#Ed^yr5UFKiD~{>YDO|4 zeLXCI`QEn7I3r@ls@CRpt+kD%&FyO%0xOzZ>lyD><8y=|17Nq3JFWXW$m1qaliLoe zv$Qr`ODSfR<^y#XP!aPTH_i7eAQ_uref(Xh zY$c2u?rz8Eab!3zvM~*Jx8vLygc=Q0#BldIWV?S zdKzwSZNpk=yq6tj_icjOR^q7fUUuY9BumjVrfIyF9WzVffck;mc(0hodqEiQY;AR9 zIQkUb4)rd#jMuBxm29L}-N&p}*9DcWgi*sCGh1CIvM~*J%yG_i8U?2T6=`)Jn}%Bs zBx7UF(pE=Cqwng|@G<(RWjLB!%bNxsb#0SY{vE?Rl>ZKv*aB87sd-aIf;kKvqbE?a zyNOJ-CKR@Av3DBr11RASg|*ygskO*bv@+lrthEx)H)6s@&wJ8Zvl{}ntz<98pE2}Q z{yQjZC5f@pGsdu7veG-k8VP5qHOLaQcHtrHA$!cUhMpX;2E8URCs;2T@tNWdX@Jd2 zW{77?tAV_1Bo3xISSC2|isdXd37Mk{Zavl^O~JwlF^JELm}Et5C|us$T3Oo`j(oLY z{39cNl(5bf(A~-*GR|}xX@dt)&jHa@fUM$%%VjC{)%!sl3{;D(P7*T4SDbVXBLLwkMC zMK%3UP@ju;#PS%id?(2Go6lbPJ#A2QJ&z&~!&oNX=qvOxxwkRQIjv7D1@h%~Or1P> zH7x^Lvau~3Xlz?u*0?56Uyt=Xn0Z{hCeTzD^i3%!TwUARxO(=2B^66no9eG7h5w1n zLQQq6>qI91;w4Yf>WO)4ar)|~uDLbfuWKwSKn3mD``|6w=W!Ow-xg}DkKliznfUVd zrn(6BGlz+-Xle_$M$kXhN-INa{Ii>z)`r&k7dE#x);55s+;s5WJG3}KD-EozZEpy- zMbIBO1s=6j-(DAvphE(?G}wyw|54_{N?l`HsLda$r9zc`-}vMX?HUD3LRv#u;#C)A z+^)8T>w%Btw?pYbJ81@PoxdT}h>1Xibk0WcjUWOyY{WO|DEWCU^7auds%X6*PKn_B zbpLHL>z@V_}$?xaE;_vj~7_qn| z7S>kbUARx%jl%+h++ppStVYJ^Jyu=HRpg~+F*6FTQgK; zh!!_S^Qw-?nk!9n`Vv71Cuk`NU?PmSK=?W2tEx6?fM+?%*VF;Sgy9}OV_ONWlt9zI zmB(vn1=>i6EZX%S&sd3RsRJaw2NG-Q!+a6!t*5BZZ9((R(45a{+5k|$4ysqQ0%ORi z>}+r<+3IDf;C*#VD*7|$^p^L`Y|FG(04h8N6+CHZPTm~NGfs1=W7E?BLcJksC7Nu4 z7C%7K5;Z3}?Kz;NC8ebeOw-)ynsZtVMpfPEqE25rV^yZ_@lbgOx?cKVEyt~Sy_z~3 zwWg*gYGc)o1Z^OycYx@4)ImiJK7YolL*JpH&OK0v8ex)VjMB6bnt}R?@l!w(HM8@K zRfRqqLzQPuRlHDTlvE}I$_%05Vkml3wwT+}47b-r|DTwS{(ElwcQy{hPNJDLlf?|{ z-;>+_@5yasz8m>;?+{byTV3pN(apa`KJVYh;m8cPM@#7~oP1n`aG2-P2VHdbpP;j= z9!v%XYdiyzaxSOlXRhG%Wfp?JK!STUK3WKU;0(7meN%)+J@tZGYFv8G;9*$mnK?M>N=V zhSvdoXM+YW_R_$ZX;s4RGh7Aw;sq5xBo(OB#~GOE4jh)|OExBHYPNV_eEJO6fj&J! zhue&JEuJ2;@U%Sw9a&8g)7eMQaOvrj5Tt(!(yQJ$ji-s>=h-t{YWi#gsh@|`<_nGy zc-G5E*Id4I&65H1>nTDJI?3lu9!Kd53l#YPilm_fWFo%UEp$rKH0aVpC(WgXb1enc zgmmyEB1uIg2}~f9zyu@Gl|*_5kr!=qP}pWT#%MD!;$m%wq+&s*Nv9B7Ly4Yl(dgq1 z?W5ytDFsB1UQyz*lM$DnjJTq2;tZ6+SrrAEDGAND8Q|=w+pVo%%>Z*psGN*}E8|S=l=c9g;8<4(6aBRtOSD5l(i}U&(kP zh0mFI1mbeQ{{ueu<>uVL0hOfe-~z@HF9s|1*R@ zQa}>NUJ5{JZxo&<OXSLMT``-UjqQ3{wbiAFMX;@ASuWtobYAo zRTNAXNb-x}z)1n+9=*t@UN|&73Q7fqd}0Gqz@|s&o^nyS$e4lx!AAa6iKIYgC@AoV zSRw%OiH5WSHa)U-&m!Xcz>(Nin+VEyA_8$a;Ln4DwJ9KS^dh27-&i6w7y}LshJvAR z(wCLDoPyXC*}#m1gBlbphm$_B_0Y{OGqnTAA0smXkePx=GeKMqqEhB%6i}Jcr<&z# z83nN^Xjza=EHZ<%39+3-EK(3+Q7wpztUz@JgHS-^=w%Ugw)AU`WnXjj<{)XMR#g;G zla#)+XO)0W&u$%RICkq$y^Mi_btoWm^okOf^(MN(N9_kXQ$Qk0pYk|~AsztvBoYug zdi9VXme@mrJ4G_`iR~m3&^joRfI`~)hPX&d9@*;aa7a!8k)v0XxVSfQ6Zp2kVbr5Q z7b(f7Jb;X5BWuoHD$z(Alu7~BXzV44iz%R*m%gn3m~n*c)iY!2m&lj`BFA1-Z9Nm% zB%zv>)trhDxlkb6F!?@-q#y@Q`eP7+lY%_L37^UVQoyEXZL0!hId!U;c!5J(Cd z2q*k7LLe!KltnagJ|w+?xD)XQ2q7@^KyNhxiJ>PPvTrgR?g11GfRlbELLe#d!AU4mN%EcelJp%2d#&~DeS+{?dXN*lW_JEasV4#o~6_8goz zQUsxB+zR_H_KebLkwlWma1f2A2MTjz!^M6(4JSv?Mb)OTKN`4!nAGSY1Voo&oxuC_ z7LzXbd&n*L#6f3sDy$jn26vepkxk=7rjy$gRuG3RAtu?}luSff`T=yy4c%EJak;6!e*p0_5otQfs>2-%>7+}*$_B|6{cYy7-CTtu_1~Was-19 zjrt;#6J-!unmdSykJ_`swxA~F^yaheg&|%VN)+~NI%6|qc+C%pwhbS|EhTWEvS`0S zR05M*EYT-EDZz9YeR^Mfk>&i+JU79}edZ}vuM^)$IEDQfR-)yg(XwL~YZGU-;Cvm8 zf=<(laz+;_N4efd#iYb=MHlcASH8$g$-Pj5N~ggGb-j%sF1LtD8GjlrbsKiN>diVXM9|KBs7t zc4^9|>J}||!sXhf$)EHM<-B316%Tdms-iVyRBDReQu^El3$@F1$K-8#Tj}jC_hxs3 zx>@rKy3HLAruBMU>2R1>U*|uf;w5cWPT%crMZ0W#k;{GQ_(Zo7 z-s^I2%=^T>{(`q%?hSdLsG6?%*OAdv?;s1qW*za0{u0Z$ggMpgpX4eVtylkkwE<&G z4)-E$gWfWFx~@&W%jI66Z!Eoi15C)p`98v!G+6NOp@n^cCN&c`bwyFX@g(O?Y0Dd* zge_6_t)gtrsh=}?3gq)Tk1tUD&nAL(ZOg`;xkdSLgNZu zpo?RePtnmD6jrS$jyoYooX3TdsIPsSL^0f|u4nvysM}CC4z1IDrAx?K&i9(#sxa6F zy%Mr8&4DiKGCbKKJ#Mt-a(5WISJjNvJ5WC@&c=l%2hJ+b4lU+`4=z_&sY7-A{3*^e zQ`J|V;<_W_dY5~Ps%Ircb5jO=I!%aDpNW_9x|VU9wpGu_nCIR!Gqmz`cgOtF`K79& z`%7ccEj~DT?+Zs6R7B6!;+Nj>eZc`9Pj0`TkWC zTyAIM2kO|OBSmWA>O!Y}+2~bjrItAAI`?30^RQbd-RkygTZhbXU+UJ~u945(m_%G- zpMYGWpVGaf6KFKrJobsARcMK0pKv$m>g4acn~C|_x!3-jG9B}z%l)M>Pv$;dq!O!l zyaCp6@XlA=V{g12YH)Gvi)dtYZ~3C?1r#<^QS>jv)=9&KcApFF63}xl(Hw)yv=;rm zjCrV6^@beT#vEE$|H0OHMODY84gZ zf*MdWYQ8K4q&uB3J>BZ)I)&*MDJ(}(oOe3-HJJ^7=_u5E_d6|z$O&Q#la#%3acBOLW(&G%T^RawnibvPE(3#lT%mS zjV7n8d>tc*eo=LvThX&iS7H>={ndHXzvptd7c5&PN~b%yD4lNQbe*E~Q3~^7P<`PF z&J8X~|J4<+0Xkk<#$`)yoqiA6f!;CsZ%dICely0(ou&nJog()vg*kE4`WzizO23vDRWexKKZ~%jQj(R zr@rjglP=2{=XMkvpYh}T#S<Y=+u*|<8d#& zFLgvzK(|ZUYjxqAvIXCm;Eb`>11@(<*;`T+n)C@#Xx8_C5G51i;KNZ-9@tK{f+!d% z{*EZ;|FPnh1>eZ|QXish7FMCzrVxdun_pCvGKDR}p!FY7Q4X9$6sNSx1v}=vPogMe zx^aJREqkk32tbot(IIJeOV=s7%y|mChGSIv@(#{3WR-kw6+U{3w1eBJjO~7_Fj!e! zaM6O|oLx#T6&Wsjy9W7lu@6=hNz-S#PEjNd^f533egA6C6XYG}-mA&-n(oF;Z}Xt< zroF6hs4l}zUsbc?S0Y0$c9DuQXhKfcDasguZEuR=dLCssLDg!sv&HCo}u`c&z zxT~GN6&Z1{A5-K_Q+v8jk$0t-sk>iA-q~ql4BIEMo2$z(ZW@yx zh9dgbDIT{%(T?)_COf9NFoa^T6r9Dm%Z!}>L60B5 z!(dZ9WG>TM8%%4_K0N%4qpvd5bn(ef;m-coZ)(K5j4$D&mDOb{aLo7WMeX61_VDUO zYrYgYEWA0}cRGu;ZIC+6CHGvnisJK|Pn+ RYcCdqH!17$xU7*0!9s!Ye~jO=J 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 literal 48740 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 diff --git a/tools/win/stlink/FlashLoader/0x425.stldr b/tools/win/stlink/FlashLoader/0x425.stldr index 7e8f10d21ff55848dbc57fa63c3d7ab9a5784096..937b3d8b4af7f27ac73065f6919054a42d3a010b 100644 GIT binary patch literal 31304 zcmeHw3w#vS+4ng!JF~m9$!3#~5RyQa5D9@KBmu%jE+ID(2^W)aQBs#pvLS18b9V#b zCMaUndZSuzZD0Lb-&$X9mA81QqSktC-?pHy?^kPW(fUc>R;}79V6}Yz=giFRY!U^u zQ1bgZznqzQF6TMV^PK0LIXm;rWLr%`E$5t>o5UtDf)vKQvodIUp}@dCvPk(O4?W2SykuF*q-|W zySDP37l~sHINsSe5B2Xj^7cXQ?c4hgNN}?>(5^Vb@@KQe12gNi)t$Aetg5*pBTK95 zOJ!LJJNi=GPxd*-CKUYTm064(sL1|drSpX;1HszYcc)~0y}3Jke8%Lnc2⩔`Y2e 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

=UcLJwbL>6m(m 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 diff --git a/tools/win/stlink/FlashLoader/0x427.stldr b/tools/win/stlink/FlashLoader/0x427.stldr index ea4bbb635dd7e986d50adbb1d15a489ae36205bd..3b1ddd21edc279bfda142679bb991b07416061f6 100644 GIT binary patch literal 37224 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 diff --git a/tools/win/stlink/FlashLoader/0x428.stldr b/tools/win/stlink/FlashLoader/0x428.stldr index 75c46067c986ed413c477115276e3a9914e809c3..003ee6177ef2bc50e13929f3ae109fde3d4893a0 100644 GIT binary patch literal 37144 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 M@E5#|l(Z55KYt{B&;S4c diff --git a/tools/win/stlink/FlashLoader/0x429.stldr b/tools/win/stlink/FlashLoader/0x429.stldr index 38b0199d17e8ae5c2bfb913aadb0b933c2bde377..8658549c6c15d0d8524f016d6f3d6bfac6ec317b 100644 GIT binary patch literal 39580 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 literal 70284 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 CDyR*~tCH$+>BbI9UhlF2k!4aE~ z%=(X(9^3+@(=+p{6Qp#FuP$>tEpu%xZ0HMxh;@^?qM_ z=PDnbyM67gEuGx~{FhV_BOqQ|-|h4I@&9yZ&IDHewVra|4PsTZ58kN*F2U2-+0Jpq z_d#E!KL~muluK^1a8XUUr+9Yp^y!}B&h{?U=2z@5gPRz2dYgRydj7wPgTAuSGqc3A zq^7jKrnaQ2w7R@%L48Se`B|maUu82U=Z(5+@-6S7O7?X$wR$^FZEFn#VEVAZuAWni zJN*IQnwbl8JTob%89|FWJMai>PpbQ(|LbwMv!6Aq4u41ZPsslf39L2gnORA#z~9-` ziW@bZ)%8tlJG||!jrHV&5D33g-#C3b$hKC2S^DSuf79Xrd^G*5ZD7_8cUZSEi=baO zvlVq^ZIS=6_3LIfl>ZU`6*sef!^>gU*1|UBixl_k7WZ|F!&s}^Gj&aVUPc{_#A^7z zyYH?mZC~zdYVtLCmUjBjUGD3^C=&0lbzXma-G8)Wi!kBPE7gcF7z%QT$ zvif?_a4UqrXC-*xQ*pDpTe<`OfOk2Y6}+!)C%P)js)7Un}ap%a{9ot0aY& z>~^0dT05G9$!LHq!`nI=FC zs;*pEU*_!&U_8D84WnqS3Cj`U7kJy6(RDU)XpfL)!1$x_H{*`T+l(KO?~)EQ)pLb7 z(%^E)1cK(5Gl!d87)>@87C`kM7C>eY7C_bz7C=T37SONMyvP)DBLX4|i7X?sh{zHm z3y9>OA5q>s&}9{cH4Ex_)2s5X5N$w&Sfu3%Tb7UA{C&DUW_{G(g zRawP+>d=xpGUmv62$OJbM`UJ3^yg(p^k-G$YZFti1M#dbsTwHQVqrnKmR1j}Bf_%> z;(_pf!TtCy^|l7eI{g)Bjg?(KKc76dKsaD@NcRDwLkJ8Q&0T5FazAF!(f4KY!fGru zaSzei6dxkPh%D0qn*Omq&!nZJoM+P6G5~&&d(wJ1Lh~V8K1i>cCEaS4WSb@VX3dp} zgA9X3NY2@kbGGE1EjedP&e@W4wq%$si^!G?b0otYnJY(f&XJsRBxm>@p-ztElOs9j zNKtbn=UmA-S2E0%409#JTv=$Y5YyN z6KZ^Bo+_{4NIluWdHba}Hjhvnu3oaJs&lo^U(&g{qqtr4!9t(N7~(o$i>Honz=$K} zpyCJ2L0AtM!ADC2`7*+Pz#MsOpkP*AxUjycqO$nRNt22&Qp9gNtpUczVazgsWMWvy z1QIpAK!rDe7yGqlK$YLu>I8uMopNGf8n9es`r%lMW6GO?tpa zJfMRzGxT%AX1K*($c=`FM!L{2%jO(IT}fD+$<-2DgO^b7FQ-WWx`cTfi}$H$ZHMQv zrVt_Z^_T^y_jk6})6Z<@EbUs@v#9dy%(?iGum3?`7P^AL?;W<`8K*}C*_a&WJkfm?n$mB>SEAN<`WI7Hn!ae1G^O8-FRrZg{vfSeWFxuWJG=o2WxU38cA?0~ zuM~d>Pf}jmSHrG=zbPNlqd?zo(kkdFpr5kPd7$x`y@wc5d>QE9Sm?7r-)f7AgzX`!D2 zjqgN*@y~&l^{L_MFQ7-6@f7nKXxasX@x#X60&T6|_d$p7w&7Fwa2j7f2M@x38|Y3f zkfA`r?^mF|XQ5vLeV>KKT1NH<3!Q>(P+qst`Jg|w(6yl7#1eAJ|6I`0-l%@pg1*7D zH=-{Ey~{%X0Q6%P`VP=fTIlVdu@wsEPx+q#z1u>+0{VFi{VwPiEi|&Qmn?KV=$kBb z8t9)`=q%7bwa|s2@3hd1LEmkmy`b;6&?`az%0h1jz1>285A-iBc-;#6PZoM7==06= zRA0}5{|PPEXAKjj z@F_w1QqZ)5S;k)lnwB0*`g+i`W?0fc0ZnTFCH-^Iv~E|@4}zv8n3CQJnwC9E`bp5V znoZJsK+|eNN&f{jE#Z^&>!4{}oTT3dO$*T^{UK;t@FnTbK+_5F`#KBk)+c>(<&fIPX|pacqE+*npWFL`c%*b7P<^Ht!9z&m7r)_73%wci8y5OX(AQb~!JVKFTj<9@KV_l!fxguuuZqFed<#7Z^a=}I z26~<)e*@@33%w5X<)%EO@717hw$OKi{+@;Y9q8*V^edo$W1&9={aXv|j)MFaIs-K7 z(9?xV;QfPw{qIb9q`#uIBBGAOc!JhxNSgc=Eq9PK`78QYW|AgUV$w=9 zV|y%g66k+e@=pf+F=#1IDd-sZJ4t^N^a&Qa2Q+QyCgU#$T?tz1dmHGL7WxU$wD+5g ze;xD#prw4Df_}zAkH!vMf3wiDLI2xApAI@1{twx>{tH2;S?K=)JrlI#-vzqVLSF#- zMhm?S^e;h6eD47L0_Xyh|1QwU@Q;%IAJ9ucd(8NQpf`fX(pfH#0~K=*=ou!R3i@Tx z(@c6cXgmBBnh8%|06HEt%#_o#DfVa!?FBvFLi<6V09xA97SK7MapU=~!9yWviO;Q| z7lKYO@of&^4XnH?*5_CLT-W?_l5_^y8Y3$ldLcGvC!_sBqAGMq$(A(qNa_9` DS_yoj diff --git a/tools/win/stlink/FlashLoader/0x430.stldr b/tools/win/stlink/FlashLoader/0x430.stldr index 8372b59ed769ee121d65cc5a7b1f65fc40a9b397..7ce7a5fe9c63b42a6d63e6d6f8947ab1a13edb49 100644 GIT binary patch literal 70372 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 PZ}(e5q`7!_OTPaH@&I_z literal 55324 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 diff --git a/tools/win/stlink/FlashLoader/0x431.stldr b/tools/win/stlink/FlashLoader/0x431.stldr index 5a901dcdae2637b7e6498beb4aa5ecb3838eef6e..cc0afb1b292df399254bd73f3188b8b5a259b1c4 100644 GIT binary patch literal 38928 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 K^&Phn|Nj9Nznnw> literal 48488 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 diff --git a/tools/win/stlink/FlashLoader/0x432.stldr b/tools/win/stlink/FlashLoader/0x432.stldr index a3de2a6d221ac9dc5e86e6ef150fecb064839922..8b93983e7d1114bacb3c9e4d843b18826763ddd1 100644 GIT binary patch literal 30856 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 diff --git a/tools/win/stlink/FlashLoader/0x433.stldr b/tools/win/stlink/FlashLoader/0x433.stldr index c88598adf915637b9f48e3265a2926f11c50aed1..02f50d2bb21eb5d447ea13a43b8d1853b2899ee7 100644 GIT binary patch literal 40652 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 literal 48488 zcmeHwdtemRz5kh+o!QyVYx5)!kWC1X@CYGb2#P{T0*Smr5)f_bCL{~lYhG?P5MF|c zh^@9hd+Q6SRIgg~T8q_Q@q$-twM7dGxAdpK8e6N_qQ*xnQY-iKJ!fWib_tJK0{cfN znK|=4-*djN^F3$I%zWqU`ii-;BuQfCCbK+7kjj{M!+$Zh3ws8@$;`_LmkjKNCt08O zi%-3*@2S5@UisPa@As8%n3XUqW7hClEO*L}t-}zEjWDd!<~hSI%|xI&$US z2L_MN+FJhiA76|zDSP5kM&9|q@3RpzX0g7&7YV%+d+6-hFZAAto9XPXFO=SiEp)c( zi(OCXdB5Akyw4u&yGr864NvZRg7xKmq321+m!BnBI-hiKNt9kMYAreJ7<~Us*XwjX zz$pm-#Yw4I?K~r(ss`H zY(u9PyWT*#k6XD6xy;D@zLmS70c9IR*^R2yQu-Ndlz7b$hc+w}P^UY_Mz3KP z!J2O!o~u09^0HIe|5}yQKzrxxy_MuE7{PF!xn0kJR9=0=OBbcJyhD2FXUCW+C_$N@G31>LWz`Pp$eN8ucOB2rgNnK33by@)us8 zwln)rjOk_7S0(STOYy)Nlwz+X#U3ujRgdf0(8#0bTw4{_@&?%=Cv_jr$QC(?I7=0_ z$kF%4wcJIv$WeOf47T7_ge|<%7!R;|j;Q~sRsTbyK5UW0ZQ<3&=sPQe(&L@8OSbFW zmU`~8Im22$AkMj|`*22_a}#lvE;#4vdxy0=N}O|*UOEHkT*y2FoM%YmJizL?qW-5= z{SS@$;GD}j&(Ozddxx&}l<8%Tz9dO6%M4CLE6k~K_sD&p%I;2g4{#XG$||pVTv}a< zelG=uZDirS*{S<*M$%;`;>_^gY<;gRyf<6vr87v!Eeh#8QoaXRJ)3)P_NP|;4~_be zF8knnxA%^zWG%ZKED=|LO19ZNj;?a`Fz>_pndmv4v$HE%59^C(owEmD#PX9d+UjNG zPab%5#ziSDEL)z5lG!@0Mk!S^s(PwK&yn_1ed>AAewCk*>=JrT=WJKY^&~OQFxF3# zXE?Brkd{~c==zUd@!&ijyN><*F@yE>?cbc6hVu;UL$Ie~hyU=ts%OVlns&;t^h~zd zDURDo-|x)Udf85*`}M2^yE5`0#tM5TPnu*-NCqgSISw|R|Ife`5P*Yna4v8XQwYYa z=j(1NhNaZ1RK}eAB%Lu=0;@_dic|Cw7uY0Aiat_Ljq_+_8stbtX+@7qVob|s6OhQc zjNl977*j?uBIKBioGQJpaO|!a)#P=kOaY& zbOJd~O~B+x0TYHnn28=CK%4*;ftO8i&v67d#ZHXY#|xu6qchFY?qd(YZl(UL`xP zmYvtg&W*D3TG_ctc3vmzn`QlaS^t)-e_PgXko6m7{X4S$T{(@6jSW8SMXR#X)GNP3 zem#&phk||xJ9vA0kj_k9y-~YX-Q>7V*(`(mK=LMi`>@{t-gJH@^vwjHW*BuVcouM; zYd1QsRW=Q@u4Lyo!S_}0&Eb64ZB(w6H%aqT*$Y2^aX{@H4}ME9B*NC-PCCavP(Dn& zUI4EKiFucu0bYd|@ZSM1ToeXeue-tP5P0F(X-3?xwaE`guMoBKk z7%KrUT-pYl*B6;a31yJr^;j3z2R?x(%N^88O^J}ZTWfRKAj`fyxv~{9H(7U*}U`k;@Q9*Ihl*tn= zo>b&r))DlU*34t%U3`<9S{j2)(&g^}P>?Us} z68jEe&0JJ_2{VC;nwkYQzUtYvOg7MFPBl}aa!Q#aBIn|oYNkfyRM#w+T~j)b zX%V>#sw-+r>#7#aXHFx(Y{9(hxfOL4cpnfagsKfShPu1h0V(-HIj$S>m-s^LF)1#2 zD2FB$0o)?RWetNRULtES-cIsq93TG4cEZCEx-0Sa3D;-W;7OYLGDNLv4}|dYL6u4k zj9C&mRvz}b7}ACGxB>e{h)Oebu1f_(y*L;M`I%HAl<@*(7S+sAL@G&7M70^fX?)O- zN=8%0Hz{Lj_p)Vv44@^&Q(z1ttyMP$8(Ulbt%0sK_9KtB!`NfbetocA1D^Kd zj*8K!%l(c-o$U_^*JIMNl3OB8{tivd^5H@3S)pb!Dm%sGhDkf6c&hLS^28RCzC(Jy zh~0rFbbm2*XAsrWU9|eUhW<5B$*dFB|6M7YbX|tsDJ&*x9TYZr6#0Cc0qZF&4dnmn zIa6S1uravGn5=h&+9nk(o7~gmTSl|{uQhXe92Qs$DZ?|RNDh#f@22QZj%~B*{}#QCm@mD-j(fmNeeTF0ZOBojJDxh>H3A1h`)sIQvA*BLH*S zg^5^H4kltzIhcq=&d)lVU?VFZ6@E-cgDgfaOkNt2GEh*?Dw zMQnKQukl1F71u(>K8s%GLf+_Or8H==^WkGHU2I?ZsIn{n)EzMo3#-a62m%@e)L}Z z9q70aGfD2xByd!_8p_=a<$eR@%xWme*govB+J>YXy-TO(z7LuDk-$Q~MeVH}O_yV$ z2fh9bz0BgI7Tbe8R`nvC=)FBX$aZ1|%iHZW2y9$XxK_KN)lq0=76w|}%ka5a%=I_Y z=K%H{(8*`$LoS7ez6Qz4Gkffqb&3eYgG+ZQ~uBDSuLR;L?8o~q0n#T6! zcr1QEvE%}6VRHXe%TU&*Fx|sC1B5e2zC}-Ai_;g)iskt|F7MB$by zMjp1IF>EKY5yfGYq%gM4w9`43ovMQ!%Y%(=xFIex$qqqjBNPM=Z^DeFdBs%%XhvIwkbm%-(q<# zLUy58p#!kZ&kftC^nywF&Vrdfb2{>xs!5kaC9_6s&#_1+ic9Lj*Aydg&Ea#A{dT?P z^6ALi&}u!jGRsqg(M%*(ucxFF#XY4VAb5?b7YS^&7appVb+j)FEQd2gxm%%}SxG~4 z(lZwza;T5*1kQFJ^tpN--3PsiT$ef5_(J95Aekkm?Ls!8xU3zp%O|E?(xdD$(KO5! zO_RQWnr1D_Fk7?{WSEiY2{yxQ(atBs%tWqbn5~*+81W7#Hs`No6N(*c9>iDx&qa7Y z_zI0_`Abc?bf@?=J(IEjHTA#H z?iY)?{6W(%-i84lgpy`0GCDzrQRc^1X8BCKp?+H{ zr`$w%p{t{lo4xu?>)qZ3L?)M>26E#N#;!K?djkSn?Fjw&weZJIw?xz1$Dy8CE4H7HkzN#YIW!AnnyFiK z+d;R9c!p#s_X3nNt5MU%^t%hvjp97FL%%V2M#g zh*!bp^kug*k?@Crk8OV?eJS2_$xz0=W9l63uY4^1z0n=ha5Xb)LAe;d29sVC-`WS= zesAce%GNcws?NNA9L4n`4{DhejE84cct3g6c@9m?rU7f4m>qSN(8TN#sPMF{LfK@aq*&%&ch`1LGH_BU^O-5aV0G>q`S6)7`h~ z+}-~}*y9jv6074g*SslT-ja?xtMvO^+HB7Ju8hW9k^D!x>1sz1U^;D;y;W0j@YA#rE}LO{?0QTDzO0gVDbxv3>*Fam_YD+cBNK z?WtRCRtK9IO-$w)@EXQa5Dg@=cpQ(>%XseV<&pBSF|nl zH#Z~P9ZxiC%zb*1%P$BbUFAwz3~r%jX7``o!hlH@_p;*4PT9eDKLz&sqXT)%eXW5uTv9F6d8-gK(R8^5x2{^z*cwK^s9G^!D57w;{d9_z=WD{lI16!E zIG^`o3$aP*;x6m63RtK>M1Z&BnQy)P@9MWHjPXY7GP{C~r=h~OsidcRJgTY$ zl2m81nxN?8l$CkIlku0JIulga5a5(yvLbZ4<*e#-gV5<9OH@hbQL2(*7<r2QLr>LV{H7-Luj`S-n0Xb))#YCo_OpFqx32Y8u(*Ry zAHMHm-{bvwB^^)awLQukjuk-6!yy1u<#$AH{t0@s5}%+-L-+{8*qt#T8%6BmO8-BG zZ0g8NRmzGX`EdCo`3`XT;xYKen0yol3;90iPrln@pnWM)74lsz!}sD;Dc@*X77Mab zpeba#FT_RU%ahdpN;|BQOqW6cM!70r_*Fx zNr;PA^;A{OP<2dTGBQv3fas-Rn?1CXBOr}gN)|{u^=Z!gF((awG+sB zPYm=K3eSR^&zf>#dI@t%DTXQ8{V^aTMNpAHLdH0c>WQOkXK$2dZqDo^-S^qr- zWTkK=$odsz#eGh$HDii}doYSef^6S)!Y9dyW97;8w1kOgl4tk+kb;3A+kKEtiI>%w zk&B{uAlIWpF7XgI7VJdLU?l{^iYyAQ3f?G5;dT#RRfCVX5zgcU4Lkk z`M!>)2;o7x&iovR(6r1E0|ghj`8nCB#=8iGjpwIcyv{k&<(p8;L~TEwP1^gzE}ZEu>@&c5$4H6eTGs zp*((^i4>WX%%VJgtVW7VO6n+&ABAr&q+}`2q@(bkg_MwR;f>T1qE+`NT6KS-Rre=a zb$_B&_a|C)f1>ej)6V6hBMFJt<*;#BhBVr!<9M-!loat|betwKDIuA}u>mPeMF|lK zZ)5;Lrn)~e)%}sFZa}4GPJ@m_FiKc*CA+XxRujc2i5LnAN57AFOa#+0%VMiRO|#|T?jP9qE_G=S)mX+3_=N^!<&iJSlz9TMYlSREkV+fI^akN zb#-whLMIU8JfQ8?Ap?x#Rq7}qba)FR7afZvLy(_=86_m5I1-JRmf&s(7;S?*E_59w zgbr_H1A$z0EHcUlxA1CoBpOjRNJAF5@*?JeS}{7$?#mkmUZ-?ZR9Px_HFmI}gwWxQ zkgKtyFH#bTq+(QnI8%CNxbz5)4oXQTyWS+l3hdB@5<*9A{fHa?wTyB#=)x$JL>h%S z2xQH%ND?LmyIp3=v-LniM{W*)RDsfvICs!*Mo=s@Kz^YC-l5@K#~w|boGUty%AQJI ze-{9v2Ln?=ekYDb59Y9O=#TF|tUM_MJ5zG3WyoyNTG*r`bmS(G3nN7r#$RYJ*`ImH z{7{<`LPu@|08bzZSx1a=)O$gN5;26+(JL}3$;B>?W00aGB{XP?Bk@5dhm8X{9I>V} zD9%sWJ;%iO8g+9=kX$MT(M? zETcSrY)6VrN+KDOf7AP*TYwScDCN-G1L^^ru#4YKq386GIrK!Fazx*!TJ-!mvJBl7 zlMkd|2YX5~u#4kRq{yVii(MS^kRp?kaAOpSOiCtW7sqKxQIe7%<%Ku=W}hNS4ssxT zi<7EIN%+MXNqJC;Q``v-B`#5kLsF?Jqg97exyumr9s4T6Kn>jTQ8bWoZT4;PD7zpT0y6@u$yn_zLm7gcnDd(f8pF zqrQdbi;PmCTwbORpQ3z*v&XTE4>@YX3oas0IF!t2g|owe!sU)#q>vZq4k)uX@%3C} z`RE1TXmLN<$Z2J^&l4?2#G-h-q?mWf>?M4i^A2*tvP9Ds>#d1Og8n1uMZFPqEc&*> zUX+m84OpG#Ktx$%WfA0=?bnJ_om$5IxMMZ^dJ?P!^p;1&h z+hS8xmO8e~whn>>5oL{!K5PpvQE5|#U2tPsU?)u5D9;zzp>jfoHwPbwuC*9XnC6#5 zjzg0#OcO4biLMZ7M|==#Hzo6;u#6w|?x&n(P9fh*!_ey@^Z>2!0wTl|n<(3h+phk~ znu}`K%O0lhcB1Kq7n%@74Z4TD(d|k4gcoJ7(=EvnUoMC3j`pIRCpAlhl(G$z{K;SV$I z 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 P9PS>pza%LPd5QmjJ%OZ8 literal 53680 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

hJC_D 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 M|HC*Db1>ci0uL}u_5c6? literal 53848 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 UZTms#?!#%9n~wSt!H(1aABF-w(EtDd diff --git a/tools/win/stlink/FlashLoader/0x435.stldr b/tools/win/stlink/FlashLoader/0x435.stldr new file mode 100644 index 0000000000000000000000000000000000000000..c865f57a850c4029da3fa713dfef871bcce50355 GIT binary patch literal 39148 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 O%dJCPWynG%|9=4vtB?=? literal 0 HcmV?d00001 diff --git a/tools/win/stlink/FlashLoader/0x436.stldr b/tools/win/stlink/FlashLoader/0x436.stldr index 27d26c82b6fabe9f7c7d338b8ef6d4bba139b6ad..e9c88deaa7368de8e1f324398f66471ad87f0b7f 100644 GIT binary patch literal 42944 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

ROxh!o#P3h3V591(tw2;X>WMEFV(-dKrn_q{)> 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

aw&BI$pF-e{o>2O}R8 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 diff --git a/tools/win/stlink/FlashLoader/0x440.stldr b/tools/win/stlink/FlashLoader/0x440.stldr index eb4b92ec554db91035254781cf01686abc1a6418..b1fa618c4408cb164a4595b477a75df0de8562e9 100644 GIT binary patch literal 30244 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 literal 43712 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 literal 0 HcmV?d00001 diff --git a/tools/win/stlink/FlashLoader/0x442.stldr b/tools/win/stlink/FlashLoader/0x442.stldr index 14f068ff3003f9ffab3719ba7bfbb29f2ed284c9..8deb980d0c5d18221709e2c1447ea80dbe764e08 100644 GIT binary patch literal 30244 zcmeHw3w#vSz5h8gJF~B3vw4yyEHOZ0AS408qad#Y5)A>809Dg2n`9x2dAYlR1VTYC zD0**gwYJ(`E3Nh3)>o@sU$+&t_gZUxw4hS8-um~pR$A*5{a3wS%l-b&nVFqUP{0a> z&&Tu0%$eWg{Lb(9JHK=0%$&26ZFP-HIOohv3M*v9 zdvnVBGXm_*JKpC3WpDpo8cP9}@?y!jnxZL1Y_fA-RaYrvZ+_u@N9jBJSfGC|$MN=E zJ8z%bSXm!fO9upwzhFtlvZlP5yTy(+PkE3@WMg2vLLr~J8^~Izpe1@LPu%p{*?Nii{6AZZt%Ms_=4}Q z#d*ccA-r;fSIQ%#ce|Y#X`Q@?q9Ho3ed4*Y?**>v` zvlnm6yLFNN6nW)(@Vskz<-I#q=4aPAZ%li1&$peorJY~!Wv99?wdgYEWoeOob|o9{ zeev}@+w&?MH9njbI#2N}$SWvv7qM^Ow5a~cqAoUh?7oT4nlxVF*mvkDwIXw$_o>$p zjx5nR_N6_)KbVkk&=e|P>p&PVsL-P`iDsSiI{V@P|= zRH}LGlY8zH*eMQzuY$DK_AJPI64DOc*T3|=yBsW)v5D*(*RZqzE6z*d3x@J@7X)$- zzq|7=Vg->>Q*{3#$CJff! zooZPMtaJa3h3x8CDeRjrft!b#xv2RNr5m0*5S!)}{a_Gj&Qua9l6T8NWl7|jX?5bGs z=Y2}xwS%mT?biZtq7KF!wtnEpbqWqv$rjvvGh>y5)2COn6Pw^AN-k(3&W8bPH!zfa z8cD;znAwoYm{VM2Gv-cZ4cXOR)iuk_7*FS_Yl17&>(>|SP$CoDs>_R*(Z{o?$dnRB z@L68Q)QOA)Ii>^C;GdKBxwP47uQa92_bTo`Hi6Dk&APk}sx(`O(ZFr-Hux3P;`V}^ z&NE=Yhb~tE=SUO6N9d!N>JhhJf4NCN*yLv{Er(Rdw!|{#liI2YZBt6YQwR&R3SpDQ zJm1^kU!cqCon(teX@F?g2n^}Vd4AD3gj~Ff3VI-9)!@i7E=0spQ6{qTQxHOmU za=KhDx69-5I#XP}bSi*^=nlZOY+>e?uHeTbUmVWIu+Odm)DI0whM=d7NQK&O8huuRut> z5b_C~NrLKC#;R2osQg<5kvFe|pmqqN4tYGDrLs?;Y!qc_Ogx^lMc{W<_;n#f*xXGiFy! zT{EpZu&yr}SlGM_^C=@K9bKU)<1S^OHx^mn8}1Cmy85DVrZ^Lr?!Mmj%wal~om`;*p)D{m#;|n`Gqv2Q#lr9@Z*3nIv z6%cRK+3)@x=XKFgEWA3@JwVdp?)Ny48Col63^KMK&N>a-)?s(#+ps~=#+P$VEpe~_ zXLrHVD(eRNqy?-Iy@>cv6tk(&7}G|kTCp1GjUzA}*ODm~(uhvSWrP(RT7pQi91sER za;gTWHv-O!6`r!BabZh+aM7xkbD0U$H8(GB4z6il!4!imF)NyvFKu49jHw28@$zLW z8tYo?n8QG{HY}@KzN!`P0a6Dbo|N&Wu{2plOFR@Gh_TBR|6CkS(5 z#0&i6CJG-9pLWh8XE018FT#tn4`H2%k!_~)mM>y_w&oS?y9QK~JK?_BV~WUGG%q&X zH@j>yVZ^=3bl>b*^Joq-8FF2t-8WaduYsto3sL3#)UzEoX5_c?Dvs6@bG7W|-?1+&-5U?v*tL{0}k^~R!3 zMK6=?$0PSfgx&pE($U_6G13XEdb|5NE@1qRTu4(R&)UFxg7)>L&XzFk<#fEv%Qq7}>&N&Ok357~iG%3VAt} z1#X7nW-%wxg4P6Kmolk(IanSAiz_Cd6FD9fv#H!cAmxnqbaWIsiQY%P21ng%Ix0Qc zQ471f$saMsZ&Q2$;jA>Unnf*-{K)XgR1g_kdYXm~d4pc8{t#_ji;1@gowF^Etcdol zkA`~I^hG-v|CQn!EBvtrCYuGFR^0qbDVs`hvk6pZZ73e15}!MZP*($GIc~qEX7VgXevspOd z&Ry!1Y2>>aPz`tPQs*z44^#_KmOC$3WzXyf65anajYD!Ay<4A)rKK-n0x#llisihe z;kfNC&cEeK8Ow9wiEClBS=1>{fDBdn9g-W7oNSIaKf$!dsrx)LY~! zT21&Lc`_=|5{dUOV)%U@g;rH#!xJ7y@O)>6_;<47?8dL+f511)<{pdZvfAtuehpbQLsD? zsx|t&>XM_+pMZ4NqJn_}#&Qu%p0DGg5>+#A&_MqylzJ40AYDWxJh0+0W)dfI(dtv5 zRGUvgDeuAnIq)RnEW?U3mTC{K3^TaMa^{9x6sF?LInz8iBS-r5->5hAc61MPj$FJu z0Tmr_kx(qdiDkkr#{c(cmwsQ%ORO6z0#U>qcnDY6U-9~4lrxMuNI)z(21*BK)s(f- za%0O-EFSKOwbk{shdVp5Ziw6J1?}P9j;_GWipsW7w5M(HvX+LHHpBcjGWc&07U}J1 z>kvXd<)zg`^CX4o$!njEzGyhu(NkH02HLm()@!xHuXh&Lfs%LR~>kDx0Whswc&N4f$n(BLLYJpJX)i3pd)UfBLdsn z6~zme1oJ_qqbC-L1tTGRBf+>+jm0~Gx8z--3?d%-fLkBz zj`Uy}V3FnwiI*}K+)SV#zT(jPjfJGHidR3l<3wFR-i?A|*m+w@}5)Udd5u`zj z!75{{uG8W>UcoqSed=5HYOip169xc4 zD+)U5Pfl57v!t@wK21~gNq)bks+-a@Ek|>f<5I~L>VI&`s!xkc@bwJ%I$QI5HPxH1 zIde3v61l1lkJYpkd6lJkRW(=3E!EPqG_4?;4CTe+#%bDAO$~Uxnl`Z{-|HpxP@bw6 zf#Ot$^AtZ?@77b+d|C;D`7bk{hNjcT=ZNO|@hPh>t-wIvx1g`4YLm&?GT0_kbI4$O zhs!lXPmJ3pWLOp)4{re&mQz5-42QyhBdDh4C3!ByKAWTL)=v5y#hSKQYefz*6S~sP?h>8* zYjox(_UXl%sEmk+(aOoE3n+)_3aw(Gi@$^}uHrU0K3n5C(3JB#PI1L)IRc8mO^T;z zyhJFy_Y_x}mJ*=!4h45?+yPQkCurK3694!@O)Wkx44~KhFyJOK0AoJ%*T<9~Y%BvF zJ;hsq-p9j$$H;(uEgkpqG1LgT6EX@kXKqemp-KUT$)RYD`%ZCd=yf>7lPat+;%P#L z)f#dxcbBcSP-W9|9d!W6VlB)4+q4iHsajofn zF0}qBw5BeM$E69Fn-=71?gF@8%M=e0F7eXs)D0YZ?Fu7aCL?Gd#q}DGcmy0}52ok? z*wBedxtgB|3or2CDkB$H!}t`XGgK&~{C;^|N%@2F zI*am$mklo2_R z62#WgL}Iho{A&Sk&7%BSd5yD7)c8;1;H-r*A}10N12{NaN!e&3VQeNRgtd+qMk>pi znnx4KI!RoKE0G8_3kU3{tX3fDyg?!<>la8m(>`Z#QuZZ*q%%bkkd$2_kaWIRA}OQT zl;=l~gOjqy2`A3`kON5>>6V=A4xR%Nnl{(uz&akAj)SvS%7~muM6AXE$&`&I<_lso zWgkUs8BGj;U5Z^jS}ZjTVG-F~l#^ESOf?WzAaELsgK#=q@ioWFuQ^OS}-B#`QWYbYafB2fpVN)S?%O%@b76Pqp02yd^1OtM!(N>Pm{LRl#e zc_zk>ky8&c72Nx)LgGcSEIslhqFZ2MsABaw3uX0UT%u%94rXH8KH8Q8p2WJQJHuQ$iE3 zJpxE0Y5)uxW;*~f5;eahuAqz>T%JkF2*ISGT`;jyd9YDNyZx=)* zjru4f3+0)56{J%}!70xr$bqCR;Rg~qLS1|9?I5E@KjoeB8fTeE_b=jre<&kzB2iq( zK0)VN9H@n|^Ki(sEW3iTwS*IAl48?`#7vhc$`TTn0K!5jjz%0PLD>o%^1K>3kd(;^ zi9pGPBLfGBl;z-%XL*NOL0N!s;!J)5CuQV+c_y8Jq%7HHAn-eFm2-y!7a4c}QlI5q zy$WygJSh&TkHmq5e;9ntG;Ro#-Q~tg4Z~6Iq+AN<@>w{);nq0M_1v!~TmqfNTs7MQk@d zh^vQjh@U(m7vqS+R$|lDJP06?{FxBZC{z`8h0fS^I}N{rp+v2sFdrI^cJxxo#BVf+ zK334P@FHf8LAU>UfjF=^01}!oB0XSmSiAIzOuzY6SSq^mzZzs?7dR2=SKkU-i>(NU zaP>G2xd3nMWChHMa44)9z3@$3C0NAPPhuz*42!UTrVJG%7!rFWiEElt4GCJSGIkQjR1{{k>irI;9cJ2*+fOaKugdFZuU2QXt15)wo2v~~mIL-R`vy(D@W zn3-s1iJ`YHm#h5})<6+dzV_*Y@t>o-L9$s%MOdCw^E`to(P6C9;4^%76 zh3DV5Bi!M2sSd8b@h6sj=A@scDp{LcDV4fjQ*dFbTAW4KZqJ~;#8-9+q;l~qL0HTb zY8C!xR0-f{wKXX$OHug68+e-6?Qw_-|4J3A&bI5$$SQuoqp6#U?_|1q`38-Z>tkx} zPF1kz^qgn2RA7^~NspAxb9*+bO2rNIV>~W?a3?gOXyD&FHoG5!L)sNZxnTpJA`QR( z73iVo*4&K;;RbC>+Nyas>RZbObWpnkR+N<*( z8S|*_2ww5UXI&1>TRc}#2lR7&JoA@1k9joRRp#>yszWp1QT4M{Hh$ghS)*^O{kGe) zS{AF}{OkGS=Onr?1!?9I-w!$(L#qq)ho{AVyMBTrkx>a4*dTI~>Llf?R z9)F++m~juet$40yShoKVJl99(#fpscQ=c=CaE3bnUT>O+txR-{fW3>(gSdpUW4_?62 z&k)Al_h&LLO;4@8P;*S*ruFM{3(kgD)r&5bK6Pku{g!Q5%2dY>o^iiAsEyVAWivcL z7hdNX);88m)wkCEK;KgEu-kK?s_1IL+H-||G*$}7(_l&ID2~Uk*AQ~-a4UClq1p#e zLp6`8XBP}FU0Lab2lP#4D_S6liyvPI;WX}2I*M=vqK={EidEbpgnjGCvlEqU+e48os$-bV7L z$E9u4H~Eyx%+J42{DAIVc@Q0&8y$O_zR`#FzHrI>T|yhWZwPJZ#&N9LtWa1UdhSE3 zc(&B$K~tNunc5be7o20$#%XBNbM7?Vv+{SNb%`yRf3whq?pQ(>x@8@!E>VS*pfkU` zicglh{La*+_QJGhw9UAG?93f+)5j;wh;13oNI zWbH$TQF+~q(sOh-724A6^jNip=db}m+r8Rq$6p)mh`zBUw<$?eL!+tppI@!(W&V*G zxjoS(SBHe>=sqq&m2TvejuNW)jVbQA`W@$UzZ`#Vd!E$LbPpPE>!kS}CHo0|Q|%Aj zp3SOS>{|ngTx`=8mC)RP(orfY!46VIaXxWAcgp_o3#vpfDA=lR^_9Cl!x+@g-2ypW z>~|KTX_7(dD5C2XmaQnR|2m%+WQ*?btkB=7k13n!QM4`9yWF^OZEddeD0+I$58deD z8)td}q}2RS-#ine{w7t^w-ww{j#|0cP%N5~dZTiTI;>GxwW7E$YU5cl@IEwj5M45T z6)JV_}HJU%;MiNXI&=wYM)A4fphI z4C6Y6(V(j@7RUBvNs&$-3dZpJ9c*KtG6mj>4h86q4Sd*Up!ku~=EsoBBpzI%*w-}#43lC0NRvDN=sC7U!_4VSi z;lu}PMMWF_KH?V%Q2g(pg1vE}!E)*s(Z2o&GU`m5f}KOXp`J)bkOn3oG1de-%F6+E zM-pB$Ua2IVg=@uNTbtPrE$?1}dY6|pY-E-)TyXBAdH)I;!! zsz9`lt*EARg_!yTL+$O+@J18DqXE9GYLFuI*;V73ZsFE-Ux#_w6Y8*Y^$)aT3V?5R z7^R}2UiyMZ1^r@BR%cX@KuE#HJX&%_<9L<{cMDredRR%Em2{qf>Gj9YT3H2t6N!&! z%sN>$+wa_L{(N&8Hdtu~s*-?YQZlVNiF2AAN+KmurrX(O*nt{5Fw+jqvIDaL&?iS) zL+#yRQZE4nNk1D%TG&9+!v>NjHjs3&fuxPK(k(n>Th|^1Q^j^V)hw5>1*>sMT*f6a zh$Z;tiv)*xO)TcMoriQc@uawUO;>B2h_SIsK$*b$#4v*0u%pKjz; z20d71QmQP{3=9gjjSY)}c&=)#Z?0QdTU9v#ep-3Ygi+F)}-t z6eF|Y3VX?5QjE+FCdJ6?AURy_M-Y1n%v}P)L80%^d;~TjS?;Q^u^nk6z|qJFaYrnj(D{gD^1n3ch-7My zk0De0d<;3!UPly8edc3I(q1%W~7(_q87Yu`o8ka9V zr=(;NJ`OJT?TD@__vv6Sjx`n~eI3*s!p$!yO8t!8F%l5_VB}?D$BPX%qt@72V~dw$ zj2T;rPhcdX*uW+Bph)>vL>u%Yc|B&!nQB9a+x$u1!J4_!%m$1gLFUm>|_SRuq!7=G7zUaNfqLLnO z9exk+g+_e}FdD~aGHozzU&2462v9Mi(?ZrbLmz@^gAu+6YtiQdPPM`GMX*h_@@oM9 zqYdr^jQuoLdFaBPv(f2W#kbjDlx6#EFnvG$KW*^80LI2JOWq#9SVIyp?Sr9BV-6eq zOThSPheiJ_;1nDDDqz12hA&u_4fZJ54rhb&0Atz8s-N}>VZ)XM(?96=oDE(Ic)1P6 zx)ob#^G7@2b8K)A;Ghj21dIi7Oa2bPJ8ke+0bgW;uLJx|8~g*n57^*40sq1VKL{Ax zXe{}U1AgBIKMQz*4gMWqY_qfYUj;nd2LA;x?M7lqDz4~zyR?6cV4`T)rbN591PC}4 zu)ROz0H$pvCVd=W+TdZrrGU>g{6q4p04L(#!D>gqZGg>0{eeCpYxXaSm)`?ULD&-y z!G{3*Z7_#1SvD9nmTQB@0miRStnw9PybYcQ_)oU>Tm|?Z8yo?Ap|NF&`rAc-ziflQ z4tTc>z6tO(Hh3@KkPUtYFnl8PA$hL>F0;WZHi!+_>dylF?>720z>nGBX2AbxgD(X9 z|7`GA0q?iLKLY%m4gMwI4{h*kfZ(XvP!m$YUbOc)HjI zpN;agtHPu=1AfH@p9h%s4w&?Iz_fmE!W#h7E<6*C0;WB9CcFjk4L0~_@wWr~XaZ5* zkE^Qz!vz7_F_QuKn}D%{Ay8_-y8+Jw{Ez{EA8--kAG=iq{~ds*0xmJ&y?|Q)KWo4b z11^WXcqt|Lp8!nz0nPHi0lWz?b`%Nv9{|(Ftr`RV|A1)+S+xPXaYLfbef0)h0C*bg zuQcE)z#V{1d+Gqw)c;K0(_pwv2Q2A z4)#O9uNv_|^alac|J{=OZynx00)7c_01aT$IWDH-0E*B7al!@Kgm8@Lt+*haOua}q zqR}xj?P^cPm^>uMHuNy!!?}gM;cO|D$YxYz>$~Bu>!BnFbv^crYIDI-sgx&@asZUBIF5S&k_+qS~jSURE1*3 z>ATCqWx=%_=RZ^>3WG80KzM>#76KfeaEru0P$^P$!klWIQoz+ z(goDGW$&c(ta+f`f|7X$zmD1rS;w@ih`korl!Nz=6(5eIi;o5+ZX0SgWX-RFPe5cP zByL0Q^n-g6JSJU5NgK8NpRT+*c7ts_-wMsQN$s~n`;RXU&8PMsm6o{8@N9AK#Lnu& zF=u>mp*SEW?mc6URSbS-p_bDQMq&}jIeu+KYB+u^DMhk=Qg)R^Kncqn*H_wCk$T$S z?LzCo_*fXSkB8NcKJ<;U=e`mQ1TsB~XQKR=gDaPmAWx{QbnUSjfdltfrbsOWXwJc7 z(*g&+P+2Z9Z~Tq?n3t{a>Jxg~{qApp!ifjVU#>lUYBj=wbvuyGVn*(J>BayPJt5i#U?kyy| zQ%aGaDE|t|b)p=;N4Z>36-&MS>@WNB86qO7mU6taC#tOOw5cG%{LAhk<7!Hu{_+FkyPBB zI^Q{9MFNMjVyDd)xNADqfX|6(=?4Oltk?`$;`NuZVx#8&0VQ5}NlX(5?FcQoI2J}f zU5u8Z96^L*|2%d~96fg0-yWnyf$^wy!qyAM#YRdl!NcQXe{hT!%!q}%3|U+FjKJa3 zVp+XvJ`MFz*4JM;EjBl)=0M?`gR5i3Wvkb+eRdTD%Eq9jWqlE^rcCgk?P|!Hl!k+= z$1XGvTon6q*+pyr`gq6rLIk0giSQ3ix3afgw^^=k;?9;u1zX-(y{x@|f@ZTZl8S)H z>^OfG?x1O;q$)M$OvuI&W@P}f@NWhC|8$dBgPmW2`tWuWux7g$Ef01 zEkrteVDy8k-6vcyHkRwQ`7A3{vC2m#`93n4-uWuHkA*A|1o|fBy6T~0Z~X4f*^y&!>^Wvc zOpGoZvGas^xZt!o6pCYSobt~=;p+!Pq~i(b_5{nl@n)dVILK1yxo*j; z&X{9}!}p)^#f8ofSn4~-^G2f7<_9g#1_kEf{Bfz{n#SI~FmPyGEHn1d!oMCEE#i=` zc=N1TrQ)5v&`!L90u9Xg7=Wu>43oFxvN6Grs2U+eio6*qL~4ep8d;iV1?Qy-VPqRt zaAI&oTG%ObAjAmdwt{I{LOA2a3?ycOAbf6`5Y`!ji~_TOsS2N&byn7Uvd&90Q;#eG zkymPfb&ZszZDdkes=_8X2eM@09`%`C_1Q*_5q5sN#Cd5+SctSdRxwhQN5#Gjp+Zo` zLN2>VO6o~b6`t>q2lS+PUd_-*2Pp`yurFtpE+>@MLFP`gMTwMuV1nl)3mzH=Axpwa zunYyP09Q?+?0yvT)XD6rX9UI$_C$KQdnljUQ~C5+t~!C)vN?pn{3nj#vV?g>W=@7k zfup3DDONBLw1ZACB^V5*21CKLl=NU`uC$&IYp^~4jCQXaX;c2$4+O55^`e`$?3AJtDO8V9Wj-Wv8HQ=mg4+HiejlvTTdN z)?0_Ni%^#G52h@2yai=zQFadQPt=#l=f~i)3w%mlK4`x|`!@X`f{Eo(B$blS)}8jX zf$Oa6PmEU!c$tQX6rUt7+Vv6eDh00-X`k0owj5;#+dj-+3`ed(*}?iU+oT0$FG1P0 zxIfXhWt%(*K2L&AjpTFUZ9drC9lZ8}*F4GV#Kth{_H*!g z{UrI&-UXQAW?3S#^CWePpnL~-Jp*2cTwZdnxZW@~$f5PygBmXiz+)fy-4hTIj{6Hn zY*BL$_(extvA|_HD4z83+!P_Y>=PR|YfyFv%0jF`*LxGn?nK$}36y;XW#Kmw&ZC1F zbE$72D8!xOGm=M>E?E-EdW zQ#yCnj8!vBBkSAakp;CE;<3lQ%*I$lTo^&KyREZ%LtC^d(iv-ycL_7a$F#J!Z4dzs z;g+#RK?(Z>aQY>JlPXe}?lPQ45hMxnH8)0=M;p7^@A(VV*90#Pa5? zQD6chNV_aY{)P=vsMao?F;ZVJ48>_lLo0KM)LT4E-Ifkwn#jqmt*as4wV6@jc?m;{p+AE+NhmL95 z;|<$-8OuUg4s#)5OSItb#Qn;3vgPr{6LPJ+sGR;~C0wextqcBx*QY?rd)sndC^Zwf z&l^T)QT2l5mGui(EWb#2Kt*ls(%Sk}wKc+Y$qG|byY&3p1s4j-#g;9-u%^1Au0jM{ zL|xT|6-!stVH!z&5zkz1hde9#=(8I9SKh$=ykk78h&J@+*zz7?pHr5(|D zLsxTqTfN(!#@wv+uD!(b$nh?>A??7&ygOkFzGjiOpj;O=bau)SMi|SKJw5`gm%R_Y zmggn(3cUMmOr7}HITlN|%@9ZG<={pQ=B{Q@rP;&K%q!rao&3Srh~~3(e}oK9MO#zC z3!HAXq@vI&@AZM31Oti8Lfi#=kekxjzwiqM5w zi@0&beHl1h&mgfxF50nO{;4e>4R;-a&wb!O@M;?0}u*HeQNnh7eg;^g$%YbJP{ z5+G_>N7X%d3_zSXf;FLd6n!16rd?(`Hp(G9}5!N?#^ zUWXA63!SMi9t0wfKxcMOsq?QOol>YK9$g>pYK*ClT-Mqoj88!I5OR7Yoh8vt${j!| zItV_ef{KeCJuGyjezOqDVf~9RhET`g?;xGh@%(64vYM{b8(%fjji;c`S zp!~H6Yw?agA3aR^7F4vRLR?7I+-K>oNZfAFsf`Q>VYk7vTz zWo8;j;6j_Ah*!!XsXnoG*kw-QsPPfxNc9}=Ml;M(4+4klFv76Vn>zEQ?G=19!U{t6 zGfJm?PwKs(rG@%+3gdoP_n$)xuVg~Q2b6|yDh=^&2m|S`(2@F?cnKQLzz-*$j(L#I z8!y{8#2Z>ywZ}11KIdv!fPUze^B)bKGbgiQ%RzL?8@d{p|14q}fJqqQpfbb`;xLg2 z)U3R zHJz5Q(0N?j?6S^F1ttPa!ZtTrvKyQO9IyQd!@@^s2fpYp$J_d+U0c|cPWi~vh4tPr z{42{bq7dIJK{doagkhlvb>NQ<2cXC4c+n}x;cr5^gdS=r{xh`L0xi7!$T4i%g7Wjn zkJb3Gd#k5IQd?9vU{xCv#+%UMgV4e&0WE}h8DUto1$E$$FNdMWL06C9E08YH7Vbmp zO##)hJ_S|0LaFhl4mo(-97ty``UYr;UUW-9_M+E-L;o5s<1BUM4@A50R{my;cXBQn zpBPWjhbr0{*0n_W?#wvo>RgNg*(>NEi%Xosv7`pHR3M7$)nNMrWs1!%x+H;)&_W+3 z+M8})P!{?MaJ+`i^9t?5AHQa0W0NV?1JXvXLBfPj)RxzjwYRNr#?!}5w(^TtpoLeE zHbNE>C;tNsvM^XBw7%JvelZQWVdNLomp{_|96CE_D5*2OHlZ_rXYiCh;40k=CA^YU zx@uMV`NBA0PodT~fJo%>x}`A10sAZ>@q))imM_Hn+5>hqvHu6ygn=^ec?S)u9T*gfPSd0w{k-MP(lb-&RE}{Q&ypyYGzz5 z@yg52fSmOzt1$LE#q|EybSpfqtPsZ799o4sZk+^6pz?bW(jEga50v!p;pRVZlW`WZ zTwX|b0rnQ$tO7$3TIr%$aw~!)eGWeBUY`VgSoA6Wc)mM;H{ZEJRA7xOeT&j1Y%6~b z;NT;S*Ic7Mibn7X(x@wzSJaX!2ixC*nCMY|QPvFL$thF?uC(U4sO}~NY0YV%NNauo zHyP7iv+?I#X|nf1BoV4~(JZ+JL6W}0JtHFY376~lp-6$p_4`;&NUlLlvl;Jqix+!b zZv<9^?sm~E`6`0sIt}Bmdp!dBuxKN0NZ2-xXJL^sS*~H)_edxR)iW|L$l;81W9tB3}}zKTnW)QTVOT3-zzq(bfF&HQ1Wx=a*L-6Ev@S!*QWbZLI&Nd1*&+ZsERm@Ff7`I zdfbk%783s2(}mLMy2v%;b1CX==~c+-l}e4{XB}@DeK1A7F1;Oec@3LqE9%FMIDdj< zmFS7|J==e_s!A-C-bitb$C1e^;J)>*!Y?&%q@2oz#I|>#y%2vRWgcIM|3RvJ6j~39 zHl?oIJapA5Sn;{~2LA!+RGXrsX+QlK9}22=4I#Hz(p4P!u}1n(P`=1I74%f??f8d- zvboO!8hhe~i|*9>NrdniAx2^@mu*eyl8u4-uRTGSq|Zs_bv?57aMuU&O>U>J{qQ`g)YZSThJ zlV1l**`DWun3&Z6OR4`};4*UDNpv$TDJRfR11mz_I_y+zivuay=Wa*2pHS|1#QVrwAHMBY`xJiz zr1{a$e`~jm-CWP(M-fweA8{{v-6d{BZk~)3Zk{)1@)~ZOT)w5VE85z*rlNISw5bU@ zAn_9ZvUT_=I~JK!G<$l*Dr}gXp4dn^?>*BOR@5z6(-3c6Q+DCLe#&@W%Fdw7#*mxCj>i`OBZY(Z1JqQQYj1z`hx9u~luIUGW5Z zuU%fbOuzGODGb~bm`H#e|S^ZTE@>qGXB3~a85H)AtvqtEqPtFx;K_(aL;%*|-ucHlPD zw=}onSL+1n%q@+vXyauGxMj=6h8Cavw4K-(gDjTx!`n_t;OZOkMlnHH=Ht~S8n47Y zvr{@LA05kRi>or@;25e+n(m2-*wLG(wJinoB z(rkPDNZZJB8|s>&mSvHWB|ckm(nY>0R${|TZD zY#AAqPeZ0y#<(PdLdM&MT2AgVft=r?oMT|kv@|*DPn^wG_YHWpzi%fww5kZHH$wrLNUY{>MNp|%tEKtQH_J!AsvMov#$hT?t|`U-CIum&7$ zr{s^eQ}fY}?Gf<7?kobfHD&}bmxZj%5y*rhwW>%qdK8O*c=~9#u=QWtvv9u~%u{fm z%f?7m>)VU)PGU&M18!A-q_0qS`Y!JAg-;(!Pwb_1?x2*0!q@M}vW|kejl10Zsi^7~ z#^|0^dB!>!``)^P_WdKOO0jO;0sD@V&JMrgmuN$3U+yk|qIaYy`=+M>_{KYB;4i_z z_-qRX{?d-zG2>CyBkzoXAC?AwMjH5GWnlFTa^+C>U2X<|o)5vkR=UaILkzhL{1qQE z>{BvGLk#(|A%A^`4Bv$ed^SWc!s5d+N0{otdC2AA&*hNkHEENybUbZvrcOK`s&|Y- zxbESv*pTNxg0K&sfpQ>G1O~EP1HFH!{g%HlL!SE}kCl#5cO>3?z;}my?ZRJyA;+VT zgU^PT-I51-_dVyKp|%fyu7zB`q+EQC#=SoQCyU4lc(8L(j>+Hrpp?{$bHa86oNp)L z?brK?JW0!U6pFvM~uB>NYMN`z%h`Xko%Cem!Gq?9kY zq>~`lFc0fhF|!$>M#65yO^|Fj{i5>7#zgLs)MB2fv2B7h=HlzTE} z#<$>82{QO3tidKxMOH8&*}q7fhhT_0CdowXt|icO}fBo1s|3$>K+VgM>^-_AiPbK`_KBCdouvjVeGWCTAe1nAtQ*iOxaj z=>dIt1sk_#K3)2?iq5L#MNeTF^mHZ)&$wD4nXE%Kr5MM4oKY$HP~W5S&NMZ2=OVOJ)}L}ou*66=^G6Fp0#1{%B=LB*Q* z3nh{<%f5y9Ye9ziVI=aR%q#|9V6qm$zi3}JBlt0)+`YV2`8VUW2yam{+3SX*L5gIN z6--F>FP~V~Kat+wn@ZJaGKj*2?W|&@Che2BOx)4;n9`a(EmHs-EW?Ck|H{N|pO$gk z#Lr2lLtM#DRpDq)2)41(WCatF{i}y28zqG?vuVxAl3fy2$3*4hVX%CjCiG23WO4{W zofON5!8q=pM1Ucg96<0dI*w`*#up=?P9_})Dps}D^se;|WVl;qW4s3eWtp%V6)T}? znCzEG#>wK{2Fz|rV|)(+xG;HCA{mn(kWBU=sJOQtOF%(3Cca8*m|rknhX68@^$03% zK?)=jrLkvHDtDJ6GNFblzE|Ec-iv^;Odga-#*`OGCcX8%QxTc$Mo{tRnF`6|T!~~{u8>R?NhIS+g=Df*B0bA)2DC#FnOq}@jCUy{lba-xG2H`F zFu7eK8MASKWO7I%$(z331!$`xG9iBzQv{S?LjEeg87YuVZXr&_T7}BqlHx`tQg6T_ zl>;hMNM+lrSP{#aD#|xTj|5!Az)xBKFbu z6*JEstouoXKKs7Mo=v3cWPGvAe!MYYBXT9n!N#~7LB)HJLK7yezn{^-6Z1A?*e$a$ zz6SwinLH|yjFlE|IR@zZoa9*0TQv>>5Q>Sf<-o@RWdvQ{|1o2MXVyZfUaYLZWEO&o z&qNB-Fgcev8J8mklF9$aV*>m6#ZuEcChXY$#M^^-KoY&E2sd*iz<53ati@y{f{GPm z*%Ol)pGaA9=q&*o5%n_hg;@wlEeJU>fXt+tI2qR>1(J!9)$?kKb&?E|B@BUKuBwg6 zXap6XiWDL+nLwP3>7PI{nL?b5DHD)P4iP8ERL&G{FYjczS&u$bd{4sL$1?rCx(_pD zsh+b&o5bDP#59>J-N~iKdQ;iHYZ0I^<<_EekN-g8)sKu>OALl>Hzi3w#?eyP03c z_aFrqCXW&)W2KKayGRNmU7sa@QId(Tn(CR1*C{fS^$5Mzm%UZH3z@)>iLd3r=ak-B zp5&aO>_L^^>Gh>&R(956Wd$a)5dPQCDYOk2c0Hz#O{DJiM(`4*tn>li7(VbnT;_=43L@hIoI?S>LeK|Bgpy@d6K@p z^Fp%FZ!hlyp6H2`{Pp>S1UgDjT(}3$1e}fl^E1grP%$$CDPcFtMcR{Jj>^V_m31@~i^}WG3rLm2nGFAernWF40%-!2MkaATqfdLB;pVJH~qvKxXowL^6I< zA(;cbBKR757bC6V#xEH%z`DvX5&y)< z4p=`mLILaVqqD3jVe5=cQWJGm6Z6hhm#8ZO-Au6;znt#D-7WO^(Y#v+*V%&s5fjx_&-aRBn|8UB~5qfS61T|cRtIXoW4 zDfn5; zbpnZ>mxtu2BWhLM5hSLVheHbX<1Q&*LT$zCP2_o|R~~h?AJDi|zWurC1h*t!>g+s~ z&7ET&#JMX4NqRsw|IE3hyg$zC=|jltpS_lp_j{xI;LGn`-4mHq=0YT<;DHp$?Fhcw z*O8@Zb>Xb8IJ}}eH$k2JFLxjUX_<8*^CG>nRBj0b5@`0x|BB-Y?QyiFx zyCi$|dA@;SEtl%l@nVDy7srJ2F(=_Y2u~t-R}pUJAk0TtiQrwFZaKT&gYc+_MA~0| z`qeCia}nwgysI5IhWv*fm;wa<{SE%#1%@)?>-d?3nU)#ig;TIE%@p?L?3T$GxcK=! z5HfwC)D%H%JKEoD1hRrw02}LmCq_=0JUzqA-4skOcAPo+muFZLa(SN`+UzXKoV*KM z4f(G)Ox&42W0jAgN&v^Jt;Q6&rfK|lvyqjZ8Vbk?f6EH36x+PyOQ+{fcq(LDn(c{)X+xDEc$de>NMoP!H}}NgtHe7d`34A zSh#=CgiKZSHoL)TVAWfTgV)K5 z`AMy;_$f@3#`1wxyu=harfKcI)X0Dlu>OG6?_k}QW1CJ|>tdK-%fv53l22U<6U=^? z2AFVm=n5sp7JIwXO(`~8hP`9jEmuiN_%SVy=nz!J|AhZHrb<`)XB4f+c@^mp)2fd@QIxjmpR+=pH2;RV^j9l zoO_#5A^r<5^p`Sx3sXL?%iII&wr}2uVdZ7>o}FoFhx3C@0vOzLsj-KR_2_Nzdd9+S7uI0 z4PCM1ZpU7B1kLMQH0KWuU}^9XNY(OjtQ>e9r9*&olI?_`(sswm zUmUu^GM&pOccg~4jd=PZa5UJjRV6p@kU3n(spJglxz=~t}a)X?RN&QpUCV$~1r@W7?PV04OUI=8GaMk;A;dVy^P zX(rEwmmB#PXwsy((zISQ(+Ms6Rc~237oB%6EMRanSF-$W5VFKg{F7%h6Z%KXvX0m%%u81vG8nPB@f$u?85jn_Z>b+9qy!P2sOHDHxI z&}PBYt0*?j^jB6IbCehTp3H5_$(%g*^dE#wds|LjU73?NIYslNuon{$6s+ilD=L#7oNIk6-sHMGGpFf?EDH7Ptldy~R1%Nw}xJMg4vni&tS zGNvfm_x?!9o{HX>o`0vkIeZNA|7*l^g;^7GO5Uew;P!>$$3ynYn~EQIvUN#Aw!J-P zkF&9SPY=9_@wh9~D%p@4T3`Mm*ITwjfaSVn*C~J_RLpS8Pi>}OVQn7E$3et z_Al4O&2|m``05*a7(7)`Xz=qt=8Q~IBLEsqo*IJ0u)A?~6(x@;yK^;Z$OD+A^v!sz z8L0FZn_|3aW_@+FF-{5pz>jHn2w#4=y=~+_a-SW!>6Gti;(O!r6VB=N?{~Is8{vBe zJWL8n$=b_byje=M7ayTXsXmAYsDVng67K^{GyJpFM!u5jN1jxiDROJEMCj~Grqwt0 zFsUZd<>fElBqic!aZ;jd#|&JeIw?{1)fagZ{Zp5y$C#I}(Z##4q|jzA-9nJ({TMnh z|KkOrT)kh5^VXz=Oz$M$ojhAi#Ydhvm z3xmKOtP_GB@9m#|s^l>&6Hk4Nd@Hf&3|KjzdaseM7M&k=`Hsrp&C#iJ7gk};_VPVg zl4Z~N5?5jy=ca|WIO%h~u_boFjUs#N136B{%#Qi@LPI3N6RJQFZ zn_Oc=YiGcl-5LshFKduY{TepI8w`1nuxy4G@iaczW@t9e5kI`h7_IDe$ZH1nA+97~ zF05=|ZrKRtn7_0aKXLXyob=Z5G!>q1R5RqMX6Tw*zRYmg3{&yZ%mACAy>?*D;IJ8T z0@jGPYzEueUR&WcgC(26?4ucq+-6YBPO=%685^ndq=D-^?-v8pc_VesdMllM$2hL* z-C?|)N-N*v8+bJYoH}^li?t6Jl$BgUC_s%`)I2f1u@V!pm_j2DM z-^+bFeNQnvY2S;xzBf>v2kLuq*Z2C@c@VyLo9BCPi_%NwbjYtdQTy^@>kTOUMsxnDigxuc>ARDLgvV4olTs2w_4VO%vDkue)T9T`9i^fDk(4p8ezDb|w7aXLyKBwTb(bdo ze|&r7WVmSONS+*{p68vlN2Z@R!-~z(HN~4}%_=Rz5yp|}(_0%lPFTz8=FTpc8QDyq z-qOAy(jrf5YmRnKYsSCmZf%!=9cK&Atc3{KAk6#Hg6a_zq*F_hGR7FuH*izq#W5ID)?)2%z ze8m7E)5-br;SoT~t!Mx_)&vVf@b${AZ-{nu^-0n#%g} z+NzZmwI}1X?3FNGQ*>Q7Z5(ZDYHnydr=_{83!Z@{?dU$ItUcZp-8}um;>dKO)&sSq zy$!c8#hGjPqhRNn%VPLff(ndFN$a?H$U0c|Nf=78Dh&!Cyb;2EQ#FbxTI3 zFQt>j+dG<((6ctxH*INaXl-t+XCDF*-J-s6>QsO&%}S>UP|E#{^c_368S8~Xn@$@> z^#O1wJyWZ<@!!sQ0`C65!8v4^->|5N<5zFr-rk5k{{4e>34 zhqlY7m!i%X4u6TW)H6@XFyQnE;TqLKx`i6Du;?a#Bgf&uY)B~E^)+e%Y zg7EMy?Ty}TYeS=+tD}1zCK&ujWtVxpp^g7vxrj%`tLhXVcZH$|@h+_4qAl2p)G7+P zL_yO)riZs)JcuHkXpjG6Jnw{A>7%_k@4Up0zxrZ8+Wx*?a7hn(DPXnNPiA#*najOp z2DyJp($yWw>aJ82Vg1oHPbKv;-E@|l&UVu|qQ1Vox@uuP)<$)ewG|7>ONx7; zGANt8_4ooY`H#!$_}@=U<|IS)R6?WHQ&AtDn+)~HJuitmuP3z!uX(VG&ig&dP;%+g zBsoiyYAWqf6W}DN0kbBxH#2E}qHH`3FaL2meMRAt_GoE&6Z@?C#LL_{4U>{?LA9;Ns_|{;EEr;|*9c`f4Rm$%SREq=L{B8{U#jCN?GZhfZSZ z=T2hWbEjZ3uU^z7mc6KN&Dn2xsNJjVEZt7MsI%XaN{>v~xK~;Bl>Vvo-~OrW2??s& z&6;c>KEb&EG9;;4{oR_$`4c-W`$H#L*w2mONRvdv_m@AZEwubet)StP?62XIEU)2{ zY_8#xtgYdb?5yFFEbQa^5x*bl`w_k$+4~W_AIbX>+?P9fBRKYsYfbAu3wryddsC8k z(jJ%Yx3`afOpoDAkKs&D)LEW{ zvq}a3yY#~9rDYcs6fDH@ruUaOY69&wOu8Adv`Hqp8|PIi_X`pQ$j?O7tz1cQk?3+s zT1>h)x8ur>T09wKSNDcvHy@TGN!0+>Y9gdQJyARW%gX%1iN&6eO02egl)qB&aoYDE z3FiLF!Oz!oP2*D%Gp38`bFlKW!`PG~3BfNe61A&^rVD#3WETWY`%pp^@jr-AF!Cg| zUtb+TeK#g0*FFW)9twr~ahLuLS`{9qliW;myK4SVG;sBEC`>*7*IIqNy|tciYD-%d zmu#HdP_l>HKBXgGsN(zI+cRo&OlkgGqlm z0o(EbKSiUSe?C^N(JlN>>J=UlDe1eBe#R|t0<#D3LmK=D;IC@%Gl0LX!9NE4GY$SV z;1@LbkAQ!t!G8n1U4tzH|DaWaGXUSJ!J`0s`dX0hRKP7Rof@10nEx0JY;gqy|HCN1 zsE{DwIe__Hg9o1r*s~Y;VV^=0+zi;eXrBiGd;Y<%6TZp(u740d1o%%H{42nozmWbX zz{RdV$gdmlo3rOHgfjs@uF+2gyibGitG(E-!RG?@{E6kO0e{lhww@L7Oga_vce%K>L-@TGuX!QNm`o~r?4?`#6T6L7mmzYp*e8vG>SFKh5Y zz#r1;|1ZF;8oxIIH)!w(biif}o&xw`w|yvYCFvTx9`N-Vyc2Mz27emxb`9PK_*xDA z1>nzW@SA|YpuuDCwbI8lcphNroUq4Az-5}gmjZr3lm8mPQ?>lN0l%ohUk3b|20sJ% zBd)(u-@||}(BPwhn>9F$kD69!Fuw+_*WmepH)t??Ph79T9e_We!Mgx&*WgbA{-6dw z0{Hiuyw3qPH2QA=zoF6p3HX=>=VCxTP0K$OFg}P&*mEJ^ks5pv;E5XC!TehPxCwBH zX8+FtenQLtG~nkn__u)DHGfPAf}aK#0$!lORe+~!@TGv~YVZdDpQpiJ1YEDd&jN1L z;6DOhp}|@BCvQ;=E(ZK9lI#b}Z)iOJ&jK#j;2#3!_bML!mw+$P;3I&a)Zjk@ z#vGT(|98M`8f@X4IPUKE_@x8Z*Iy$6>+7vk0qg6lNr3hBR54&~M)df-2QYUMdhkNP zJ2m(Mz}&It(dz(nXPpPX4=^{udGLC``ueOLFt?I<^y95BHY2~+-eKJB0*oOu!Vl|m z0DlxPJ}!#j>kA2g8SqrVa6<_{2bkaH!bc?hbHL{VMk3*taD%UkBK%&M{N4b31K?5@ zPQ&Mc{Lr@2g~tK5&|bwZJQMItz#jiHz!iW!{>uPk&6JS00dPIwwQl(iz)u0LapCs^ z&O-Zo^g95z177IT?*;s2!1G-ANx*;6;6s3CV|?D}(q9JrpMVd!@G-!j#dvYRh4W#^ zZnTGIuW5j<1dL%`+T(1%*8;|ObrP-y{9(ZS@{0C)FW@g|^mf4f4B9JyCE#xXMxT`V z{{!$VfG=_3djY=>{oCXJ0N_@@g)aRez#j(e+4m{Hp9fsv(!UG%yMQOS@FBoluRa4f z8=mqD7Y2xPbZqfT5)9A6!_I>#${$J30epnQ%lv;nW+27*0Zm1OfiwpAAaR29v6zEc zr&llQCXJ!z72wG++U4aTA1s{`7xVF1!n?eD7!H#1J&t_S{0Fu~o&4YqOUuM{b?K_3iAD@20KZA;5lC=DV#&zOmT+I|iTh=@;{T8bQ}% c-mQ48-ZJ0+14=VWB>(^b diff --git a/tools/win/stlink/FlashLoader/0x444.stldr b/tools/win/stlink/FlashLoader/0x444.stldr index 9f8fcf57702cea847fb3a71a37e0cdf7f6ee14a6..276176e023dede3d728253b0f9106ff6ef868b7b 100644 GIT binary patch literal 30452 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ilVvxGMn#@t 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 literal 43712 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 Z_8bz%j}h;BM6k!Jhri%Gn52#P{|{a(SN#A0 diff --git a/tools/win/stlink/FlashLoader/0x445.stldr b/tools/win/stlink/FlashLoader/0x445.stldr index 4047c3fbe1929f4aed49ed5a29f360fbd5fc49df..62cfb84b2be55303541b6d288065c5b482e701ef 100644 GIT binary patch literal 30244 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 diff --git a/tools/win/stlink/FlashLoader/0x446.stldr b/tools/win/stlink/FlashLoader/0x446.stldr index 0e8ce6b148079057a3b3680713b246ebaf7ae4f0..72185da42751c741baf2d6f828bd958b9025f6a3 100644 GIT binary patch literal 30100 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 QzPpn0b;7Tb*vWkV3u^QCt^fc4 diff --git a/tools/win/stlink/FlashLoader/0x447.stldr b/tools/win/stlink/FlashLoader/0x447.stldr index c4ce5ac2120f36728eb3a50b769deeb501457f21..972174e1a5959e10fa4b1df0b9a72b4b721cad25 100644 GIT binary patch literal 42196 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 U)q~Q%i;v281LA6&%4DVg4~M&>i2wiq literal 73460 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 hv46#3ExsR{{aeyyEXs- literal 40832 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 VR#wV)LsGuhA3}#IE{yz*Ep-TV& diff --git a/tools/win/stlink/FlashLoader/0x449.stldr b/tools/win/stlink/FlashLoader/0x449.stldr index 78efc83c48f3382c1d4782c8e5ae041f3b09f4ec..1810dabad2c91d9f49dda72aed2d4ecd9320fe6e 100644 GIT binary patch literal 42616 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 literal 49212 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 diff --git a/tools/win/stlink/FlashLoader/0x450.stldr b/tools/win/stlink/FlashLoader/0x450.stldr new file mode 100644 index 0000000000000000000000000000000000000000..147da0ac8238dceadbb544bf8246089caec80e80 GIT binary patch literal 14128 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 I5~=)u0ObdMoB#j- literal 0 HcmV?d00001 diff --git a/tools/win/stlink/FlashLoader/0x451.stldr b/tools/win/stlink/FlashLoader/0x451.stldr new file mode 100644 index 0000000000000000000000000000000000000000..89691f5dcbc3bd313623c91372d1855243155c90 GIT binary patch literal 43068 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

br$D+G^cZ0HX1is0GI+18f?15u4RhT59OwuQa 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 literal 0 HcmV?d00001 diff --git a/tools/win/stlink/FlashLoader/0x451_DB_On.stldr b/tools/win/stlink/FlashLoader/0x451_DB_On.stldr new file mode 100644 index 0000000000000000000000000000000000000000..f39502236c2ef684194a2ef80786bcbcb10d7a87 GIT binary patch literal 66056 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 literal 0 HcmV?d00001 diff --git a/tools/win/stlink/FlashLoader/0x452.stldr b/tools/win/stlink/FlashLoader/0x452.stldr new file mode 100644 index 0000000000000000000000000000000000000000..5d46da249de6eb79b7dad75669a2536e176ec669 GIT binary patch literal 43200 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

S)Sp}jL0 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 K5->wb=l=mg84rU1 literal 0 HcmV?d00001 diff --git a/tools/win/stlink/FlashLoader/0x463.stldr b/tools/win/stlink/FlashLoader/0x463.stldr new file mode 100644 index 0000000000000000000000000000000000000000..2f57b6353f388e3b848fb848156ea8c2ff81b511 GIT binary patch literal 45032 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 CRjc0s literal 33552 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 Mz&|JO|8@fZ0TXuUJ^%m! diff --git a/tools/win/stlink/ST-LINK_USB_V2_1_Driver/amd64/WdfCoInstaller01009.dll b/tools/win/stlink/ST-LINK_USB_V2_1_Driver/amd64/WdfCoInstaller01009.dll new file mode 100644 index 0000000000000000000000000000000000000000..1731b962d68d52030b32b19d6f0f913cbc47729e GIT binary patch literal 1721576 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 Klzz?tk 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

0v`NG^!@ZSy$l}m$ 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%0D9%%AEONBG zN_vvNz~k08KVj*Ev4%yS)_FAaAt?aT@zp41UqvqhJ_+GrS1P>A!Tg>LzgfUbxI03A zSlJAq5$zloW4BJxKG5?em_Hj%MBdrKJEznooF1NJtj*;3VGg#Tn1p{T_#QMRkr#x| znTR#OqF5Y`%2~DQJJqy7AWulz*jSER%Q>c)Wv&5u!}v8`4Z(T9{3W7&n6M2@D>OVO zNWF+SgN3O;p20s)Z8}8jw_z9OmD((0KKB^xqOEcUARlGy>HlLWLu7U^qP)$kbLd43 zr^Z}Z&|zA_PU|W6#n4ZHGk1*xoe$K+2x1lMr`*U}alKrr;8Vz$;Bc!{JT!H|2Fp*w zej+@x_HSW~=SsJzo2nUsiU%r{a*D$W1NCo32F5T@Ba`^;98Q1g*lTRk26`FIeKUiv z0>SbjyA}RNeYd{U6AL#CLKjp;%Q|4rhxYKFunzRNtw?5pdHJT2{Mr~Fge&w)qj6w} z6$TOki&K6)fC?sX+0YxZMnsl)VnX=P-oTTJYC!@GEp~q5A8t&XGeZAa%xuE&cs8&o z7;7wf)`6V`o5qo$<|)6pTh_0&a7)x>b4G-p#%eUuGYRLNpg6)lmU;8_xU`5rO-fv? z>gC?!!bDG>K}WA@L=DDsg187=n-a}MZ(jPoGHXxwqOU0M+!|qG)YoG>(9&R1d-9=p zg@QB2y)!)g1q+|%$EO9vBV24L7);_>^IOmLtFM~D%qwHSWfrVCOH;+4pqf@OoNa^W zV5W$&pV0Bt+!nKDJ*B%dy;k%s4R9xLVHo9Rbsn+Er9kcyxT{(%=mIT=?b*R~ z31`NOOomk#WD}F&{1kPXVUBLA!qx#TsWd!XIGW+iS{aRF=#+KM zjC?ur<#GC7I#ehfN>fo4S-w=}c;Nv{Y%3=;xzm;Hw02?r=9sL7N&55%$5pVM+qA!< zOqiorI%G4!5Q;8$-=jum=*TE+<;RE8p$5oSj6^*-*LYIFGO-ww2}F zSuJ{}HKsCSJAUdEu<&IXtY?3NQAAK=U2T$Z!C5!fB^9iO4f2()n4q$WIC%nWswL1z z=vH@%BEGYkqkL^esd(Y`GB8TD^wSJeV-@k);#>xp*_-SUb zdU_ZgBXvlL1~p^d)ho-KZkNQ#Rg`Q^ekgTXVOMg+Q;+rXX|bKF`r8;bu@7BKXfcj9 zTDp0x&Z7x${xv>$VA9^A0FQ_r=#@0_#N?IHL|&q(7D+9}cM_Xto&gg}v5g=d=bh;9 zXn%3H%acHL)hC+eONATfa#<2|h+n^p=i94Z0md#-t8%$H6|~P94Mft&+!?b0=I*uQ z5bIogO>cuJw$v27>7T;&Y0mOlfpG6%j)fx2pvn@B&uGNVr^WmeQr6DEd*U;GlfM6ZSmq6Gvw;D9YefUeyXHy$6Mnn-mL9 z%t!ac?bH~#Qr|2m{+aQ>IrZnjAW%as6pQ}hqcVXZx=ju^-C|xExj0p($pgkbi4<-@ zcJk?9%})tPenGV!)4 zyNW&jE%NFHDapI#1WigxkpCwpNiGEcbC^{20`Tqqr?tm`*%zm9I7up0JF8NTZ8S1q zR%CSPC>vWI$cG{hL#g`S!o_0F8L=zzsiUaX>G^1AAnPeJAn_DfhT_;@B??=}U!2jw z@kszqE9sWNEbtP=ZT9IKbIV#FHX*dY@Tj`{UyqOCx=)fng2LczVhvwrf>SQ=$X=jL^VhD1!+Ct7Rh73J&Anqt|K(xKxFxqQDv8>hQ zfks+l-ZZI3C0?9oUD+|kqIeL>+QwHff%NqN$~bK6ovF ze5%_mlv?2-Jimq?_GzoZOH*mMsQIYC2=c6*H;f7wLw=qYNHeY(7p=DDg~elQW<25h z*k&>Yw*uqq;Td9k$>@s5+nuJ%V#0qHsC|#{8itb7t2Z(PGa}>Tx%iZ z=?KPv-9T<|AzG`V(102Ys8NHou~KifVw4P1gB0z@f2)PuR&BSIuGW^EXz}>smN8x9 zyTh|Muw}kxTC-7ttFbL!cAuIEJ%?7x4ChvAPzLR2Suhk;*-KclH*fZZMCqz9)C^QL zgsgoT&=9B&0SOI@p{;q@qh!_1^2%e^YAKCO;YMIG8MB zUe;zrV^`sgwu{ih(8AEj&?Yg+ez6B*3h?Zm1*$@3A+$BUymHFA*1~DV&WNtR*Lk`b ztq0}}fMb6_sHni}L=}S}1Z6+MO@#vt2jv9}uU7pQK2$8W`bLy*|2Gt@rlu?D!sutT z%C~?BKawu&QB%Bx*q0#}lozVFc(DJkp5E>*q-X+_y$llS6bKF>V6`@9v#fM2q zniNl+{}xn1ggb~q=Ce{6Dq7DM`n*%MCwdsoq19HBoSP-r9wRCk7uR*YvyEuR5nc(>H6j8_xXEx@Q8 zs3hqbA~VQm(2am{c)I6B#T6e$qW*cIncaqFH5HLFdh~p1N1e$w%Jy%=&aA5DSHDS9-Qv+Cggc8qe0N#VJ39L+CwDi=8?&8H}>(?258* zF7h@sKB~JftvN{4ap1=fN88#jJ(XZ^{mrFT_4`mm8&b$W$MaPN*v^o}YAqzR^pWGh zd~)Gfdva1)43nVCsIx+>CK>37=>8@B7D`)3JNpVAwIH*9&kBt{7RIJRo%V-I5wlG- z8b3-CA3~y_M8je037vd282;nrtXJ?vF(Y!^JGO3gp z{5~z0wq=<2Wg%*4eLlAbX}V$FInNejdO37p=ZaU)DyOW#i-nA&K*kaFo(+B|0NsIV zuRK&bTo8!{7et-FMP|tE;*bf1g)D}UD59{%V%V9_=o&?OlNtfdz&?d6FR7=V00>g# zb%6A32ovEDptR803jaS`NQosTw10?wc|k%33Jhux&_d8Z!>d46Cd|^g`|i6Q+E#7n zk=NIhTD1`l^rz~v9Xn1vZ8o0QP@^|bF=?t?yYn0{zmrMyb|o>s;`)=sl=%tIL}jhB zPH6DZV4#7C+c|Vh+_52}fTGp1u!e$5t)?-y=fq#7+;e9Gj{80{P#~7F*43)AYSr`q zWdM)0@vk{0X0u4u^s1Sr@*0pE1qC%u^jClKXFR%p5(xTF$#t_)uNW+J_IYz0ao+%K zto&N7?mhx>s3sCNmG_Zuhc9ak>xzLQJ&wDP_(J(^y)n+>nrIzR8!wR)o$NPe{4N7o)pn%_ z&GIsyvT|Iweohn=TBF43P}36^PIwrM3YSubq9M_t0;V&miYNr!D6lQNMp|v8p?ED- zBKEOzgZG`?W2b$f-NXLp*_=%~LniFQg{7FULuftcZ3FEG1Qwtl@JMUWfgK)m{;cv= z{25Qc1IoGbwjz)r2gER8E3mw2tDSwLMw_h}brxOU?$dOmy!U$YQs^uVGf>dhK>v&s zI;Q^$n$muvn;|Nvu;{dy>EP**0|gv-whK+!W#j^1_Feb{C2KR9jjl5@gSu3;bg{~? zxCM^!gb^09$U)3{wmr93TlcRz&(5>pC4Eovzng;TwVFeXDy3GUbi=G;8fhA7-FQkw zg#~$eIv|Ayxt^$KkQlC6FXl23xx7oEkY3124*2fVGZF>2SISZJ0MA)^6BkaX!qVE zTAyg8XR5RV+5SXg8&DFOp;U(yFD8X2?B<2Dwpz28ZWk)kO4@8mqMZW3X}cgRVl;XZ z_FBU$NNkiQ%p-2~y~>%Hw%T^3=~hG{D%A|HWOx2rKyvVfzw{W#*Fy7ehEl;}>;CP0 zud~il@nl71LO)h*(N-gOOITBjr5&S2isz=GVyrY&@QE6?p3xC!z|g=Q0fGj#DT#u& z7C&yO1+blhO)KDMYLNcryli_J=4lUR>28Zc%^;8)1$l_8;S~Rd_3O;mY2=HiG zDlJ|oTN%i@in(Y7K82Jy|ZLs0u_|iT!N4l$~44tZy{gJ$@Ql3|8ZYc-Uuv9j3K$ zkJ}ZkYUGYfHlBT(CAKU0H+6D~vhu1f=Q^7VK?>~R{kzcaDT#sv2^ToK^y|Y{QKQbJ zRiJ;CF0Dn9qt70`(K?$N84B#btP01qe@3kHViTX84dhJcEGaE7KZ3qT6ZeEpmtx(_NAD57BA5$BI1 zh?t&z-ff<{a;@nwNd-@~Dx=5gl@V>fNMGQm;bhkGfMZ}9K-+-Ds6D@+tOmdKteD|5 zLYoROT5uG_0TYEJ2^qhi&y%!Kr;C=BWNYaJJH&2x5lQ12N@N;+<-Dw_j|}`(Q59Vq zora1PND3%8zHK02<6E?}Hw{v>Y=YS3ac0Is&0d8cSgeWjG{|f)n zMS;&J?Ye8*IJd_)ibYn+rXmfk6w*LM8%@;HAV{qO(o#bEXiAU|&5|KQqk55|nTF+J zgN3N7H6#VAQ}%z?oFlFmrUx2+soa8E%8p)0QzE~nJ99CUdVrC}{(sWvLrb4F*4!YYE|0sU2G<~xdYAZ&oI*-8FOU#)+-pgv1X zHwQ1p3STU>F__H`$X?n&M+JB*IAJf~$OhwiG(v#r6Kn<$ z(BrT=##?9hC!h*3y}^rx%C2AGaC`Cl<%WjLVd zHzTvMemc5aCBH}i0x1dqbYHY#%7BamW;Q^@u#5b;SOjgY;;lA4tL7ad(uw(L&C)N5 zuBMAXH{DuYDV{xQ6_gH@TIm8_jPM++ZeXCr%t%54L1bcD$9)ZID5@uX5zx?SR)IR=v^KK}w+ISxF({4AC&uuy zeSY#S1Zn5~dcL~o+X#n%JrzWypmULOlwyXXDKwD`7lKGF&qD2FnO0UOC6&&QZJSZaS zbY+$26>iEXOeo(g1>NV=O+4>Zy%HkQx~oB$3rpq~>6hC9B^5hY0mx6TX7DYZVy%=} zP>$K1IE6|8ns0RMSp5PeK`09Zg=$|twm#EK&y{lTu)n~j!kJ$FrEL7B=Z4NZM!Evr z2+L-(KFd630s@jGkS~JQ-$Fsbj*^1Tc4_G)OlezcpK5fnF8W$HF=YfTnuS>fyy-$h zrqtkus~t$t5D;5yqhvGU265kqv)mvxFBLS9nz4jG(jN31l=QVNFdFVG7o}TSr&^^V ziu&5>Y`-Kbunn^nIHnCE?R222trnEi*xR}WTHvB`LbURRCsP2hMpb2L20&W@!C?k;a0}sqjYnWHjfp3KVT(@2h04Wr^xQX2 zb@nsgOC~re;&F+Y&pN;8C2h7Uq|_$F4favdb*n=XZfr@>xE5cvA+p#QSeq?`7wdtS zIy;KTFbxt>u!^A!9W2~_N3HTwwV8q9F$Imz3>ks*??Q-b!a^bc0UYtxth&eVcZ4d& zbk)AY&_eLnd^(k{l&ZZ#ih|Fp&(36)w!fgI*5cH<5<$|jDzjyZ19!0wpm4xI1OAsR z)m>4i2592Ipn`(~5JT_@L2wZe8tqc84E=JbcrcJbhz0>itIw+1dL>i%FYC0hGfhmgp9}mp{O2N{^FeNgQ^GEK)bHU;mjUz#pdd)Ny%Mj!w6E1YXdbE| z=#&brDxC@$K|x!PLU}asMp{_Z7a8bPx8S8q9U;Pnw%Z$K!lVwu$n?&jux?WB4YJ>${G|iKgaZswm7EfEje>m#ZQx98jAPdzD$_Au? z-o9er$W_ABB-w&vD-1#o2eJx5I(4442%FS6&iL8fGjRi_QmKe`QzNZ&1gQd8qrDYw z7_-`8h@smWd3S*2A<`s>rda7hQpO*hojwDl>djy(l@&515!NXbax{W&6bv@>?;~Y| z6cm)UdKaR8XyLC7Qv5Gx(Q$)ZECbkjqfuuuiyXsL!Wx+JZA;oX3&Pbz9B#DJGrSn= zOiomenmWpXD^Uw1U_t~GE--?S1V3j3XQflcx@B9ptu<1XewZTgU(G7BTJ0pB(}Vwc z78DMm@-!Zw?S&oaxhZUc>BqXJYn?b*Jw8heT6>R0a*EBrJ?&m2WI@76Qsw#F$iN2b zG;T3qfmw~bhK>7IFSgp!w3F_3+HL8!zWhe~3uPyj;nJVEHfPf%NP)cpU3Lw7%A)wN zwFM{W1VW$3%pqSlC;*(eqG1JErRL==jbRE-WyR8BtKh{zA(CNXF#>7R#f8ksQ%iB; zenUZ4T9XdIJp=d;@{%-xA~_z(KuJ7q+4_qUPbKR~h)FND(_zNiswjgV{?;iGaG(eTQlVfL zi6JUBT}v139%;2akW?}yQ0kr>rE-L!w^`Ptmr)kDxa<+9j^SaTse1+AD)w3`W23d{Pnbha+8rw|$<6q|`6Tq4NL0+AtVF}L{Ii;IYYvMs*U)Nlb* z8eTX$VHQCl`xXyw7QHVSW%6u9pBsT1v!v;@3h2O%`ECi?}X+ZTf@&KzDk6s4Pl3?xW1quwaLoSK$1 z9Se!#T{waY)lsEHLf7KibBU@MyvB5)^ZfSMWm!#KWr_t_n6OEiq{P%1%6UU#GQGt> z8G9p=`P=Z9+1H!6p{j||{UOQ}K$U`Cc4+BsZLA}x`8A6-1Q)99@w-Ci32JvDRDSXm zKZI5rv_Cln>|@kn@-=Xdvihmdo(8{SE&G;kUodMyBO*}M8E5*`CZ>6Dd~xR|YrClu zBUq~5SjYuiHR_iY{@F^+e~cCdyg^0-2Z_>Nvs+5iI&FwA4W+G;uB_U5NAv}=zSp%Q zWJs~tRH!I(O9ssh1P~ArW>2_LmHR@osdJHd9)&0_OjQ%CDs+n}7U*JLYo2sJ z`&o0K-82iJAy$ zXhRDkz`V_^9AgVwc;s4w4(s3LY8CjXrP%RDPf&Iv(~WnA3Sew7*{ho^RvnuTv9zYC+agHx-*`yuw;<~BEh0kg zEzKaj#fag~LI9S>-dwIJ>v(Fapn?L5sHF-DX%qr6dm{Wc@kCy`eelh`N6P#(|)_@oUhsHq*_*1F*t zM4`D7;Z&}H7#mzensKYPH7v(d{d5~I#!resqfvSr1&A#oi-FieZn252(tDJ2Ig8T= zztG>CV@>W%{D@c=GQa^W(541KG%DgvA>ba22WEgk1ArQ>**eaZ1Mo7HI3`tAFBlnu z2p(94gB3mEuzd%iRON3!qYI=!TE+_~Zi358khL#}e0 zl7Wj={cQt~nR)Z@wm;tUw#GH|(UDvCdYoBvChR7I)2s}u`zYs~gfslNK+Iy-3mNUM z2;SYJk-RG_1F6GAlb;iPwmNgtve#?#xx$mD<^-<;FqsQtt)F$2>ya@CfG9;WG03kQ z3KbwcLKvx}fJRi3T1qig!T{TVqGxl^kP33FKRh6$QXH(cn;g5ZvVmhZ^E2=8kR+Lp?t8!OL zpW9;-FsLF^Wv+_)6>kMwrR2)KN+y+X+i4o2Q%akZt5)t;`d1oMG{36UfS$_Q6kJtg zugO#LR${p#x>ltG45`Fa$*NLVrFlx;D&$obt$@P{)Rml{om>H+=ZgC5;za9d&i@2+ z!^P)}r?8?~3GU+T`JEQA_|Ktv^3Mg#gNi8kfmBz{XYuxa0_*}l5!FAFS3?^R@DZcu ztO)i)GW>xKgp$JuWkAdFM`Fm-4Ig($Nkv%xAkx5_k=AQju+1Zt0kt~{y++CiPF9`` zJ-z9ZVV#iQdsn7sXt{OQ26jy9(Wo0FVx#yLz+r3vZ3O*7N~r~@9(N^1YRo;eM%U2 zeedKt3&%T(dt&^I)bweq!!401E3pBkp1%_~D%G#PsXLGjc8R@vJBa;xb=Q+$9ivcY zzRFoA#67UHvwFZZJ>783lHm;LgZCd|aJRr@6-72BDaV?3hxTf`WF+ag(r!e%^Klar zmt^htM!kT^%l3WWNZpui$qCZ_mN$a-c-MrarR}@k=)7f+iL9AjVC3n5m-Lq4rNArM z^)rLX--Vh}?ild>|Fm98lZXdeLdXW5H|CU-fw3esgaDpkmvpTeFhq0X#7aeOvw zT+MU*eOSv`M~sld|4q5haUM3CwI8wMDyH)F?Y4@x9>@rs^=F?Z38@2;Q42^xc}F8B zY269VRI_;jLOXyvAyx*g2`xw-Hg|tHviLZ?chy zd-&YrSEy(6f|Ckph~(bV3~orGHxaDKsxc~^XV)Ud$ImcIYfZHLoIgkYm9mRuFCA%C z2c2w}p{AI>L&Z-$B`JNIvtO)gq}rHxL=U+Y@*lc~-Yl=KK__Wkonih=)4*QO|H$tQ z+05BTp)syL0ut32AaijKJp2qB=)*!zg>N)ocZ`6#@ayxReg9r$2psBG+-n+d_B3rj zi8I9ia$j{bi6v|GmzxiB0l-J|v?M(1zef0pk=JS0ed4J%KT;ihQexwyf9kGgr;d?K zAA6t17{JUe{ly`dBz*wL)pJDYL}`7YB>N=rE3S$`qO1J#ym$gt{?U;&TYmVFY%-*M zkb{-$?4NqBx*$4ibxZ@IMkdRVVq4Ka#t(_5Wd-!(n4X)6heHopw%+CV=|nimh{JDW z^CBtyhGuy0Z9SNu7&8%RBXCqk=}n6 z*FZjVHHJ$TDUTco%TV=GyE;_x0NJY+l9SD@5yX0q*bzf>VeG;X<3ISI*u_Bq0|VSc zL$?|lwUfI#6)|_#MbsiUrFEjz|BXpgoj+T-bS~k%y+l0fa&|bi1~iF z>7w8F95_EFrg(CPg4~XBU&k((dR|O?DVB29708Qc!*9;$(cSW^5$OWl&8EMQ8Y2q zC!;&n)Q>v|bj^h(qkG38wd7`?#dS>&&-!wsk7)z}SqnUTbj^n}6GadGb!pkUej~*n z+0Qwh#u>|^JZ~g*{);HP96lGB|a#fO%q~W8%;)k1iMw*!|uT4Bfhwm8@{C95~ zK^d|n9dbAkXbQy%M-wBJ{6Vr1XGek$NfyU;Br&VKWXKl?=Nix8+dp$=5^NOm7#C<` zVvd;^dFPm9@jZ=;AAF1X8FmxRTE@1qJ3hgn!3-<^sV{qJc`6?8y+{v;hKjW?X z2z!jusxmmz59Sp2BQ*4ib^GF)AhxT0qVof42y)8LQITV|9Dg^6c*Xe>4G$RZ7IM<$ zrHc~m$HX;$BaT(N(%YGea1U~$rQza&-XS_9DR9wr8FDjf$~So>B~~UOkPk;#@me|g zAk9v9f&ESnR~2_^jx`&Kd+^f&L%l#8yZORg>Fd)KXKgyHKB#CSG8Ic+hc0qyC(weU=R$IosqvTD#ser5-% zA>)H6o;S5RSLJf(Hjf*Y@2iz_D~G^sK17h6SkIuFd2AN@U40MwMvUL}BBS6QBkxHejC1lob@e=vH4!o@u4yNuKa;L-607_Z18+@|X3`AW)rv^7PwXj~^rgUy-shAr)q@&s#u2(D4lC zIPBD6J6R;BVS9@l;m465Lq8of$fs(gDiKHzowoxUCqBli078Ad2lHkt@OAZSO! zd<2UIpO6ceFGeoN35-r358hQmp9a-=C!OJon31C1120oMuulN~sBV&g?h?_6j{i1LE%bw*K{>=3;+1n3 zLA6^l(pbRC&|0PIrUv6RzBrpA>shP5>RTTn9;8Ep{lUx+{`LLN5T3WPPndI&KC=HD ztVog?y6Xq|zXLCu@_v#TqmN%s9B*orb9vVuQr4))&8M2X@D0&R9H!iCzfI~7R?W5; z8(Z^LrrorE>e<1&q~olja*O-!PSD$FJbO}YMVqzMUM_b}SMSk2^F>eGYIkWitHhh` z`hRmYpsnwkRmT3Y#V=5;Hd!u_YGI`(#&HPzpYn_`LGJ_zrU3L5`Ef1WOAPXWXBx&xWIkgv(gn#4B%^2+zy(G4SCp%% z3~OLiIuEWwF=)y& zfq*~9H10@aP}4pCMbG^489yUs;)qRhe^{$0{9{h~X(}Jgb+RqBmAI9=6}=T|mD(!E zRd%l~S2|b1S4Jz~u7xGVX@zPfYYI>)YV)_gm_Qw3r-iGPJ1S&V&ZnffqOO8o#eItY zDwR|Ln<*=;l&MTjxike#mB=Ylr$wvESCz3TW~<~^S*{X3rF<3qDjQP)KB&LeLGTNMJt%)XDxwhboF%Das=$Y|GRpF7vj1HW zmO0sYa&T_Ynu|UA-_Yf=dM2Hn;7WCOqN~2%$ZiFf=NXu~!=4=eC10Q5mR@W*;3HX7 ziZ$j>GfzS%HXI?LI~teyI=&^c4xkTz;~-lok?XAAqA*Q3|JBUcl!&^-?CqCg2ZjSOgf-q^ zB`!8Q;u-uDd)C9GEevOJxWi_AhM+Qv>TJMYTMg@Oi$D|Y(wjoK15;{VVwgeWURhV( zNOy(Q6#^eOVUi_DmKMX99RBrBx+)f3YaL7doBB*OMu-Vy3B|qb|3mk{oHhxl~`H%yVKzRUk9*^kLSv zfZ#y1LP{E5BB+ulxUxmz3=V2=OSy1c2GI7ywC!S;LtPSb@MB{1@B*B0b!1P-_z;`* zxknXTGL5rpn{OtqwI~67+uw@FRJMogjR78Qk4RV)nUGpxpRIs?A)p7>qKnD0x)#-7 zo5flMFivGDm_wckoe`)eVJUWwxRe&k%91wFOXc<{vIm()?FZ~I3$$g(j&@1CeVlZU zdi+>m^*J`dE5yQT86_5jV5TY8iKVd}Z%Ek1hN`$Iq#tCRJT^fqIf@FnE>1)l8}~}} zD5cR@ox0Z1Hk)gEoMGZSX-lFqSc;4I6#^f+cW$b%!WESWR|SW_GXQZ9&?tdx_6eLt zl@mrbSloul6f0mjkVqwVlSN*NDx8d&>Omq?)^G~A@Xnx66sF|$4|l6DUB1|MEKT6q zs|l7z4Y%#Og)O#rMAENHNtpfJd?}v9R4Z?%u!mRPTDFPCj<7d3(uBAw6NHL5D-9wZ ztn@((HS&U_+JW9Gm@(m}g}4bkWmn%efd=Ub(xa*Z zonUWHJ&PIx+da5;1FZZ+0bW87?_&Il%I)2NRS9QuaEDBJ z`{A^v4DZEc;$0f?53~Xa09Zh$zh^Z-9ZeF9qd)?$Xj_|{l%lpw{-qfb1WpI^5DD2{ z*6lRX1ixTXM@z1?+_(X;c=Jd?^dW{{tr%u%^g$Xtisgi3GH6@4(iUE9ZL{K7;h0Pp zJges_VXET8+jW*2LG>dWLwZewLQ(02v9ZdOt>QSNQbdC61acp=s&r|CqZC+%&VbYq z9=AOnX~dCsfmtWqOkAXWQ8lS?XVMW20>ZTyH76IFincdy)PPEEBarliV=~9N8;CR) zkR47FUPoXC_}s>|a6}4wpeU=lvBC0|KqhNT{uL$^1>pmH!Gj(-{i7N{V1E_+uVP}BZ=-@|A|6cT=m$>h7H2GqjeOk*jr$)9Q0qP zw}B^`{7V^1S8^8>ofdK}K~;Lx^%x+Bl@>42ive*XOZX|G50M*Z9I)ybB8nzt@GYiE zM0jCaiK+&nCJ`rtDh6|9)J}`dp_ed8C>una2iC(-=SS`spbBjXrXs-smUbk?aY;h~ z?Z}n@D}o#t2^ao)l7tCbf@*@25L>XX;Ghh%38<#dAl(L>bCyUYOVXL};DAfBdiA6# zEe%!_SxgKUWDf%2bmebi`oQL*(Iig^!5OANim(a3Vr+q|KEXv7B$R@+z+H@16IrNq z(3d4RB2$bs*c5sb%)yvJ8YL}JaG-`sh+Bc(1~(u#3wx?J!B!C*mdW_XLOpJ!J$+EFAv2^<1W#Epw2lx^MKV_|%*dXA%W5<|Uc;G`$aN;IFzFWGcv8mX5 zfcWlBYX{c^+L7P@4tVlIZ~wJELvyTQR#Q#Ei_MO^4`h0QL7NUKibFbZQl?$M8v@N2 z7S3!ctzK6-l8O$tJzZ8^w5FlKS7@4wqws5@kZN*l6Bv@=|YG71dzSylj1Agmbg|rdoBrN)JrbX9 z*e7uyY_Q17FS??#)8nqC%BsCPD{9A7*Z_KE;H^NZRGU}YQ#1k`m0`FprmVZg;0;d` zv8xL1fMYUDhU5hM+dtMmm9xMxoCJh`4d74|Y@@VX%h(le5)8%K5Z5lz5r6=I1Ug{6 zK&At5)+KHQwgg%MfkCYO{ucn8mTBgNEJ($s2FnS^P`w1mA=JaZ+Rr$bxdG@20ai(( zruLQ!vD};yApl2}UvJoe8EePe2MpXaQ5DQg`aP_~U<09k4R>C}iw%yv30l#);ok#8 z4D>swrlJj-31y|!12atSS&^_JyV%~4@Buq4%BsKw6Z)$ySM)YGbuaoIybQL9y2{w# z&>nli{mZj70Y!ST-Ox9|9j^yyw)a9z8JmPu4ANx}yVJHmIwH zSa6x>T$IMOls=+wuGSn&0~=VGsV=pDHGYF|^2LQLGE|NcWH1~n3v)JE zTrPk%MNQZoLmT%|WUB)c438J4NX0HTJA@{1bD0<-Mzcr-95zlYslObUWkPhxl^L*s zDb`+o*kFIk7=A;Vzj~y{feD7e)KzT@E;c*pCOAjq2Vyza0sx{)0~=U)`x~c)G@4oq z)_$4OPiukIDKbH;GOwa91|~4jU|Zb4E(26D?oA~W6Xeyd?x$CDVH0n~RO3@`C^Ol& zq-xhf@R3B=rfU|=Fwjvp5k+E}yZ%W>r^>ci>4%$+79gf6wxi_f2H)1eB7<2yaWkE! zWRA88%8@p~Hs)Y3t7%aKw{WR76R&<-)8{p04tg$8w5- z>w&<0X@`JWTI{g8Fq@+^Tnpd^xCvY@s;r@Br}n^n*(9WaTeus355Nho;?8Jbm&rH@ zA&{4LXYR!aW&?-@X<@RC4Y>JnI;FJ#SB%;jYt$=%bmH0Ao`G4oc&1vk^W$@xnW|0@ zt7j8*IRmszg{H1ZYCi(ak;T*0*snXXh-k&G+hEJ5Qyd>6L?3}#1G8{4;&h+8|tTW?TQ%oj(%q32mfECTtH#p1|BVGo3o%FGv%xVQQufuc#s ze+(jUV9T10YLdmGg7QTyfr_HzG?5kC+97EOJ5i2<0zmU~Xvg8H3U)rAyoY-nS{X#< zqRR5-#Gl}t`81qoASWWy!fp6RTziYL2aMy8;(~x22R;CE6O>5PF~4jG*^wwk za0hGu+rB40L~|d7boNV!OjYKO*rJiYW60S*os<9(he1-6F4K_e6=p&L=`zWK= zfmMPTPtW@0`X%}$nPK>uI=la;{{N~1005w74giek85|6UVaDa$`(B@y zdjGIGBS@^vilPM~B!L~Dp9nVzag&pGcR^7TfHXPW9py{^L3ALx5Z#DwL^q-v(GBPZ zbc4D<-5_odH;5ZV4WfL*JzCLAZV)$!8$_;;J!|&(#$*acGb#}FJGcZsk6j~vjGUMJX4f3RVhAzCoK!2jADy|6+7El7h&UC*o z3=&`s!Cm`6{GAwDfsd*8ATN8gfAP6dduBy|P+nXux(Eu(7B_c;N}}p`DzIK9sSXF= z0IqPL?Lq(~zw9l>GDfuM97@ZG8~}53!>jlRs1m@ag(sth(82j579iphfY<|Upk{%g zuUOHfg%}eueO%#^hAY=an)>i)#Bl*n{Eu>RzDR6?3C9GS53f-%utuDRY8u%pIRXNV z6yBb(%<&qzo@mf%#Gq}44WO;`$~C;9BbuS5ttp6x$02}L~l9k_5G(_N~OUCXjQedz|li>awpK;nO8OUcCMvn44)E7aI} z+DYXN_{uucbGsZ(HZQZnj@bz!MjPWk_DgdLcVGCs^ zyiO%_72xH93YI0!ciHc>f~UM^U%4OU^LtYQs6+nKP4Jj%E*2B~Gjz^#yzmEClYp0Q z#)w*i1cR`Jku&18(k8PqG4H;94plWkwMEp@%egE`P=2Ue#6Pzy)5<|}WcYQEO85L+ zDYm;ql^A|T=t~S~;L>?7YIpia(HYWC2jWddkS|X&fF1NyPEUO%yJg=cabqa?ecAp( z4LY}~x2W~h`es9y+UC>?`QAlr{skgS*ngyf8zQUull%`&oOOnX#j6WR`aez{Ve9vy z98AU2)D)o*BI@sd-58$g2X?!xm)vX&L&$leGvPdWW7xyYt9qCuNT$xs9U7%}j?$NA z8`w}*7d?{X6t+qX=@;UqbEBSlnSJ^-R=z1v5jq2kADtZ{8+Q&SkC(q2u8G`-htldU zw!9g*cB(s`^%y^!37W{vsVKrDGUMDKb6%{MH0TnDpwp>>r`I1Ew`#_$izJbF&o?<2 zhYg{`YD3VYJx%eDj7;7l!!z0MpYfvE#&&g{F}OA%h4>R7NUNp3p)~&eUI9)kO%=VX zrS=yl11wm>*41{PwkJbC5Ti?gyfZ=U;YZ@7LzK7hLFhh_DcAp0*w+pBplOWWC*ABm z)Nr|tazO%Ksy6#LQni21)u|bqQY}5mclrtjYqCh;on# zxtmstx`be+Ufq|6!rO)zIBC}8BXW>q-X_jO23(^!@9x1G?uB46)teuxN&D_82hI(# z4y-;O6WJovm|LuUk<#5pt??3cKHKh{FF{HC_8ueGn<38AoBiruul+KYYOM;_=Q$GR z6NoW=ONuQ|EU!$*513R5S!)V_xB^|boKe)h0DmbVRXi8PC2|MuhxEJVQKqWo@4J z#uKxNbB$}-tuS8I_?Zk^J;F4tYE}DBcxl)JChN*v0+es!EwrTuZ*0a{SR@HA_X~BR zksU`MQkn<_cMM%XL-XMCI=8ieB!t=3zaAc$4$nvH$wL7IegM$Ad(2IGZv1N$JRn9I8)^&Qk~&0%aed*{{J_6V z^#AuQvnu0k>vdk=K_uCcjO!&=qRm?;tdb*ZCqzEu8;;NQLtVs;V@Fz*n3E}|0He7( zdDxyOvwZwNF5zyeS@-vwrJli$Q3U7Q08OV(jTlJT8J0CKqnnwFlO_F+X{=E= zL4H^(E<|Z^k0l!@T%<`!Kpy{t=f%(E&F*SsRwpW$v#V1A99ggo$iSr5S9FeU{>Txa zqi#l4G$?Q6jfcbQBk_rR0vTlF=`D$|HL^G4lJNIK?ePTUbz++($SzkuIrUF+!M8|z zW*>rFlD~K~i6R&>c=?hX_&#JRVTlK!0m7g~dgv}20(mB_eu6=TDAF<6O?}j*^yyBG zO`Uz77ryRU4X%$8p*_*$UrslG(MjdJ`R8LWD?s94jeKs8*08BG&QjZ5Noel(T2IW+ z^{$#NLW`fDPlLgiGSL5Oc!|{MRRD0-cBoqLH+^*&k$gAe1b#|AaQu>V#W|&(Q`=Ie z*x7?n7wyo@zx=HGrCyKc9ORIL4s!BA=f-(zwWv!Cr&I5EOC3(7R=e~h_rU5Uo(%-d z9Nbn8c}f(tQ!qNb_O0jfZ$Al9S&m<3)p0-LqstYtX#aMrE`3#L`)Ip+W#g-AvvwC5 z1~c@(B3;5=?%?8O~U0{*0~f|y*|TVCN6AZ3h6c!kqv+sbo??H+94S$&fG0{+=p znVF6(X0N%duT&(b^}F~T{tFUJI3&=DX6Yu`@?NTKUgW;n-}5|D$~nC&A5ULjj(NBt z{!bZZ;VlMqd4_p(1%M-*KxJ-NGwd11TVGd{<>DOItB^{41WjwiS!T)iFL6xAn7-_< zvwEiY+iFy!-RIDx6G$1{>)fzr`m)(HQWV<-AQ^@ZPu9rKKCu3b`gZ|BoK&--C}o^- zZa`**N$EMHLsKCHB-v_$^9A;Tz~GjPGY8Nf0DvuQz=scGqHs2S23kKJl`0ey$IvF0 zWHDK`Onl6iLU|BLqKHb_D>mc0z1tJYXHn2#60+aQNn*i?y8utF{NVv)T=Yn1p1tOD zAP^UdD+=I@pr|Ob9A<}i5;F=*b3?VgvA^~QxRkjP59vb|<4zX=AX+1`SaJGI@RdSo z#l&%r3vgz|<;{N#DHAN&CodzXizhU1&Y(;gEgsKsOyUejd0cK}i@Kj3i=OVB17j~@ zV-`W_`bEZ@##FBwNq8>WYk>e`fm3Z?dUxJ=uh>^q`XBj0(A+XiVK6{&$Uep)+mLfM z5|sUp0fY>sXgoLy4A=vEFl=v&}dj=>oZ?+~RBQr(F<7FJ%y`yg^vLb@9>v(5ths2kAGghw&lzkl1h4T))- zR7dZmfCI>yNH7#L11Ul(8p9B5EN(-ZmaVo(q^Kthgj+67>V;(%@@jPGG-Sy&M_WLS zmi7~m*fz%McoRe|A4x1iWb!)nLf1iw3|T!x9_D!AU6_)GYgkyU#I2XJvujq-EUsjQ zifdz7At5=s(8W&279yOI8$VWM2Y(K zh{fqjDU$B6rPA6$b8C=M)43Q5W?gbx%K}EBK%6`3h=D|8Q7eeDU7V>3hO;`)BQ91q zP61=zoj2Gn`H%GYcR5oPROCPQM>40w(vP=i6WwDDb`)6o#uUZ-JSitU;CF@_I)p1VWY8m<&Q4r{9^_t6dpRWoV2he1g*b3)#&Ez$FA3gX+PqtM(Oz zTOf5k@5MH&>3Mx5#^H;Y)8o97O*k07E>IPQ>s`3ah!?L*y?QEVOgW)ePEL!^s}NK zPICIwVz;?vJ*AEof*$SCF2GSS%1xbl(Z|a4yyNEca5vaCF~-dbmunu^)+5cDL0q{S zn$jO4<2sLE@<@q@Mw2?hrP{YrLhCOe2I|1TordJDISNV05V6vtY>&V(y zT;xJyDdhdiRCz~mJ6_w#7@u13cGA?#?TK-5Q8sNM;ksUoSlB|njplfJ8J|qSwz|-@ zL_)8#h5|P&VI;7#YXAoL@20R7A4xcqpP19Na<5{;h8)(n*hgvPa}^-aAFgP7wxlj- zHpF6ZY-wb8o-u!GwRt8<1>1da#^(%M37KmuxFp;J^B7_KD~8vl+;>UMVF$$_36E*|lrieW;wWW4=|yok#>G9dQSt8)!g5jmjo&?j z(ai!`4+k2nEU%)bJ5Nv$0Vk9G37rVi*tZC$cWJcmo1J{W03cvMFQ)(i0FnRz0Kx$P z011U3)NBH0NTw?>BGLW2qVI+fzk{r28`;kH{c&gUxr&2%B3_}_^?|s&YgDL86sV42 zpQ(iYmIp!sufd&8VBo>PpCTh?6fB1V0>=ggGCuHu)#AW>RVE-7B&SK2a{Y|f3Oy>S zyL$k~tX-|SBh>>k{LWJx_z)cN7|LVg3wpdRs7ib$>t_vxdR12V*R-#GG2`kJt1wI9 z{-%3DA&sC9+y;6c_ThvZJImO_UqtSAt}`5t+vbrOyUYk~Kq*kR)E|#Nu(rMiVU#P1 zzw#NBPEgIcXsQs?fhLV@g2iS5X`P^s7GwiXffH(CcsCa#0IDL~nNz?h;GoP-s|Q{B zScsXRtkWw^A>4psrr_tM80n%aKw&cgeT@%`mjPSmt<@q-z%g@RY8*XU+zv?iAi%T9 z6Q{sXKrp8XBF#xAMH(P&pBz}mN4J4RpnhUK*@>fMK}}Op0?B;K=D2N9&QvniKSSg} zrIgo?z}@2Qc(};6epHtR-|CB8r|6_TN z^8n0Dg$9@WE~5STmHfrh^_2YaGUfl7LOJ>Bd4*3Pu|NN%JWu}p(oeq)@KzZy&-`e( zN~)fJK7;8x@vkQTK%2qu?5gyLlojLuZ`aDo%JG)ekJ-P^8GiWfc9AZtSKQOK>Qtpa zeG*O|g>Gz;LGDbc*_uEjxU#(`P4ik+g1YZ?aQcJjMKk-shX}0`B{R5zcW^xfpM9kC zI$^D;CQG_7yvlssGRuRX_kd%tE&8~x2B_vgG~_9m{&@F-645oZC;d533E?!n6}#F; z!z8%Igw?0&JiO989OQOGCw(jPyR^fjT0Ar3C*R8~o99Ui-`*Ig@VxzT8-`TkeD?x$ zzy6`1{A*QaoJ;X~j_T})vR_ZTkAw8KZ7T91|{VdEU~R0@MR$#rUY?lGgp6c$2q_G%$Dm z12-NHJ;WcpCyq|t&yB0-GI*bO4Day0M#3p?CXWZDJT==i3a}r8D@~Xc2Q!FViqiKNycJu>(?wrcJ?FbUw-KIb}_|5iw2Bq%UVNHon-PE{;0OJQq$*DJR~ zv&kN2r&CM!4Tg1C%-aaN4seqgvoHg;>!p33n1)LDE{D;C8!4oP#AqioF!vps#a?1L zDrI7g0OK(GUg+YoisF0!ul`8?#rrA6Zo#(SFp)Yj%6m4nma=hsSi@!{xDICXM`S#sDA@;yA9^Y$^#}MC?HH6b! zj;pL~XE6^)UVROcvpt?H(q7CD8vnW8Bky_oUZD;?Hc5^$MzP7R+rD9hdAxpf1w&(i z738Sdzzv(VwaMy%QSe`p+jI423s<&YOYx~;p*Xp>sz*NIMn*Qwz2I6##egUa))h<4 zd#_=?cZAP&kYxKM8|V+`;OkCf%z-}N;l>Jh0p>(>ApsNou4!m5hnk>{Nv=VeN6Tqr zhSu&ci?1#lB+MA=5;BXNNoI^y6`9=0M)ZcRc}-Z(1}cWJH zVWr;&v(~qp=_Ye-A9AOVUo0W?YLoc0WV1erxwLFDOryMFWd?KXh;Fn}B$GIa3APz+ zS{WS9=_KZOcM0N_YdR8)};B0OSdx$oC9kwZd2YA^eLpa*}l5%Lub!c45PV*zh@J2Sj{GOtc}0FXn0N z3SgC1pzI2OF^%$7%eYUaxZ;x@V?YViArPRMkv4!qgBF`TK{3k+9oc3i^ilNqvx5<% z37uhZ4ClZn0z6n~KZb)$%A05pD;N|_*M^SdSV>yJ!nPq%3=oI_qXkR=GJ-0YhiJBR z$d_@{!C`)(g*3TQ8z(@8M?#W2KvcO6Zg@CW1iOb<%a3IquSR62_J-%|21;&90 zumY?r6JQJkJr=oi09g;s>K%fJ1+65AFj@gR1}NCjA}oTQ9nOF?N!jbkW-zS>tYBNM z<)s4|Y{Ax~pJN#q0s&vZ?btSDRC@2rEo^G(4@zE!K>olXnUfS@T=x$IUf}DHod$&i zlCni>o_g29ekg30?Xtj<_kqCR3Hsz=eFLxvw%sCs!2((>+N$lT0NbE}Pq(WgjM+V}@-wjMTvXUZJhS!3C+V!> z#dZ|?5b(*#OMh6@1os+%A(cJ9@AvRjha z)ycgrHkM-9>x7;Toy$(zYf|lqZd-1+yQJOm#B8~?`!VW@mJj( z*Qd7f2AzCkjY&5-jCSf^Ot(+9UfO!n?)zf1K8s2AsW0xfTJKI47*jg8!H=A0%|5Zv zx%-w5zQ;**((mpj{%j#lnFVv5zut_M90uXd)*OskS!uO)o?q|O}b!w z{xFOLn~rvOhKg6+7+|IDVh6)*ytdyFb8y37xXXFVRRt1Lm{CA{(6A}s8#sa{BKzGF zAB7R`-hl2aV*8E*g0ge`Iunu*d)79``~g$ExUNe z|7C(Qbw>T^%3t&#EzlV!#AhX|E^n2wSpIowW~?d|4@vsXbbz_--g%aV{5?>wv*o)V zXMvL=SMK$wG^dcuyau@C`0rE!vcepb8w}^5_j1ni7c;#7jt;l-C!J0|@%`V?mCn)l z<*axCmF%A{^%CLYPFusp_0%ytI&Zk*?wGN+)QrH#guB*u47=0DvW_i54;rgM=~aK* zG73}iFD(sqrp?1`v9@d#XX}+r*@fnSR7^A*tYAS|PF4w-2G-z`cEaYkzB8DU$0Y3C z{m9ZsA(T1Izhxj_jF`YbbGF1+nceqH?ffh2spnG9)FY;8Z~3M{Y!pa%G~b0WTy6d3DiH!s420La>8Rtn~yq z$>?jdKK&<6_$Q^P4nsS+AO`63p_`E;z7@hgK}|v_70X1_g;4-$(oKnCzD+nK(J4)t zK%~Ts64IGhLV{+a*mg{t)KZd}x7NY_ItpfU@M&>Apk^`?j?GMI1*iee4l97%>%~!t z2mwL@fE@qP5{0ZJg$lr_!0?Q+4eRhfo4zxP zBMtx6{XKn=1A%V{??zK2po5Y3aZ#iqse~lNi4`JL7={EvpaugH|;tfdF_T~s}5848tfk`2 za#@+zL=;U(`w5wo`7l*MlR`f}Yp6*gnk;CPQ@M&lY!%7D24K+vhY=y0U?R*+44@+D zXc!sDkG*rQ{CUVe<|)GD=HEmtJon!#U7n}@&K?&>b_iwcAQX)<%b(*?>5$EC(%D$r z0Hlq%!-^t;{MhmynQDQn0J|izVY6?j4oQJzrh6>NGfCGzJ zf5>M=eCanKocU~&*wk<=MSg=mJ8oDJ9D3YaJj9s@qJuMLyAaah3^2eSF0un5=!y(5 zc@Q0b>B2>bN)cDI5t?7Lcqi8A_0Cff+VdlJb33JxA#_LUUb3l^e4xJbRRBM>-I2S~ zl|rJjA+c4_afke&@=*5zVXi7NG8fa~|Kvh&o}LI4XxxL`PDj-)A?K`gFHSco1{Pk} zSCs+-Lf#4v!^VZ%8?%!J!wrf~g(A&VS_NTiShr3Y*JZNlk!`~Tw%n@COU4kWW7^B! zroH{d!*~<)Qi|^r7*PGYOoRAmghYPYJ06lE7)03LX|p9<1L(RU|Y4RdgnT2vype zdOJ1ShMuXLE-^!aS4Tb7Xw4sSAJlY}0)aXcn@6(}50i<&J4eobX(I~iHe{>*&dk;4 zQ+n5SSL=(|I=94g<4`&LZtP6UIqM-A`BV|W0DYJ%J(H7B0em^2+K zs)V>PYplefpt)@}q0k*jz7y-JEH63nNl(?5_MQoccWU;{L-HHSV&YD1;UsU9y!lbp z;r2$GM(<<<0Tb~!u8lfD@RFF_XDCc8HLG;Fx-U%*Y1ZmXy}v7>YddSxbXHGI=Wx4| zm&n`UAhK0?r#j*^`A74b0C~Ie#2Pknnd??dk7+BFFgGz(RhhFU4B`8N%6aKF!+UXL z641^)yNuP;`b@XB-eGcsV@VhbDw^|E;a!`gK|~dpYC;t%_lD%6Qm1MahYhY$ zSkJeCCox@;D#ep*CSdN- z!*%bBQ-d7|h;ZRVhOAqudZ3A@C<|yETGV)>Q#eSKqM^Dxps4EHh2EEs>DFDdBHP!` zNz!U@=c<2~t99yyS?* zU8YCWWGleCwjL2uLbJ&{?^|9>w;DRu2_efi;2bLXVaXKSJiJF!O1i$%sIzORB3$?v zT4;P?z@1EEh@&49IpE&eE8UBrl}?sx>rLgDPM7FAl(=N$t4d;%AQr4Tp?2&xKJewZ z-ZV6>DbGw&-9Sj084(#98EWQMi__za4PC*|F%Z!9@$=S!FMB=T^7oSY{@KZ3zk<-I z_}hz$hP{(WO{;j1^;Ctbec15K-o}C#F#GPyBMtM=X8?1UbJM>Qydy$Ht+R_qgLbso zb;6XCgVrR~JinV3LWkEYwMZ}*3Py>uBXYk@L=kBc<@P;~;WGeC5;H8dJ|b!P_zZK_ zoXcW=$V?rK(sab`x-GcV*;vBjtuNmab&X-G800ejtT^3E7h3i+yw(s#iM95i>wv-; zbYKb|%fb#5ck;X-Euk#MXrgd|Zj46WplTjEY=rAse| z?-rGhY6ze7D5u?zDp%YMQEv9{b&ac25imE8TD%$zP*>5j17#a)_y~HU#qq+RrSxXj zuuCnI+EcND6xZu?5uAp#yT*%h4gf+YTbK?N_?FW(M`rZxUeQKfGmQ&&ITh52n^wq&a58y=}*A9mf+eYYL(i9rSG@6Ld9PsaJh21$19nmEF;2rIb>{qh77&8XF zE>8oF=|i;Fo4b%SIE{N6Uh;wAnI?+#fWG7SkdjXg_gwnzQ&4mxGxFIQ{@(m}~)7#Nv$ z%oV|`;8@Wmuo&pe#F^xS*9g*ldDwMrUD-N$Mk50&b!KL`6Bov)#T_m;2(op zME|QJta;-YlR&ru_(@)5JuVG5kkhl0A<(`C%#vFQN zyY80|7bE9}qgYL$Yi`U>a5$2zuF;r%Xwx&ZR?SP^Bu*7mkc@Qgf8lh^-$GC~okWmY zslxIfH}(=2o24=8ReYS7$AYlh0R#xz0|W^B1Aw2)Pnv4<8UTO-1oQy`0)PM@KnM^6 z1O(&(0)PM@KnM`<2LuQK0)PN7dzAgIx>2$4oMd$h*?|>O5yTs(qy<84_7H3DSv|KY zYhu?)MRx@hCO39oPRw?hO zw9<6IPdx38t-L25?b+wUDG@9C?S^CYYxKkCNn$tY-BSuiUdSt_!%h)q59_Rr@PL!> zs5w>buBHvSSAFO=Wg*_uZW60f%^Gt`Qs+*Eck+F#OC`^3wK?WlU**`*DPpJ|y|kBS zXv)%)hSt4R5pK9o65Lg?BgxyhQ6#&8e@9X#<}OlnPtZNQ z;WVf4(4ktDO;aOU9O*`zThO!1E`@cA zA2$;11Zroi(Y`#WyQU_x?#kn(8r@eOY)R_VxUKh#&QlAg*%2!qRog3Vd!Wbfq)O;q z`ni%>&3R9S3Nku4ffd{8`8D6&MB60?7uZNCRw*@d=Q#h=P!lB{o)i!2rR^MpPnS-y z?J5Oxm7ajA%)Ey!|Ew<4X?+CR6LW5E)SYgnBk(J}6>Be1q;FJbN9_`u-cvz0;%Bc- zxSFIN-|Dai{Y3dgk6h*JCc(HcW zj7+RjRs28vh*Ai*Mnlvi(&F}z485F^M8qd#bnt}IspptNSSNl|>MRW00uT7UDfx{O zs_QsCPjMK5AD8|Ya1FBcD^T&mRODdDNCmmL=Zdl3l(I zTOY<8Kw2uvF2a-@^HelYIMjTVygqzA6gtdwVCayiVK4_64X8NaaLMeIgpIfeB3ZS? z`S@D_DxvM+?8DFpo((rWC^$45=`KkQC8O!eL9qj}w;vo;SZz8#)E;sj#xWG@;iq9+ z2NVuSm^=JUFX>^hwgKwy|Mjm^nW^dRf$U+?VW2}i2UZVg4y+tNG<1bEJpkViU9yfs zeqj`%aXOG_rh5mE1p_owPAsg`fskqqB+l>PbHRlC^HKS&c^FU_m49**pQ8S#GD6P( zk#+n0|N8x9g46EU%hXV)PG5`lK~c!_3R}|9y*dH-oqEOdG3J)IsQgpadxTLZPrp*u z4u5_Qt<#2!zgmn1J=Z*=9>$nS55s+bQXKO)p^XK6Y>+_h8`qVcT)f|%j`LLXwpyag zq&?T?ev8hHS!Wm~$~!#9#_;#a?$KH4v0&)vDyHz_pT3bPTRr^b8E*BAI*1xMCU7Vs zwmjnNVvK{vGnKFD7%JMJhaBqAYFe%E0;yS%Ko|KlS!rcERY9}P`D2{^#{^SYm1@!;P(U(*Xn*`rxq3H%gvW8$P9Y4Dm7)l7h*Tn z^F9VOS;A6J_VNDLZRNA;gnPQZ*RZNc^k;a#(Jd9xQyMQcspy}n0Aq5x`@OCDnNR9F z#Qr*Y#hmL0Ujyj%u0=mIA{FRS?fSLa|GkiD(vbqQru=)m?txf#6q>SjzoJ%5cm~{n z=1&XBYPOO(Rf+?0vgzpsVU!Ue!Xnk^LoH}QS|&eOljhBLNUnbtBg(Yjq71paM+5>~ zKFqi!6QEp6{0)l3wCFfCl|O4h7aV!F_@|3{|90wRW&gG|-$Y44`;H!vPr=Uo@@)F9 z(TR<~v=TKL=4Vnv9hS)_@4KKG_VU38Q2&M zWz!4D+ju(~x6R)i#^|zWh-HSTsK?;ebF%bYV7W_=TiiXE)ic1SpR}%)FpLGIJ(bjkQt+I#X_e}eN z4$qLo37-Y3$<$rtK9)w7BMjpy4-M9t)+kAX~Uo-Cf%)SA+ z$OSTTpTt!E5+FQ%|7xrQ)}&Cpuz{WuBM>*$r8ZpjeqKIj4+rjn#HM3cLNT6%KJm#A zr$HU3`;gG5DV%za?aaWPjqGIB-Sg+?uCb%DFdOdixo%(nBS0}`)>Q+~hxQZNG1NC+ z_=b77A?@#;@etVe=lKo$d=1>aL~TCc65P?fgp)j3T$1vjl(uIKWi`$5S6JnE)Zos1 z=x{3?vrq04AbGMd*EzXKLks4s-*LJabKc3Imt8`d{6S{M9TcACnmw68RJ3Dq!VekO zBQb_05tfPF>~bumfeZ6}zP#OfU0~T)F+WN-OZbSzWczI-=>N|Y@@Sz0>;usH)nb7R zK7+=I682VlWXGJbad0bTQQTk!XPV)Fp;P@IvkYGn0 zGdGc_RWstk1@srA!l*Ks-|SkZhx=KQVba_=q>LzztWTg#f9rmX{}Z;fxPBf;MYUT9 zDd-jKz@XZ)y8pY{1`8kO06xe8&^;=f5!P4)V^6a< zas^DD?MzsOmK~bhpV(JNG}AqK7(w5#Nq_zF&<_-5s;=I_w8)%tU7_d*G{U=P!e!Lk zJc*lx(`}jfn<7fl{B*MrbN2kmXjK85e9r`vD}mzJCU%S3wWQu*aYlPPSE4jKUVv6f zDeE%TxzaCI^o1@cp7r$SRZ8_{poBecjDwdyocH zz`OuL*uRnRtmUJp8SVI*J;nY$VM*6!FczHy&F!e+I=A0nG)P-!?S&REd+t2z4^A47 zaZJ_hsuaj!8z902C_8ux=3HIfo-3&iC72+aON=se@(Ov<|I^U=wR+}JE5uPkQ3E<3 zHJhc`+#elTg3WHDQNjN<_y3DHAoy~eKi*Nj;=1kSu-qx)*xzqfLrg z4i1I+q z#A4QWb_s&T3g1m|kM-Xa&Vssx9;HMQj|yFN7@$Gz1!usFE&)U4X$90Wk&KLKMv^iH zN?>Na#vtX7h*blh02HE168`${b7#aQ0jm}3i0cN-zv;0B1p$eE@#-zP8GYuLzebdsUF(PR3Uylz+`t;?nEd(<506TKbX43u4AK z^$bI;o{(K->;KqGu1Ell!J*&WYGf$`y19QP74I9ZrKrkyxJYte^LL-4FM(J3<3*2- z>(b@6s#5P%FCV9}6G^t@=ezmd1#u3i3=hHfP!SV^4J z^xUN5cBL{Bm+PLbD6Qa(`h#MxiNgTU-5sJ3b7y)S?$wo$nKFe{$6^sHi(CAv4|!f$ zE?oj`!I6=8cg`S`6=`5z-=o;E_-CA|!`}IEAjW7TGoT5<4CDyoKjdzY74a9FYsQbJ z3=)L#+yubjxTC2kW8sCU8y~c7q_8sWf1O(s1-aGW_}ZIRXu>-#PZLpnZn{D8ul$n! z@`A(WSm@gYRm1tU-cuC9pXvSR2n9g#$X?(prSD1yEI7q05^I#Tm-Z}9799$0>i>Yo*KiorL%-%1y=$4f!58)%$846rFDKRgfyvGc z?7F~NF{J30bHxu1w&GiKT?W%wq*c!HHR(IYa*X4VO@-k)*etrk(%37uKc<1=&V()E zP{K=M+f!&^Ur`7T1*g?$;;fx&rY>$qZb8ODp7#Xzua*v6RV2#cN^T9<(ug) ztD;z;b537C&_PMr1+mCUlgYa3Pv z_ndPR+%T$kaBfTaswwwMA#$YmjIvqm`G#D7?r8+Uq_brqg;0CpB$it1#U5Kx?kQMF zUdn~->e8~Rzt>3PLdMnEIf>dGQqUscHU>>{x!MLLEBJP1y$je9Pn^@p&UO8Tka}xpbIgj3xZ>wx5_gF zS&N|rtxV$R2n_MPjb_&ctagJeM3Mr^-x$-2FEw_$Oy0QwdyaxH$LlCFtg=h-Ya|}5 zo-bj^2U)Jo4zwy4VzXRyh2j>D+w`&srx)UjK~`VMTrSWnNN+V2R@QX%4@T=2dNF`2 z!ym#;vVae!x6sEMt8Y*%v0$ze`dOhqcRCo2`dR^^t!qBH~Ptr}~M?bRzst z6?TzbVwBBhU=o$YyrMJBs`uEkawfelT9+SUf^nBnK1&mb%!AUh`S}t)Y-@f*@O_IJ zA+2aWD>&R$+LN~J{|$!8d1Dp9NQkE~#dDRL#u^k3C?H5!c|=IbG~&gmI<54K_3|2) zDMzH6bZf)HgaGwDbi($yG0(nu3mRe3P-rEZ^56iyfBTwHf;H4x!62)NU@`!q>C z#Bn-(r!l|{wgre`!DQUT$dT=B;tgf3jp`nb9O^{004KT9LG{%Ze*5aDARhyU4s zd1^2=-9v3gL6X!B(khJNKEH(%K((#oQjlZq2H}E1Nc!ZRN zJ0%ZgAw)?Ch9G4WgcL+LC{Y6Pp%Ee}5_1S54#JR;Nvb6XzXd7@AVwpc1>qum)2p}w z652d|OcshlN|LucwmpN-@#U*xnblo!v`J|oIHZz)#RrbG4)W-%Qo%w`qgDDOL(K>&*COv3~?zv;znbvHtiZvbW$T0sLV@vbiZd(VgwbAlV2--rr)lGD?;_kvvE% zAxKH42vXoAl86I10Du4hfH9OV;I83yLY3PzZB~u(DzUQ44*`2k#*>@KFzj?#uDab_ zJ;|-RbDDR3L*GL-;eYNjm!FbU!@WJ$v@i;*0$fEjR#$+4LWO9DXg~mnT*L_*Uq6q} zhWHL>c8CRJ*2+b61#|aaeX$rlpSgg+g1wNb#zc+`2{JJPE(w)4~D|1AbR3HAyqYEF4Y|fPOOg;mjl=mfUT2%LqGUc>LmSYp6-WeC5S% z{FK{mE3?__)3PjyK&KOkI(CtX8IY! zqvZD)g8%w)-@M&pJmOdGmI$!vkAF!xn>f(vznq3B)9-8Tos=(o$h>U#joY=)B5w8?kUvss47n_uc;U-^IW%jMh%jH~oD^y! zE_%#k-#<)TcZ0O#3b=DTfN{KQyjVW2xq~V2+go(+N{Z!k2VR;)L!ZrdH`Dms6kVZy z;558rrxr`6EjK{#);q5F*%Y+zduCHM#G;^-pyQF+y`C@_=lCoek4JF$d}%u;`}jmk zYTs<0r+T#syy*m@Q(Df$JRj%WNaVU+j{XO2D1o;`^3An9zh-|Hn-pB>I^4e_xoOod z-yLS<+$x>M^QsXN&fCYAsqW-kNkdtpgu# zWed2^F1@8YC#noh{B$U@W|fGrV@%+iUh2Q~JCT1zr;rJk?w1ytxcf=AheqWb843Oa zpZS#kv?PfZ>TdyI^8m~)Gtbv7hAtt)na2Q#R1o*NtS|t8`7J5AmPs*>HQ|#VKp?)& z<1X^NpNI(#9>t)>yha`zjv&98xWS4~BWbziUl_YNQRSn}a`OYYYwIFo2)tQKMX zP}Ay}UYYrPliz2ePSc5RkDW8+4s(JxbmH?_MfTbe@MCMPKTEje3ALnQQchDldR6f8 zOa6;(xXvmqEGzg; zYO2Zg?l);BP!8qG_M53?>PL=G<%Y+clL3$GhkZrltuqS}f+MX9@Kpddj3fgyeAgUk1PT8aK zmkvDT`D;rzzJhP(In`0l$CldR8zi5ZWqjT^18wNjk#1|N6F+-Kd2I@G$4&FdQEg9J z^Q;fMIwyta+ie``K+o|VzWMcGK$B(v$V}* zvEz+XaQD$Ux6SyolU{!ZH%CMXTP`7$vPAZWr^N?r*>bkl`|CuYln=NcxF5J5xF3EW zFG$RJpc4JkgtuS$KofkKUrtRs$Ae(`WPc|ze86awsa7P)jtSJ*~A>DZOGxjX!97M%rxFlK-$|t<+?sa<}9``FA$23w4V% z@t*v%>)|8LpT6x+kAL^q`+UuR1LogQPh4XFPqzr-_wnz}L6-~_Ig(ja_7lM;zw3%0 z@SiMND($^3yK~YU{-pL?cF}2Q$nd9L7{$=@N?tlVIX4)AG4M~uy>BJ^C)b2ix1;a8 z-8Pyd#wXC$FM8ShPmt~{20I&Hg(MF|$T%CHXt6q+~M!&Nk z(8`GQHdGu3_1A{ToKumEi0LwlxtLS*ftGQmqdO$m;#SWl*UiaV*`G{AozG6%Ua~rJ zwT;{9OYC7e$4*%}SDm$&Sgxe5_~X28}P zo6PI6_;PHf@`(^(51!#nqGW8jVw<4ahbS)57j1Fn1G7$kJAD=AZMZ_Ysy`FuV09s1sxMsW|z*qKZA0K3cPAWmN&a+|2)Z#&Gkvv;V+q{k^UyTXd+D7 zL@&D&HxDP<47xEIP9*M<$TCyLp3OSuvp&a_MW>0rKFCV0lv?t6uw=I= zINe!V9JT4?h;K8kZz(HWD(%nTw@_H_IfeaYJ<8SC3Cr`c1pkDFSffOty51@=GfdMN zeu*6iY6G~n`sHp8S8seTdO?*|G?FnWLB-% zaz!QNE%L5JR)<_LBYNEGrx@_W0bHcT;h;m9glGwJ`V3NmHB^xA%^*x+q-t#aN1AZZ z9?eBleM8J_3d4_qkGz|k8|z`8+q*D^rZvN%8qsx3J79ptAhY5p@2e7VTS_gvyqPmE zkE!t;#~0KbV%fh*n5iAy7C&!bN+~ouU&AtP>arb?WkIGV2bhPG-Zy3ma5AkfhejRn zVjw;{+z-+vQ=#=Hs0k^1T0swl7;z9JgpZ47jF+=tUinWz+laG(EvhuodWkX45f_^YRDil27_vJdC1 zOIN74Gd@mG{48D=U3r#tK1&i%s?G*u-vxpsM36eYLAFRfQ)4xU${pgUS` zW#P)nB2^ffk{VkXB`0c1=dt`DaQcQuo$_8G*0xu$3`66?jrMBJseb<}qpJS9$0O;% z#L5L&(V_M=q3KHXQGvf{;_sct>V zg>y~rLp9W8j%}2@q^yBKYNABZ43t#I)?iqWQsuEH6*0mt z%8PMJG{uERg8%KKd#bP69XOYC z+1YpGT5^mO5Lj$ihTjr5Fw&o}N)c;FRx{qesu^=g4(G&knzxrC3{!^PC zBqdG6St-H!i|)z$f90M`r^hm(i>MVe*xhmNG%5hYLov#9kWZ7vDM`IBbI6~4 zT2Jc&2`$BcsqK296QoZa@Eb>H#nzHujBt^(I#~DmLX6m+Yer4WL}>Q2b4NMy!V>yH z2ancW&#>za_r=_cewr~iV~${7H^Nh<`lh!05~~kk)p}Ga#HC@yagG@JjCu2*H|kv7 zX(ja;8~nMlWyN}{Pk)u@JUsYgOiUQ_mtQ#g=$=X9KZAq@4}(yA+LTxr$inYLP8iA( zQ|%&bCWXiHlmO9jFNQ!+JTsKeP8u|y7Eug+CrqKk$9d2^yD$AFibDki{An$|84VIr-cZ5 zUfvwNvTzy}ii|II8xDb(>W28({{lG%{s5`f1oF>$FQzi7sKO*jn?l+<9_ueT2){)~cjC~_#$&^oGY>Yn7-N0S0^&OUddoc^3=)ZRtz=$7_0EGS zXj5l&DqZ74wdSW(vWxZdi_vzLv{4^)KQG)jNAZz`FgnJO_KIndNnPheN5v&VbZHs?M71p%W)ehm+p3UooiRa-yZ2WWMD+&up+6kYXlu)DSvrZ3yF8 zLOLvLaK#^)DCpX0raD3ymg_57$mEU{qii$3ET9&dm3x%pDeYC)kbycueopCk^9T#S#8A5K?qNQPS zjIEjBZ1)zegU=t&^<)|_8JKfv==)_QsVHessC6XZ3$+|;@B-?Y$h^2H#w|41dx3uB zuY?BG!-W9I9jqzXuL!?KCQK8%5d9g%SQ6~2VM7@wd?-y4LV;AO;{#5VaDv|$7St(3 zsNKFXv>b>I{+Lplbl?g$l!Qcsz$oTc(Gr{f>qcV)-jxSSF@;~*)y>ixJA>d4NU^lC z3}fI7mNQ3fk#-+9*_KVna3#jCkTz){=^{07{y2CRLbRdWGAc3kvbFB*$K$({~`Su>Ase%vTmj_G^ODXa0tROSqxJN?VJ$Gh*n+oS>sI9v6 z2qsSjQ5zr>1`Wjcfu;sb+_QyPY;)pr15wDHy>=GTHc|z$DN&L2U4&y4TnJl2W#P1~ zI*<>aXv80WOcwWPIw*x3rYNw@xZt$5i#6u}Ax zoi!@bV(ODxxlg>LjjiM*7zr9K2XuoDvRWzK%_%xo|vUv5|(jOPA9Mg%16 zDO1!)e=J_Vd*O0sYAxl+!VFAQs798sJ)4IUGyV#N#-XqQ_qy}zCCj0(@&-y3J~D6^ z0K!0){E~cXpsHGo9txTmMq{kCO4{R_<8}{wM^IVI_DUaMP_liII<&ognUJAViQ=VK zR&VD;n2hiY&fRg#H=F5|70r6I#bu=W#j7uVd8r;ga>Uf_O!aWDqcvFBLUnk2VowSq z23Nm~rRrHFL%BJ z1lAiuru!Ee6#aV*VGXd}-mh49*vx?T{O48h6b9teYXw;qF>dhU24zN;C4@|3P2@<1 zgx**sBW^+FYq@v_VC2-gAZhrD5TXA~8VtS?vrVD~ZMwxP$zzR&O-ePCHDsVC2ve3X)t1IUg8$T&iILQEE9v+M1dI(j`FwD1C~vIpV(6Sk_pX?Cz#sk@avI+H zVfFd-AR=#{=^W!oT1daKq4Q2-adKugDl@HQ;yj&ldJR#CoQ5(f?m$}tgu#X2KH}hw z{xQ^?hI2Y&^QwoG$!ey0^`hu&$?W;QQJS$K)-*h;8S+}&74jad3bu5l`w@Ke{Da== zAcuovh{9!~SS{K;rl-#8aTWPh`qa+8q8;(lcLlxS?8Sidg2K}TAQRR8&IYU0uQ}zQ zzH3ld>-;HM;1iT2&6It9^9PSw{d%ir(3bJ9F{6l@Q^XVQXuBI)0|iVBv<$-53Uut@ zirS^B80NNFL|csks>J!Lm%s`wx2(30rEqf@ms&Cqu^xN<$*TQZh&7Gli z|6Oo)f!>U8qmQ;Ec|u5_lYm|?4$1+@+?`Ux50L8Z$w2}sV85-_n`N6Z^v=>j|oSDs-@+>hMa#|frZL5fQ%Hlsk}X=#YDM#@S$YJWn}6dBWYaf#wWBR zs`%~!ZH_e>>q4B&NY7yjd2`VAHGNlKINBX@@I^C%bvDy;o$>i5T!JP#Z;p6{TNCE) zPr>Y0wP3x0W%CW}#1g=S4$~7k;q87dO?XU0nd> zuB_75n?4IS6PqkjwD>#aIVEBoVLJCtOu-btZhb)Gd?0NbsCkcNOWtAre^Xv*6?XLZq`b}%=UIVAso3q@0zSdsa7tIC=F3F) zObxDNd5&BeitS~*j>n$|kO2Gkt?~iqepb*KnI~23L#Ua{$Nr?LrB9#3mK3f>=SUhM z=6j0Cb#7*F`D8vIy7@o57q+l9^n*%`524x7!pH1GINf-1Ph1ZOMVFod?E?i{4~O5m z;!%gg-Kp_7+gaR1&>jnQUlNlZ$!Ba_G)+97n$Ob>0bpJsd zp@ms^2FIPTl&{@;d^$RQ*ApybzZ4J4RLy=;9UkTCJM8qXHprH1{~FzDe_O>@aVS_J z1Z5!O)a!P8oi85Cg4Xp=d<~d6TXwrd`2l3=?PG@?HR7PX%%L!NtYY0tuEs_G2(NQF@4Blg!a$AO;&W~v?%vBP-tQRaPT zScz5CZl%vurTv+@I*Wq20jtH8Sqt`yL^J1eh(byjcQ zT=k00*coymR5MX9=F5qWmcc>w})FpmOw(1XJ+o(6Q8} zx;+?6EU+{WBqUQ0B$S!GE!G1gHqiPmkL|w` zd*aX&Ff*%YtClHZ+JuHu+L6BtOo^;5#~UgF-Czno1b&fwLD4XUq4FZ=>yV5TNIj-( zVkMETUyC^3bf20e_;Ata7Kok{7!17Gz1>rZdZ&}lLCB`}b%mQ)Y z-F;G+4m>j-Z-MVX>>E)I{`+7zq9=ruo&_kllExv>I1JGI7v(1c+<{dH@XA0_xNwrk zDA0luLea_zCGd_&AXketdNfQ8w)1lJf@JE&d(s)kG>lefLzAfCnDttGMZ*yZSyW4p z=*I!GbY;gGpMEsbQ{6lSc%cul1QaT>ML(17+MQ}tsBFkKqNS1f`$}b(UZNoS)IpQ& z?+}DQ&0*1ax`l$B>hKj7ZlWr0O6hNM&n>FnTqC+xfuWTj3bL+6TfHq8xUQi{F`^3Z zz*hOyzVyX(=ISe<3?$KM^{Q2wNmY52FnVr)U_MbtAq{q#&v z#h^2lcI|JO*?gA-ewGQL$Ch}PFJWF0TP6I`__~ISPhWU}vSV+0DDvcq8p8I(m>z-M zU#G=7a25d>dRQKXm2smY{mF+#0;l1Zp!)OubM51hhE{E@WN~=;6m7lR0=Ot+uu03Y z%1oOvT--b_lb1{oJ@77b{vxv^*A8j|KPfp1&ak}^RFv?P^va!jDO<6pst+JU^mTzvW@Yc*pZ33xWqD+7?A=G;DBQdNDoRplL zoS2-DoWz>kIgvD}*YGc%(dei|tf}KXgT_oGvMIv+4`EBgT)fucr0E}xiQA!X64V@F zcA_P0XRJ?$ioWTdzjiG{)+X%RC%&=9`O%Z?@$)Ykq| zQ)jfL+2Y^mA{8LBbla*C%h?+rN^b)n-=*TD$1K@^3aY)LtQCf%z~$MXoEcJBLDS~x z_2|~?wmb%f&!Dyk@z;7-ZFXE}!tchZtV|2-d{F^s7*S8MrFiM&3lXZi$kiF6|^4If)f zBV-cF$NqFO_?tM{U2B{?n#4MmU>2i%wGbIi+lz)p9Y~T9+mh;2kFcZc=G<#IK`_HG zUT6XbQs<$#T{U!Wf zqz)%3unG?25wER3!G|?oZ z`}~a#g!S%UF+8EgEc<4j=#Sx9vA$WO_Amt~s|L}bs-aLk4Ar&M2Sb8aq}#Bnucrb* z&`)!TBE|6PnAx{hqkM8M#N()c;4Om$wG)#xxHKbFEcfcqgKdhx$+(o+g8>wN=fnYb zFD(2c{GAWFOP#$7uBJyh*lwN$t2TG}^tQ!#Sdv+A7Njmv3`te|cEb z!)if%7G1yT1XaA`8{1?pKvj&Wi~<8rBkqeh_;&8)97)Fe6;P3&V_bc+f&Jq)9BPI+ z(I9}CV7Ium=tWIWjr9z_3H5989BT1Awz840_9AT=nljtoO<4?D;#VQ5BtExoF}a#n zBmEDPKG^j=4f;)9M?^d8j!0yiJf9@kwc(Y@=>uV;gg=;r@l6NYp)Y<~8rH%clvA(m2-y}DbKiqP=c{D^kd|6i zUq^E~-v+I4P0E~O3ehbMvmS(2muIIRsAY6Q^5(dQH`b~|VONW3LdW*;(8`eiGqLg- zq)*|E)tra2O4o@sO@)iAnx`;*yreneSsKzg?N_tgR_&0=-o~)#RBl$^rNY|+cKZal zvNXxM$svTNU!UkIW>vyZ8aYEnYxHBHO0vkS>G zxPmTJ8%UNc3gy)2Uz^PbY()T182D)v07r5`GH{2O8ZFM)@PqU@;0L&(TZ<;P_Q}5$ z?Wo+ou*-YMKXg(kva2jK8#jL>!C(o9Lk zOUO6Z2Hkj@3#1rztjhURG){?XkVE_HA8OpnTap)ba!GI{H+h=9eyzHyL z3DGhYAf#}J>1`B%ym-hrWB9~GFT_i(q9qu9LUVLiyp%5?V}2R*pcKEBeA4_WF>EM& zvp3#|d-W0Ic;*S21$v|;(7tl&V6i&GRw^Dn)MvyG&3rZbtPEj7!1W}*AX3k@?s+*`n2?HWnTk3CiIasZg_m98}5nDWJR5 zi4X_VsW}Rbj7jU@a_4H<)uWPP(}!dV(_!2%kz_bU$7mu0zk0~Vu9IxDr>-T9KM*bz z29LPGq5<`HKj8n!Oj^}!js~x&NdZXP$S_5MLh*u5j{ZY;|Gq_wwu5lY1vKfd!BtXM60N((Hhs~dyc&wsVjPpwZ+(Jxqj-1{1@xDtiLnGzrPK^ zy3yQ403y0lhN4f@{^|fW*-&yorIxftlEShN?KhCH*>Vg_^8PjlJm_J#%eJXZ))j@p=z~6*_7}ZjmHqbBvQxZ8EBi zWqjnVI|BHo$2fi^mSlAwCKnK)!(Mn)GAmlpRS@e3e}z*6`R8m#-t2JO42he41JMOW zcl=r9R`v+pxVTx(wRwN~lh za3A#WxXN^mW82vpSSq8%Vf(vB^%TQ5q z@R9jc=_b>11|+qK6aLDlRXB}@u-_0t`SGL(!WcmXkq>&4i;_PPva~=~r?Z%ZTH97i z7^YEHz;yUTxcj+p7x2hWQ4w>%wedP@ZtRmt1r|mT3JFF`Ngh~^(JF6UU7Kod?nZl# zfy%;Uq#DM|CaL(K&r~$_%{WO=IYEshA!@scN{--@C#uKcTMybzy@-;$^Oz)(<+IBzijBh-nsr-iP0$Q61;F^I z(!*z4L2ecHuN5c&GdTm2QySn|ef@R}45=Zbw6+)HM3YGlk{u*J8;np5-S5ZXl0|a^ z#iAZ7chbXTw)u@87}psMKOy1}V>Auq@X;IJuV+PE`+ zV=IzZuM${vAIc(Jm)nuvp(JD55;ikNIxK2tp6DM7`#JmP*uP{$z@OD`{&VAi zo&)MdoxIW@%%;S^+%{);Ds8949B>Y`$tW|y&Y+x$c!umuA~b<#yrZY2nvzx8jWItT z;qQ;OztR^4k$2mW*M!30Dd_dC+NBkwtv}*(Ne4IG(iL`<%FWVSAx=z?JuU+li{xGEgC+>`R8&q{rDG7{+QERV2eY(|Cv1CgyYC-TKnemHNo=&mGU5*7x3$sdb zDzF*Y5$Kh|m@DjM6vhX{7ggsAaCYj_B2f%Y!pKqHXJ^AAWEwVT#an8VM^oX%myXk(kVmqcQRsF$UcW4sL2J@y+G z4DQ3yZv9g4pD2cTGqvu0G;cEPIN$T@Rsl75ie_fExDrdvWIv&z8MyC#TxV67t51o- zwF^N6*uTm{j)cyoR+JtzT;V{=p2?#$m3(H0-f(R9PZ#1-Yu!tLsSaopp6CO6dZu;C z|GA^IyQU<}k(HJ609P&Dntg#e7l~xu4Ex2D_n~ei2^AQw*$E%O3I2hn)nOTJtf^;E01Ypy2q<7NFuAbrP z-W*EgB}wyA^F;w3)z8V#lpivBx8gCjExJc3Pz33f(o@dW=K$v_jwAy?brK(KNIuEM zz;oOA7Xa;q6Co74h9q{Ng^N9iD1*A`W7 zf^gJg0FB_MQjQECP-ympXu8O^-tL4U<9#l=FSPiHgetR}f?a%^`8S<>zb6y zO5hr9-}QK5!NUvDvv2)(J$$1l1|{T}J+QbV{lDgq4YHxKb74XDdZ;UOy~7w6bvb`< zxnq#DZ_@2RA3D;lQ=gw$7;oN0eW|OX;YOIV?waCc%f(q9NVm648(e7{=VS-SDxa6o z-*j`@K$%IZj2+T?0|X)J8quz76&sHG|int<$0v^e{}7dz!OqL@`s8C+>J6L%vY=-|AYB z@!Ka->Z^PC4kSinOW37}F)bE_WkPS^*|lnXhDb4eMT|tQ-&u6UHeNnx%v#AP0iEDx z6Osy%{gnQ;ka((^$FA(2hC}k(q#h=QS6x-NS~^7?cwXL#uQ<0)p-4b6BA27b1V|ht zs|4lstW*orN*l@OkCH)!#&EioMSPU~0Bj2Lv;;1Y4S=w+=xl?Re7Xq?62a5uVA%W2 zBk4B*dHvnX(ex@Xqyw|ZbV2(Gz|R5Qx$68Lap`vG-AFtxEyr1X7#Ij}P*ZD4B}QfC zX-Gc{NJs4bUG-(d2r>Y8g;)QC_ALN_rij}qNA1JrWfNapveB0Tcipf!>+zpQu1=Q& zHa#m)D#P`AgR0VOsdp%bi_Bd-{{=ZF>a?fM0sh;YbYOhBy2^2siDU> zXkt}rN)qkrMMgf`4=unLo-_%iA6@Ba!a)6o#X2oj`yLBHs3-3Pz=*#vo#&&8{`ugS zSX4kpY-4p}M33WwhZO{jQt8R!DGrsF*>#DjJA+YX?T=f&SmA}+90`T{911Nn!h1%9 zE8mSR9wvy8{|jVU^Gh|1lpi-0sC69oU2~_3$k$28)Kn}6^P@n^{Loou49RQc+sPOe zGiseMgv+R6)ey~yXFr$?asch%m0b4Z`gyEGuEZ2K|K*AJ5Q!~EQ4#VBX5jK3o4N~? zxq(aLP_3&*ni!)p5oZcC&vNa6!hh-cm6>GFkfUAe)7l&Px@TKV07F2$zp1?WZ#!6A z3A8SC4-(Q_j4ka;|9~{UsS~or*%q1-aMzNIGB_bR$yDsJ zoHfmAf^%9)5SJGsGzn_K$XjO`fUHSRGb@7E@&8}eN0G77WsjCIWj+XW0?5Tt)f$Ll(vuazE&@Ix3NTk*{nz1Be<@39&$P!cCA9Py(EAb2CW?m6SAIH;?i)Tfn>;{oT~jF7jx?Vl2HW zrIS6SbIBt8R~G$v3p!w0Jkt#pl%b=@78L1Hq9$-o5?cFZa{jo>IQrOZ! zBSbASz*twJYmj7p-PtF;>Uilm-f5iC(saLR?&Q;s2n>L6F6(Y&OBBaCweD8nN7hEt z32fJqV0B}(IA$+Z4(##cxpVsA`ayiZ~zx z2^MP;bV5K=LY<5_8qHpVLh^=%=I}CEgk)3}BEN-`b4e~2Y-hR5F=YUBgDMo%?!mz= zT3d~_#|)9f2eJ1{0PPs6GVe&u!>5yj$upt*0|pF*r80VXV@+fk(;=yUO}K4LBa(5u zw8-5y%qyWNX@TjeR+ug-+|R!r$TtXtydhdq$0U-r|6@di<|vNWx>mTGG0u{_7x_g1fB=Al>f7J#7>7d6x^Z4VmH0=bPxwZcK?&!rXP&cU#T%f=4jE$faHy$YWh`}N zA5n(w;K=ueb#(54I?Scr>j+#K+67BkmjqmjUE8SF=EBt}09B{rU}+jcgb3a6scdzi zFabYOR*!o@<`aG6Q*(-Wwiz$9mFt}!XJ=)r8G zYO-~6#Wny5ffg))v7j_H7C8bKPvl2?-1q^0d#{z2wC{bpvz58^Y>02}~0 zz=4hk7?&IJ2LlK>XAzLuyOu9Yrh&syvY-^}Bl;?a zCO#}`QTQpKD2_+w5aV0?UkJK0TK^7+MXcifNV+J7v2Y^&f5cSOq}-(7q~xUZq=umq zFJSpYS%y-o!CYsn0a+1ScG<#o;!kL#NXRqf;JmaVA6I`?CT? zhH}_N9(mCefr94>l}@i)v`ub!?W3&Eq0_ZDJjo564L-LElaUPqzPaNy zb+4Pc2yU7`xm8fz)vNZuJJAIMjn|5Yp!NaC^iZ8;R5<8Ei4-m$(eux`H*5f5Ds zwKbUz#W#}CIsszc2x11O#5N=GuuhG#4#R$xS7AC1_Nu9(KA(okQegwC1$5wxHLqXy zi9rF;8e#$sLX}s&1`13M+ zU@%RrCM_D(&o6D%?#dMH$(&(q`o!6@@!;jygtHbgX$Q7vEJB~mP%mi(&7rJz*fpl`U z)^I9X1O+seGB+dDWMeC;LF2oqXPUppwk}145 zhIU;Bm{EirLOcp zP_hOkiBAArVR6u4w-(;4Bd_Px=xUF4G*dwO3*VtNZnc-%i&^D7QGvJS3(2)B)jt9T zn{@Slip0fJOLRj{WC}YWqcC}~!#A1NT=O}J))A@?N>ca4Ame87cAF|nZr8nfmqOY> z`vLbmY&3nrU5Hdo7i>^pq4um$ctt$E0*Kgd2)SZjA%ouiD=(40IanQJ%M+#)H*I<$ zGAQGSjX^7`9_sY7Gmy))z3=I^JVdl}!9*KCg;ztv;Y@i<4xM7>ef*Dx0*U3Q>TJjC z1*?H*H&GU}B834;4ip`+JBNtCpHg~b6B-pf$(@C6wHV=c0|mwNZW6HDFhl~hjOLhV z`5WU+O@0Gx2)eUwhO;C(A6!P_WKG20{aG8u6RyQttp6!*daT~-2qMTvbMm9>+G8_s zK$hi!#w9G+ocYZi!r~@(q%gptF=E#IB4|FD(1yeG~EG4Bf1t^02$`Sw_d%PAX zs4`@j?weGHpcW-z$t+{W4rz*1OacC+8*_)C!Q&{+XQ9fG6s+TEZb3I1$8_Hr_nM65 zeW-Wh#zF;<1~ysXZfpA_zq~6n^Y5i5$+qFdn5f+9DN zFknUv4m84{f;kb2ZYMqaC6A?hap_@tSW%&RtBBl2?}w2NBpOPulPohJUu%SHDJwyZ zs5a}fzXR}6bg9BLf!8bp892f%y?qNDre^cpsWw$w=*nX1_EgOz z_L}xJ-d9e!4Z}j9DgaYX*sPkUZ*ps%TSgQ|dSp45p-A@$b$XXd#Qq-A0yf1oM*@%bS&zMX^!LHFIAsW*wg;oqNxIiTgof(i$Y^(t z0>VxY(_9vD+!v!rivayY@^fPpt8|Br1dQyLa7GddXpt!pFiuKd2VhPt9^Fxux%}qh z8|O@lM1Fy&8Q|1;in%$`6kKx(Vtp1Gl>}q@2ZfKYp?+W~0*&7QLSj1DYMR6KMn1M4 zd>R@x-4-9?tC*ew`8&WI_hYTOQ?e#9YDTAroYXx9d5^ay+bi!tTqswB#aPm&H#|A}>U62|Bp`_!T4mc@q4U-lbs|!PvQc46}F!+};HVOM0#_ zP{7AVfl^ExO7sALnX^OQIvwvZz+|KrMdw(U7p;;G33OARmQgbRdBMNU=6hn~;xb`b z>s_z)e&pwtnms8t5h0bRN5G8B(|l(+ic!Y;a+Xg`=Ffr_5_ z40s8HHg5gH=09R=hZM`StFMSSCE3wBb`2}pwBxQde0`M-2N&?B=~k~95UmKrv`-N} zx#ykkD*pmQ-qRUP#S7v_LqlYwF*2tYIX=P#G(<3%?4|CXS?*mOZXQw29XU!YsS zs#4?68K2##ZgVw{U6DM>EW$l_Y?BhZatJ&;BstU+abto41okEC8Uxs>rOO3cxvU{) z(nt7`>&G^6%(C!cifSyvHMb*5koxYtCOZdx8lNJLZ$(*xbKM#);En|4@PJ55f{uY+ zHc$<~6m_MaYvS~J+?LoW%s!JB?eg%|zpS-z1za5^s3yW*@>o1hOP~@-(sh^)puMmuWRmutb^vs<8xB@T|(spbh8o zwui7XNAsks0z)Cbx@7r8%y3?*!K<=}o+w7C!IC6$=mdN{H@;}nu#9X~tLZZ$6BczC zPz76xNV7sU@x%7()?KQbL64Ky-=n~!5vlUHr)=4Oe!W*|SENP(b_J~-QxvY<|`HPUm4uuDtiLuJ-Ep$Xle3%$3ldvhy*jMcvV$h2iLLe`;z! z6pOV23<1PIq}@Fl^8BKi=&1FvErpy-<%s_1l|RSRtI4s za|ZcB`h_e!OCMx7s*VYa1j9h7fGB^|lNBFW(=HaegptMDfy#9C13+Lg%7UmltX(Y8 zKXd_=j)ZiX1N{Sut-88wtMkFwSXOiQs<)wvTP4C!mH;A&wnhhq4lu&d`@`r6EK(hB z|9)0)X$o7h5j@TmxCON^jOXYB2022)FxJeF&`AXeQlq1{iWTtRQ(`TMIscYUb(?{# zTz($tDIX7;{4BwCm49iH`?6Z+e@sz)N*8{iU*BffK&8HmkMt3N5jfb^-QTQRyu3GS z&Chp+%67KrBcF$qRDUEBZzI|mD5Nitv!>!sqYOR-q72F7f4{tiaXj_0K{=*PH?_`N zUY)E-M)}ZAhle(}Y48d(k!C~&J+?`*`y7xN6-+0mRq`e}*Q<_COcACf=rb|tuy<(@ zaD}{3At1$0@411~rxc*}vRSutjLq|6ubjILQ83Yk%BXweQ6G;bpHN)#(0! z<*9?vI?lyKO?Fr9p6!W}$bQlCUVTo_5)pb?Bu<=ZPVR+bw?exgL=2yK8m#b!TT*YL z9hnk3h58P3@6pQpM?sx;>V>JGn|#agS6;3)7`x$Wy~nUtijdv68o9#q-Yq3$A;!dP z9#CDX;eG1)uEcUDxNNZSC5vd9*g=o{uqy)ogs7%~mSlW?z;D>qvARv-8BM0QrKp7D z&yWGak>c$ZMDxO$Y+_>?fyD)*cuhA68FSI*OyR<>Ob%*I2RT-0Qy3OH^H%98F=4bA zVWQ$7JLoPDj15W{(V-VOIK@JuO=F2~uT!?ZsO5K-wt1h05pg zxO{gayQhCGoM{A>CEyY4A#_ULv&@{5jvn}F;1h@a$o@tYWau_j6w%)Cczby!A9s`E z0mDJX&$2q(ecq9|b&hgfelqz`4vK2HrIYVY(#RO6oTd%camxGECOkKlt64xEUZHMt zO3|Urfz~F7)9e-Jouj=xVdJ0yugF9lvpTHpLVrEn|HxO~llY>o`o6A&Imk z8U&`@xf(00E~G5BodK|GKUi5_5GF%Q#Bw&Z*@&FTQAM<`3`8P4ziLBjDAsZPdKobl z&I+-%Rq2K>gNv zfKk3lr!b{E-HS(*jm$nrahaM+)w$2z9QBr+fv_{$QR^wTD(D>PNx!}(UQdl`5!vwV z#eMZTq%%2(P&B4reCNU6fLhhqa<0K50m7$^I;+|=1^p4c8S=O>`FDaVXnK^p|K6IOD=lh z)yY{*;aNh9YWLUsoIVT=Kd`o6u9j^4^#-$$A$%KZaTOKLJ))cMTj?F>QgLGP&Z|N? z%(~@Hl}rvQACtoU<9suefKXRXgqP`%pFd;>xhGq+KejAsUcGrr9AK;XBm7KGbQqZ; z$oHrDnqC5~Z~j&ccK-wrbP0hek_nRT%XHqWf3BUkc-zLp*W`& z&`_*-3cUSq4~Q6|J>%%DjV}2vsisA^uA&2p?QobFcQk#BCK&;CUK3!wd4cQ)xTX`< zq8HkmRWpUHJ5j=K-9DD%Z`^+U-e*<`Qog;JrRMxUjhqZ@*P<*}@v4HJmmm9L?x+SJ ztLmo$WAyLG(UYJ4NTxt@$C^eyA1~Ulj9NlLlKk<(CQ{ebwMyb8@uFX~chnOZ!3Tgm z+2gzB5(dG4O$vZHzy(_x=dpSym>_{#;<}=sd($MYn>mB}T_O%^ZSNa^jGLdOTWw<^ z?(nPbWXO26aVQFqaZ*BE@dDd%Q&Omy=|S+#&ZR zJ8XDU{mo9l{ezAPd)9Y(odz!{tw>h(WJP*)fd26V|Kl{8CLS^kPoZKrsj|>buDH_aY2H z+K()Ob0>&3ipZL(ow~m20%pcgIyd3kJr!C(waK1VC>#>d5$)G z@xCw*+pINj<{d#Z5b|8McO=;!nYvG^Im%5-Z9=G8QdKZ9EsBo=#&Hz=`PERKOXls!`Wm#fj=5JV1J=EPisv9{hlhwlsACJr}NS3m_RM0F{;k&L)y4pL1wRQxBdGKx%&}3%`mnd(XmkR%ZF8dFxsx< z!eH)%Db45`Y@M*W;S7L1hf(N_LlQ!(Z@qC_^k%Km!3=)+KBkLclje)oT4HA0V)c>- zWd1Prl<$l^gPkMUhsjLZIsu?%)6x_%gYy%APEZXs;*dM2pIjxSkxi?KhA)mK+C_&Z zHfr}?Ew+r%;<7Cj&f~O`BHSP{BL7wnS|9b+MV^Yy#`TTmb9Jp!=x46bMDqs^Ro6QF z`93@gV|<6bJ_sm}3PD@%YeCsKh(*VU*}rPhA|#5PEHtl!$hdEEd?hQAqS@2ii8R~R zVJ-l+dfLHFxTjaIXKds-q1i2ARqU$#bBc>5Lz|2%e+QAmE3TRK;n=l}(q&Qsqve#- z8ny#{{MVjT_<@ulr9|haPx?kp#2$QGXps|h8>%lBBi4F=lsU|A$2(%TC6%x4O(u^u zBTE!BzA5VUBI+$_8)21`@o$|2jYhLe@@q1X{52G2IxAz<=eK5d%N(R9)|Vk|I<+1> zsb4H6plFulw5hIhT}W$4h4*|=1fa#xGRKBQnFWup;qz6E74&ztS?iz&C7x)l>*xzq zr{^u-U|5z#-hOcIbkm&0@96B-w$F{K=VfDzQ%Z||khsvWJ&G|bBeP*Z_S8`CH1P)* zO7EVAvh8AV;);I*kY_XAB&X`sN{YLAf0ecXb z_YZm!GSYf$-81YHS1&((5C0qpBiWr3Su%Udm&>|50tW-;j;TAF{;>4@`JKQ=T@P5d zHJ4Be!lJnZ~@s2v52tJG%6r5cLIo3{vYK_#2K1lw5c-28jzNbdY78Z1Nbfo#zn4!HC( z^2~JnVNC6=<{?XUlu2V!qlt121az?-qoE%KXvsOLOZLM>!>9HssROcRCf~I`7hR^P z235YAux3_b(vWH+`XQ)^bDSBme#O&9Op{M;(4&laZ9LxoV1iDV$87IBGzbN;F>CU<}^?h5b@0hb;$5tfabf8`4Fhx|PqU<%V*p z9zW`1&R-1hwd(JVdMV09on}=2a7D*9NxmVW+2kw~jR`(!eb%}`^P(1Uiha-)z$ubd zEm?KiWs)O~$l?a^%^MR%GE_%(7-bNT4#|xmV!ilaX%Tw1-T(1p5}iu?xe%0@h`@x@ zM!2680zfqwBq2|P;g)6mzfC2g^3q-~yol_Ad>d0=IDQ;06& zM%VSa_w&sgh}(adi@+rF$@O|*V`GJ|QOKg^v#6&PW6S174Db!%@8`a6x(_}-Cbv{EDOz4DSo!%rV-@bi%B@6TdOcP_x}o=StTAC&yFmDgQ5RYaB8r1_ zrqCzw->(f2(p)=__wwP6|(RVK|&15y4Kg^5v3wNtSM zGq0MT5Gs#W^{h?7ZmWJoz>cHm{_x>d`cs%)$(H(~`v(;coZf7>8j`CIcwT_Omw zRfgdqwuQT9!*NntV;AOBQPsbDd}nHbB_MWA=y@+J(Kx~->oB*tDcd+_gBh#cW+3^^ zi|*&w^w4xx98k7y+Hovp%?%3Ki0ttA&R9sP6`-rrj8-Tba_&Urv#BmaCfrp@n5?Il z{11NwR&OkdvU;cWd!R^QaE2Cu2?muJMQItD{f`$`Ry;SugalJ$#*Ow zud7mV)Ye68s*gYh5_90@4 zN*9{4mNkpx?)B6D&3NZa1>L%BT%GQ>E&^+ij5n|4C{8h2KQ+_weEF?2wvD9+JmBmQ z%QsNR9%9?sx;PA89g4*;TLJB-A?!0y)%pqIG=3UZH0butK=j9D`(>0%&OFK)K^h00R)st6?p{6v?JQ zs6WXCkTSHyg_;&4cbacGz@TL?Zpa)wD%E&u9!vgdAHjMSk{=?+FYS{Uk^3h!J#@UB zJivyPskt!6p*?L4%|r~fA)N~Wm%3R%UEzT}pLp24OkG^DH~pYsDVnnwA~c4y>CES) z@C6L;^5HZuk`mw>5)U>jz*S4&XaIudH+29`{%aH*BUV?M2Ikmzd>i3uM{Ii?=nAY2 zOs}N@Q1?9ujkmrut2I|s{(t0#Zo=0OFmF??r;|S+buqM~^o9&W9=ajZqvQf=s+#Bkn7dFKh_<>tR2`blrf%{YNiJ0)}nx?n&yPl3DF+1EXo$)`>O^-^3wM&y{=73&eLke1~<~` zN}_sYEuoo>_%9mW8ew&ZOe)IiDNsn$;K4pMk5fm@^IzU4`>ZZM;1Ok%whjTTl(vD% z-71G$4Izo57giV>>RI|hMk;#IY$bF42_3^zF*`oqdj9;vry^IZtl5SL4Na1{8jKK( z_AI4MEtzG`fi5llJy#Xv)^DosHsAloV`>0Ej=LK@TGJ@#*o#Kz!7i-ghnZ{H zlQ(2PMH1dp^$_<(^Foa8#&Q33v|Ir__A^&Eqvpsi(3P#Uo@%==EjLZYYGbfPuPrYi{3Pa`_^V!s(l;t=(1&Nxth2`3DzO;eOX zkD~j&25QOpV*FSmNy!)v^=L@FY|TEzcR;eKQj>5)24y&K4kJQoPRc29{M6~lBWz`6 zF_K-+uT)g7)ij5a(@MsPoUy)x@u6lBXc4L|<$2<|iNw2r)HS3vnNaAWZ7A&?6!I~R z5|WzS)i)p^ASk(?`#*rj@Q$!8C^prV-zySAMFwzB-<#!EEcn`So7|ibkO3wzB3h!M8aO(vjmSgw!Iq#;f^eA=s_t}VpktJxpLr#H z{+)-P)6k%2e!tC$*!7mIw3lY7bzLV2fJoVjCIl!e(7-LKS-&FTJ3~%HT+Y+vtKU|g zmr;0qZiy6b8b&PI>u;l`YYgu~tveo}){DfPWj15Ks_jZ3ZeG5H>-5wNep`j*mag-e&g&zU~j zxtQats-HNHfUA~2I=W>=7F{uki|4&RWX{$Hga4g0TZ$yQ0*WMA=U&?(&cGOQMXj*WNIyJ87+_b675k8AB|l;te@`) z*P(7#sK+^F#2B#Ns)xTw(F&4_R=BiC}h=0%lB&0EN~Cv{(F0IC6;=rthnT?WnO zSK(%?rO#PDy-w#wNOo;|E8z?6QL}ne5_1TP3a;V1Yp=>sY-S>AyeIc0 zqo>=0m2l~%UWcp4qF#baG@&-nAHH7Sj5{8sQswB@=zkwd0YF2N5*Z)?|%f^bMdVAdNa(qqiTY`x2d!Plcu|aSOFC<~vim;;u zAw+}<{Gi7!#(rkS2I|6Sc8vVRJ$w@OcEg{mq1DOw>nSIOUeEd(pVI-!5mmbvypJwa zvWgxT+(`q&TEt~M-+^#wZ5@x4s;-jCWhb)k=Lv*&VK25|V+|;?uABzh*Q2P;(596h zzWus2^`)GFA>QSxCgzWI{4;n%kMTg6r+UeKpNuAs1%6R8gQ;HYSzeLdD5EcH-05cD zLI*;}JYIl#dETj>G^tw{RpC^nZ%)xsw~RHMsg;c z4hH7wn;ho8!RM$Ch5}_KGnW(~p=%y!erW#Z7PkC{frkJhZ55`3p_=4ghzT<@F>bz8 z22JIJImo;SQKS!t%3;Y4WelW7ddSw}ij&dq`tqd9UH8-AB#E~a8v{WNj%`%Y2Ow0xw=!TJGD}4Ak@=#6${o+6 zAPIim(lFdp1i#4o)#yUJix&Mvbr><<*)J@MXyXS4 zz@jtyU^-mkD#9p|v@S#H77g?neSJXJP>s7citxJ~sAr_M(;&4G8uil~T9Av$NO!(QZW>&UBETIr?VqHX<;@UU z^k!zF$|R83Vct~o{@YJCnpipwO+rpYpDhIb15lspgY^y~3+?G%rh@Fg${I&U7mWPd zKrHF{SQkaLhQ$rs5z*roA-EuX8)?ZTj9Df981WNC+dT6>5-)?mmv|;vxU@`ox~yGI z#_R$y{2>(ggZHV=7xdr_V0XQmtt?C+qXUR_84ep-i!Uvgd2pHcl zwBZ{Y^m56HIvmDVxiveq4|~C~eAeU2*tRO_z>AZfTBp?(l|fN*i1{q7e~fIoYqnCz ziFwz|XhCMpC{F56dT3G^c3zSjP+xRt%f20*J0R0R$ZJ$E zDr2fYBAjNc=E>J4cvJz#?#bLPDEHH5Wx}VMtFw2~;S(BM@G9OhzoO@5+a{R(3zxg9{R{T2NDf~x90Tg1PUoMjOv2Q9$tnG}B;UI+AGv7kd zRQypoxS?i|3~qZRe(@}*alf}T9r&4rRSRg?0w$wO#J_*1#*K1+?=e(h$NZlkLp-+? zqx3D8<~*l%p;q`Ekc)PZ4CpUZZHCj0z)@u9$G;EFK{8jYBdOE$hrV-e+XRDjufL>E zS#8^C-##nSW57c?j+9e769Wp0^fQt1rLrGC;KUF8X?m}`3RJ483B7qGUsMl&WGZkk4G*tTB+rwLmsC`uR)m-GK&JLRBQrlhdOc?VoR}{1ux5z{l&-Y& zG@iq&Uk)J}Co_7fr%3lUKgUAlKP@u~Qg!D|%L^`tV#la?-#QpDGIBHlXA-0lu@#L$ z2$bSb%_N$V@tk9s>*IGZmKIm{Phu^SG8BIJIkqTW_OVmH+oi@lpt3u0B#d?9T9K?&Yx zY5@J!h9CKUun!{qEA12-A-jFFckFlB@AAgR6>JL?y$6G{3?q4k9H!$s=kz%g$H4im zBlZ8tt=q!ML>VJ;H!cxXafyXQkaQp0@^M*f&w2b^Ua#d&}j5M|zlON6vwi2w`BP+vm1Z6Fd;4#63iK|Me+s0;#IDG59=;ZjAr# zlj%k}cWKk?M}>D~IV&!lc3hLd=M8_0t-R7jjbzo(P`nk$Tc*D!7h~1njW3T0Eeluu z@YQJ&m>mejW+pjLhy#_q zuYVNxE0a>JR_x0K0C#dfBqg+dtjrabIrxzQX9n6D%?&z`$!U&-q~_I)=en$32dDmf z+bjA)aW}`@gl)ik(Mv1w9qtZ7{&~aR9O!?afUtcjA%eg?P4YHiiSJf_WE^Bhfy^T6 zEvIVBi>@y?`oP6Ww4%Gu@;zJvq9wAk{Gy}#49a%R34-*PT+kWi0c6xc=#CiiH@*}S zyV;dz`IYaXX$-dVG3QTZX9xWkf*DY~rH5`^dGE3$)0{%&Rz3Y!146}V6(=4F@c_Mn za!pJ2%YLPDB+?0dEGtDpqXf^lSEqNCQ9_aqFrB#ws*BC)%Mov~f9;U17M51MQdC3~ zly>Ll4tKUlKqQ^!+Q+@4i;4R9EnF_!l+L!?Hxtwy>sLAPhHSeIwpS{*E${f%C_5RB z4g0f~sBe4Fly)v}N;snwsMSs^4caY;ZQ|8thoozO=pP@m_8s#V4eR{L4}9M$a<5cz zK56_u$^4r8fnR0{!_p14TD4Nb%$Q@1rvQtivp%+mAFK~oJ*BDAyfSY#7 zj;2cFX`5dzeoh#`NGUsaGZZ*uY!V1V@nLt%o{NDrPT9sco+{@Wn@yJ^=VUlfx!=zI zqCuL&=V0?a$~TIaM0b~2E9qZeor0mV*l&dN30*(YBA|w<*$A(wBZu41KmjA$@d$sw zupAtws87g9m68Vw3KOKRUex6$bp|ZVZK{Nr@nX<6ExnwTK*`jA=7a6%0>|W?WZ5=i zhy0_9hBxoysGA;e6e1Y z8^m)!d1~%wr4r}YaOskAzSyI+CX`*T7dB1!XjzduGb1i$v0yIe6K+X zXhi7&QZNXGPH6mFIW?ym{pG=2w9*0tNm_OW=$tO%_bjEUwY3nnt1X8d;cU;3&fJ#5 zxX*a$^JTl7#aP-bQWa1IC^)0$1n2Ba_b74xwNh!P!gNHOQF8*YdeTK*{Lw3`Z=+ZR zW+UGsnke)>mq(H6d7IdzT_O`X%C2bo--sVhFzJiMK8I!G-$;JkFu`Dyoy zZ9DS67}#MZduHA;?7VNqg6!PRLK%=JexhP!D4|X-hfSv~6>U=(45HrGfJiLLEZcz@ z7oB)-KuoM@+?0Y$iFJcOOt6)%u@%Y9Mw-j>D|4Y{sRq}N!9(>QWp-igbM)>A%8%wj zdP)Mjr2m_VX0nD0M1LqYfBXXHpZM}2GGH9#M3*1_;fv8~N}Fjpba@l_NPZN(W2*u#eJ+q%b56y>(Bux*VajGszt~oDJI` zrl)79$mZBs!v&coHk8N;H`#rMR*sTeJJ}dWp%~#U+YN$~h?AN4JQ{Ut@tM?i^sRLP zp+q$-a1hMO)!Jqi2yJ>sl5|Nx5OIb^!&e_;_lHU>z6mS!Q9Tedxx8mR!=PqZLPNE zGc=%y)7=s^k9K}?LDcd|+g~LL(}B`gUIslzJ`H~QULXKAtBAFG4w>GM*Ss{$PYw8I zqN5D0Vz#Xk#0fc;$6{e+L)rh+Ko2gDQR&YRHQCqaA z8Edy>%+Kwz3mz~FaJe*x28Ok4SPa%O&{9?VU>Fu1xlxbHCqrSkI>$5P zXsh;@XaBkJtW{cn^CMB6qfaH|Cu3#|+j^(xmiaE@$-LDG&dpKcd(B`E>KP_UY?6$3P zHx(+^+tjj{gRz(9vu_~rmBNhq@>v-Dh)F5^&aoz#T&|t0e7&Eb7qQAuj{%j;J`^m z%XQXTh#stp<_8OqK9fcooS4FMX#CAIG%)U?iEkcAl>au=>>Il2wo{2VkOeM# z>kjL#<7iL_lT)|nL)@ZA`L4fd6^ucK1QvcML^AFUfVQlbiNk22p1DuV<3EKkZh+&&Sxp?S^}Flp6&hbyiiZSvY6k#hrSP{&?&gBn|C}FTS6qrJ26&tpe-X&C zKW8Q5-a@t)`krzZs=eM6u9zJ6|~$ocIyxz)xMC7tRR6XfP&nrCCe z9=lH`tN0=q4#KX(q0j+8gA6j|x#vSK??IJvXX%`XO+Bwsi;b*HjM9b`-#tNEjMZm@ z$h8VQzf+&KJ@d7V-_Fd1`Ziz8O&bGMk(d}xxI6ahIAJsAzB9d{4#m4pHaEI7;a5^^ zGBckrgRfvL^yF&d>5cb!^uhDOK+lmG;cy4_hrX z_#F&#LWV!QT5g?smxvsTy+8chio)F#94R<4t59yeWh zc-y+}w)NdUBa=Xs-5AV+d{WE0Z{**nZW4P3NpI(<47SYflZ7V3?uOgK`W5`Q3!o}=+L^+G;us==(4zIz+-`{W&Q-nFwe}@ zQ5ZM87<~#oNwliJ7Vj!ES6CX%PHG3<8nD~`#tRxVALhEP7PUzfIo7j_4V!@((~AAp z%9{E6gBQ1dU%fPlp6{^%)rRS=I^0$9KPKFY4N+XpE=g&q$+BwTz>W?I^R+?yVkt4J z7ll@&r2@%WELpy(Oj~Eq9ECj>nz}Yj_Bb$ONv3xid%iuFS%@5NNV}gzwbCuF( z*+Lusg42n#INU=t08K!$zt*27DC6m=WyI_c)>myiJNgSA;oSI2A@mG!qPzZvX2)wt zcU|8!y8d83BS)`1PoxvqUzKuKruJ1Hgl2d}g(NNP@N;hHbCEd1&4H!~_9U6%s%xTM zcH1CLE{E_2i6RGpmkZMGaGt&kx;C2sR{2l_!%3*ciRC9KWzE6c5%V?d&4A6yhtsL~C4MFaEx}(r@I<;5&Qc+E1rHZ>~XcPW^~_ z72(g!h7^DmUwh9LGo-8ftzTE`44HjEeUX3UATJ=X&liMXV4jW!Hv!xX)EIyvsD$4Vh2exHBBjp=lL8L`*?{pu zN`Cu`NC5}yQW-b_Gg#r=-yqXjHC2_dRA>{JMSi-Fi>baax+oo}Ux1l@Z~dJ~g+Pb> z!`58wtVG8I1W^HI0!&o)>1ObscVyo^&<(PN=WlSsJ zEAO)Vr-gx*e{xi`{s%{9uzoBu=YuQsf;pq(3T+M+OrBbI`S4)Zzsp>Kc!|Fu-CwU> zTEzdM{W2#9A1Q|-%5@UDAyQrM;ea7aCMD0N!}Ne7oJ=SO7YozX5l1Q!c zW)aI=!TjXxX$<2 z`ZHx2C(_a{W-nG?|mlZEoX+NVFUj`2ygedu5 zm=3;ygA$544rXAq7)6Z^1p6msjD@3&SFOF?GJzGwxiK;1p7MPNQnK>7A=WLLK-}D7 z>u=@~cVoMi)qX;v%FDSJzBtCywl7XQl2sBewWVTtNj#}1PXvvqpzQ?34JfCmbGa!= zg8W)x^;vS(lI}ol9X?6Q=PPtUwB@Ri9Kw^ZY!V94Zofu~sJRIm;9-d#;nP8wvW8ls zF%eyW4f@`9LC>`_wJ$D?h~W|Wt8mMb_zsunN~>N`sot6fNe=0{RTkr7{W}`Y-7YyR zBRj)nxD=%Yo);fR6P20h{2TWpv_r{)asYOx_87#7sy#U0^*5+7zm1_Apq{TNmU2?M zXb2Dih#K_3l2G5^&v9l#tps>wNl9*)%yQ~Cybyv``4E-6y_LJe3Zb0>;A*G9{|>69 z0GRwNVl!t1R<7}PZ9rCMf$jp-6xN>zCxUk1a79p`9Gcx^?yhN>)?Cd@G3(D!D8-!1 zRt~e}Q(K(G@BDg2lY@{j;uan#j!r<8LEobxC&XV*l4HAnTNN!ns>Yjpj17?J0gGy3 zEI4p;Eq7|o5B`KfAQV9Km{A5^r%SHrURR$MDH(7gEmhwF zx??w(AFmxKbhQ^_Sek<*rSV^F8*?V`G>WspMstQwX^R$IV9)0$2USzS(Q5XET3&&D zI8r|NM*%s?VRq^iF7{`ulu~bk#6>$$JngTzIxsvixX+8w)+>~u23_CAfnZ5`<_M)V zch3(Jxn-b%X%NWfz)tmFz>Gbm88ZB_ZYNJ>gBe28+kIU_p($R%*5<6&Qnj3U9e4jw zx23$=JtYHOnZ^{}6^iMCA2&iZ1`>7FY(O6*0Z%>H5L$cMgsf+Q;1N3|W8ZitnEr;p zCQr4UJGHXbKOnnj%6{{AMw&gVzWot8w_ppsk4N&wnKa4B*s`x=>gs&3IR!M_(~jzB zA-;@lwqq-9m+$}`0L3=29Ppl--E)}`=bkYk+(>4!jzM~Then&)J0J}ot)%C6IH~6T zUawhNbraehI@9;4oI102mWh+kj$iCF(}dy^2esT(HXA+Ht;_nzTZ*Hb9bdfd~v-#5O zoWU5mtp!%N^tNi2C@u@vuHGeK;qbg9)DW^Oa=zgHf#+aca*__A?#)*UN8sVdA)Y%E z;txW=yYF)Qc$#$!vc+e&VK@%O#?rQaV2HMOUlri2z~)9idnTnb(Ko9MA2n0n@^zO1af)X|J9@JVAvzDLN@j~G1Q z->=RNo&TZW!q9>ur+_25Z~X_*v_<9_8aK#^K7f|~e&n4ic(^`mQF(N(f)vf2VQQ5e z)A{QD_xYAP1NF&l?rl$_DmFOUE^>N7+YBgt+9bW@=a6*w9N6pt;K~x^Go$|=X2Oa5 zk>6-903`I3xj!d{!%EX{`v_B*wAslvW|s+fAcyH^R4c>R4`2TtehDe>?l@dYRvzS6uC?93GXAg=Yh+(%_`&E0IS_mF#H~De@{>Ds z%>d=G0NDxV8Aq+id=8JBSWM%}rZp|NV6wsln9jadtfP+&{+x0Q$-e>L%e8#zv=!CSYqekP|I%jR>7md^6yKvGYgyxd`W98AFKc`jFSETGzD z(DSScH%FNUD_Dfc0_nC*cBOQ~m;l@)sdQ(_#T7=Zh>$&33qQ~)a8g%2MK{YoXR zTkv&oMLrYAsM!*(b7o58rm@eIiI<}!h31mbYCcCQogx-IRI(t$()Q3+QdV}K5j(WU zsgpBs{ym|?%NJ1|RF0`3`4`<|jQq1`F=;)Z{;sUJMp(`drT;dKgb}}cW9aWxQpPve znekZuzs0kE>9GHl9n0Al>e;Pys00@sy{H09S^VKz5Bn{}qsq~NktHGvo-{;aH0&Y< zvF^NDv4Z26CcaQszEV4{%Dl~PKt;o)X;0VOj}Ip8+!!GwAE%i*;aiK=ZMUAd=wd}{ z_oTQYnAz?PgRg;fh9ustjPDEaO;vA%GX74Ha=ebq(xyCfYesqV%53f3G046|XhL0n zWJLU0xtfvlKW)`P;iLxp{Cm94ffg+?zSU5pOxZ9523I&i%*9%}nz5bJrkOU5fc`cl zI8Q3Y0n>}mlE&ID!SPO=Xdr8V@B3M&O$Ij(?bxeBzmFui5O=chz?}y0YweWpNGbdM z6x-Pp!B86*blVhNHO$YW!o-~(+S2N7>MOFDn#%b3niy>4O9s85p)3d~X(W<^FQI-(j!rqy0mb1QfCHo|TP;1AB8aKy-}*1s_HaLzo%H)MDx7uMT;4 zA>t36W0o0blP{~s_6$J@^ZC!4KW~DHzcLF(4Q62k zU-9<^SMDwgWb!^W%v5g>`Y)f)c|q=th?C^TWZTcm4$0|>>=&KIZ0c*$!Rw>lel=^= z_DmPH8ORbSBuc5t`U}ux%!$*Kt*KrZY-Qf>r9{HrN}Csy^%}KmTvMd#t@6$gHkSQ4 zW>AKdMHX-~te**pK1T;)P}lq`mx5^|lVA7FS%=kR2{2Ki17aE|hemUGbTxYwXp(gE z;p=CORM*Hb{d$MJHeYmFd4k8gDaCk45tFyb=%an(OZUPjvatI15&nc1qrY5YI#IqwiBEk?F&}tcmOu34 z?@D=tHTZPfsQ$21{RK$=j~v|=FhNq`jY1@NkvO~A9U(!p@(%Yj&``orN-}Olc1@ry zFotvjshAmgG{cxCr|QywtP6ZhAKNY_uMy_P(;y`-fO)AD-XAP39A5iR}fNTt1JnIC@uV<>!$9 zQt=`&I4>RaQ*K{P2|!Mj5jOXvMrW!>R96)rL;RXsH&rN=>d{KBnznm%NDjl)M-#`u!bbTmG`@Q*hp? zIV*gORCZ(4yqtYAAy=Jym1)de&%NT(;4_o3^06%=>?ip4PZHQ68oiLx_WBd6L8x^d zmF%Oup!buVfy|82rc|@xX3?Y--d!ty;+(QE#x!xKdXv_#V3-i1@lcw3^uPM)90 zws-sV^hJcyv`Fpfv%b9Up)(*_Z*;n3`S{PdLL;gphwP6P#+3^FxQ_hJp&57lzSkbL zC<7iANxZ(as`j`VMD@mmP4WGV;g9kHWGZvhdM;Pd-a4jZEv(JNb(JGCf(v!i*{&VP z=AU~s^Q~g=@u30xEgH9}{+K%qDH7t-u%v26RZ7L+lrbsSWa^lg1k1@>*pe;AV8%RWE;DEp6^IDoUOqTdR{_si^Dv*BQFGOt zcyrik_I9PY;ijeiEl-GGe{ffHFf&Tm1^SJd|6@(xHmv`8+vjUcHBbr75GK z?$FdlD!os40}}&zRp=btOqhOk@y2BRSH(s{Gn8dKM)^?u`z@hRF}d6IGnDf8bJ%&X zGupN6XYVw+`~F?y_;E9R8;zY0F=NQI{Th@BCZ`iN)pCIhFIepB{Osh=qH+CjjmpXx zT_4|rPK6%E@Y_Dbo5ImR>@lcgx=bU1ihHWgWFC*>353%I0M(Lp+Uct){%)H{FHFBu z)t5>{LFN5bwTB|U35>U*me8oijz*x+{?f0UDKEu5h<2E%6hOq!Z3~+{dh^CeQY|%rOq#MWDmg+Z^M~+9^_|Krf<%EVzL_oO&X$h^`J1bpkwd;`9T-4| znsM!1Z3!cUXTERmC6Oh=d_7Q>L+Y)JUKY;XUy}OI*2aDuxdz`BRKAJBaE95hAraWaY2*x=ktc=319Eb}428d2i;#8`xr; zwEnOn#**_5%i*RtnT(+Zq^U2JSe!v9ZC+NsDthY5{6I~-NSDU0z_232b9zdAME)(% zpHc^@g>yI{Jn9JJEG3{ zj$HXKV5X}|#kbQi{P}vl8E_4XdKDbOd;UOxrcx9c`A(o#pqheQy{VH~s`8v(Rig=o z#+He+t6eX)V-_6Rz;oWUK9GD(V>@#$3YAFfewr5?kA;4S)5bd6+SOCMxVf5H*5q|z zc%JVs_@@p!t$8(d%S%xynJ)Zn`(-VbUg#mG-jrWxQ4L7@l*RF6J9{hD;k5Hr2|vN; zL9m0)zI`uayN&#&^@#jza5t6aiD#kP&!yjhV2w=>+pVP2hO%Z@suE}|9$_rOJxu^B zl&Bmwd=g5LdW|j$9POX+Nwh+rHvMMnTKmBI#cCfXmFfgL!WcPDw5d6!hf2YaM%>fr z{E$}VfA4q?LmHH@i?#MyO1Ifbj#m^Z3qh#plEkG*N*MbDa!;*MCZcCiEZ=R-rQx6K zQcL4Ju%U_x946a+)8o#o-M4R~_q`fngprS(8CNLpJmka}T|1GCh-i*X(^NxK>Jd3P zrjv1Y`#NNq`9fyjw~3_sMvP?RG5c$A6WW|Ky$VAA6qG4aDKRNEC^%B6S#wyWl%5oy z!{$q8?P4bAxasBl3Sc7rZ_F>{w;?Z!7El?Si9oabx%4a|8z2)=8 z|6okk^$%vdw8)v|jA|3<`vR@Kds0T4RW+*Ngf#)>lG$AEy=mcaLcy#R`?ggQYQAHL ziDe(=xu#fZ3bWs#Fkqfp3SN8(ZvZSTXF+TVL9C{4A5dfy`CuNy{`_I-heeehHsU?b7p2+L_8izLG zJ0}n`f|i?`#u%V0y{G)87_yb$msz60sHYL8CWB=f4Wyk}{9xeU-@LCPJ?~^O>Qp&~ z^dR|KPy(!VJLPYJSubomH5!gAS=h_r^#IFt0e&kC9o`sS*JafWtnoxBC2HXab(s9m z!)gfOZ`Z}l7A}&7=y>{B(r!c^96$7{Rwr{SjM%;>>sp=&PE&l2bkr2KK`Kqi3?O(^ z6$JMbIX`AXr%}u5Z$BGEdc#uw&peLAC(ywAPS_azPq_KYR6L1cwYm^KANq70X-uCq z{;G$Iku!=dKhF*YY4U=12Wz0!)P`$$LpjNxxzO#6Bg3&Ixrg&E(nR0IT8m@8y#rV) z>dW#|buiaV7AdI}OLvum&XV13zd-#G=<>?@)Ei_WUTY%@D16$e!WRpB{{nxVg^NUZ z_Na#%Y9im(zkI2w_Pf4Pc6MYH=e@+O;OH4i9V!hsL>6(7iF~J4(RDNjMUiUJIc7X7 zN?$j(AyvYpY$xV6Mo?Bo5{;tOFs)ScmU<%c;jM2Qq_Q|m$n>0o1-ei64t%!d^ZxM~ z5*5Yg()zOck6XP8>#)2q^_Bljro&2eCgJ#18j-XhH$Mo;kcYJ>*ta3S6JIzQUS9lh z#T)e|BLTXyXSo;w!sM52sCR>kXx3+iL$>N?kyJ&r#we@eUmE-0hu9ShHg$wH0~3Q8 z{We;&`yAYwlFRCgb+z_OxcdzmmtOsy^{M-q-dX|_NUh~m#$`a{8f_A^^FQC`)&r@)pjb$%_EkPh+DN%OI+0Dl|*khW*w2M#DvRNnA2yWcUO5rPuFEyt)nI5HS?yU5^GS$tZPO3B?R%I3+YYzw-$O7%npp(qP2 zaHJ=N4Qa)gctzeJw{l`P9P!q;jOH_hWOtRNl{Bll&#_0r_V(eZ!53dM5k>n_tf%1= zwixj!ZHCTgrTPYGX*?k;`={7IRIA*lvwMy{Pn?P~0w?L30Vb{2!?m$5wZ5D_xYR34 zc!sM7#c1;m4-(OuQs-P9AsCVV!ewi~v_6XrBnK%$c_}gnvhBw+BVi8rDPu^VhZekm zee!o(dUFi7`#BYW@I=YN`<~`bXF({_C&yZQb_TTBV)oZik<5A4Fs-e?b@yz60P zl8$GWa@SUv0c*2CWqm%yj-%;XXD`v-cNT8OY zmil2zRs~0;8y6otEsnO5+7GzKcVpC8pW1B(%Ni}w!H)L^nL!GRu`D1&NFH_T&{4nc z5wzqoJTXB7rR^zEI7TJ3{o5-~=szT8E4hmQ7Ws++gst{gcJW?73FAhete(WJdXQW% z{8r>b>`uMaqb!D3cp7VyL0ZvUm*;vLWUY=tm)#DpA>$f5M!iz=Xx#HOJ)wx;hj}@uPb%tD(!;`Iw&G(k@ssE8Bb8kD#>XHp>uRdoA zCpa@1tImq3Xb01WXwN@xWS!swniu4`DksfHTMV|JYDx`#t2>@AKnxB~oX~Q5XpRP# zUxu~Vfobjb58g^2SG1#QByYFJXSE#Tn0h;u)ZdStVL5Je5kl-uo76uHR1q^l7>0xF zuM*xQu7Q1L%GU?X+RlfIFEf#pvFbOmZ}D%4w*AdbyJ`Y}?h@RRGuUS!x}`fKMy}H; z$K>X>%JCge2i7NW^h@um{?atdhh_f)9(+L;jpBQki1z8kIC!hR0>k~3HF?eS0B}IR zTBBBsH1}%6N;6d?4F)pKW#VEXJ$1=20tmfl_q*VLMn!qcG!b+v8o~9Hy3d7#d87?U zBriZ`GBB`;8dJ>Eq1XRBWOj3=xgIS|`EweDYyIQ!i6VT2#Rc$nt|f=K1%*(ec>AfX z?smQUjiAQ5IyH0GG7r{BiCWWa3TUk;lUR&UPeQs5L#!U8BIB^U0^Y`$mM^H0wV?RV z_auchgx3QKnNs8}3W(?#c)IZU#Jc;sqo)i{_06GkpBLuiN>Bw6U#UWwX%l=9y{WCe z;@o_#fKvc}KZ;?E|1r!O(}08!Hvu8K#}rc)gL|x~R>V<5?oHw4-VJ)cnTCjH2*h=l=8^ zSM+-mFd?COTkADi*q7ErI2S;gj)GBrEr=ZE!mIIsWi0{KYfwOV!%NbOF+y~~)Vr~c zyg=Nlwq-$%<%Eq%;M%(vC5)Iw?>iXrkuNzeu93PHo*u^&NdMe+Se0cfQ6nvdgSJNje z&6>P`Oo(*=$sc%O8up*h#O!SzPaBo6k&7gmaD*Blsd;P|jR9MhsxZ3{<3hhe#!(~t z5lDtaArf};+N8ce;ZcV$Y`yHr_?4#W8-Da8noz?1E}E8CI0nt3(iH~;Z{kthy*W!$ zT{@6cq=`5o-X%&D42F>oZMHj9`08$K8TiHLhbrw;qksF2mO?*d8f{vHO&$AQih28` zkAd$_4L7qoTgW)aJq_xYx+UQZ6zRhzFHPgl&Cgy($EKIkvd#yFlGt{$)tjU_v0-ed z68MfB@5wQAHKLD)jeqT+lcW1i(i=QzU2Sj?Hj>G_p%D4UX2sTD8J)C!=$N;e&;)m1 z&!F8QxsOtgzV!7QxfK`_WldOlVfrBXq~n*bmKvlWKKBa*k;eg!MB*a1{8yhBOhI-_ zFc;BV((f|YMuKJYeX{xzL}yw^insYQ-?G-weU{`kq(Yt1ejvR@C=e=fD=Q)vg8RXE zI{?jO4Rj+j1T-RdQ$wbsBL+T=D|+nCJpb$&y~uI(zm%BzHRpbj7}lXN*Wa0+(b9PN zPhQF#eGv|Z-d(EBt=we01a=D3i^FtC#P2QV1jb5^OkgfXL^UWoDNj*AU)0~A$j*Jv*D;&ty;Y*WTQujC z?9_rL*zM#_BSR4neDJBsatQO$kT(vlCu9I#rW3saphxoxS<#;8E)IWTAI z+f@a$Yh}l!Vr$6n)hV;S%14|l`@)2%k-atlbrbL3tFebJb__zwaCjsZA`Qtw@-jf_ zvJNClBm%KoMq3N?edq+8{MU^GgEXoiowk* zYBAU@5Al1@zS-x4s4S_QzN2Xe+4)ac1dLVVs8Wq?{`kY~`Wh1i=df>wDaU-IV@<9(DFMa5Y>5I*TDXtfX|)mK!M8 zB-0F^qA@}u%M$h~tRQ7DLlR`Dfw~E@pyo6xInX)~P(YNT7bGI>mI#Th!)ao9TaJT4 z7d|ay-aY+5D3Q%Q_EJp>8$t+E?ake=;v84x*lpb&e(WH5c0On>6JEZdw;JltV}sWy z(z%K_SU;<=i-Menv@A_Nm@8sLLDnwG5oA$UYaWX1#g&KNtCW3{% z)Lal);^1k(^oH~gd*?gQ^2<9w(~158dq+ZEL3sTYtrv3NCs3wjqOVT4RkV@@JaTr9+WSultfKeC z%yj#Bo~HqWY4g|vb8>WNcgzEjEe}1H0^l22Ru6P~L%fK~UG-g1_>-Nv=n z?xpn`qzp?Wknd8OA*C#PwgWr>f=|MPYerg43^}pElZ$xYPcsbfoao!;CydYQ)mt== zO+_?6_80bnxo>pC4m&WT3QD%0?4>gZ^$V;XiQWPgJsUV>7I2=pLrIaovemPg+XB0| z2F<1(M1n!-nA>gOu8!=P6sPjHrk7`)BKk{O^t*RN04-Wy5)sy2r;B{gm|h0UCe`KL z$kVY2CWJU#oLWRbxDg?U_oHot22C$TyB0LIsXVyF9gz$KMX;p;n$o20MM+CE#F$^8 zt2bSt^??P%K~7oauvnSfQNS0M;Y*kty+N{LN7vS3#bS|K;3-fh`Wq{MVO3#}53jqM z`Xw+>mhNj_q~`>EK0qi#X9*xGMjk=*4cepeE(HX`aR&moZ5ZVfhtloTlHzN==DNCf zsHHp3yU1%JnnM*}yG)ZXf|$LqbLtx7#C;IQCn79?!+7y_pP& zu5+%FXp6NvXdViq(y7C$UQ(lk&=2tE2>s{t-cljnYk+WBBSeibD(clXjOxSCA+;lG zHD}fNxVi;<=u_?eP=AeSmoR{9Rp{jrW!4#@QHOm)xL9>@$3<>V-=x#)pNeO8L^p@G zL+~tBh&dY1t7V^YJ_D9cEu@Y$}T6BeBn$XKw|37L! zj^lKkqcei+=@CZ(K#j~F$PE$*S>$PSm`dchk18!hD)O%J45#;zUgmOgu(y=KSV(Nu zyztL0y|bfjWG{-Vp!}z;ec|^W<=rusMlbt_lxD+9b}`eRJkoAK`#UJ`XHIhHZcc`Q zWvMG$k{|~_$>Br_)Q;V#w;lCZj>A659p@0IOceN{O&N0N zuFI-9Qxrh4#Q$pFf6%ws-)_ZT%9`H@967_6ClodX$S{;>VuArVnaQ{Zaw)$zeX`$f zu?~S#a}-dleUL(+)OdEY4sZh7y9h+|U+T99cs71;muKKr-S|3Rnxe&-1zEp9X=xq5 zV4#hX?3`N{bXpKtP;>D75zXN2>dm=-PKd1DtcVC@n1LD97UiK3okwXxuJnOzP8^2l z%(tQBgbfYPYxQ>U&o>@ijp(YQ%cL6OQJA``P?#hvKwOmOLs7oqigL9aGp$yhdcx}p zF7DZ2)IAQya66k;w_S7B*ND7|61Jl$-)ei1XX$%QO|5|#oQ#S`+G=i}UHRSu!C|iA z$w1}bbqjJxe=V;z=E%HwSj|Ve{-Ch*zT?3ce|grQvWBZizpyN*J862aa7Wm5A{EV< zvrgO7#8Z`eHX!#XCMo>FiUhWQ;+!4d7AaSuS;MR(0?K+4w$%e~1cXohQA9Y1N(Xcy zRjLWZE+xtBKi@eE?!sPZ12=kVX&h|vD z$?uq^p_gX=bM1s^vP*Rxt3;xr%rN$+ylA7fWTX|Jr&?0ie8q>GYMyf6FlGXRQh8_&uj zOi50^9wl@((Bj&g zXJ%I9%Yi|>z81h-_N0gB`y;Ni9tW~Nq_>&1^#o@!{_ zEADMV6;#mPy95&W^wpzgkAw<_b9GfkH(*rbR%SJ|bvIg$H!mf$?FRfv`x8-;pKWEW zTUBLXP!lKDJILzT-$a^75>z+VKMOlV3(8jW&b=K1R0KJpQ=l@*haAKr$^YA4o#7SL z$*yv(*%dSrC`Fx{6JTeeDFzhsCEp(x95p#LeheXk@SH^HU@xSsEa6|bOW5*njEK*h zk}z5Wp7k<00A9gIg{ zg{lsIGy0tC(zQrC&?=|xl#JjMSl@8Sf50@~qVO7mT|NNx?X2l#-kr+Rj4v0aC+y=> z?;=>1ktQ3=9+HH9=ZBrL>tdZmSI)_cY z*Qfj1CY4ZGio6}I-xh<9JNUN!o9arWSo=U?ICz|O<9cneZ4_VPJ7tVNPldC$TYWEE z@U0>F^F94QMbx0cs5?F0Smy6$1-(*EW~7}?g3a(-Z@hZ8y%I#6V1le7 zh8JRi$SxY!1wh)N6dQK<`??!ClZy`TJIn4pSbP;|zk&BYU=c@1JZ@g>K;fw@5Et1v z1O^aQRrcZ6VRnS4Dpod0ZU?+KNxxF%KXZOuK~H35AcnZ!WU14o)T+2r1QZfkOmSA0 zTm{k+N{@QVv=@S07CGd~esCO56A*#pZ^+eYDs~c%yryr5-c31rC%HT=uti>(hr8=s z&thOK$NqFUg>sLnE8m?ohR6h>qnN4SF2181oY-!!i zV5x1Nb8X`#&3!`~8ob^4awQ(%rJ?kCdK-NQRi9HTk+lZ?K<0|9kKti=cVY5o?%*4d zBM1#gFNfadSiw0oXI|0Jh`j<0*gdhTx8ZU8GPh$^b?)*b`AO=dK!d2#ozjm{x@`#>spD~QtCjh0Pj zIuALq+3d?XMv_6?LC^L@+|U%Kc!P+~9jSbLtJND~$`;V^3lzl_;;i@LX$we{ms(Zv^>7VEsqosiX3;L{NQacc{B>r~5Y0}0P)<3hY@GZ13B(^#_GNr7oj=C}6Q0#!iY=rOjGNJZ z5pBgQ@4$LsW4Jbe(%NCS2g$tYigq{CQr)gOGZdLPK49lgg)URR1FZ_ z`PHnAAS{mY-CgbTFj@q?g1(o;lDUFXOnM0v4kgT}<>xf*^ul)t9@5Pls@t%V8M=@l z)az*#w-_Z=uZxbdoTaR6OuSQz#sr5HV;8p~bs#0oWM*62-0~Ap^20M$7yR0Q6po>S zf(qmpK4Q3=gPB`~nYny}aETI2bYLHG%p|lNeK3VO#WBygK`(*mL1Nl0OQ?yt4?ID# zJDFY*C}stqqgk1v^PZUTd>>ZN7xdqF6_^4PG57;tY=t?zd5NBw*EvCnoN9yK=I@Fh ze}ZymihQ!C_65EETen>(1Sk=d7nFvP*sf{+%M0zB{f0qQH(8|DxQt0TtD8PfM{FoQ zBlV*+aDEZ?Q{t!a5tcOqNb$ks#rD4VCUOtvV)0TkGdt7yA!B+0ib;#lQM7@%? zIg+^!wxo__`Jt1_acimgY*(5^?*!9Vx-1JmmP}7h+JEP4bC5Ktwr}7?mskM2=Vg-T z{kTMn-8Y{#d@h+6&F)C524yT}?_60+S4SvymXItgGN26~>b`p1-&&c{UzPZp69QcZ zfkX*0h)@Frkh~Z2po{pjCjN5e-qwzVjH7xB5+xW{RSoF~m;ffg1coL-27>OLP^1TG z=)??d5+vzIxcgIUFn13Aidlnx18<;jP{x&Ry;2pkaYsApWvF~m_}BVe@bS#<*FaAE@|LeYt|UHFmQ>t`k$T|X+;F$H z9BjPQ76eOfd2XJickl>QI3dKR%nQ$9bR|5fKk?fE$nE_fKyLZ)7adh!+Qz`-nd(SF zaL)NErFL4iq+i@l>FVtLwfXLAG1tI=U_UMAunSpq@Ovk|#qKp!U3yAeERVk&<{H0E zln$bsyakCkZlGOTKZ{nsPEsX#ssjImuyX}^zJuTIHm|kh;j|%Cyn>3n!>7;%vG`Xb z%2QD9o1f&)6J}NK+hb6Fp3dvH)by+&YOd%^^u=^9Y52Ue|LELY!=#VAvd*1im*Ty5 z_z{(T>0FG>Oe(f@#YpCf zXlzdiGj_8uoZO=lnMD)d=B@c)g<~qV%US7ME{z9?={sdHqShg9IJgPHNe$j)g_?qq zj#5B6Pf=*yAJjp5H;`}sfFfrI8n87v%b&tVsCVSVzkm~^d#dXHxh3>AM;-J^CacLu zN&g5Fv7`fU&|pH@yd$Fw+bFN7(-&Gmxbi7p+ZS>z5(Ry%UsM0Uf2c z@iDlCe^pOn*72IFa*TF2{tN}w;fsR=^gG&BQ9B8SgFjcR>1Fisx8j>M(59ms4OI@em*se48==EiwvD=@&Vh2FiYPv~)xzNL zR#@;8bW%F#cGiz9U?Sn@>z8NZolsqaR5bP`3OhwzvkQ_(pD2WhQ`B-sI%iYMM9nMm z*~@3M_hfjy zAIiEl(v8Mj#R<~%Zzt6Vn=)M8uI}h!UFZ7qMgH5JdIx05XP6#^ifF&p(DbSboXp;FI{@uOZ zZ5~*BbTYex^@3gTOZ)mR`~w^HGbXINGC?p}2FDKfABtXdS@JAM9%NChN=5>s zz=tHyMrc4=Z*?ks)tRWCbdjj6NzGhMw2vqSX~ z6Hs<#XDvxS+OQ!BA^2V1(tOzP+{Sv*4||Q$Y`6RW8eoJeeH)%ab#cjlC~y8KLK15< zYIW5u<`!s9rm@k6=Oy4#;oy>m&72OhJa^0K;gazkN%?E=NDpr8lIhzNf3bj?f z=$J>g2lGT-JdlBt0ii>ZFQo^}qBXe?fys9Nrw*i%{m5I3lG4kZeNIQr@Jsufd0yQ4J{JVd@K9Voy}J(^jq2 z9L`GZ7tp#LLya*_&`)aM_C2;ru{j6{R8%E6C$)h}dTE)m3DW837*Ke#xRfM4LZ=alzx}q9#!D9(Bh7Coz%2KFs=8OtK zUogesYU#`dMb8+K;zXLabvgc}3Zbdr!fJh0L1HQ@df;aZuUOp{{f1aDq#|!uIUiC; zlw7$;knJ=I(G*fPb&ysk1Hsj?57ifbMkKtnHUtX`XZ80qbQ{+E}0n8xWSRRf5_n@D_JK_V; zeRBQ5Be9l&CuCp=Db-3}X9WQ}IGEdQm=X0ZXAJ1Vj!VydFbrHR1Is%b5HR&PuBe>! zC;!+}RyKV9!YPS+{s@=&RyMAS`PrC^^FdphBA(shTasM_&MRl=yrQ6}R%2Hr6ZBO{ghS z+fU0;MwfLucG|AME|OP6d@7lg7&~Z@5emyQ7-~1BXNP!rZ%dIgL5d4M2!dSkkB4Mh z-y~s>PwLfd8OaCr`k}Wt!V`P#6#yi&wuw=~*Rm_e6=%;`0v$$75Y;}tc&GArmOV!; zr!uB2=U|6{Y^5;;K3~+@?Z=#@?>M$jHw{KwT)^nJ#Lcm64*JO#*ml83;@W+|cVTOU zh2@s&y_SKm^rSc+j8HqxfKrZ_y&xH7>^HEN${);)r0gTvKhT26WaXpD8$uO3iSQu+ z2Q$1(NQ#Ftt^=H0nFZB>u4O%SI@@yb4mR9Yz@NQa_li{_7Kntu-&>filRg!BOhr*z zp6Zu=<@(v<=U(XUf`#`e+nRrT2_(0?1clT}9hW^)|F*?x!Tl#Sb`Q^_58*`QC}e{aIvTK&m|b=z*R!_I+v%pr{n6=n%6D~EMvPejQAo9m{IA*e<5 zyT5kTluQtjP$qK@SSvTEAgzp7?T@zEl@NU+NqtpAh@5xrYdKeEFCe4H*@!o#J6Znz z#hzr+p^14j>`XV^FVo%iq_sl|Y?51EXtUIl`!#bh5T+(dE+TrFF{ zRSJ4?A#aDb-<>1Yn`idSl8{XGpn_8Gy{DTgoYI|_TCA=VX?>F5Dlz!*%?;gQwjZB^ zxHU_c89r~w{Q6v@eQgujdnCqs5Pl@f$y(oqh{H!hHqsjcEUf}sPlj83_Ik zE6t}S-tn{Ww48dj_P3nE1`lmE8f0sjuRupU1~>pG$(cHkK)$~u zz$yI`l4IHbpvvhnh-<~v07U-a2J^{6f$Hq7f{KVSieQo0iFL5at*U8&0Ot~l0F!{D z{Ga%#4e5ipa(nW8Ur9kT>1z)sF7t&m>WJR!fCCT!f!k z;H~T>**-XFUuRyDs0PM2LZq20*G7Qb6i~8C^KJM8S1NW73T|-C_Z^dGrMV^5R%U zgH}C*@eLuGxhYMhjJZuVz=5s%(1xkVw&K&^a=T^fdjL{WQ(uJ*Ly2wBF#{ z0B~}&G45)B8eM^%j9tz&JyXVD`7%&3Xk4NzvFbfx=^4P%e&HXkK7u$H$SZCJIyP~! zGA-i8KhDIfCKZ@fEmSSl7-BWf+F&)8Hr!ehOVv&kKOqQ2GhDJSs8P4W&Yk#{@67Lm zxwv!g`E|878y>dV>=VvCELKKsj#qAQd+|_*NLSoOieXu99W<4;VI;6%HoUyBiNEn+XK}`1>58SF z8o#Nj#%ZS#EW~6x@NE2|_1vM5z(A8|TMgts9{_-%Db5t{!02diIi)&xgHNwP3^5o- zJta?q$o9Ohs9bxVL#G0Hnq@90RU^6>DQAPw2g22BDe%9EEg{l3Z>bT3naGBK(N0@% zc^XTHi@z-C!Gxe6$Q8#x(;%~XOREkp*DedIC*}0m$FMoCYMgrgwqPVABtg9`!!jMX z1v~(Fg$8tG4&LPYp*BsqO$arUmK4WBiV`rY+4 zr(vD5XhJYe4n81S-3xGeA)$JthbuG_)=Jr6+vS=vpp7BE4S+t|ZBv-MxpxBKJpAL@ zh2~w{p1mQ%sHq2UxhAmfpZJb}L;j2nHZf&3unxrRS|3!D(LqHTrw{@ePM6bL6j=QA zA`a9^2chb?#93DFG&+dr2Y;}uMT{jJ1K>CdYX?h7h6AMj`HnVO4mFvaK7zPE*tiD^ z{1ckdM7+Q`IKj_5_P!Fg-^dbTEG{mRP9g~@pG}vhU)F@oYR4$b zVmMi)X7!d2-(9;q5S!w#M-9mDUne!BzTpxls$~n$tntEIm{;}ybLlF&x`$ObGD=X< z7a)dl1dc-;@KMvL*TOImItddeU5bnYIIO?md{D%OAxUc3hqcHss4@(G;~!*sNEQ_X zJILQuc&z!%jn|C?5d3j#;)^{GgFMZM8hj#qPYKb1O_o>$o>i$*)#@0o`34^9OAZH@ z&Wjrv1DvLI4LBW~4I1_VW{E+Y8!1Al+j`HNZzX4wI$%Yhw#zifnDbxN^(v4_5%rl-0A|I4f18xGe zS+^jrWe)J!$BS0(!}!DINDgoOHUX{t;`&90En@;BfiNH_;3c-b3NIdR#91;lT`&Qc z(Z1){9c%S#q*VH>v~Pm5LCCODRW+{66?()#NV@KoUN6_!25m~&AJr+RN z;=gZIWJ6dG_I?33mPQ1w)_x^@CjN`#4LCeI7|y?Sa#?g*X0z7e!$!Pi4ARs;Q~j!q z-rd;QqdP%TU$NSrWuWQR71?ri2v=siuznmq*Ap+)Lbmh=A)g%_6AN<%a<1NmJ_L+iHOR~~9W9j{ z_IeTFldE%yb90t%fDed;&Xf)8PadT;t(hI6JKcEhca)}TT5jj6&`*Rm+_36XLQ7pq zUe8uXc+3uQg4R;-ER@e|8BkJxx2>Ky*VFHPnsQISGL-aBTBhJTMJQJhS-K+o6&j?s z&bC-*_PbIM^EZBfbzzuyxb>l7X8~^2qk0-3nsq%doV@U9tcO|TbM<%niHDqCHBlW;5d2e(On0L!c;a08|F+CnB!BppzWlU4InZR=ikHW50j z3fXFS6q`JpjNKo}%=*D(leOfPA}Cb}ij@ZlZ$d9>d221&xvZ_imhe;&{;QoIzAi=N zXWxLbK_WN@jweSoCUy)~r`L-ld_De_+tLa$p$*^Sa3ekU#}=7+peKayJfC#%FZ?E{ z#@z)bPI#0w?<|;X_tei_&H?f|{5qfkNBl*{nq_gBj?V=bRO!*5hfH#B^MJu~teY_Ha>PB_EI6i_SObebNN_t$VAjD1lmew)H|W!F1y`EY5Ps9*l=w$1u_b4AY)CprTW!pu%}8>v22!AeVbB#D1OQs>!?ufW=Og?`qC zjd{U?a04M-XUqTF8S!>S`N82HA1Neyje0rp*@Oe=&`mS*Fi~j(6uHg% zU0O{O9M80$EBh}J{X6G-Xu4$e!tXm2#=WeU0ft^1MYJG>wxG&jePYS{_oLqpeI$q! zObheYC7u?+lNP3;QGnKGDka#GWV%Kb+HZ9>#wJbu2Pvy*^?%2NlY^kxDQg?^4^=5X zt^I+;HeGuFX>dqm8} z1r00&B!FZ|pI?1^Wm~lwP52B9`&GP2Q;qW0^sq77n`6qKD8{2~mW~D^0mJz{hWIMQ@D)1fwf0ixM6cn_rj3`oJl5cQ={(vHUFkfE?}Ddf&r zQl3UyR9%SO5s)Ct&xbJ%5N>xDgBSLf&lF0QZtDMxB9x>u2#6BhQ&TU1!_!u8AZ@Ez zt6F3Psv>3q)MNdOPUHx>!D69czuE7FMzBscyez`SF5a7nn}IbpV=V!nh!EatR)qIX zjdb15i%wzm=u=;i+#L{Gsj)K+31i52>y&= zR9;nO1~F?igtJD~VIpZoU;sD(HUgP0vKzpHn*7v&wQZq9kn8=2*4CQts2=!$ElR1d z%@7HJ*;~|~zfo~noFXmF!hezjDoMdYr*(pZ3*ilQ2$cE3` z52W9q@)$gfp3i(fk_b#1JwY4~71qXTVFoA;rp#g2o0LKnzfuteoJNq{aDM`_J zO$}5n`dp_A)x*lYKnq$b7R~?W6*piC2Bb4LwJQG-AhspZBT;0A_sG(*c}q6*(7K3~ zBz9FBJ?0*p zVI2@FU&Se|YUpQuLDcXL6SL||*mJ98%0Xezxh3yR^h^3X++=41QQ$78+9Ui9Eb599 z8=ZS~V>`Z1^dTqgr$=AjUWaoN4eW`bW>h`u<6LW|LbAs)^a^pwxJH4M^pt~>b&hK?dxC<*`BNEKaJ=< z96L6_P_W3Scemomd!Ve$XMav=5iONwWtu{EtladH@$lM44-_}Q+U>*9VK96XD>*FVM;VU* zm6MZYqBE_U2E67>3~0f;PUKM#6J~77(@}$!a4$IqHmjw4JYC1O2&}!&QG+@tPg+z{ zRBzE!M&NI|nG+q&PAziDajC59%W^-*!fiqMs?|yLP@Bs;w8e6@EF>%}D%`>`%-{=( zrly|Du6#9l*_Qhw>jTM#${>{7F7bPzZM?d+>y_JGPwlKc%V(U}+Bk1Q4MJUO-Vu{a zyFqf8=3D?rE|H)WbWI+!mqj!J=9obgx`qZ~@oT`jxnoCjaaUrvlE~R^7SdCNF4(Sy zUt>@epEoh~$v1Ci;1|mvv-Upx%UyDGGd^m2-M`M5Ooun@>2!l3q&@1dUV!ZhO=c(v z6Qy{aXK6zU+e_0ncdK&x>>$wT?RNjtfZugBve;JP1yxC%Vh8f?aar*$apMBcuz?n= z+{-QcUFL~Gz*YvsEY`_)TMN_LYd*+57==%AsOsZf`HAESvUo{%HUrr9C7=2!9w0rX zS9HLI-^(6Uh;ynSgvlutA0O3#wFb9QfRDxh4RyXVlB(YF)~w|D=DJKdA6IY?^UinF zFq}Y-o$k{*YNskW!=|MzxXDzOrAF|Na_vfCIr=T)=yt!_DK|yd4O}XzGAanu$_J1g z52T++kpa%LY8$);tSwkzvM?PN1#$2p_mgyb`bgr3Fh5MVq@^QH7bj5WuEwAVbGrs4 zjPwkg^dR_{Ho(Q?&W3eJeWa#wMF}XIp!<9!poamjEaZc74@q^nvkH{qEWA7!>{uuf zD`|n7E;8~i?nc!7nc8jnynW=>8Bq9 zKY>i4d%N#xkLKVsh^WNNWtx)`3vM?!rv=1qGE&Ud^bDI?M+8IP z*|#nZH}&grSn@m;2GbD0)Jwduu3P~!-`sA)*pkCV<{k)7#RX%f&o+2)KWbKfkk#{w zGW^E6$@Nh62FInGS86Z28T&iAo0%GfY`%ekEOx4lWyM;1UmEam{TO_Q&WOzx?=R1GxH1v|tc`$kcQFUK+w;0B^l3n&=K&~=Os=#(FkE%9vaOJXsB8A!~m$W zQbCF-js+aDkZaK8wd$(&Zc`2WTDW!KxWPXF1RZcm*@!j7!9459IV(5~{0A$f2O1dQ z#ooYTJiqFKuz*m+-KqFJ7Ipw=j z(pdJ_i&Xi0yJQI^f0A^|g`|N~Z=4T`j`@Q*1Yi61RzJ}4+1+;jR#Z~Vg{srvl6M~0r8ibXzheFILo*6rcbkg)BupA@JE3`cYZ1h;W$Ri z1Ryov^xq+obuQR@3lYq=0gq8G=flN2FQ);XY;%1)%0Xu6Vsk#wd__+Dl1z(XFeIvbt%MeN zW51uLc`&@{vX_-H_1=*)tIHzipm=5!8{Dk@DF5nW zf(ZRW5!nqn?B~6IZ_Aq+*lGzHF= z=deryj?sgS6nb0B_=c!spg(A|m70KyOqsT^Z$pjwe&#zUF=du>f|yz4Fyd_Ri0VtY z|Djcve+M^Bm<93nBb^2AkB*fI^xS>q3f={>=yWe!FKzd|kMv+Khq3|-T{K|GFx6cA z?ztVy_5mdD1wyoi4cxj%D?x)h`bLd<^ZeNWiqI!4Z`2 z)y^!t^m!k&TyO~E1I)uI)}QKpOX1`hP^PB{rR=KQ@LWb^vks&ts_uHkp2XgQ%p3fL zylx$bfegJVoIT&0UJkZ3pHGRTl65xp%Pd2bNB`w z!=vWf(Y3M^eh4c*h!^pVg%TbK3{^}HGhY6aUu*0-+^ra0%`fYG8~)mA1VZIY&E~oY;1G?ByPffSLy+5Fo=;Gp1=-3+!Rs zN>dm=ZmYRC>&TeT6dC?Gh*k2>t<9)l+1vVa4VIB_P|Q009=2xk{9!Rcsp~@T32=G- zYrREeenEc=3cWfTrnZ^}pw8>LO+3A-%gJK;*uz+}Q`FvBmo9xK-ZoF1`D^9^+1qr^ zC8fzT)H86l2LdKU8j}1EXx(Jcqo#SM`g6M^=}Cm4G%Wp`1@80O6*c;NI>L9rti5?@ zRk#;lpR^wv+AdLrEmjo`x@(ED-i@G>(ZPd*g+?qT9>LQgS}OTwBdSg zld!q3?Bly5KE%G89lfaZ!i&&dah_MF@tT)gmAg|r=4=CSQFd(X4jYQ+rIQ7tu9&H^ zjqVxRwlU-fepd5Qy@>ni_&P>;v!jtLuq>LW1b2O@yE=c0cK}BT{rcea6Meui@*586 zS%$l8b`8Yo$4qV&gQ>3|VBi@t0000M0000l0002{Xm^NOq2#ns?>t*0{#gyk|EQlI zo~x#jWTl9H5T3@sq4N^dqz1u}BYsP5@Ol)tu3v^PBVs97WP~}a^C@}!N9OmL#oosAGQ`pO(PK8z+LP~KyFd{WYsYMPZt~V`-KgIjPLyh1)?wKm#8SLzN7G{gyP)HZ!aSUoa zKxb{!UfpS7eTmQpjPD+6puVTjfahS2X5DxOG&6A@5ZSOamZ7ku;Eucro<&t!u~SVlMr>D~`W`C{jRHau)FSgx?&WdfJ5yx` zMIP#zf67>QT5PQ!>^803NRKBuHX0(f3!^wla<&MftGio?tw}<8B$)LxyP%E$DKPks zvg_}>dkHW_tlueGay=04+z*H#xznZn<`5%+Hdvz8I9v?Be4%SD&iRemyGt}vU_C?L zlSn5AmrTAsrE4<1|C?~ysjKt4&G1J+saUQ<_(cyaPj&=CZw{Q-gzkx+;<~G2QS!F=G^11vrhZ@@{9c*x?$A z;sehQv%)QA^@WxiD83AUR=*QW7ahZo`|gGVPx-Pb-~^jjutOvBJXUSKH{km_U!PWB zhOXh{*z`R`SZeF*^Q!EI<^QCgt_LG1Pq_dO5v%mJTI>K8h;&Xr}R(={TQtVi7?@`wLE{_AtuyaK1Q5>@~a%aNY?oL^<GN1{`A6)EP1 zcVrvWe}Rh$FZAm4p7o?{A~`8*|AOH382{$9tY^|!;9b~Y5J+M`z~B%T5m8J(N{D#$ zFugS-phy7CSJv|}NhSTlB&~9&o1CJ@8eUS&7+&9M3FoR^hP0#21G}&76zXcd1U7cs z5k*K0m@h$Y01P`;N)qe0H!~R7Txk1tkcddOR1>|-s_^fGsgmYm)q}>9SC)XYe?HeQggwKEy3sMz7Mb8IpNJRSVNci|G^-XS z6aYdonB~ykT@mn^i3clH5pUC<0=ywuB&Da|aEa?)}41*?@2$=j8YE{220Cuq5P>@r}+%J$|#%o!PNLE>60Y|d%K)O zY%?i6b1`3B(sm+ue#?B&oBO(7HnU{JQ86dHx-!s$tkxF*U`%_}>w+Z!fbAi=G5+OG zXx!?rF}SagR#1!S-U45_c2GNJiXPnCA!CL90DwiT_l&4Sl3I+~dJ-_I!PBMn5&f?g zi=Q|xo{}u*9Q@>8HXh&=E`MEe^1*#mV-)}E^Rk9+ixFt1Eee>kjWo(WKu6RFJJ;P`gLboY31?MzqaCrtbn+^n zH(z?wjZ0NLXvtdBx8-X>w70sEi+vet`d{r>CGHw1SgFw2dkEb>-(gCP?ac!rD!Tq`6sPI2jjek3aj1O+2K_~)#Pb~J?9gI+mm^| zztwHtLg)6nJ{#8}(tjJ*qy(!wc$e{Sf8@-GTph1Ei8F$clLmifiEfj10}_1xlJ_JT zfDV_X)!~B?7zoPM@JExng+yg=sV1+4y|3W&>9V6v8VN-Ui09um^)j%KJjiZcY22j+ z+4FiiPtW{aRA&LW;BAK;c_c19eY3#@9tVP)tE&7+I9+GgK20ZtWJUkeI{pUdwq>6} zMQ^UDfn)&lRa4?$~*yMPSGKEJ~EHwSK5L0@nX!0X{rtphQnc+!2On&d}J~k4)9zX z$fwOfrVfW24!XJ|^SS*LL~))2$4IW7yPX6^Ucs*i)yow;3CwnbjF}Ur@lHSU_dqQch;_@D)Rga7btMThlj*#Prl<*GOg~aAWab^d)w_dbZ*~PoHzw!$Hryc|MaS2eAs&;>gAJtSyK@YbBw?Ng7<~< zgv>&$O(G8^P)89#xn~vYF?!uIXt6YqezcTmn=!FM&>`N?1w4a@xdBQ6cJL<+2WJ^v z5REHuGFkNkhnJJ5s3{su;jBr601j3$d+DF^l@Ib1Og;7poc{RaXM zVJn{p{D~lZUhuC0LA(-Q`A3)G<5#B?AeKH7j)S107j5|s7{VzBUj}@+i7c_YC~66S z?@?_mUxHnQ8p)#s_i2xAOK62z@{XOf^d5PzB0xFeJdi8HB9^)7QJKm30F?yF>`OcabkU<)*gQcUI!I>1O* z3Sl9JOi#d;PHfjW4ax8}ZAfwoLDC4vF@_I#o~EoCoQ(EJwaW4Zh0`3d=&7c6rXy~y z-Tb+uJVoTc#z~3u_;Y6fXLf76BJR1`R~Vz`;~S~f+8`aF$68;%DEJ3*L(ri=k|P{D z(sW5;8o_r+_E31XA9IA2c9o9G&Y)%thyA+82gu+AjwNJ8HI7m`B~C0#6<0TR-Np22 zZZ?bwQGc*pod~HM%>KU78bOb${6O-dT2->64)gVX!1e>XF6FV9E(L%sxal(ofK7Y4 zE`+v{t5hgJ6SnG-ls{YL}PlOIC+ex|JY|%ddIB zmjYak^9lQYpYO80F zUKfuiBZh-*@uwC|q3InpUwGl~_G371H)pXV;jnhg8FCL0uU(QeH zq$o1dlZS+kIsBr=Ja!C)MxN?ZjGY}CJYFx4IwnLZf+(P{-Fq(*?R@tiydMplzGuqt zLN8o`%$F26sSfg-i7`0wn$|$YNw@)Q@1c%XVUB>(-HBu@yZtLdHJZWHu8z5Z=6!WSdUiUfYx32m;xpYe$3q{?_qHKjFY6TiyyX`=Yo*!U zJ@FH8(c*bea>7U9L-JV-v-%zV`+B%hj~lSdkg>r(u;(BJzAm{ak@^W^K-IpTspi_R zq8(zI(V^P1Kzg9y3mW;SZzxY778H)A#8W5R>KT=~bNpD-_$3$9*=9gVL%m@&-0d&U zh6ugSFB1hQ+k2tzYp5B0!ZCZ7bIXqYu4HbZ7I=XH>g)2#p3(J z+DY|PbP&BSPo3xBxSB`4+0sx?*vU1QZ@Pg%_#^cuN+R!s2d?@+ksZYBRk~%C2crKPw z(fgy=ID9;~%p>#FKyV|rdtN&7q+!{plQO2&(r(HLd=HQbl6XHNBT0Tv`8fmV41G5{ zD!3h}Q1ZCQR!BL+8M4C`EDJSCK_}7ck{R#s8LV<+!gEByIq!YNx_t-R`Yw-}AJMV` z)suTS;(~Haf$}KW3+J9B_BF^OhZ(Np&H#Ayozun^@qxy22zCfQw`Z*Uw74@ENbx^} z2saavCKS635|;c8{5xVc_)fF**7KTZjCa%6D;hI&U@PidVJCl83_}IuNBk;B&dL|F zEtj1-)+Kr}(w>Gho_@9s?=Pv{ij^s2;JA~`>PqH$Ilkn+SrLP%>Ebn@rY~>eA)hPU zrrj;-z!gUr?2;1~8_&7E&fCI)7|xQQTyB{69_P;L#$=17axR(692gi&9#YzJwd?8Tv{C!{f{O zJjvu%!;gdkzVf;)ao2vZ{pfHxqM~cC7>~)DN2|GnTzX@8FtT7Ev)wM7-D2#f+6PU4 zd)Gt~-RrNJfeEBRD_$vS~>Q0lHhK#|0pwy zN6zSujostR$QsaEIuc$?k`3+Gsr5zrIwiRS1)xXc00#y3$e<@CZi+w;u!RE9ak+25 zUze`td|2xTRaWn~f57xBsCSp)e+!8{b8tT%vb#Gw)FF)Iv15u>==0`ZHLcQu+2~w$ zB}mTj{K~_O!o(Uoxu=)bJa_-44oX-q)YM}cA^r2N$m8-qa9^}wqgT0mM9}3N^GDs* zFN**L{TrfLGX}#CcQ!8px|5%&ysaUOLi|^YwN46Kxg4cFwp(Yul?Do&m+?9zbr2L- zD)gX1Ptb_Jc9KT23xg2k@K@%@<;^E%j@s!eMfWfl&Y$8-#yqBF{RLjJ;4!3qiy~1N8JRmN1M}NSyipjgZ!o zge5u(E;RBeHW-j{l60y1xD=@k6n+VRwiyXe_S+=$fIraUrZ9^EF6povp#ht@m@-yo74nfGhuOcG{am+&9WXs8_Jv)g*KE| z_%HW%k9$uRvHnd(Amd*5$~+Kw^ZBTM&FpU3)9&~nDvG)4R7;^G(x|%A9V@)1&+vXA z6ZdE}#iciQ&z>)`ea_Ib1s%($24dV>KmC$&{Rv+{@H+{=5pQ2bHW_7;d_#+#q#DvA z@O^pO&V{dSIf||cj*iQPL?>6?zTQZ;ezE?N5wn5kuss!sSdD%VhVyJs;BeK4qf=W7 z>eB`;-)LM4=K1A+5J22*=}(43Eb?UX5TWt~4m2*u*kV!Jv@qGqDSih>IFO*!l$=yZ zw@gG8KA=lJ8VVYM9G{#vSZ{$Uh!>)ko3|I?Y=Cg3_yOZJ`a2SsbhQf~0VajQfb`io z92xCbxvI=hR97e`xM9(}&fkNpO+5S?DDuF%Vf0P}&;VIy_e<)18e(-kf~TYi5p+u- zBV}PYH^F~_wsmd)tb;<$*KYGQcDmG0pHtp$cDS^y6$xT`)NLVWxtYCEGRfWtfIV0o z6@>}H1l{hm^$yl$3t`gvRWy2SV$DNX0U>RSX2N>VJ-m?x^*y+Nc)3cYI<=0Re3{rlgP z4#hy&EW;zq5q@|Xj6sICPhpXInJWC&-5-KCq8bj^H1ETMgV~y50qhf|a)NwNZJCEoh^H+b%?>Grdij_#BE8!#iBtqq;g?m-V6lifLT&9NYlDYh z0NFc&u!)ac9Hrp)gVFI^y_VH83xntH@^yyYtT)-9p`_~s4jHIDdj%6o18WW4U1?Zi zYI^sy9({PCSDjk=T(dQQh5L57Do4U|dWCQl2lMF$4PQ!0Ca1^OSD|QEON5s*hH7)2 zs$8n{=3BSl^vfZ4>=qsp9i{I|pOI$1*Ob|4#9urnIzaX^k96` zh??_*#qENY22Ee1*`$~7X-a5L*+{QE@2VqSs`^IPf533fO4te|P??w_G+sjqSPW^e zF#<9}TOtBO6l4RzIR{uhhoKQCYf?~;!At~27sp`?{q0Br<GSWG$dLv@7CNEn+n!ri06PPT7xt>E@kNRh`Kd-L$5>NbzX2 z=RrF)SOwf5T@sI}VBe^YS}}k@8aD0;rCDhGb>vfo1e<&6o1@v^ElNAFyLWTB7$LTG z${CE9VYOC?LU)Jrl*SHIv}nmSCl4$x8M~%QXVBx=9l=6%V=^*G2QP=x6&2G^^fp() z+k1`(ahkT|CQoFl0L(4i4e5p1d3n5Ik)kak{^A8SX5|zNtFO$T9IpsfnLGc5+g#NL zC0_b_kLUW&ih?Ely!q2ZFNYxUfc>DzjQKOk({~EWfN=wB@f^~AafjXTHYXK)1ll>_ z>~uSWJ8y3EP^+?aH|b-EtB=}ON`cb9T?THq5^Df%zbp=UVjPoA2%ym0aC0_UAo*0+ zkAiHJaWI9LBH9KGNm~qzrv3-!%iUoa*ecQYt{U9x9yw=w9~6xvmDXFEYwZ!vo)G*r zQQ0uFMTBdaMkgf4W_c;>F#>x3IiVjkP_c;T$VtToEI1M|hEI$diBBb`=`!%_?y^B^D@bcP9IVVANi6pe2uh}Lt< z)Wia=f`aoiah!o{3dyeD)XG?e8Qgj}Ix{jM4e#nUCjp5p(#KXiaBYs>-$(m*aX)5x z(W}HW5^?8!1jIoXMPolhc2m81%3U1i$RlTY&UlhjLz#! zcX`>I&Wu(JAnt^v3@k!OJ9KWF$Du_bJCQBaz1@rh*?;sQ)Ris=&xr6I@$Ay#jfu+p z`q1k}8@ITJ{w2I?OD0!MQdLs=DID=Mk81*{dmxtAiSg7S+UjbX->=P2r7=d@$mxAiG{7EdrRG-zg1GQ*}!iGpXHPv<~MtI^DqtvQHig&Oukt21h%U zkt#*VUc5=%k!tH|`W-U;lhT-W)g$qc1IGB_Kz8vUvomiUYao^akICE>pvRea<}4d? zrH|h-nwWE)R?z>~9l%9lW|L|AYq`UE-G$1==H~XvrJG}wp{Tr}rJj1=a_|(XA*??_ z83M9FKU~}t=8v#)RSW)*2^yODaqzU5gzO^xw}n+#*SR{_N<(rTZy{}Z;WkI9p?h7) zNA5p&nP-R>l3vJ+XD(i%xO6*F7i`lPs+MzHj)8$C^m$F&YB_&D@QUXHQZ8iEuSKkE z)Oyw~C^LuiCyT0gHvtQ`^7yrb(BB2eeGBLHmaG1Shiic1C*WI*T26gHIpUp9%M zbn1Tw(@}k!^BoH*h92%FpCz$ELeAC%FlsW&zoOyH=$M@Rz@NQ(N3}MZ(%q&t9%l4l z;waN08c|ozqL}#v7*F345p% zVV1@o{0s+6MPfRhzQzi3c5oo=gFq(qn;n$tN~0zeUG3mzk#2F<3GAo}&?xsP^$NtW z21rO;3))@72lvG$@had4wjx<1m&eC9$*{iEOxiUX_)AUVWmSFJwS%^zWChlnnsdl8 zij#X1>AZ+6T!B-)?|I8=d@+j(V<{fsY~yKaheXcS(X+4;s4aX09Lu=~Y$U;jkcqCu6$1Ttl$M z?aM#_W7u3-h-chwJ8YWc;fpdAN4sUHs7yBVC$La43Mk=!fN&Ja;bUc_fVC^2N!k(K zU=l978REGCejH>lxG4O)Ic`_Vp2tgkq&T&mD+8V0Voyp^OC^0gj2t`HR5~6dOmjA$ zD{O#t@}CVIj+@aS3L6`&t+o4@2BNRLg2)zY3^3bZDf|k|*7#DZQJXRl-Kk7w6w>sV zjg~TlWnS6pqPFVqb@S-9JLkz3A>S$!RxI51?M@7T{P*Y0N`KL8kq~2(HVVsrx)Q;Y z9kX7kYU-L!Pp|RyLsD)ojuCcHM9114rycs@j_(VpL7EN)-@@ZqqY2YJ}Sr8pc z_c>uK|A%lg9$iVyB?QC%#T=m($j-9?3it?YHJar>%162kCLm>0?xfpg7MuTyJ4ji6 z8wMbIr&!t3&kP5sFODwiJ)CM}`Ig~Q!71MHDpx>k$u%X%0c{(3Fr^g!+ASZ6!O|SGi6yrSK<;~C-aIXI^Xq~g(N)5Z;f=!DqU8~5@Jm?o4fdVhQ@Vl>)D zo8X(`Hs)Iv;E@eI90Vix07XE$zc=#N;dc|~M%Pzi^8_oE*{fL5_e70(<0?*x4@*5i z7RfMBnh=6<(Sb5ai`*jHn`OGhNehR`ivt!ym7-@tH|aV~a&)1Jb`2PiCm5U*ncJ?f zgyYJb224D98V&`Hm5l)RMeOnFk-)hR+2Px=VVb(I;UlP^Wk$gr3K~h?eUb4+8F42i zUJ)Xcoe2f^$h!E#gAmtWH^7fJ{J3w9dVQcGxs-Nm2g3v2z>H3>cvhbuZ{n`l+XAdA zLo-p%fEP_Vk5h(z;{EKWL~80YPRnrZkA);D+532A^;22@1V1z6R^$`a9;y#;+PZ_) zI57wf){YMyMAC+$XR$Bg1u6ph8q`cw&0EHhgv^nJCE#m#>tepR#aPtE)F&VuA7}%; zfo73yR3T4an}B)BX@M}r7@z?rg7f%-63>^Rlz@E!@peLp&ySbtIis^@a##bdm8x#C z-lnplb@!=@RX5Oj?nYk9Q>*TupIf*jrXe>Y$X>j5tsknR?(J7yC!zZS@x)>|2D!eS3;h+$UM>uc%4=zV6yXO z1PSx2j${he*exhJ1nipKy#ESTSg>jy-UfF#qz$O4o;xuS6QatY2qoM_h@vgwo|=Uf z{yOqVFecxdNO(A97S0S)rQ4r00&r~seaP(-Dcf7KVQSeETB9x*C>5b`6XDAX#6%Lb3a=lIWU)5v$h9yRtdA#5gT1m9 z3Pv*|2}BRh(iW4ltr{b8F;pcyo)nFX5zZkL){{*aO^D}$4h)S#KFW=nqh}dqch*4- zR>*|n&Jtlb=uYNo{ZOML$6JY6oTPvg`^;thhglsA6BsYod0C=0*%JYD2qaQ*Y=j9l zSF{Go4=z6u++V*}A<8}V!M*G(-gDGb-rLnrqHsg3FwP0o_2P!oDyKyV=Fyoc7dCv9 zCCc%8TY3t~oKDbr3QhMvB_v^Jh$?v0VZLbIuQwoOd=K=ExUh=wK~|h4b}fm+4LQn^0lVF2m{Z!1Ss=rUx?zVcGc-mt$zwqQupbqxxW5+nH$2M}`2 z@)Pg(DF`~C!dR zDQ4mtPb&>KQq9q@Kx-=Wobbx1nJ?M~Tg}T-qc2(!0V`AY8FvyL1eySee%5%q^_@tR z|BOPat=hD5yM*a;OCZsLuw07B8oXs*UBMvhR46iIN0EJnCmkN&_iz~p$QkcgDXrI@ zW0|T3b`x!RYT+XzU3u8yDuXEdI5bBt{|%i5=_cwEdKe2S znqAzU{*mTpn3mWd=RVa+y!`SZkcGOiB)s)qj=t5@n5AV8?LiGnL@)-08K|+Sp5TKZ z@ZWMlu2@$H(4%po>&r(6TIOx@_$H+ZRPFYy}pFtG-?n6MZ)__SFIdfhIab zE=b;=L1kncqsY4%86awOf)W-#Z-aWh-ZRfkmnuQ@^L`t~m(m)58qQa!Q z;W&wv7vTW*<)#YuJ&er8eFR7?gQ97!P~^t^#GW!wp+q;wwORpe2x8;)w`Qc_=R8g6 zTBVQqq@{hyY-dP43Cx=%#itcBrU-&%)`4@Y@elW+Yj%ykbK~PAp^9)>uIx0V8&TGX z^BuDIjLvI^ZYr6%WcbkpB5sGD91YZaoxrfCNV$GPGU2&e6xQow`!a!2h=umxm(w$D zAfd7KRXCn2ku?P2Uo?8`P^;h3$FhzyRt1n^c_q85T;Ur@m?RL$V?<^$#(oqwD+p@* z5b#dM2FL@a7IOWZ>FZ>8WWh(((X7}ORoEDrzg3Q^uXh9j6(Yt-h=kQ#QFB`QLXj^ zlpj}IXmRT<9117}6?gCT_-UGIKyE{Xb#}f7BB-C4%BK_~d4Wdrn;ZYJc76O_^4`1K zqp|a`dk0#SA$M*YnYM#H-9lEgtl&ha2N+uwmt1{}`QuC7}hjQyF+rQA!isoiUJ$+SkUJ< z5C2$x8N@6i#-sf@-8KF6*yCbwoqcwIm-DOo2)HaM#I+ChxCY(xmnk6j8(f zwUO8qH!7^u?@sKtj+Uyv67!BP1~f^ds}HOD#KVtxMK|;YWE4PS&>~!vPF}=<*`5R5 zth{~2!kDb{Y>h1zS^s{j$c+4;Dq_#nFv79+ecb6BaO59w)32v)h%M}tz7->ajeUro zk>ez|Ke{80Gy^NO41^}FlooOsTwr+L{k5uSH3i zPz0O*1<^mXVpr63kdeuW$CVWEzJu|<1N29-0ZigDh&|LZw)t-_>1=JXUTm%)4vQjG zYazo)AoFgIh2JQvj3#1!kQaph^xyu|7@s9H&>&hQxJe=Y9A)G-yD8Jk&bmt?SQW5< zPcA_sMS$&UJ9LyKjN<;zrjM{-Rm^b3O-l>d4>1a^7iy|iW>d4_JYO*?Ie69|KL-b? zvnRjdzaT$TQ^_v+ICXgU(IbxpXU@5@v{Z!BO?99eLrJ^PuonxYw^U}P*ZzYhhQv&D zcEd1hVX?+Y3R!2Pc`|&l&DYNg`yFNfSy>106_=h5JiS^3WKd$UF(TnZqVeNd6;kiFnrPI{2*h?eP zO0qC8EGTqpdW4PmHsv!-tK9L_NY*>C5{r2`up)!=H2zY$5h6GDG#aOzPD2nxY}xdV zjO4*Xh4EHJ6 zYwt=WSK4VJr}QL@k#ZiQ>?-*B1QX=(YB+GWudD-7?c!(g{iMHzKT=_IcdzKZ1F84gHXZ`+2>vARY!Xc`##)vov?Ll!e%2Ob_ISkw+5<`R z(XAgq8m#v!)^}UCpdMhzEftJ#E=%=#Yy;*fKTqQEHCp^f3qht1YEIrk+it`PHYO!_0BHZeUmd_ZbnMgMj+|cD|Jl+u$Hv zFk9N!Grvh06=WL8A_NpMnO6ZCgAwO?Ut|)mpX1=&4PNiH$v*h@9NjIj`nEfu_IVKY=L^qy4B}^7xnmV? zugB(p#eRtOo%RFuBh2I4_nx7H&o$c`Viv4Mv=tO50VK|NomRFzBP$;P7(wJ3OL9nq z|H9yx+!mZ4xl!Uooy1WmEgB~^2Usb)?h55abf7#2F9H~;Au9cxp}r@72AyH@7fZ3d z?b+h`le0z-f3Y8@SK7?i!{3bk!CQyU&?v#Jsy1mW6oY9w?8l zFt@?BHE%%zVzo1j0mA>#zFY@)C~<=pqlIHVY}a~;fi6!qHWt?&w*x@J;mF z;Id5pE?I?f4TnADR(Me&P$!P44pCnOV04|dsfIAtpSY{#F3AI_#VQjPv2Y9CA}9~| zNZ#ZeI}ETcDBw1iVW>7vFdFU4d%*_JY`{GUx7QgFawjP7TUHX24#Sr6RBsJXwEr1Y zpkR9M=)*AMd!@E_&Af|92=q642i^Ja?i=-q^&;@ zvAXrb?g4Pvtf2Kd=O_-Yjyw~%L|O&c_BxHD`7|r=bYD1^4I*5zM?D{V_ z=u8GcHt3!_zhH30dY+a?LF2(c@?PO#qyt1iz%2n4}yixcr6&bd%yj}ex^OdDb{wxzVVa#Bd{8g89C!5OHtg>?YFwOv`TkZMRy1-8Q8aG&@kF(0Q184KeQk!dkIKjKSyv zj6k16x-$WaDKZn9A4E&}w{JAK)GIZ2ZM?adw2_|*9kfi%4-(W+ilNh6wdnBw+w17_K z9GtP$Qwl*!6&T*ZGumE+@zyoW>ifDS`d!Eb35G4E(AvW-Y+$sB5z}pOGQc zs(JI5&C~SO!Q{6Q?`OMeH7obz(E zNI;+12R4A~iwsYB#6bWyr@wJn6eYtVdc4_ck3lus|~C|M}Qh1Jj_xTh58t-6gZ<%s58t!F*hq zlNd7!z5gHw&ENOa5KDia6L^DH4Szd?Bg`Ko_?#`k+_gSP87LaNb2y|Q2z;J^%X3r_ zqV0de-A|97dzVxCe&MT7Ffyjc7#TDj-c|iOg3zFKUBOe|cHfnaY(tTBB#x`OKn*j% zLe57Enr<|VFTLh>di1&jxauc3Fo;LHA_Sgchq0jQ*Tk`G&g&{?+UhydI9!`IM}H`M zwf(nPC)4bu?$REySN;8a{C2ub_d&I#LGE}|O8go^RPnX{Hx#qa8}cM%ZoA~?x)5c9 z1sN+HWJ$0lc9Nm*2KtkorKLb8bN7fFtv+#Q=LU$7=22(o2`$7mN;_#MLE}5SLDBNn zP;|L@z)k%g9V|cy4P8Wn8V?bA(WWMV2kH%6jMO(eBc!_pNq3s|;i}2B?VYNcH~O`5 zaqwGX@ct?uSgTW$JD+js`_GxJgpm8*_d|LG7=6oQNUSKiFoosMI~QWF2kKvFyn@hp%Y|>{Mxx4liN@g*B8X<2DEUP5d1Y?p#iY4e;DV zp9vSzNoXTQ>?G7opMZ&@{#>*2yWz9{x1Y0NZ=|24Zj@K0+dK4?b8>8uPV-{)Io+6X z^ECpTy4#Qib6IY3fZYr^1$SZM;04o;8XNN-S%yQ-tmJNZQCE38G4jakVAsNY$ld?3 zhqZ3!(eU$XP;}(0e#D22Dtp&yI9|@9qKJTFjHh-Qb{VnjJs-_th~o|=AtMv()K)P? zq;ovVCcBHGXSS+H3xcG|N(lQ1V3!uzE_{WK!zd@jn4lom%V|))4!V!c-TT}uKYY&5 zEX|+Fl5Xm9udDTB_wY45_8g=~R#rh} zZOU)%yv>m0>pwR0nt6*_kGcFUm?@5gU^sKASvEQMBPI5uVfY`+*0>d0kyt zs=Fiu|3e=w60Gz$opS0*C!xyVyQmPgH1oRJ=mn0meCY;?ReQ`C!K)^uGNooxSU-UI z;+-^HTZDtDLLE`?6WtZ1MskoJCOM{W9#wxmAo0m>Zi5Om*k!IGT%KD;QLRqokmA7z z+p-O0h^bAg1LNrZuNdUaZIuZoUeeZ4sc&S+&IiWfR>q1Ea2zQ^WI%fJc?ztBd;9VB zA|G2*OJKM|$R1%rFHsVb)jX;^=bIyclm|0Tjw(g-Ry%B_**E6Ld1{4Wci0bHuP)UMUCl4v?^`lHbggNm@%ckbof~+k zH6wZ6x4H139exW-V?mQtDSp#u;pmceMY(|x!$`w z=2>D`;um5F371y_XbBllIkEaI)b0Zo?WaG*KMhdoIKQ@ZiQXv!DJD}xf||? zk>RbT%BfObyw6g$uNrbADtWunXal@_2+=FTP-MkT4>shALWNT;7G_L0x2R$JTZY#v&Ab+~q2Gnfr7VO%jZx z1oe0GtgQDSUaeUhI|4VF!YmH{5tqV_inH{-t97gbTK?s}fLJoDXN(AkOKjtT-rV#+ z`7yZpAx7uc^&=y_KO^>17CDS`?%s&>#vyPhRfssHi=@<5G1p$+t!@<>u(4y)&VBl) z^9p<&K$JnAjGKSEYs_w!#6`OufkH~Cw;2g;uN6O4$Gu57}umf`aG z7S%%1+U4GVATRm?ACwxycs^o7=Uy7K>PmGoQbKyK-VJMte)@BVx55#Tk0Ui;Z!s4O z{Wb?A)m7ub52?SoQE@E60!H}MLOX8lsA;a4oJ$lLmg75}ysnS9PaZo?ek6_^y=5;m zr;X+p=IMU8@uJ7*_XBRb4Ff~95QV_-Q3f;equ@D@P2L?>fJtI1wsLQAm?x|f)Bt{2 z6#-U2{@q?%4JoWrW-#hwi5Wz!Nsj@+!+m0a%`kh*16oG>?6h{k&}#2Ux!d(gwX+nE z!o72z+&4=;_@(*~(Psp4zV;~b0o6G^-GmdBm)rZz!pNasZzR@P=O*~GJJz9Be9b+z z{z_vN(d!teE6U4`5$l4p1W$W^(#WyJT*>IU>WhkN3HD~FB$l!cP$jnHC2z6{%0Mio z=Hcg;ec9Xl**gc#)8Cj+CwEuuq2}e-ZtDI$>iYRQ0oQCr$n?OtkH(qh&pkUE5oMT- zHXkI2o&g%npCIW0I-;%Jm@S^dwBu1Y?6{}>?=OihvQ1;HtG2thG6?3y+j4C5znum~ zEIUCE#P;ZLpuvU@nOsQ~d9>?d+abmraD!oT5B&>Qog;tDg_!MH%!O%yXnBDoKKl<3 zVcHO_nb{aVKoW7WMWdtFe$^&~e9j;|$q$-AKV3?<=2glZJTW0v>Ob-$=KzL-XG0%E z9H`R|U>oK+ogcW`<_{CWRLWf|hNmrCA#eo|!IU%ECMiJKI+0|CcOE-pT`UQXXT$Cq zWtsk98*awRDx-I)gJP7;Wd>CQE6JFGLsf&zWcNXA@KntezX1X@<(vC}T^_5T<_7~i zXb#2b!jp`7`e05F0^rgUw0fczY|_u~vra=g0WyNPh#Hc6(AY%?_l?#)0^It^&)_3~R3C3aR55BuG0e3=DzMg2zLXL;AEc>(`~hz@ymRqKb1!7By2ZKlgDG!Sbb zLLll_gGZNjz+6pTtMj)}>>P;eb148Vf;_>pz+eW{av|^zUq~B%xGnGX^j&6D_Z8SY z9Ui~3&y|Gwz(B3a+tv=#vK5xuy{nR^_cI>iECKEg{fY97ceZY|y?DjJM^sEiz@aVI zgNNbgz|jzq4RgfXqXX(-8WnE|%@56--B*9N31_t|Lj4T8Y7O<|0~UxJ2M-z(L-fO# z&L)JlExnEAy;Ypgo+y;P;F7mpy@^PB&2aX+66|fu9Us|#yTWWGN$SXh*9ww@2U86yQksUy9m&i@FuZR8g;tP1#73KR z7>>7O;gg7UPLp!AxexwBuiU%vnCpLrV9`_Et?)POM8eRs=9pjXN#p3?WJ>Jbdyu&) z>u~?QdOsH*;UT5=FNHZr$*CfIVbKb?;U@g{I6KtyO)Iw41VbUV1+*DN3k&{sG$Q5mCvR5rTmWn>o%oW%QS_s zvfSr=7s00txS6tBD?=&jc-J!IEq}D!COnQqtR+)r)LMxrM_YtAjC!_Jv|BLUwjPlX z+_-wbf?w`9OXz564D{!w4x-Z4YNsY9IEbaOS$0x=u>dc6YtZ-lRLo_{*k)%|Gc2w) z>m2naLP_=V_N)6f!ZAJY-0TMYc^%Fke`FGgc=lyeFjZhkj1|(7q17FQ zF{gz?hRv?g?}WA=vd@1{&fO=shz<iyL{`Sq|Z0~CYbGH2FP1&Y99}~j&I`@p9 z3B%1_^A-(9KLJ2WuctOcf{D@LHx+$tv)R=L_0MGg^snepMghr}MtdaBX&;aK&CwYVFkPGK)bzpBUBx(x8wame>0FH~?`2R#lw;yv z5l?L0^o+kV@&OBZUZ+@kvU2fNQ%>EmqBu$%Ufz>KMKM!{k3+chQCEaYJ1cnWHq*~1 zj6m;*=ip|UK*pBe=H|;pc7yD?EX6lQDKDRDj(%ENiXYS#wn3hg;#-s4QWHz1R4t{B zV|WY;xyT5;yn-$3`$LmSF>TThDkDj|oqmVBVN>;-UjDPUmG*%F%)69x?boTy<8r)N z5G(-sfP%SaMX}6OeHMO8O2A;m(B`&p3pOIv;v=r;esq+0mVWSxlcTP@W)eZ`O6p}) zF4xxbPfMI+*q877(4XUwkarqJqtTd*z$*Q&N$`DSa5Mc=TsAtNI^$go`dy=d3^TrM zJOjK)b=@_mGjKaK%fI&8VCG>VXH?TK`>&mgAst8NNBRPy0`Xnn0?mLMV{N-Tj!yO) z^3gy;to2#R!O>rE_N|Z3s96t+Zqc+)GBKY_qS+Flb)NI?_ z*AZG^vZmV-BC3@8&YI%8R|#)%y;71eU7O>GPwGs%ctQYJF!S^;wrtD9H2mk<&$*Y?lIU+-ilM}%saLib78o* zru@NTPQjY+&{7Vvqy?;>5CU@Y@aO0anO^` z+%95YZ%#>ucAkCK@N2W>{Bj*m}A-zoO5dxYN(VlP;fRVK$oP;p-{3 zeBYQ1%Z_HAneccJ!VSDBW4&=nEYQu;k_-q|c|Oqm0iiTZ<&W>X+uL(B`|{Bf8h*|C z{GZo<;Nt|s1qm8NonGc^qh7b<$zql1fVhsI+i;`(5kt`aYu+%znV~$Hme{S|hU5ii zF!x;;J_3Xzonqn2=fDDgfGEV@KxUiY!-FXDksORmty2p_y$B`czNW?L0?q0Y>vjMk zU)O=m&(czR1A{Fa){jo{&gV}geReVeZopyH-vC0#vjO$Zyet1aN~rFv-5sCV+b|{* zBlrQKq-B6+goN6p;SNW+3=Ev|7?7_S$E3gxsPx(iH26j*F1~ERo4`LNobVWz~&Tk)m z4~|(Gd#EB_qfdCb4mvuq3^@}ZqiQHjJHz$h`a z-4+_sJD zH|GV3^}shqo*uyz%pc)|o=a$nXz-%mMBo+_G>mx+7LXN<2-k%L* z@KM=eBN@kz3Qh7Te=E)o4N!~aOl!2hjh|wH&>D@m=RCvlPk9S2upfRhmrWCynd*g; z_(WrmN}(T^813X0q>GX$aW?=pI<}~&RNIT2gNMfS6nGd_*2A%D3KA#(z~hBxJVFvL z9I_ektE>`B@d&7FGChg*xXSyd3>!X+;S)?SjH$RL7ahS$^)r8Jn%c6jCiUfMp`ua{*$ zhdIoXwCi{m7Nrwz<;h?LN|;jvqRTa|R`7CL*qKB+u09t}bv)kWQNBoflF|D0yMM{1 z{d#ZtBCy)RT?r9P1+Lb5Q(hJ*w`8lk?bpngawg?;TIKE#jiV2FFo447_)o0hxJ)Nb z;)U{P;j)*4h5|ZqU6}t#7qFd?comOMJ?7>^yXJDY_P14s+eU3yLeR-m-TZU+{g+1k zs;uvF5PZ;xj*#!D(JVRZ>Q{wLCRs6sU|HwpST(`5pD)Th+7JAchPr3j>9xP!khK}W znC=ORF!(gr>07WFR#=80nxvaO`r%b0jXx(<2FY<&ruHa99sM1z7D>dM=0A}O`#Iu& zf>8&?$!Ayn7~e2g2{qbxw~%u{<}0^9W_aZefZNyVX;sdT_2=cei>!C=`MwG8`(ud(m?>K~ZR} zu2FC3FNawSh8+A1_wJHjreG;EvHg4tmq33{&8W>!`Sl%rL&<9(gXL;?D31w$Qsoch zO*VPuT#J~LmQO2n6Og++)7q-bLwsSztiUE^=#DvhOg{GZgv@S~Rq|_HizCeQ+s{4X zskm+#MF=w=8>(BHuQ%*#gnU0YMzXC-NE}6BEfXIl=~ygz2>CPjZ`coY!6obea;c+V z)7n1J>x}`OCLfXhfXQ8Jx=3QLf52xy?R3|itprj!0P&wej#*9t2rx`=6y!kUB!^?R zT%znqZn)>|r?bhncOG>4l5#UAmtT3P@xWPvK;MQ$+#^Cgo1ks+~1GLi$p3Rc( z$1oy7J+zBFquHy#hFu#&ts@UE+}wsEU3gRi^nsWBf2fVt0?LSyzHffzv*lq)S5{zY zC`$bKdp&Acv-xWuC#iSpX3RB#yb|8~tw)7V z`-a?+lMfg~eT!-?a5R>eHrc;>=FNy?>pz~fKm6i1VL}1U=;}Ka1*(8h3&Gi{V5i2b zyTY%qobS(-(~e<#n&;oA3El4ndj^M$lkH9Mp0*>Pw8RCJwZFRvg5e}7o?&%rMjdZg zJ@tn{B}h|%{gMbuRQ{E3W8!D85|B=e7&~63Pot{Z>u86sytn;WLuJ!*6bW5rOYU@0 z>{G+Tfr&9@If8NUVz2`q2K5g5wtS`)fFi(=CPpPs0*pWtaUls%Mwv*FaMP&}8>PFw zjSn{`6?q>GcQ5(Gi}%j7Ji|kK-yguS8{2%^Eq*qAED@ze+p_kba@00GlbTsuMNjjg zlNWyVMZ-RszXFX>CG)q^6sc=io1Ck!*~k+Jz@8&MCA$)c{U4k+%KX>G@c17S^Lb;B z?mpk8KGe4a)1LE2I#HOIi#&+TADx__Ific#RPKycrC2)iGjk@)F+J*m4APp)3EU$K zZrL)Ta&mc#d@3N7{?lC@`bK@ccYS>88%H@+{lWeHX#F3;Zm#zb94xW&!SB%l$xok|x6_!7#Eht#F!59^XzD7!vM(-8wHcfp+>>gC3{> zJAp@erek&FtvycIr=3@|rFpPPbO;PCI;L$4*nSC8ChaMpdwCi*UG>$HWR8>}FIGA7 zpDfqqn#Sbf8BJ{sD$ByGhy^hPk;Ll^C*IBR3XJRE3=(h+ylrno3Djq=s3%h|S|%g; z0u0k?_oZ-pv#)XkJ5?#KH{!QYS1 zJlr+y7OF=O?}v#Ei0K+?GRrC__UYIK&k?`!?g(?v)3;UzWPoRgB1U=q%xV8%}{QS#~P(7i{}lYU4C9THOQD5=(< zlvW)7`uA__Nhy0fd=O}@=Ku$&?7B!r4CSg3AA=^ask#(#qDDg)7ZJ3l=@A^~`J|kz zu@$?ea?G>>e#UkquN1TW)>^)d0!ep!b7ldk046Is2%diwPv zYO%dKDQ<>+_nb*fqaDSu@RfSu=S3hGa+Z zq#m=WJ4iesWWD6GM9-K9Y}mh|3f1}%D#;el&>AL9pD?e@>%BA~ZMYR7ImBzG=T|gm znL3!7iF?4nrN0pzEF>%|S;5~!wAA|Bi3{j1C&uv+$#CoxqlHo?oBoD}PDkJ3v1Y#m zQ|4i~q1dR#8wxX14|08@Va;$lIx#L{s9KpOrQhKGZkNSBvf}=ieb?*Ck3_uiU;8c3 z1(^q#TKP%XMtcQw4mnqsAxkior`dE?Amp(Y1zLRpqLr0#e=G*?8O%*TG)IZmbZ45) zX;$p;`M>4m5?6&Smm&FepC@yu@ntIgzVl&zAO1$f=B;~`N%<~ff+O%RL{0HR}oWM*SKz#WAqP6#TFGCNcWJR zdAq}+l^lJzfRdv>;bFktE_-K5giK5hy={cdD0a1h5*jF$lrawbD1VHK{xw*i!ppN^ zp>|FLs`u!Xayidc+nsWNWQ&L2_lr=R?+p)sDedJ46EQGJUk^*X;pLE=;5938u>2(L zQ&8Dd&StJE|GfX9CJ^5;`4OO3U4*mL=*FrX{{P?Q9!1(Hgx?y{q#C9i0xi?mQN5xm zUMhwL>Z_i!hKp*}1Lm=(w7UIc#~~Yr-Yjf>{2xj5Lt@_yGj*Hr9v$B9uWVwT;+U1b zy{;J$M(numireHny`x0EukL)F*FR#W{C(TBrb2Yk?STIT+!3c0Z|bd2D4qIlUoceg zVF2@5N^0yM(Htuo7q%~YE@}R-xcco1`2Fv_Vw!B7G4u_=Tk3fU!iIkk-R_TbPAOlO zlKpUchAe-}>6MDQAO=RP<(7Qlb#P5D4%}luCqT6jA9{GKgVV-mNvt2GIJx-o@8Ifo zHx)HjCA{;BnmWHt?2{E7!$8f9Pml8OUt5jI{HD^Q-9wbd+EEiNtMJEqJV4(tqU%1s zJBnc#VeCKsI^7>DT9~;EK!P`{goP>EG1WS7a98oA3{K!QQ~H9EK$4Qf^M;2%8y6<| z{!tTaEj%;@B=f7eV04P&W50S&02Wf0BCilb3&|nQeh_N)qmjX2kyLM=cu5{x89i$M zdctJOyM7w8khdeNI{l35_A$^X8YZtO0s(o=-f(3q{SUzKArS_3g0zg92(M)*eZ7uo z;%*+@6(Vn#K9ws3%xE1ba(>IHR~>eLM3_QkzN=K&zO{dDc#eoc8j{zCu_XZic#KLR z(%Ho8ujmj%W{)?N8lP|wGE}LDp~}={!79SC{ln66wB9d{QSbdNjz(L0L>UOq2AVf8 z<&-+W-g4M+VfNTf^1460Hh?tL5lJWNeF`+_TQ(jKz==Q$jk-WJ^D)y%BJMjs2H@FI z=J_yMVsf^$s-`+I%%ri)Z(Usr8$80(lMZO*0=3YI^9oP?&o;mRRt{4lNd5-?KZUu*`e(Tu;{XRcA90ye64_NQFJ`6>{zVo$Oue6rOf@(>C%^- zzPVhu3Fw3m|Ali9!n>*b=Xno;c!0!jYDhTR#>Q4Nv6DWOmedILoW<4y^cLtH%flbm z+f9wmgHP7VLxnT~NyK92oLJ)VmLITVc?wXSOCzSRP%Ut9UB6xkL8=)SCuiqbp z4Lq>yQcJ75^6gIFb}I^6Y}3@Qg}Lko*EELs@x1Rx;>mDix9N?OxVH7ZmLGPAwO#eJ zsCdwBL)#RG6h*w*zUJ;rvo$nf)Ns#m3r)tbkz1B~iKifTEO2*0$CWD_ToQwZu%23( zKAJuyjxm1RtwNlTpay6DKc60Wgxkf>aeZL(d8)lYY6u}tusuIUE6VdW?te#YmACbD zrG=u|S&i>g6eU>z())I(!5l1&w)n)EY z{GPo{Jo|(#B~+1@4b9_so|lirrK;(8vwkq{ODy%AIMAgzU&v=Jx|J?pr-qsvVa2oFekYDpDIcJLV=NT z;=P~7=KL*}3C0Mepo;B4G%`$W>SWQ1@ZCem9lE`uy<-0zq7@70^GuEPlxzNf+_tn* zjfj!aknnR5#Q@5YE3GKC>_}^v9WDz~&}weg*}dM%P|x%e$yw>X3!KtaSG9bvH7RY{ zE_0AP4x_#GdC74*hSN(gHg^~gqrb;k7suyz5QUpSCFlqiU+Eg&Q*}tx$2oVQu2Cp> zj27#IXWWY7I58|+Ah28V7M77y9PMd5Hg}zy7OcS|8#qm=&*IyY>4RF8Fjm^FE>h3n zd;jHp4B;~sCaIVmQl;m3X635eRkp1Y( z*UCv*XL1@A8VY#hpK-$t<1@Y4o?Pp}hzAGcv0lXR}<}uFyeq1PWjVsnbx(tG4 zrZ+%mzYE@6Y#mA;pU(p%8`);^onhfp`Xzzi?dPe9{G$OiU^hIAMPb1MU=}pxH^k;m z+nU|e1`t?S7CZ6uX0!i6(uGe*mk`4ZP1ETfBky<5VLjavaMunO9xIgw$~@mY?nJFO zvRPL_l|!M#Xrp&oq`8ji4;roJUu*!fD>|Ah0D%9f)CkZt0D$W-$0iS2-Lf`0)cdty zlK*#!fUXS-s|P-28;%KvztH`*@#;}6V8v&>>KB^_=IJY6UHE2af!@`SAiQMJzV^9# z>8EP@g`ZnmJkN8uvD5xj;C!$f1b};5cfFq7Ks&60*4=x8C11BZ6S3wXVeA7ypTKs4 z@8noP5-vl=TFW}1%`tBtwF-`XrHVA7n`EltoBerT-Om^JvS=#tU3b%wAF^mn zr=AjT&_wq$R>EDI@sNBhP1z+^8*Z(6IyLakg}&KD@?2%e}F8@l8MSZ^m;#q9%1(Ar75ouVV2xP?8Xk|%L>B($DKuf zgj(Ib)=SwWTV-;%!{g2!<;1Bwexr^Y5OpCutd~EGU^g#g2M)*m%X4E%8K^+vnNE9f zG~(B$4W2^O4sh7=;QN=ac%9c;qJB2cil}&bOxqVH-qNd)RK@=fsD5gf^&V^4vZ5)e z3sW?7U9o?L-F_fmb+7c{7b@WfTgW5{MUDQx4JnKE&1?84X0|n|!0KQqUkT4&*BWwk zegv-F$DP&i%mj{1h(wps$6) z^Q(Md2}PU)yhF3n|8K%OxO+B!`cEIOX;;V^p;{XZFfjXH-kEk8qWkG?5jD27Q5z9% zFlQxnK6ONm1YbBGtBR5rsj6#OvrtURu@{R!&n&}`MiT0#3`oK|7@2%gaXVr@nd^q) zM5}2|nXULCX{h`{X-Wj(`CHLPuR$dIF^w$fia5b8md+G5>;dT%mfp z7E|9znHpNZ<>GUosGz9ed0&01ZB32<#hi*i)_QmYMF6a6$Z?lK74QY<4X)+^-opya9_Co41N=GThgRRS zBJIuGEI4{Gmo2sl-lZo#Xsl&JhhgGRg52SwN%m&m8XKXdU~WMT@?ZnI3|K>JJVso8L`WbCpy+dAdwQA)0~n2gaDDDys#4W|f;lJcgpEl|D8Wo`?4Fw|z! z24PWWTk5(aT71Sjk5TKP11qCg!_g4sv~1E6xmY$?siVq_p% z`&m(4BfV$DC@rl#l)iou>3vaAUl vAme>BDLi_|HxqhV{QD}8*`&NUP!T_QgcBq z|7uXc6wUD%Aa(QCY>y77YP5U8)m4qv)9MixqI}vtt~}!wZ57TY@-r53Aq4RT{8@_5 zgKwkJm@J#+J2^IE5)Yj+rTvCkZN;G=;5>nF{-;v9Xt>lpm?pI#ljMCMEIA!CtG$;d z{LC?#mLejFs`69(lP0k#EnMX~Q0HdAk1|0gP5#{+CIFM43@UU4sGCrR>?Y`?m}VEj z5DZ}{PouI$pjj|EkCAHNg}u1Sr1Fb_UDc(jTjBadH7mww3&!#g4vY>^uhM5dZKwJ0 zackk>k!8J*;aasmx`d<{8y)|cHyd*e1I|40bZrBbat?D4!_Z$ai}Vmf+qsy@_(RYI z2At!!3@OE_SP{QDbT}%0BAnm1H)liHWw*+JO+v=|{!d0Wau~xvgp!;d(3J?I)ehG> zgrp1|4n#+zLk}9U;PCBV*W)h>J?(7pUJp`wW&olD;PIg7d)vGdqefR6b^QxeBasd= z8vIOKGs}%Qt|PoQdk}qy%r)V0)9KetLzUWGa7Qlm5&aQXfu_MfAj1GLK+eBexXaj~ zK8b}i__g-G^#FJq?vpf!NoG|bYj1@C|l&? zZ1eUFy5AACR_dWn`NnPU5ZtwWD2GIzYZF8@y$ zTG*nvsq0t-(bC+cKyK)XoBN+1XI(l5ZA@-~IBaA<1V{;t>qh~YwkttmY+;nXmU6>ca(8v(Cf0^VBjW zKN;m%%VTx+m-QV$Zr36VxB)+n)}|t`UvD!HH*)VcJ=34g+)+-NXm9LgXt4P&-e)_A zP+uH6p|WG5i)GSa-Qf@h<-7kLqU8oGy(z8up1(+ko>O~ULdWNZe=$$sW4x&T_hp|b z!_ZPvw;Arbs9-2~#+)+jgE*R2g?m+X+ zDjMTgevW_9J4hweah^)#vINo5ohb^Q zPBWMop#-9*2MCiH5O1=(!7^-9BQ2LD``t+iBSdH4 zg9^tPP}@X1i3A&@8{S}1(yTm0+0yyOsql0?g34tjTOGz7@i2iyI<&m~&0~P&4{k&N zfB=93BsPuwwn~;SiDTo61}PL9!mSV4e5Ac@GEeEv3v`YXUgj(khuWnq2sl} z`V_q{6WG5MKhLzg@)0${^GLORco?gRXR8!Mw=G@v{n6^{MzQiV8=@5*ey0@b-Frjx zZtNU}sa{bM&qAvFua5kkJ;dysH;qkdx-K2Q%Kz-)2}TLvvYbeLH7zuaV=eHh9N(6< zfc(ZfS$yhg%NOL@oaXuVX+Mr`>SYFPsVrZl(_r!j{9|DbHTY1_7lOB+1VA_?3fZN0 zoeDr4N(RHU?nXx!@YFs`>`yH#-p$=sb5Lxi)RHGF^A`dwc{|t@{jd%^u;KzZ>0W{x za@ca7KqoP~vD!KT2aN{_W>Gi6NjUAdV&_k2Ld7i!75--wq}d^I%a9MkKd?x^MY>WN z=Xnh@j=QBjH5Dig`xQ(Mixgm{A`#>8t<@#8Ee`tp;l=IbV&BlwAi9FCVegO5N~0PN zIv~}@5T+~7oji`5t;cV<%mJ!x@Y9iO1|`4R^Iu626f4vF5QPV|*9 z&Y)9rwV$P2dq*eh{W_+pZVCwH53P=5hGLiFe>yF3Q+gFCbAR)hdV0bGzqR8vF;Z^dL zriQY0FyZN0JeGa>8R%^4-j8@Q=#j>Yb{X^>#Lc3k{c$*ES7mKx>Q)}u$mK%zG;oKA z`HNWUCH|Y2elQs~WyA#puFk(?zt!*Il4~8))g|z68vi1CG+F#H1%8e*#Z)65kybt& zZv-b}I@5&6xH~WvAi9{qBCx(HI?cbSK4tJ5fME`Z-guBbko(_qXI$g|-=0qcfsp+=4gYl>YHZxm4Fg;(#Gh#jyD*kojsbObIc!Up^wEU?2wxBsE=IU&(3B}l5v*Wp3!dOTB zSlkymUl=AgV*YTpAtNO00K0z2Ce}v5RC=k663)@F1TYukQuE8C+VHa2n51;u{u!>^ z9iICa{n)eoi@-aT>inbn4J;Q>;Jde2>V8by&K$CyYR*dKHCzWCaO${Mp58>GLj5TU;Xq;~~ z-sp_v!!a0yhkQ1B z7@PkFflOy!Ov;hbq>UAbA|osntSd_8^=I#1K<^MBMtz@SDD!vo&ZLRqAc%o}JDApH za%-W7K@6X+zkcT@9pnVt9Y$|Tn#AoX?)Qc{#5?0Y*C6 z=+eddr_Lrc<_5o^hOv6bkz%F%mIj4LJN&<(gYuC>fQMgmV#t=@RHR)Jz8DDpM25IywuO1Z2Z(M)D?80c`6WcDECpFyf+ z(1!sGF{nAtVGaWrZh>mbhCPT!&Ir=V^>uM!adh>Zpi>653!h?PYcmuLEC+n7VG$lD z*gCk|TZ+e*&aBq;(=T{wo>JDH+@1ooKTF+`^6hezwz{9^IR450bWCqF zBijG&FnNd`=oBIXE8G`8x!C-A3uMHW>v~^s(<4Hb25=E&PzSbRiFQ3kae{LF=^}rY z#4a8B#y8?O?R^~0Py$@j6zX9`6EHjJ=y4UeMur_^B|>KC2>R%)lngXeA2)2TrK-cd zbim)Mp+47IjbWHBKks3u%IB!3w;_dO39VE3@vWsUW7>r`ls`dgOv1*cqs@$tmv zpgZqd=zWm1Ff26H!SHkYx8;ej^ucE-jfuNj$81LAh0;vQK{8w>p$eE`4!Lr_slQWM z>`>E!_c50xq8`oP>tMKXJe*&R%AA;^jRjNpt5FNjGeZ~Pw55bS>K#O^2@j8^k?)4= zOo$yk9`@$C0kJL=W(mw3xYKcRmOx55W|jg@wji1Z8-{7C+=mJ{SX*I$LD5WKwG)aV zDE(x>(soiYsPl#(YVKo4jS~A7rjYEz=s2oj=997EDLS+a<-Yb^_;+_-eaK;J(sY!>DFjlZqCIW^U%h3d=0u< z9fw{YH)cS>R3h%j(26tXo}x~;Qlwj`By!6F+Vh||ff~CFyUkwpR{y-1d?yebUOzf= zKqOa4+R&DpQ(kar30U|*4woHAc2NVK!Gq$!d9)`#ire|4=y27#)!aPuuBCNt&W=iG zm~Cs@+3qRK%q(HeZ5|cXW#srVoP4#SOOztU`FE3fn(l?{t*e?+Pr}2rKzeGMS6N3} zbilWLRVGOVgs}U}gkBHE91PK5Rl)3(P-$-(0Z_2Xa@c1F5eZS6b&Heg@*0wIgmWS%jUg^dEy`WB^ zsHJ!@HqZhW78EgjUA{bnA$7B_+jE#5K#oPGFig@fVPNfoYQR}z{*A@_3^H2_B%eup z#vpFLVCLyEf!*u_4*gFhdp@4Xn5_xRCx(sL} z=l;_((l=tiCabMb)aWy#Ju-d#$VO%GAk#|c=Da1s%)~7TN9kQO>&AS)!QD*SVS->( zamcVn`GBB%z3e*1v+Fl~pVP6Q@{Hn89^n`hOxbS6j#(ZvbkvsllHfBZ{-X=tz)X0S zD}NgQ)<72BJsuA?5Dnt@^8}f7=rOee@xwR7Eu}3s*^GmTE)N9U$_l3L9fogU*2Om8 zFjVHDD1zCc(pQGOw4p8BiN*14@)pFF1T=*khR72VfJ+G8j}$_hjT$@VSOXIf`+lI9 zo`}~vMy0L;&QQ9@w@Vo^EWS6u!k%_om%u?sqV6hO56s6Y9BN(a7z=#(L9$>7MglK$ zLIzw!>p@vYc|F%SO8y-GMKG|hr8-fbq;JF8m4(B2mBprYa=YpMQE$8vKVtao5&mEk z-Ojm(6_ds@B&i>C&x`@}sq!F%d6F6M!tCb*h5-VUc^x%&IfRj_d^DLs`Ohkuu}wI(=S%;N%*DIBOIXvGI>`O%Y#C7 zWyjilVdvMeMpan44u}~%VsWYP!p<2;-XQF> zNE&lP-n~mu&^?`0!BP$2pB31mamEVw2O8Q&*|3j6SH>%9>w9-K!@hO`)brkf1~qY` zu@7Gm(S$eby*{*@S{Oa=MoHX|d!J87zISo>>v}_P*5tJl3_aEoWnY;o?y9?AJvc=! z=pdF9NbSwTHYLB-56_|H#&muSvP$#gg;iKh;~C^&RllEC_T^xn=02mKaUO?n>XCH} zIqs8XMRX#qpLxve3Rn{cmVnN7vu8ds1)_dA*2!blkG}g*X=gc70vx9ejL1`$XGp3y zZ`SH8TRfF;_ySyr@!536)+;d1d~b8NpgUI@kIuxc7JH!9%jmrbh7yX3RQ@lf!10@i z3YoKeUyPIT#Po&t{1L1UZ#Qqirb*lfiL9H~^T}yWjE8=deha;7&f#KA`s6PneFfeePkI{yJ6G61ve^ehhT;E*MUuP%?>~z8^Sn{wNoa?&-a`m3R z@pB$Og;QdFOO*Ak7j2cy7L1q8KI@Fp2>O+WPbIsWA5|iQ(28_kMSg6(`^Z%f&?!ID zBmJvDhw?#)k7R8{mNy0va{cI}Tx_(dD+Y@1sPQS;E7<&N%g4MdH z`+5MG(A!{#J6mJ;z~SE*B3E^;iqyC86GTh12kgj-{Vi6#$0YnuksfYlRhBKWY}b1> z!h$UQB6Wm}6Bh`1{bJ?rLDIfitO9CL*+VoI)too@X}DidLT`5c`nyAWuDqA+?k2!y zL~uc>*reH;{WrmpdRVw;TcX3^G`m!!GcxSJWZ+of1sX*ECv&O>XCnzTbu$VXuNw3`k-i6z65whI<%IR8I9ohxKRR972^ zFtZKl#Qe8*x7D9vh>y_Ng}v#c6%@I)A!tAMZ;OD+Zn+CGYlSlcqABwkMz>@vmx{uN zEF~V~c>(yi|5pQq#z*Lx&J*G;R-;hXUz0)Bqi0UODXlZBZUe)t5QD1#L-3F(gh&X~ z!vJsZg60ir02ap_qrU%sN_qTu%UW@bYi3?!=?f(slMHb9n@hJOapx;sQmO^S@o^0KL@}KabAWBS%77ZncMwM03Os-(6c5QDl}YByim$S`VHx&7=PoO5zDzuM>%@OnFsoV{W{gv^>@}($q}>wZ1_u4u6Hi-1)cW) z{cFUliz{vKVm;IHzjESlT}ga69=r+9h6PN&Yk7H`X!bJOSb@#*mX(*{6EjM7-xdqu z#H{91jU<8Cwvs8=yp5!usgH0?VwCgx&kTD0CW@qSpAKFdnsQe^3XOtjx(`BW6_V;M zMw_D2rS2T=ZzR1DslET(R14+P$odnMH>w(2#;@jAi@?1tS_$JRb2VLoxhCq;-XX76 zj;zA^jdMY;C%C-9#4bs81+~T**KFM(%})CidtiMuJF(Iht2eqtKm^0dU z7=6(K!J;JY!s%;i_=Cs7jU9>5vHf-1+Z(6l4hx>+BZ?VodP2_ZIQc&OiW}_i$qyuX zeS<8<$YDuPElOK*FJcqy>RSZii+Pex&`jbn`toeaoL`{0YMDC!Un)uv*7yCzu)~WN z`~mQdN&f?Fc31F^Z0mUXJdv`=%nAc6yOXd z;JBTM5e^5+33K831%*YH>5q~E%HwHwKd(DtVEcV~m@y-p4Xx+0wkyzUnYZ$1-|5?t zVnZC}17_TVDZx_zVdneUvP?qC*ZP^5;aQdMO?dV%IgI}(=7_!CdY(4&e=Z!iBS^e) z_KHG@OKTow_xDtChBSE_U?RrDYg;j{&|H~g(ExPsApNxc_~ddu(z zH>na{klMx&kD*;xnjW+(=T;vn-@>%Uc(ECcLiDvf?U_vccotQy*|LwLJS%Ti5suZ^ z2sX^Zofw#11yR5tEpMYI6dK1Tu5IQsWXOJM4*a~w`u%!5*&~-j43y8r0(!FP(qsE> zP&fkFw)cj5NJ_5ezDF_|2?Zv3Ptq)dSH7c>^pATSr(Vi~G9icHK`Zb>h%-f07>KOL z;+y4BdRQR|Ogj=*L8@nGuptHe9&cj_rMlbCC^_W3Ws_Z>WfDGqpTo&Qu530<&>|;K zL%U|wm<1`Gj<3od_RoDRcK>ff*N?{?VdXWOU|?>kR#qQXfm=MX#oGTTF3a5&w)v+M zK6Lr8QHF0Ne}I@j>$5j)$~?E8W-rHH+70Zkv?07!s(EwT3Nk%97LOi`4TZXJjsHP1 zD;mVN!Q~#PWH%s(0W7%j=VQIB$s3Ufh*Ttq16x4EI=EG5DW>w@YT_!@PgL zKsOSe%4r;j{PQ9Yw_7(@9(ym zAhBc#9&ESeXrwU?+&0K}v_>);9y?A!`$)Js!G`onvDU?@J+u^0RgHSgWb+V(sEN*o zm_NNKN|-IXwlG-`bGNIH<|ywlc2 zgl|pP^sv`6z5PGF_5z>b`q@0%S|T&anuylH_(AI{M4N0ENG^|HK-89G?yB>?bI9*D zPv2kRsSzS4WgfIN`xu&K2lC6?@YOiLj^%Iy2c$m!gJ;M3^)4i}z~a=ezU%n<7u_2i zu^!qF6P=LM;;HTv+klrq;>qj(>MaW}$HW0=Q*PC_%cggTQ3<| zh+qC`~#76GmA z7OADS-z=d+kKO8DDF#H+XFy@i;ezeIf!je7Md7?TH%D<~vAJ%^-m*>9FwAnbFWmPE z68cpp4aw_4bD^$XoR~{^Yi|$HE&2Sc5bSTljl8o|yYAe7ktRsP*FiXTw>ALLyheW6 zx||VGG;s_3Sdq4xs?r>yGA{SkBftB3A8^72jD7}!IYqM@3fg% zJdis-i;;%70d>xN>SpJGV%d+oOJE%9?X+lr%e=s324KhVfL(@!usa-H43h|E8h{81 z!vpDkkFX93E#Wm~CHn5pqLc5nX^ALa3y6U56+q?8JBo3H(ok3S2P3=)j`dySe)byVWA- zmWlZPw-agu*GIVXf~zPJ*BtL_c}^b+RPjGLV4XGlz6_(vI~l)hI0WNz-09n(0~qNx z>>s-?^w6ZNzR^cEsB^TWvjW=A&is|2ZZJ+Q8;X%%V;16zPM83K4IX7Ss)qXrp8p$V z0CegrP^Ma%6uNC-3vZc)a7(bG; z?1$1)A!<{tnrF+h`X*@6^t7V3bESXI-W2e`wrL6kxEPAiG(B-`zIy2@j#vd+!zY@Tjq0 z^6hp5Z*Qjd`TXa=koobAteWyi0f`aCeYDBXRcn11rjPe)Jo+G|)FAi~?dkd}09AJe31#dwmCo@l9`{%Ve0>F|OQCKT z4E9C|t`1rkkd62H&DCM1u>9~ZHf4Q2P<^Jzgz-K$A2nTG61_qHaxWaD9u)OP$KNn> z;6Wa9k=L=b)8C$XW7fWUI(-9Z#q?k#I<@iIO%v{$Yoq~QtyE6*6_1c8Buj-7Pbt*N z4@}H69M1V9?*2Q7U26qy($q%ti847BEj;!Q=|b<@r_1T3T#9q6c!%LOo1VDrny*09YbBah!+!PZqC8e__IM?JUa$M8OoAh}kTZ5vB^e(I7RjFwf zRGvaJvQOCId#+qmHSV;iH;f<88)*J^i-2D+R(I~fy z4Wk*orit+(2JC_miWXDBMoVnhrtWM+i?6j8v+|Jcr?pfmw(`=nt(J62XEfb=;W+hD z0#U`9qr$O=>!%|jnxP-w0bD53E1mm=f+-*J<>YFFi{?&$|8GGe1WbPdS!ss{D7Ko8 zCJF7{==tl05OO(yAam}%tT z%$vd0!blP`5&*?k@IcroNoVJ=F!({EWOHx1&7Av_U_Qvd>+AXao}}=6V*|Np zTPM$Y`qExy({7O{x0%1{uGo=W0(DVQ`tQD!{@vzyyq*h<8J(AVS4n}S`dl9KM8-+_d(aqea8SjiNci3Wd!rST9{*s&Q=+10K#CJv;$zchbzpPHuJy&i#SF;#9+?ii(s z1=v7xFD=Y8Y4~+`j+sRb5_@0MkF@w zzFqgrx$P+nDRiXcTo=5pi}ESG$VOyp+!gPiDUvlcT`bXJ$0#YYGQ5Sl$2^OHxvu3` z`&9h@Rwf7Og^xqnbl7m2k1C~+QeCL``&ZOH%=vr^zKz|@g+xU)6F2tgg%Fvn+mspA z&);iBfy_*TL&Ag^B;HDtYb=W2IEWtQzsBTT_x1zUoAm}>2dR3)JKuB~kr$CHs0?2^ zG>vmH4rl2zzR@q2&;nv>b9_2FglRLxF&b;(K52HOeLLhAp=A7$D|BcqHtU%8C*J5z zisS@=-=rBKPd?-ZR5av3v6xA<5%eqqiK5+wTVdsdfIsTvm5Z;LRZcXrw0^H}{xrwq zW2wiS7q8KIoAv8ul%@9UWhze+RLMr9!q(lM#SNp9wtrQfnOh}|m3sXT$%D8tYOz=o z+zH61vqzO)(n~~9&7G)bw(B~a>%Ua?!k)d)@S32UY;r$z!<&1GC9$Hbv>yZ7@Be~s z@EFPdkvA$T`nIpGBY3-fSr@g!$`Qbwq8Z6;SMnw)4yul-*%1s_lK+z;0k-DLvb|64<*(3k1%-tU|AhJU26A=? zJ$)Hxst-D0# z)wQO{rs;vmZ;v;W5i*1wMXj{AH1V~o!q&=R)9P{*L8@<~kLPxJj>BFTKNC;r`(Y)3 z_Nf-st@f4KbRJ=R1=fIWy~92m6ldu>x5M!mYQRP#*+q#lEW{7@Oe3;!0@mofJ~y2S zN0+U*(I|zlNBPU4B!cv@VuQ1Ok_y_bCVg%lBbY$N#X`g? zP?Xxhl*!5Pi7DEkDS14wJ;)C}ttEZ4;Ewr!)2l?NXr#mrn4*16fiKCh5DJv}<0(Ga z9Nvpl7C_wK-=AM5dAUG+1+#Vtd1*_>+)!qD8)edFursv(uui>;@J+xx(L}HsQFH_q zT}IPTAQXr4N-rRQi)$7}4tCf&AUs1mT+M5^%QT_Vyttlb-?U|k5?Ur-h4jf$O?b|d zo~@lPIn>_&n;QrdDTe$QZdK8R#Opfi;?Tg2xl3oX88=;j@50WpgCcDe)k zm4)y%*LOpdZDE(M(a~s! zCsahIK5|n4OhvebBlhbVgTDyW*qWDg)N1Dl6!K(1VOpL8uZt$TQ)++uHel4Z(6W#@ zN*7q+yRg>#__%7?-Uf@>%7Y(|)OyRn4~N_&4r`Lk$$f(bml=}Vjso0?zJIH zDth3tsLq$zy5w5i)$#(ndKFS<>o!+n0nbm;5-)0nTUED zB!hW(KcU$wzxyE%AB0GO{PL~j;QlX3g2$;6y6apM>Ez!HVa6VeGX9&c;7W>L`C(Mv ztTi7#TQmZqh-x6av?Qe?@lRQ6QQs{P$*;^QmLhFVmqlefB>YdxK3Kf;g(;#o{6iC; zp5yb@~-rNqJ z!bofSW`e}5kZ-Ia@4t_&IDh(R{)RYs%{M`j_BAx}$$fiJgOZ)xT*R7D%p{hMs%h~l zz?6)95Eb*D`jPvKi9#S~nN%h^Kc3XKQEr*fcv~vJznxBEzN}t+)4g|~fwX;s=Qrpr zaYz5T->f*LIwFyjr10JZr}WP&_5ETtzPDpru#&ArHDd%-WXI0YK1nY0dm(~o>|0_a z@b9kx&P&l`?wY?J+}={nKNQlDBr~c?IRjR#x-gQV`mtXiqY0p`X56DOrQTbmqxx$P zjiTw_egy{l82)V**E2Q5K}u!uy`Dn@P{1z6>Xd1Plf4pZE54f4s6T)Q`4Uh)&5AAO zUe^P3|K^5Ey4YhE0T-(Cry8oB+EL`aidXOI6{0w`e}t;T29`lawGpXbQ-lf4T&h6V z*YgRffoz#mSXrgLc(f+!Wj}Bj`n2%rQy(D zC%(6mnF#c1Y0lg8v<71tGLE~bJIm*LIs zL`VI9w%M{;#O>Ad_s?y&tdgel_3kocabCb~_y^HDc|AX`%SoE%CG(fE=qKtUC94Em zA+14De&D^&>@~#KR0bH1N_`<0`cI0}le-W%x9T`knv`F{km}*&W2|?*PcSilt70mK z`PZ*mdhhz5Onl6v24M9Y<2l3x-cjCB3*ZP1V6lh2<3`3K$kC0#>4)V{U~ z3RnanW8RG3mEh&^tcwHPYgS+JG5&@yi9)5c!p5 z=p9{9IPN!tt6o6cdv#?6$dV6pUNoL?4>+;F>WU|X7_sZIp_=x+M%@j|UG&_vl=*SZ$vb*?Q`_}3-essQ&NC)-i;0-GVJGb<`% zw)V_uf2E5>d8CaaXR+Ndp7V~nVo|ZHsJDzbc3LZ6W;*a8G&^{HLK`#_dU`0Fn187? z!MZH&x-K~a4<_`SW2*Q3H5^OuBzIJzo;YmC&ORuhUWo{i+9P558g^sL?EH#sx9k8z z>|^!!S#1Vto~El7b{Y9fXAXOFPpb<}bm;tVc*oVdyuDlDg%`=K4S24$R(;y8t!$W8 zc%6d+D*%Aq0}}oE@IMqX@ip7@_ZX4zGZmL*Lz5ltH!VtN*uMCMRYi7`Ob*^` zg+DgeohBoWo13kj`T;2{KGBoEv<1(uK$}2%G;3l@8loXRaFz{QdHIR`yk2*~nttrF zn^e!QZ&DRkXm;Y8m)IZ_nu3PK1{O=n8Y-IlZ$>Ua-w9vMWb&0Y^laI($%uU3QpHS4 zj|-x{2+}Z;dZvhNf|hNxniLyo=pMc!c7t(=>o`@&s4V`o@yDy|z-J_woyOM9kQF_5 zodLo&n^lihvImZ~JX^xp5IbZ~UYYyFW5?DBKD+bF=WkEmqPkVQG?g#LPs|H*zGAg_ z<_Kj(Tv0#7h8E31^9QMW9C5y+inf0CR4GOKkhFK|74faqF&2aJL?=4j8ZFl>z+OcSY?p! z)|aJMr&B(p$f>=!c!V2!3$?-x*TBdJubAAC8=H^mt4UwZZ$7ee^;<;tNhS7MT|U*H zu+kYi-p=I9?ESeV)w6NdPaZE72akE3u$k7ump>Y8s3ZpL<7(eV9K+5}7!5N|g##^u zvKCO3MH})3!dGCe$sw-^y;A$J;_lzpb$N#_m-uamO}+LfSRnVSfgl?bSSnQAWCLB{ zS6nv=Z?B!sD;sv6)J>mihRN$$1Ls1Vx=s{JV%X3?4IbM8ksHuy!es0=nn$_<<-bSD zP+W@@d~{AXaigWD#f%N z07D9{ftF571wq!B>H>500f?Pi2Bf5w=$0d{cL=t3s)USz<~c?Ln)vqt(}e_Og)*w; z&p!j_gn9Wh(dCa&5Z&xw)~prK1F`MX1~9Zgy~DGgN1%*Hs1WXW>T_{Oi?z|5A;(d5 zUloSwyks>d<6*gCD(i7BI*|P0VJNRm-RbEPt1BAp1Jt_CT|o9@?~K1J7Ot)HAJ-ZKqZ?e{xcB(6M1B}VvVcGyJ_3v)$3$>dr7Vg%1F{XqI~~NWUAJ72paIr$A#Lh> zRvT#W+1_bWjz7aAmYv5#0~p;c5f&8V<$M}F&O*n~c_*JmZ?>Rw)B zYu^ZGpJX?cnQuEft+CifluHxBHq4c4D-a?3d|lVym!Ea7w~U+G7A>#zT`{>{vni&V zTMk%0X6mPFbRYd%7M-pGTMpPwf2n0lo;^unNyh*9T&a0oMHHhDYG7ZR7Xx|A10Vib zXqmS{EFSYGzwXlrJipngQRV4$8PZ^2^mt_QrndG*N|lEHnN;xgs|peH?Wj?Zo2PoXv5Y>LoW}%(}sY`dK$wZupc^C*3a&dX*szo6uZZGEVP%MrW;~(tp1p$o-NXm?JO-`V1DQ>KhgIqg*__0U`oj#`y0^M(fv3j0c2q zbYGln8QXGuzjN#TNtt{*sr_9>tT3f7pVN8C%EjfZ<27(^`p}!tZI8F|KYa`hfSY?T z!~(_=Uq})e#8GK=U{_1mBbmMn22-jx2|y-C6umKgFV}JJ&v|H9FbXie@Wr=JGcX_?hpzHl;V<=^t4`adCCa>TA%hO+Y-{77 zawfmi%p-QRIVNI)!f$2Pk*}49fVp5{C=NYER0W&tNiFgFm4y*+b>wo5gUSK$`z%s6 z6j~M?!z_x^UN*WV;@dPh9vZ_sb$v{MtJSi502yV*Mc{M3t~k$3xuasY_(d}M^85m8 zr-p>t-oH(1MlCd!0E!fl>AEJ8%l6zse*6O#kuuU=)D(10Y8Vo%$@O>Ws8d9Fp*wGh zY4~^S$Ud=qSJR8c8M>9eiQC2FMn5qguITBPQ&E%++3OPwNqni1%9O2>+UjQT(fgdz z4GH1%UzLUi9t2Q6jGGm$*fahC!Rw4KAmxP#RKv>3nBV|pzC^vz>YJQ{tLxfBopPdP z0LF4zu^l+k@KhXD+tLSi8|~y>?P}FCOUn-;Yj>m{HNG!{v+(H9 z9)AX7h+eCI^xqs)c!ih_4H#YVGRAi1Q(?2?sWdHZd^>WZsakbvu5930arI4~bV-Ik z`Ptm{0u~P4Q=J5Y!jH$AWu2=Rt2Z|di|RPsd>DcSsyz;`9%LpV-C}8>Bh5V>SK!?sR)h zPquW10CGHLbVH|TL@J5q&{(NRlBe=y*w~|@(S6wa4AxhXK2S3k`V~@1=OBZ_Y?9s0 z5D?hXEkLwyL!(0JD)vR|gR$REbZxrPfS3Xrxz9x|CV4qCCE_KEy z&*1qpfU8&x1;WIgwA7Pzv(DX-@moj%li!|(&bda2cnGBf8$^<@2gF4*bp+B!5=9V( zDr$Yy!86n;$D`oDdnhWe{Gz*FMmqk!95A+Hx|L20%2_Y+%!l(AZd2!rI34Wt4{!`5 zVtI74)$oBB<)uv;GY!Yw=5DUlGO0pG{l2+^8X?f?37jAY)G<+-H|ci@T6Hk(f-pUO zC_(USRS_%W>&E`)O|D&tRbD3}8}W0m2aKv>ObRI)72}p8GADjakKf41W)>Z!O=C2Ivf^`C3$V*4$MMJnVmZxsVGx zmPt^8z3 z#EN%A+Se+ij|*BCt2nhk_NB9A5sl_de5 z1rMYpiJk>Urcs3q)z&`yQOD4ocd3Zfx06p>)r zZpTOUTvpu*!>sG@qo?Bg(0kzU&`Rd<*^V<+SnU1+>e{xOBon?JWv8{?`-BsNzqqp` zYHElzAe=B3wyoo|L~WgR(F%*A)n2o{r!fL*rYImN;#|r(PJuEH8w+73x(*6pY+kPB zH!I!Dp+wj9GG0tSGKP`_9IYRifYN0Z=lsTcU=bbDAi*vW?wp>jQ`%1y1pDleSOUM@ z*|E!7t2{LjGaR(kR_J_+Y#=t&ZIl~PSq%c)!MWaZRBhZG)W*WksK*cxtAiK#Y4F<0 z7p?6-^nrfjhMTTu$eoWynCp$*f{MSvi;g>IjWIQLB_k@ke1??MTi7AWH|fb&LD)ar z5wAFYBj~Otr~MO*ERx3CnCMZ7Zzg$g*TzD%0j>Kjj%Tz98xEeqG6c2K^#Qft(X(gTs85^D@Gau;6dg z!osAjNy`Fv05;gT`x(}ZarwB3hj#Myc>Z~
5O)#^$Xh8V-wcRmEQRs!Tp12@C^ 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 z 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
+-RabWQwMR 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%0D#l!un^rebIviza;Ph~JLRL10WAD9zmiDf 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 }LBUVFB02*2`gNOnv!i2iIaOhx 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 YR7`X<_oBZ$BI2!wU8O0!=#u#SKbIm?PXGV_ diff --git a/tools/win/stlink/FlashLoader/0x438.stldr b/tools/win/stlink/FlashLoader/0x438.stldr index 8dd027a086865bf8d263707bcdd5e3334495b505..ea7ed37ef55a70ee6ac834e7197852a8da9794d6 100644 GIT binary patch literal 30236 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 XzLrGdY5uS_^T#!qM=U&4B>MjYmh%>V literal 41172 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 I!c)rkf6?!&zW@LL diff --git a/tools/win/stlink/FlashLoader/0x439.stldr b/tools/win/stlink/FlashLoader/0x439.stldr index f64c4b1ff0a4f67612558ed67a2539cedea17b1c..61372ae5b83048501bf372d27f444d436500093f 100644 GIT binary patch literal 30292 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

FnV& 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%0A(4Dn~w7&7|-8%3e-LF?HMIqbQM}@TIpptCN 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�VfE*%ERT(qH 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%0D-LhI{ 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 IdjQ~n0T&blmjD0& literal 0 HcmV?d00001 From f660163a6fa856fcfb246b35b8400d749c1f7840 Mon Sep 17 00:00:00 2001 From: edogaldo Date: Wed, 4 Apr 2018 16:04:42 +0200 Subject: [PATCH 086/373] Fix SCB_AIRCR_PRIGROUP As per Issue #479 --- STM32F1/system/libmaple/include/libmaple/scb.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/system/libmaple/include/libmaple/scb.h b/STM32F1/system/libmaple/include/libmaple/scb.h index 0b01480bf..d58434ca2 100644 --- a/STM32F1/system/libmaple/include/libmaple/scb.h +++ b/STM32F1/system/libmaple/include/libmaple/scb.h @@ -122,7 +122,7 @@ typedef struct scb_reg_map { #define SCB_AIRCR_VECTKEYSTAT (0x5FA << 16) #define SCB_AIRCR_VECTKEY (0x5FA << 16) #define SCB_AIRCR_ENDIANNESS (1U << 15) -#define SCB_AIRCR_PRIGROUP (0x3 << 8) +#define SCB_AIRCR_PRIGROUP (0x7 << 8) #define SCB_AIRCR_SYSRESETREQ (1U << 2) #define SCB_AIRCR_VECTCLRACTIVE (1U << 1) #define SCB_AIRCR_VECTRESET (1U << 0) From 21bdc4ad135b6e6187ce85af0035c69358a78688 Mon Sep 17 00:00:00 2001 From: victorpv Date: Thu, 5 Apr 2018 21:54:05 -0500 Subject: [PATCH 087/373] Update to fix FSMC inclusion in Rx devices The FSMC is only available in high density and XL density devices with more than 4 ports. Basically excluded in the RC/D/E/F/G models, since they dont have enough pins. Page 11 in the Datasheet references this. The table shows what is present, and shows the FSMC is NOT present in Rx MCUs: http://www.st.com/content/ccc/resource/technical/document/datasheet/59/f6/fa/84/20/4e/4c/59/CD00191185.pdf/files/CD00191185.pdf/jcr:content/translations/en.CD00191185.pdf Recent changes to other files highlight this issue during compilation time. The issue was already there, but GPIO E and GPIO F were declared and defined, while they don't actually exist in Rx MCUs, so FSMC was being included for those MCU even though they don't actually have an FSMC device, or at least no external ports to use it. With the recent changes GPIO E and F and correctly excluded from the build, but since FSMC was still included and needs GPIO E and F, it was failing to compile. I.e.: C:/Users/Victor/Documents/Arduino/Hardware/Arduino_STM32/STM32F1/cores/maple/libmaple/fsmc_f1.c:51:19: error: 'GPIOE' undeclared (first use in this function) Since the FSMC is not available (I suspect the silicon is there, but there is no IO pins to use it), the correct solution is to include FSMC only when using an MCU with more than 4 GPIO ports, which is what matches the datasheet. --- STM32F1/system/libmaple/stm32f1/include/series/stm32.h | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/stm32.h b/STM32F1/system/libmaple/stm32f1/include/series/stm32.h index 9386dc313..467d3084f 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/stm32.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/stm32.h @@ -185,12 +185,16 @@ extern "C" { # elif defined(STM32_HIGH_DENSITY) # define STM32_NR_INTERRUPTS 60 # define STM32_TIMER_MASK 0x1FE /* TIMER1--TIMER8 */ -# define STM32_HAVE_FSMC 1 +# if STM32_NR_GPIO_PORTS > 4 +# define STM32_HAVE_FSMC 1 +# endif # define STM32_HAVE_DAC 1 # elif defined(STM32_XL_DENSITY) # define STM32_NR_INTERRUPTS 60 # define STM32_TIMER_MASK 0x7FFE /* TIMER1--TIMER14 */ -# define STM32_HAVE_FSMC 1 +# if STM32_NR_GPIO_PORTS > 4 +# define STM32_HAVE_FSMC 1 +# endif # define STM32_HAVE_DAC 1 # endif From ef2f5b53d7dff51ac3d9ec34769b8b8b395dc2bd Mon Sep 17 00:00:00 2001 From: victorpv Date: Thu, 5 Apr 2018 22:04:28 -0500 Subject: [PATCH 088/373] Need to define STM32_HAVE_FSMC as 0 Forgot to include that. --- STM32F1/system/libmaple/stm32f1/include/series/stm32.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/stm32.h b/STM32F1/system/libmaple/stm32f1/include/series/stm32.h index 467d3084f..134688549 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/stm32.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/stm32.h @@ -187,6 +187,8 @@ extern "C" { # define STM32_TIMER_MASK 0x1FE /* TIMER1--TIMER8 */ # if STM32_NR_GPIO_PORTS > 4 # define STM32_HAVE_FSMC 1 +# else +# define STM32_HAVE_FSMC 0 # endif # define STM32_HAVE_DAC 1 # elif defined(STM32_XL_DENSITY) @@ -194,6 +196,8 @@ extern "C" { # define STM32_TIMER_MASK 0x7FFE /* TIMER1--TIMER14 */ # if STM32_NR_GPIO_PORTS > 4 # define STM32_HAVE_FSMC 1 +# else +# define STM32_HAVE_FSMC 0 # endif # define STM32_HAVE_DAC 1 # endif From 307a0e2472b0e9869f4e7ca22712c861a9c1c031 Mon Sep 17 00:00:00 2001 From: Laurent Haas - F6FVY Date: Mon, 9 Apr 2018 19:16:56 +0200 Subject: [PATCH 089/373] Frequency unit typo (was Mhz instead of MHz) --- STM32F1/boards.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index 75d456219..84ce01d53 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -38,13 +38,13 @@ mapleMini.menu.bootloader_version.bootloader20.upload.maximum_data_size=20480 mapleMini.menu.bootloader_version.bootloader20.upload.altID=2 #-- CPU Clock frequency -mapleMini.menu.cpu_speed.speed_72mhz=72Mhz (Normal) +mapleMini.menu.cpu_speed.speed_72mhz=72MHz (Normal) mapleMini.menu.cpu_speed.speed_72mhz.build.f_cpu=72000000L -mapleMini.menu.cpu_speed.speed_48mhz=48Mhz (Slow - with USB) +mapleMini.menu.cpu_speed.speed_48mhz=48MHz (Slow - with USB) mapleMini.menu.cpu_speed.speed_48mhz.build.f_cpu=48000000L -mapleMini.menu.cpu_speed.speed_128mhz=Overclocked 128Mhz NO USB SERIAL. MANUAL RESET NEEDED TO UPLOAD +mapleMini.menu.cpu_speed.speed_128mhz=Overclocked 128MHz NO USB SERIAL. MANUAL RESET NEEDED TO UPLOAD mapleMini.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations From 463db9b0bfa891ae905c747e8e7040e54ca4599f Mon Sep 17 00:00:00 2001 From: Ken Willmott Date: Tue, 10 Apr 2018 09:55:04 -0400 Subject: [PATCH 090/373] fix PR #487 Implements the needed correction in PR #487, modifies get method with no change to set method. Exor comparison changed to equality comparison for readability. --- STM32F1/libraries/RTClock/src/utility/rtc_util.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/STM32F1/libraries/RTClock/src/utility/rtc_util.c b/STM32F1/libraries/RTClock/src/utility/rtc_util.c index c730ba111..3a49e4250 100644 --- a/STM32F1/libraries/RTClock/src/utility/rtc_util.c +++ b/STM32F1/libraries/RTClock/src/utility/rtc_util.c @@ -168,8 +168,10 @@ uint32 rtc_get_count() { rtc_clear_sync(); rtc_wait_sync(); rtc_wait_finished(); + do { h = RTC->regs->CNTH & 0xffff; l = RTC->regs->CNTL & 0xffff; + } while (h != (RTC->regs->CNTH & 0xffff)); return (h << 16) | l; } @@ -182,10 +184,8 @@ void rtc_set_count(uint32 value) { rtc_wait_sync(); rtc_wait_finished(); rtc_enter_config_mode(); - do { h = RTC->regs->CNTH & 0xffff; l = RTC->regs->CNTL & 0xffff; - } while (h ^ (RTC->regs->CNTH & 0xffff)); rtc_exit_config_mode(); rtc_wait_finished(); } @@ -216,7 +216,7 @@ uint32 rtc_get_divider() { do { h = RTC->regs->DIVH & 0x000f; l = RTC->regs->DIVL & 0xffff; - } while (h ^ (RTC->regs->DIVH & 0x000f)); + } while (h != (RTC->regs->DIVH & 0x000f)); return (h << 16) | l; } From 7374108bd434a7421939977b83e3d9d7de3e5c7a Mon Sep 17 00:00:00 2001 From: Ken Willmott Date: Tue, 10 Apr 2018 10:37:26 -0400 Subject: [PATCH 091/373] fix PR#487 and #488 --- STM32F1/libraries/RTClock/src/utility/rtc_util.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F1/libraries/RTClock/src/utility/rtc_util.c b/STM32F1/libraries/RTClock/src/utility/rtc_util.c index 3a49e4250..3d7a2620a 100644 --- a/STM32F1/libraries/RTClock/src/utility/rtc_util.c +++ b/STM32F1/libraries/RTClock/src/utility/rtc_util.c @@ -169,8 +169,8 @@ uint32 rtc_get_count() { rtc_wait_sync(); rtc_wait_finished(); do { - h = RTC->regs->CNTH & 0xffff; - l = RTC->regs->CNTL & 0xffff; + h = RTC->regs->CNTH & 0xffff; + l = RTC->regs->CNTL & 0xffff; } while (h != (RTC->regs->CNTH & 0xffff)); return (h << 16) | l; } @@ -184,8 +184,8 @@ void rtc_set_count(uint32 value) { rtc_wait_sync(); rtc_wait_finished(); rtc_enter_config_mode(); - h = RTC->regs->CNTH & 0xffff; - l = RTC->regs->CNTL & 0xffff; + RTC->regs->CNTH = (value >> 16) & 0xffff; + RTC->regs->CNTL = value & 0xffff; rtc_exit_config_mode(); rtc_wait_finished(); } From 407df21dfba5474255d7a4e06ffe2574cec561c2 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Thu, 12 Apr 2018 08:29:49 +0200 Subject: [PATCH 092/373] Update timer.h fix for https://github.com/rogerclarkmelbourne/Arduino_STM32/commit/dfb5bd4c30f42fa9cf2a0aef6b7d2a50a594fa97, see issue #412 [https://github.com/rogerclarkmelbourne/Arduino_STM32/issues/412] --- STM32F1/system/libmaple/include/libmaple/timer.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index 76c4165cc..e9a49e9e9 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -842,7 +842,9 @@ static inline void timer_dma_disable_req(timer_dev *dev, uint8 channel) { * @see timer_channel */ static inline void timer_enable_irq(timer_dev *dev, uint8 interrupt) { - *bb_perip(&(dev->regs).adv->SR, interrupt) = 0; // clear interrupt flag + // clear interrupt flag, use different masks for reserved bits + dev->regs->SR = (~BIT(interrupt)) & ( (dev->type==TIMER_ADVANCED) ? 0x1EFF : + ( (dev->type==TIMER_GENERAL) ? 0x1E5F : 0x0001) ); *bb_perip(&(dev->regs).adv->DIER, interrupt) = 1; } From c9a694b779a0c328ea37a402c804ab7bae7a6c85 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Thu, 12 Apr 2018 17:59:03 +1000 Subject: [PATCH 093/373] Revert #491 --- STM32F1/system/libmaple/include/libmaple/timer.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index e9a49e9e9..0c2e02714 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -843,8 +843,7 @@ static inline void timer_dma_disable_req(timer_dev *dev, uint8 channel) { */ static inline void timer_enable_irq(timer_dev *dev, uint8 interrupt) { // clear interrupt flag, use different masks for reserved bits - dev->regs->SR = (~BIT(interrupt)) & ( (dev->type==TIMER_ADVANCED) ? 0x1EFF : - ( (dev->type==TIMER_GENERAL) ? 0x1E5F : 0x0001) ); + *bb_perip(&(dev->regs).adv->SR, interrupt) = 0; // clear interrupt flag *bb_perip(&(dev->regs).adv->DIER, interrupt) = 1; } From f56c37e97e03333a539d9f9b5ca51df994121506 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Thu, 12 Apr 2018 18:17:45 +1000 Subject: [PATCH 094/373] Fix for https://github.com/rogerclarkmelbourne/Arduino_STM32/issues/486 --- STM32F1/cores/maple/Print.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/STM32F1/cores/maple/Print.cpp b/STM32F1/cores/maple/Print.cpp index 0a71cf018..a8aa07d69 100644 --- a/STM32F1/cores/maple/Print.cpp +++ b/STM32F1/cores/maple/Print.cpp @@ -47,12 +47,8 @@ */ size_t Print::write(const char *str) { - size_t n = 0; - while (*str) { - write(*str++); - n++; - } - return n; + if (str == NULL) return 0; + return write((const uint8_t *)str, strlen(str)); } size_t Print::write(const void *buffer, uint32 size) { From 18d1654195c30c3a2ab913574f487c94f3967ffc Mon Sep 17 00:00:00 2001 From: arpruss Date: Thu, 12 Apr 2018 20:45:59 -0500 Subject: [PATCH 095/373] usbcomposite library --- STM32F1/libraries/USBComposite/AbsMouse.cpp | 56 ++ .../libraries/USBComposite/BootKeyboard.cpp | 7 + STM32F1/libraries/USBComposite/Consumer.cpp | 13 + STM32F1/libraries/USBComposite/HIDReports.cpp | 14 + STM32F1/libraries/USBComposite/Joystick.cpp | 118 ++++ STM32F1/libraries/USBComposite/Keyboard.cpp | 258 ++++++++ STM32F1/libraries/USBComposite/LICENSE | 45 ++ STM32F1/libraries/USBComposite/MidiSpecs.h | 151 +++++ STM32F1/libraries/USBComposite/MinSysex.c | 306 +++++++++ STM32F1/libraries/USBComposite/MinSysex.h | 37 ++ STM32F1/libraries/USBComposite/Mouse.cpp | 57 ++ STM32F1/libraries/USBComposite/README.md | 88 +++ .../libraries/USBComposite/USBComposite.cpp | 147 +++++ STM32F1/libraries/USBComposite/USBComposite.h | 64 ++ .../USBComposite/USBCompositeSerial.cpp | 274 ++++++++ .../USBComposite/USBCompositeSerial.h | 40 ++ STM32F1/libraries/USBComposite/USBHID.cpp | 180 ++++++ STM32F1/libraries/USBComposite/USBHID.h | 608 ++++++++++++++++++ STM32F1/libraries/USBComposite/USBMIDI.cpp | 469 ++++++++++++++ STM32F1/libraries/USBComposite/USBMIDI.h | 186 ++++++ .../libraries/USBComposite/USBMassStorage.cpp | 45 ++ .../libraries/USBComposite/USBMassStorage.h | 25 + STM32F1/libraries/USBComposite/USBXBox360.cpp | 173 +++++ STM32F1/libraries/USBComposite/USBXBox360.h | 58 ++ .../examples/BootKeyboard/BootKeyboard.ino | 15 + .../examples/absmouse/absmouse.ino | 25 + .../examples/consumer/consumer.ino | 18 + .../keyboardwithleds/keyboardwithleds.ino | 14 + .../USBComposite/examples/mass/image.h | 67 ++ .../USBComposite/examples/mass/mass.ino | 65 ++ .../USBComposite/examples/midiin/midiin.ino | 27 + .../USBComposite/examples/midiout/midiout.ino | 17 + .../USBComposite/examples/rawhid/rawhid.ino | 24 + .../USBComposite/examples/rawhid/send.py | 26 + .../examples/sdreader/sdreader.ino | 52 ++ .../simplejoystick/simplejoystick.ino | 13 + .../simplekeyboard/simplekeyboard.ino | 13 + .../examples/softjoystick/send.py | 60 ++ .../examples/softjoystick/softjoystick.ino | 47 ++ .../examples/twojoysticks/twojoysticks.ino | 40 ++ .../USBComposite/examples/x360/x360.ino | 15 + STM32F1/libraries/USBComposite/keywords.txt | 89 +++ .../libraries/USBComposite/library.properties | 10 + STM32F1/libraries/USBComposite/usb_generic.c | 531 +++++++++++++++ STM32F1/libraries/USBComposite/usb_generic.h | 60 ++ STM32F1/libraries/USBComposite/usb_hid.c | 578 +++++++++++++++++ STM32F1/libraries/USBComposite/usb_hid.h | 153 +++++ STM32F1/libraries/USBComposite/usb_mass.c | 464 +++++++++++++ STM32F1/libraries/USBComposite/usb_mass.h | 112 ++++ .../USBComposite/usb_mass_internal.h | 12 + STM32F1/libraries/USBComposite/usb_mass_mal.c | 42 ++ STM32F1/libraries/USBComposite/usb_mass_mal.h | 39 ++ .../libraries/USBComposite/usb_midi_device.c | 532 +++++++++++++++ .../libraries/USBComposite/usb_midi_device.h | 189 ++++++ STM32F1/libraries/USBComposite/usb_scsi.c | 333 ++++++++++ STM32F1/libraries/USBComposite/usb_scsi.h | 96 +++ .../libraries/USBComposite/usb_scsi_data.c | 120 ++++ STM32F1/libraries/USBComposite/usb_serial.c | 580 +++++++++++++++++ STM32F1/libraries/USBComposite/usb_serial.h | 157 +++++ STM32F1/libraries/USBComposite/usb_setup.cpp | 61 ++ STM32F1/libraries/USBComposite/usb_x360.c | 486 ++++++++++++++ STM32F1/libraries/USBComposite/usb_x360.h | 75 +++ 62 files changed, 8676 insertions(+) create mode 100644 STM32F1/libraries/USBComposite/AbsMouse.cpp create mode 100644 STM32F1/libraries/USBComposite/BootKeyboard.cpp create mode 100644 STM32F1/libraries/USBComposite/Consumer.cpp create mode 100644 STM32F1/libraries/USBComposite/HIDReports.cpp create mode 100644 STM32F1/libraries/USBComposite/Joystick.cpp create mode 100644 STM32F1/libraries/USBComposite/Keyboard.cpp create mode 100644 STM32F1/libraries/USBComposite/LICENSE create mode 100644 STM32F1/libraries/USBComposite/MidiSpecs.h create mode 100644 STM32F1/libraries/USBComposite/MinSysex.c create mode 100644 STM32F1/libraries/USBComposite/MinSysex.h create mode 100644 STM32F1/libraries/USBComposite/Mouse.cpp create mode 100644 STM32F1/libraries/USBComposite/README.md create mode 100644 STM32F1/libraries/USBComposite/USBComposite.cpp create mode 100644 STM32F1/libraries/USBComposite/USBComposite.h create mode 100644 STM32F1/libraries/USBComposite/USBCompositeSerial.cpp create mode 100644 STM32F1/libraries/USBComposite/USBCompositeSerial.h create mode 100644 STM32F1/libraries/USBComposite/USBHID.cpp create mode 100644 STM32F1/libraries/USBComposite/USBHID.h create mode 100644 STM32F1/libraries/USBComposite/USBMIDI.cpp create mode 100644 STM32F1/libraries/USBComposite/USBMIDI.h create mode 100644 STM32F1/libraries/USBComposite/USBMassStorage.cpp create mode 100644 STM32F1/libraries/USBComposite/USBMassStorage.h create mode 100644 STM32F1/libraries/USBComposite/USBXBox360.cpp create mode 100644 STM32F1/libraries/USBComposite/USBXBox360.h create mode 100644 STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino create mode 100644 STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino create mode 100644 STM32F1/libraries/USBComposite/examples/consumer/consumer.ino create mode 100644 STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino create mode 100644 STM32F1/libraries/USBComposite/examples/mass/image.h create mode 100644 STM32F1/libraries/USBComposite/examples/mass/mass.ino create mode 100644 STM32F1/libraries/USBComposite/examples/midiin/midiin.ino create mode 100644 STM32F1/libraries/USBComposite/examples/midiout/midiout.ino create mode 100644 STM32F1/libraries/USBComposite/examples/rawhid/rawhid.ino create mode 100644 STM32F1/libraries/USBComposite/examples/rawhid/send.py create mode 100644 STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino create mode 100644 STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino create mode 100644 STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino create mode 100644 STM32F1/libraries/USBComposite/examples/softjoystick/send.py create mode 100644 STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino create mode 100644 STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino create mode 100644 STM32F1/libraries/USBComposite/examples/x360/x360.ino create mode 100644 STM32F1/libraries/USBComposite/keywords.txt create mode 100644 STM32F1/libraries/USBComposite/library.properties create mode 100644 STM32F1/libraries/USBComposite/usb_generic.c create mode 100644 STM32F1/libraries/USBComposite/usb_generic.h create mode 100644 STM32F1/libraries/USBComposite/usb_hid.c create mode 100644 STM32F1/libraries/USBComposite/usb_hid.h create mode 100644 STM32F1/libraries/USBComposite/usb_mass.c create mode 100644 STM32F1/libraries/USBComposite/usb_mass.h create mode 100644 STM32F1/libraries/USBComposite/usb_mass_internal.h create mode 100644 STM32F1/libraries/USBComposite/usb_mass_mal.c create mode 100644 STM32F1/libraries/USBComposite/usb_mass_mal.h create mode 100644 STM32F1/libraries/USBComposite/usb_midi_device.c create mode 100644 STM32F1/libraries/USBComposite/usb_midi_device.h create mode 100644 STM32F1/libraries/USBComposite/usb_scsi.c create mode 100644 STM32F1/libraries/USBComposite/usb_scsi.h create mode 100644 STM32F1/libraries/USBComposite/usb_scsi_data.c create mode 100644 STM32F1/libraries/USBComposite/usb_serial.c create mode 100644 STM32F1/libraries/USBComposite/usb_serial.h create mode 100644 STM32F1/libraries/USBComposite/usb_setup.cpp create mode 100644 STM32F1/libraries/USBComposite/usb_x360.c create mode 100644 STM32F1/libraries/USBComposite/usb_x360.h diff --git a/STM32F1/libraries/USBComposite/AbsMouse.cpp b/STM32F1/libraries/USBComposite/AbsMouse.cpp new file mode 100644 index 000000000..91a27d084 --- /dev/null +++ b/STM32F1/libraries/USBComposite/AbsMouse.cpp @@ -0,0 +1,56 @@ +#include "USBHID.h" + +//================================================================================ +//================================================================================ +// Mouse + +void HIDAbsMouse::begin(void){ +} + +void HIDAbsMouse::end(void){ +} + +void HIDAbsMouse::click(uint8_t b) +{ + report.wheel = 0; + report.buttons = b; + sendReport(); + report.buttons = 0; + sendReport(); +} + +void HIDAbsMouse::move(int16 x, int16 y, int8 wheel) +{ + report.x = x; + report.y = y; + report.wheel = wheel; + + sendReport(); +} + +void HIDAbsMouse::buttons(uint8_t b) +{ + if (b != report.buttons) + { + report.wheel = 0; + report.buttons = b; + sendReport(); + } +} + +void HIDAbsMouse::press(uint8_t b) +{ + buttons(report.buttons | b); +} + +void HIDAbsMouse::release(uint8_t b) +{ + buttons(report.buttons & ~b); +} + +bool HIDAbsMouse::isPressed(uint8_t b) +{ + if ((b & report.buttons) != 0) + return true; + return false; +} diff --git a/STM32F1/libraries/USBComposite/BootKeyboard.cpp b/STM32F1/libraries/USBComposite/BootKeyboard.cpp new file mode 100644 index 000000000..195f4ace3 --- /dev/null +++ b/STM32F1/libraries/USBComposite/BootKeyboard.cpp @@ -0,0 +1,7 @@ +#include "USBHID.h" + +//================================================================================ +//================================================================================ +// Keyboard + +HIDKeyboard BootKeyboard(0); diff --git a/STM32F1/libraries/USBComposite/Consumer.cpp b/STM32F1/libraries/USBComposite/Consumer.cpp new file mode 100644 index 000000000..6c896b0d9 --- /dev/null +++ b/STM32F1/libraries/USBComposite/Consumer.cpp @@ -0,0 +1,13 @@ +#include "USBHID.h" + +void HIDConsumer::begin(void) {} +void HIDConsumer::end(void) {} +void HIDConsumer::press(uint16_t button) { + report.button = button; + sendReport(); +} + +void HIDConsumer::release() { + report.button = 0; + sendReport(); +} diff --git a/STM32F1/libraries/USBComposite/HIDReports.cpp b/STM32F1/libraries/USBComposite/HIDReports.cpp new file mode 100644 index 000000000..bd00b5410 --- /dev/null +++ b/STM32F1/libraries/USBComposite/HIDReports.cpp @@ -0,0 +1,14 @@ +#include "USBHID.h" + +#define REPORT(name, ...) \ + static uint8_t raw_ ## name[] = { __VA_ARGS__ }; \ + static const HIDReportDescriptor desc_ ## name = { raw_ ##name, sizeof(raw_ ##name) }; \ + const HIDReportDescriptor* hidReport ## name = & desc_ ## name; + +REPORT(KeyboardMouseJoystick, HID_MOUSE_REPORT_DESCRIPTOR(), HID_KEYBOARD_REPORT_DESCRIPTOR(), HID_JOYSTICK_REPORT_DESCRIPTOR()); +REPORT(KeyboardMouse, HID_MOUSE_REPORT_DESCRIPTOR(), HID_KEYBOARD_REPORT_DESCRIPTOR()); +REPORT(Keyboard, HID_KEYBOARD_REPORT_DESCRIPTOR()); +REPORT(Mouse, HID_MOUSE_REPORT_DESCRIPTOR()); +REPORT(KeyboardJoystick, HID_KEYBOARD_REPORT_DESCRIPTOR(), HID_JOYSTICK_REPORT_DESCRIPTOR()); +REPORT(Joystick, HID_JOYSTICK_REPORT_DESCRIPTOR()); +REPORT(BootKeyboard, HID_BOOT_KEYBOARD_REPORT_DESCRIPTOR()); diff --git a/STM32F1/libraries/USBComposite/Joystick.cpp b/STM32F1/libraries/USBComposite/Joystick.cpp new file mode 100644 index 000000000..969cac5c5 --- /dev/null +++ b/STM32F1/libraries/USBComposite/Joystick.cpp @@ -0,0 +1,118 @@ +#include "USBHID.h" + +// This code requires gcc on low-endian devices. + +//================================================================================ +//================================================================================ +// Joystick + +void HIDJoystick::begin(void){ +} + +void HIDJoystick::end(void){ +} + +void HIDJoystick::setManualReportMode(bool mode) { + manualReport = mode; +} + +bool HIDJoystick::getManualReportMode() { + return manualReport; +} + +void HIDJoystick::safeSendReport() { + if (!manualReport) { + sendReport(); + } +} + +void HIDJoystick::button(uint8_t button, bool val){ + uint32_t mask = ((uint32_t)1 << (button-1)); + + if (val) { + joyReport.buttons |= mask; + } else { + joyReport.buttons &= ~mask; + } + + safeSendReport(); +} + +void HIDJoystick::X(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.x = val; + + safeSendReport(); +} + +void HIDJoystick::Y(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.y = val; + + safeSendReport(); +} + +void HIDJoystick::position(uint16_t x, uint16_t y){ + if (x > 1023) x = 1023; + if (y > 1023) y = 1023; + joyReport.x = x; + joyReport.y = y; + + safeSendReport(); +} + +void HIDJoystick::Xrotate(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.rx = val; + + safeSendReport(); +} + +void HIDJoystick::Yrotate(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.ry = val; + + safeSendReport(); +} + +void HIDJoystick::sliderLeft(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.sliderLeft = val; + + safeSendReport(); +} + +void HIDJoystick::sliderRight(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.sliderRight = val; + + safeSendReport(); +} + +void HIDJoystick::slider(uint16_t val){ + if (val > 1023) val = 1023; + joyReport.sliderLeft = val; + joyReport.sliderRight = val; + + safeSendReport(); +} + +void HIDJoystick::hat(int16_t dir){ + uint8_t val; + if (dir < 0) val = 15; + else if (dir < 23) val = 0; + else if (dir < 68) val = 1; + else if (dir < 113) val = 2; + else if (dir < 158) val = 3; + else if (dir < 203) val = 4; + else if (dir < 245) val = 5; + else if (dir < 293) val = 6; + else if (dir < 338) val = 7; + else val = 15; + + joyReport.hat = val; + + safeSendReport(); +} + +HIDJoystick Joystick; diff --git a/STM32F1/libraries/USBComposite/Keyboard.cpp b/STM32F1/libraries/USBComposite/Keyboard.cpp new file mode 100644 index 000000000..a658cc5db --- /dev/null +++ b/STM32F1/libraries/USBComposite/Keyboard.cpp @@ -0,0 +1,258 @@ +#include "USBHID.h" +#include + +//================================================================================ +//================================================================================ +// Keyboard + +#define SHIFT 0x80 +static const uint8_t ascii_to_hid[128] = +{ + 0x00, // NUL + 0x00, // SOH + 0x00, // STX + 0x00, // ETX + 0x00, // EOT + 0x00, // ENQ + 0x00, // ACK + 0x00, // BEL + 0x2a, // BS Backspace + 0x2b, // TAB Tab + 0x28, // LF Enter + 0x00, // VT + 0x00, // FF + 0x00, // CR + 0x00, // SO + 0x00, // SI + 0x00, // DEL + 0x00, // DC1 + 0x00, // DC2 + 0x00, // DC3 + 0x00, // DC4 + 0x00, // NAK + 0x00, // SYN + 0x00, // ETB + 0x00, // CAN + 0x00, // EM + 0x00, // SUB + 0x00, // ESC + 0x00, // FS + 0x00, // GS + 0x00, // RS + 0x00, // US + + 0x2c, // ' ' + 0x1e|SHIFT, // ! + 0x34|SHIFT, // " + 0x20|SHIFT, // # + 0x21|SHIFT, // $ + 0x22|SHIFT, // % + 0x24|SHIFT, // & + 0x34, // ' + 0x26|SHIFT, // ( + 0x27|SHIFT, // ) + 0x25|SHIFT, // * + 0x2e|SHIFT, // + + 0x36, // , + 0x2d, // - + 0x37, // . + 0x38, // / + 0x27, // 0 + 0x1e, // 1 + 0x1f, // 2 + 0x20, // 3 + 0x21, // 4 + 0x22, // 5 + 0x23, // 6 + 0x24, // 7 + 0x25, // 8 + 0x26, // 9 + 0x33|SHIFT, // : + 0x33, // ; + 0x36|SHIFT, // < + 0x2e, // = + 0x37|SHIFT, // > + 0x38|SHIFT, // ? + 0x1f|SHIFT, // @ + 0x04|SHIFT, // A + 0x05|SHIFT, // B + 0x06|SHIFT, // C + 0x07|SHIFT, // D + 0x08|SHIFT, // E + 0x09|SHIFT, // F + 0x0a|SHIFT, // G + 0x0b|SHIFT, // H + 0x0c|SHIFT, // I + 0x0d|SHIFT, // J + 0x0e|SHIFT, // K + 0x0f|SHIFT, // L + 0x10|SHIFT, // M + 0x11|SHIFT, // N + 0x12|SHIFT, // O + 0x13|SHIFT, // P + 0x14|SHIFT, // Q + 0x15|SHIFT, // R + 0x16|SHIFT, // S + 0x17|SHIFT, // T + 0x18|SHIFT, // U + 0x19|SHIFT, // V + 0x1a|SHIFT, // W + 0x1b|SHIFT, // X + 0x1c|SHIFT, // Y + 0x1d|SHIFT, // Z + 0x2f, // [ + 0x31, // bslash + 0x30, // ] + 0x23|SHIFT, // ^ + 0x2d|SHIFT, // _ + 0x35, // ` + 0x04, // a + 0x05, // b + 0x06, // c + 0x07, // d + 0x08, // e + 0x09, // f + 0x0a, // g + 0x0b, // h + 0x0c, // i + 0x0d, // j + 0x0e, // k + 0x0f, // l + 0x10, // m + 0x11, // n + 0x12, // o + 0x13, // p + 0x14, // q + 0x15, // r + 0x16, // s + 0x17, // t + 0x18, // u + 0x19, // v + 0x1a, // w + 0x1b, // x + 0x1c, // y + 0x1d, // z + 0x2f|SHIFT, // + 0x31|SHIFT, // | + 0x30|SHIFT, // } + 0x35|SHIFT, // ~ + 0 // DEL +}; + +void HIDKeyboard::begin(void){ + USBHID.addOutputBuffer(&ledData); +} + +void HIDKeyboard::end(void) { +} + +// 136: non-printing key +// shift -> 0x02 +// modifiers: 128 --> bit shift + +uint8_t HIDKeyboard::getKeyCode(uint8_t k, uint8_t* modifiersP) +{ + *modifiersP = 0; + + if (adjustForHostCapsLock && (getLEDs() & 0x02)) { // capslock is down on host OS, so host will reverse + if ('a' <= k && k <= 'z') + k += 'A'-'a'; + else if ('A' <= k && k <= 'Z') + k += 'a'-'A'; + } + + if (k < 0x80) { + k = ascii_to_hid[k]; + if (k & SHIFT) { + k &= 0x7f; + *modifiersP = 0x02; + } + return k; + } + if (k >= 0x88) { // non-printing key, Arduino format + return k - 0x88; + } + else { // shift key + *modifiersP = 1<<(k-0x80); + return 0; + } +} + +size_t HIDKeyboard::press(uint8_t k) { + uint8_t modifiers; + + k = getKeyCode(k, &modifiers); + + if (k == 0) { + if (modifiers == 0) { + return 0; + } + } + else { + for (unsigned i = 0; i. + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS +BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN +ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/MidiSpecs.h b/STM32F1/libraries/USBComposite/MidiSpecs.h new file mode 100644 index 000000000..6d2acbe8c --- /dev/null +++ b/STM32F1/libraries/USBComposite/MidiSpecs.h @@ -0,0 +1,151 @@ +/*--------------------------------------------------------------------------MidiSpecs.h + * + * These defines are based on specs created by the USB and MMA standards organizations. + * There are not a lot of other ways to code them so licensing this is rather ludicrous. + * However, in order to be able to embed this in client projects, and avoid the stupidity + * of enforced open everything I will declare the following about this file. + * + * Copyright (c) 2011 Donald Delmar Davis, Suspect Devices + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this + * software and associated documentation files (the "Software"), to deal in the Software + * without restriction, including without limitation the rights to use, copy, modify, + * merge, publish, distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be included in all copies + * or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A + * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +/* + * USB midi commands from + * MIDI10.pdf "Universal Serial Bus Device Class Definition for MIDI Devices" + * REV 1. (1999) + * http://www.usb.org/developers/devclass_docs/midi10.pdf + * + */ + +#ifndef __LETS_MIDI_SPECS_H__ +#define __LETS_MIDI_SPECS_H__ +#include +#include +// rework this for the different architectures.... +#if defined(__GNUC__) +typedef struct +{ + unsigned cin : 4; // this is the low nibble. + unsigned cable : 4; +// uint8_t cin; + uint8_t midi0; + uint8_t midi1; + uint8_t midi2; +} __attribute__ ((__packed__)) MIDI_EVENT_PACKET_t ; +#else +typedef struct // may need to be adjusted for other compilers and bitfield order... +{ + unsigned cable : 4; + unsigned cin : 4; + uint8_t midi0; + uint8_t midi1; + uint8_t midi2; +} MIDI_EVENT_PACKET_t ; +#endif + + +#define CIN_MISC_FUNCTION 0x00 /* Reserved for future extension. */ +#define CIN_CABLE_EVENT 0x01 /* Reserved for future extension. */ +#define CIN_2BYTE_SYS_COMMON 0x02 /* 2Bytes -- MTC, SongSelect, etc. */ +#define CIN_3BYTE_SYS_COMMON 0x03 /* 3Bytes -- SPP, etc. */ +#define CIN_SYSEX 0x04 /* 3Bytes */ +#define CIN_SYSEX_ENDS_IN_1 0x05 /* 1Bytes */ +#define CIN_SYSEX_ENDS_IN_2 0x06 /* 2Bytes */ +#define CIN_SYSEX_ENDS_IN_3 0x07 /* 3Bytes */ +#define CIN_NOTE_OFF 0x08 /* 3Bytes */ +#define CIN_NOTE_ON 0x09 /* 3Bytes */ +#define CIN_AFTER_TOUCH 0x0A /* 3Bytes */ +#define CIN_CONTROL_CHANGE 0x0B /* 3Bytes */ +#define CIN_PROGRAM_CHANGE 0x0C /* 2Bytes */ +#define CIN_CHANNEL_PRESSURE 0x0D /* 2Bytes */ +#define CIN_PITCH_WHEEL 0x0E /* 3Bytes */ +#define CIN_1BYTE 0x0F /* 1Bytes */ +//#define CIN_IS_SYSEX(cin) ((cin == CIN_SYSEX)||(cin == CIN_SYSEX_ENDS_IN_1)||(cin == CIN_SYSEX_ENDS_IN_2)||(cin == CIN_SYSEX_ENDS_IN_3)) +#define CIN_IS_SYSEX(cin) ( ((cin) & ~(0x08)) && ((cin) &0x04) ) + +/* + * MIDI V1 message definitions these are from the MMA document + * http://www.midi.org/techspecs/midimessages.php + */ +#define MIDIv1_BAUD_RATE 31250 + +/* + * parse midi (v1) message macros + */ +#define MIDIv1_IS_STATUS(b) ((b) & 0x80) +#define MIDIv1_IS_VOICE(b) ((b) <= 0xEF) +#define MIDIv1_VOICE_COMMAND(b) ((b) & 0xF0) +#define MIDIv1_VOICE_CHANNEL(b) ((b) & 0x0F) +#define MIDIv1_IS_SYSCOMMON(b) (((b) >= 0xF0) & ((b) < 0xF8)) +#define MIDIv1_IS_REALTIME(b) ((b) >= 0xF8) + +/* + * Voice category messages + */ +#define MIDIv1_NOTE_OFF 0x80 /* 2 bytes data -- CIN_NOTE_OFF */ +#define MIDIv1_NOTE_ON 0x90 /* 2 bytes data -- CIN_NOTE_ON */ +#define MIDIv1_AFTER_TOUCH 0xA0 /* 2 bytes data -- CIN_AFTER_TOUCH */ +#define MIDIv1_CONTROL_CHANGE 0xB0 /* 2 bytes data -- CIN_CONTROL_CHANGE */ +#define MIDIv1_PROGRAM_CHANGE 0xC0 /* 1 byte data -- CIN_PROGRAM_CHANGE */ +#define MIDIv1_CHANNEL_PRESSURE 0xD0 /* 1 byte data -- CIN_CHANNEL_PRESSURE */ +#define MIDIv1_PITCH_WHEEL 0xE0 /* 2 bytes data -- CIN_PITCH_WHEEL */ + +/* + * System common category messages + */ +#define MIDIv1_SYSEX_START 0xF0 +#define MIDIv1_SYSEX_END 0xF7 +#define MIDIv1_MTC_QUARTER_FRAME 0xF1 /* 1 byte data -- CIN_2BYTE_SYS_COMMON */ +#define MIDIv1_SONG_POSITION_PTR 0xF2 /* 2 bytes data -- CIN_3BYTE_SYS_COMMON */ +#define MIDIv1_SONG_SELECT 0xF3 /* 1 byte data -- CIN_2BYTE_SYS_COMMON */ +#define MIDIv1_TUNE_REQUEST 0xF6 /* no data -- CIN_1BYTE */ + +/* + * Realtime category messages, can be sent anytime + */ +#define MIDIv1_CLOCK 0xF8 /* no data -- CIN_1BYTE */ +#define MIDIv1_TICK 0xF9 /* no data -- CIN_1BYTE */ +#define MIDIv1_START 0xFA /* no data -- CIN_1BYTE */ +#define MIDIv1_CONTINUE 0xFB /* no data -- CIN_1BYTE */ +#define MIDIv1_STOP 0xFC /* no data -- CIN_1BYTE */ +#define MIDIv1_ACTIVE_SENSE 0xFE /* no data -- CIN_1BYTE */ +#define MIDIv1_RESET 0xFF /* no data -- CIN_1BYTE */ + +/* + * sysex universal id's + */ +#define MIDIv1_UNIVERSAL_REALTIME_ID 0x7F +#define MIDIv1_UNIVERSAL_NON_REALTIME_ID 0x7E +#define MIDIv1_UNIVERSAL_ALL_CHANNELS 0x7F +/* + * Susbset of universal sysex (general info request) + * As described http://www.blitter.com/~russtopia/MIDI/~jglatt/tech/midispec.htm + */ +#define USYSEX_NON_REAL_TIME 0x7E +#define USYSEX_REAL_TIME 0x7F +#define USYSEX_ALL_CHANNELS 0x7F +#define USYSEX_GENERAL_INFO 0x06 +#define USYSEX_GI_ID_REQUEST 0x01 +#define USYSEX_GI_ID_RESPONSE 0x02 + + +#endif + + diff --git a/STM32F1/libraries/USBComposite/MinSysex.c b/STM32F1/libraries/USBComposite/MinSysex.c new file mode 100644 index 000000000..f9a54d36f --- /dev/null +++ b/STM32F1/libraries/USBComposite/MinSysex.c @@ -0,0 +1,306 @@ +// +// MinSysex.c +// LibMaple4Midi +// +// Created by Donald D Davis on 4/11/13. +// Copyright (c) 2013 Suspect Devices. All rights reserved. +// Modified BSD Liscense +/* + 0xF0 SysEx + 0x7E Non-Realtime + 0x7F The SysEx channel. Could be from 0x00 to 0x7F. + Here we set it to "disregard channel". + 0x06 Sub-ID -- General Information + 0x01 Sub-ID2 -- Identity Request + 0xF7 End of SysEx +---- response + 0xF0 SysEx + 0x7E Non-Realtime + 0x7F The SysEx channel. Could be from 0x00 to 0x7F. + Here we set it to "disregard channel". + 0x06 Sub-ID -- General Information + 0x02 Sub-ID2 -- Identity Reply + 0xID Manufacturer's ID + 0xf1 The f1 and f2 bytes make up the family code. Each + 0xf2 manufacturer assigns different family codes to his products. + 0xp1 The p1 and p2 bytes make up the model number. Each + 0xp2 manufacturer assigns different model numbers to his products. + 0xv1 The v1, v2, v3 and v4 bytes make up the version number. + 0xv2 + 0xv3 + 0xv4 + 0xF7 End of SysEx +*/ + +#define USB_MIDI +#ifdef USB_MIDI + +// change this to packets +#define STANDARD_ID_RESPONSE_LENGTH 7 + +#include "usb_midi_device.h" +#include +#include +#include +//#include + + +#define MAX_SYSEX_SIZE 256 + +/********************************* ACHTUNG! ignores usbmidi cable ********************************/ +/*const MIDI_EVENT_PACKET_t standardIDResponse[]={ + { DEFAULT_MIDI_CABLE, + CIN_SYSEX, + MIDIv1_SYSEX_START, + USYSEX_NON_REAL_TIME, + USYSEX_ALL_CHANNELS}, + { DEFAULT_MIDI_CABLE, + CIN_SYSEX, + USYSEX_GENERAL_INFO, + USYSEX_GI_ID_RESPONSE, + LEAFLABS_MMA_VENDOR_1}, + { DEFAULT_MIDI_CABLE, + CIN_SYSEX, + LEAFLABS_MMA_VENDOR_2, // extended ID + LEAFLABS_MMA_VENDOR_3, // extended ID + 1}, // family #1 + { DEFAULT_MIDI_CABLE, + CIN_SYSEX, + 2, // family #2 + 1, // part #1 + 2}, // part #2 + { DEFAULT_MIDI_CABLE, + CIN_SYSEX, + 0, // version 1 + 0, // version 2 + 1}, // version 3 + { DEFAULT_MIDI_CABLE, + CIN_SYSEX_ENDS_IN_2, + '!', // lgl compatible + MIDIv1_SYSEX_END, + 0} +}; +*/ +const uint8 standardIDResponse[]={ + CIN_SYSEX, + MIDIv1_SYSEX_START, + USYSEX_NON_REAL_TIME, + USYSEX_ALL_CHANNELS, + CIN_SYSEX, + USYSEX_GENERAL_INFO, + USYSEX_GI_ID_RESPONSE, + LEAFLABS_MMA_VENDOR_1, + CIN_SYSEX, + LEAFLABS_MMA_VENDOR_2, // extended ID + LEAFLABS_MMA_VENDOR_3, // extended ID + 1, // family #1 + CIN_SYSEX, + 2, // family #2 + 1, // part #1 + 2, // part #2 + CIN_SYSEX, + 0, // version 1 + 0, // version 2 + 1, // version 3 + CIN_SYSEX_ENDS_IN_2, + '!', // lgl compatible + MIDIv1_SYSEX_END, + 0 +}; +//#define STANDARD_ID_RESPONSE_LENGTH (sizeof(standardIDResponse)) + +typedef enum {NOT_IN_SYSEX=0,COULD_BE_MY_SYSEX,YUP_ITS_MY_SYSEX,ITS_NOT_MY_SYSEX} sysexStates; +volatile uint8 sysexBuffer[MAX_SYSEX_SIZE]; +volatile sysexStates sysexState; +volatile int sysexFinger=0; + +/* + 0xF0 SysEx + 0x?? LEAFLABS_MMA_VENDOR_1 + 0x?? LEAFLABS_MMA_VENDOR_2 + + 0x?? LEAFLABS_MMA_VENDOR_3 + 0x10 LGL_DEVICE_NUMBER + 0xLE CMD: REBOOT + + 0xf7 EOSysEx +*/ +#define STACK_TOP 0x20000800 +#define EXC_RETURN 0xFFFFFFF9 +#define DEFAULT_CPSR 0x61000000 +#define RESET_DELAY 100000 +#if 0 +static void wait_reset(void) { + delay_us(RESET_DELAY); + nvic_sys_reset(); +} +#endif + +/* -----------------------------------------------------------------------------dealWithItQuickly() + * Note: at this point we have established that the sysex belongs to us. + * So we need to respond to any generic requests like information requests. + * We also need to handle requests which are meant for us. At the moment this is just the + * reset request. + * + */ +void dealWithItQuickly(){ + switch (sysexBuffer[1]) { + case USYSEX_NON_REAL_TIME: + switch (sysexBuffer[3]) { + case USYSEX_GENERAL_INFO: + if (sysexBuffer[4]==USYSEX_GI_ID_REQUEST) { + usb_midi_tx((uint32 *) standardIDResponse, STANDARD_ID_RESPONSE_LENGTH); + } + } + case USYSEX_REAL_TIME: + break; +#if 0 + case LEAFLABS_MMA_VENDOR_1: + if (sysexBuffer[5]==LGL_RESET_CMD) { + uintptr_t target = (uintptr_t)wait_reset | 0x1; + asm volatile("mov r0, %[stack_top] \n\t" // Reset stack + "mov sp, r0 \n\t" + "mov r0, #1 \n\t" + "mov r1, %[target_addr] \n\t" + "mov r2, %[cpsr] \n\t" + "push {r2} \n\t" // Fake xPSR + "push {r1} \n\t" // PC target addr + "push {r0} \n\t" // Fake LR + "push {r0} \n\t" // Fake R12 + "push {r0} \n\t" // Fake R3 + "push {r0} \n\t" // Fake R2 + "push {r0} \n\t" // Fake R1 + "push {r0} \n\t" // Fake R0 + "mov lr, %[exc_return] \n\t" + "bx lr" + : + : [stack_top] "r" (STACK_TOP), + [target_addr] "r" (target), + [exc_return] "r" (EXC_RETURN), + [cpsr] "r" (DEFAULT_CPSR) + : "r0", "r1", "r2"); + /* Can't happen. */ + ASSERT_FAULT(0); + + } +#endif + default: + break; + } + ;//turn the led on? +} + +/* -----------------------------------------------------------------------------LglSysexHandler() + * The idea here is to identify which Sysex's belong to us and deal with them. + */ +void LglSysexHandler(uint32 *midiBufferRx, uint32 *rx_offset, uint32 *n_unread_packets) { + MIDI_EVENT_PACKET_t * midiPackets = (MIDI_EVENT_PACKET_t *) (midiBufferRx+(*rx_offset)); + uint8 nPackets=((*n_unread_packets)-(*rx_offset)); + int cPacket; + uint8 soPackets=0; + /********************************* ACHTUNG! ignores usbmidi cable ********************************/ + MIDI_EVENT_PACKET_t *packet; + for (cPacket=0;cPacketcin)) { + continue; + } // else { + if (!soPackets) { + soPackets=cPacket*4; + } + if ((sysexState==YUP_ITS_MY_SYSEX) && ((sysexFinger+3)>=MAX_SYSEX_SIZE)){ + sysexState=ITS_NOT_MY_SYSEX; //eisenhower policy. Even if its mine I cant deal with it. + } + switch (packet->cin) { + case CIN_SYSEX: + switch (sysexState) { + case NOT_IN_SYSEX : // new sysex. + sysexFinger=0; + if (packet->midi0 == MIDIv1_SYSEX_START) { + if (packet->midi1==USYSEX_REAL_TIME + ||packet->midi1==USYSEX_NON_REAL_TIME) { + if ((packet->midi2==myMidiChannel) + ||(packet->midi2==USYSEX_ALL_CHANNELS) + ) { + sysexState=YUP_ITS_MY_SYSEX; + sysexBuffer[sysexFinger++]=MIDIv1_SYSEX_START; + sysexBuffer[sysexFinger++]=packet->midi1; + sysexBuffer[sysexFinger++]=packet->midi2; + break; + } + } else if ((packet->midi1==myMidiID[0]) + && (packet->midi2==myMidiID[1]) + ){ + sysexState=COULD_BE_MY_SYSEX; + sysexBuffer[sysexFinger++]=MIDIv1_SYSEX_START; + sysexBuffer[sysexFinger++]=packet->midi1; + sysexBuffer[sysexFinger++]=packet->midi2; + break; + } + } + break; + + case COULD_BE_MY_SYSEX: + if (packet->midi0==myMidiID[2]) { + sysexState=YUP_ITS_MY_SYSEX; + sysexBuffer[sysexFinger++]=packet->midi0; + sysexBuffer[sysexFinger++]=packet->midi1; + sysexBuffer[sysexFinger++]=packet->midi2; + } else { + sysexState=ITS_NOT_MY_SYSEX; + sysexFinger=0; + } + break; + default: + break; + + } + + break; + case CIN_SYSEX_ENDS_IN_1: + case CIN_SYSEX_ENDS_IN_2: + case CIN_SYSEX_ENDS_IN_3: + sysexBuffer[sysexFinger++]=packet->midi0; + sysexBuffer[sysexFinger++]=packet->midi1; + sysexBuffer[sysexFinger++]=packet->midi2; + if (sysexState==YUP_ITS_MY_SYSEX) { + if(cPacket>=(int32)(*n_unread_packets)){ + *n_unread_packets = soPackets; + *rx_offset = soPackets; + } else { + uint8 c = cPacket; + uint32 *s; + uint32 *d = midiBufferRx + soPackets; + for (s = midiBufferRx+c; + ((*n_unread_packets) && (s <= midiBufferRx+(USB_MIDI_RX_EPSIZE/4))); + d++,s++ + ) { + (*d)=(*s); + (*n_unread_packets)--; + (*rx_offset)++; + + } + // we need to reset the for loop variables to re process remaining data. + nPackets=((*n_unread_packets)-(*rx_offset)); + cPacket=(*rx_offset); + } + dealWithItQuickly(); + + } + sysexFinger=0; + sysexState=NOT_IN_SYSEX; + + break; + default: + return; + } + //} + + + + } + // its our sysex and we will cry if we want to + return; +} + +#endif diff --git a/STM32F1/libraries/USBComposite/MinSysex.h b/STM32F1/libraries/USBComposite/MinSysex.h new file mode 100644 index 000000000..958eded43 --- /dev/null +++ b/STM32F1/libraries/USBComposite/MinSysex.h @@ -0,0 +1,37 @@ +// +// lgl_min_sysex.h +// LibMaple4Midi +// +// Created by Donald D Davis on 4/11/13. +// Copyright (c) 2013 Suspect Devices. All rights reserved. +// + +#ifndef __LGL_MIN_SYSEX_H__ +#define __LGL_MIN_SYSEX_H__ 1 + + +#include "MidiSpecs.h" +//#include "LGL.h" + +#define LEAFLABS_MMA_VENDOR_1 0x7D +#define LEAFLABS_MMA_VENDOR_2 0x1E +#define LEAFLABS_MMA_VENDOR_3 0x4F + +// move to LGL.h +#define LGL_RESET_CMD 0x1e + +#define DEFAULT_MIDI_CHANNEL 0x0A +#define DEFAULT_MIDI_DEVICE 0x0A +#define DEFAULT_MIDI_CABLE 0x00 + +// eventually all of this should be in a place for settings which can be written to flash. +extern volatile uint8 myMidiChannel; +extern volatile uint8 myMidiDevice; +extern volatile uint8 myMidiCable; +extern volatile uint8 myMidiID[]; + + +void LglSysexHandler(uint32 *midiBufferRx,uint32 *rx_offset,uint32 *n_unread_bytes); + +#endif + diff --git a/STM32F1/libraries/USBComposite/Mouse.cpp b/STM32F1/libraries/USBComposite/Mouse.cpp new file mode 100644 index 000000000..2f3abb981 --- /dev/null +++ b/STM32F1/libraries/USBComposite/Mouse.cpp @@ -0,0 +1,57 @@ +#include "USBHID.h" + +//================================================================================ +//================================================================================ +// Mouse + +void HIDMouse::begin(void){ +} + +void HIDMouse::end(void){ +} + +void HIDMouse::click(uint8_t b) +{ + _buttons = b; + move(0,0,0); + _buttons = 0; + move(0,0,0); +} + +void HIDMouse::move(signed char x, signed char y, signed char wheel) +{ + reportBuffer[1] = _buttons; + reportBuffer[2] = x; + reportBuffer[3] = y; + reportBuffer[4] = wheel; + + sendReport(); +} + +void HIDMouse::buttons(uint8_t b) +{ + if (b != _buttons) + { + _buttons = b; + move(0,0,0); + } +} + +void HIDMouse::press(uint8_t b) +{ + buttons(_buttons | b); +} + +void HIDMouse::release(uint8_t b) +{ + buttons(_buttons & ~b); +} + +bool HIDMouse::isPressed(uint8_t b) +{ + if ((b & _buttons) > 0) + return true; + return false; +} + +HIDMouse Mouse; diff --git a/STM32F1/libraries/USBComposite/README.md b/STM32F1/libraries/USBComposite/README.md new file mode 100644 index 000000000..8c80c13dd --- /dev/null +++ b/STM32F1/libraries/USBComposite/README.md @@ -0,0 +1,88 @@ +# USB Composite library for STM32F1 + +## Protocols supported + +- standard USB HID, with many built-in profiles, and customizable with more + +- MIDI over USB + +- XBox360 controller (only controller-to-host is currently supported) + +- Mass storage + +## Basic concepts + +Start with: +``` +#include +``` + +The library defines several crucial objects. The central object is: + +``` +extern USBCompositeDevice USBComposite; +``` + +This controls USB device identification as well as registers the plugins that are connected to it. + +Plugin objects included in the library are: + +``` +extern USBHIDDevice USBHID; +extern USBMidi USBMIDI; +extern USBXBox360 XBox360; +extern USBMassStorageDevice MassStorage; +extern USBCompositeSerial CompositeSerial; +``` + +You can also create your own customized instances of these plugin classes or their subclasses. + +If you want to make a simple (non-composite) USB device, you can just call the plugin's `begin()` +method, and it will take care of registering itself with `USBComposite` and starting up +`USBComposite`. If you want to make a composite USB device, however, +you need to control the device with `USBComposite`: + +``` +USBComposite.clear(); // clear any plugins previously registered +plugin1.registerComponent(); +plugin2.registerComponent(); +USBComposite.begin(); +``` + +Of course, you may need to do some further configuring of the plugins or the `USBComposite` device +before the `USBComposite.begin()` call. + +Finally, there are a number of objects that implement particular protocols for the `USBHID` plugin: +``` +extern HIDMouse Mouse; +extern HIDKeyboard Keyboard; +extern HIDJoystick Joystick; +extern HIDKeyboard BootKeyboard; +``` +And you can customize with more. Moreover, the `USBHID` plugin itself allows for compositing +multiple HID profiles, e.g., Mouse / Keyboard / three joysticks. + +Not all combinations will fit within the constraints of the STM32F1 USB system, and not all +combinations will be supported by all operating systems. + +## Simple USB device configuration + +A simple USB device uses a single plugin. You just need to call any setup methods for the plugin +and the `begin()` method for the plugin. For instance, to inject keyboard data, you can do: + +``` +USBHID.begin(HID_KEYBOARD); +``` + +and then call `Keyboard.print("TextToInject")` to inject keyboard data. Some plugin configurations +may require further initialization code or further code that needs to be called inside the Arduino +`loop()` function. + +See the `BootKeyboard`, `midiout` and `x360` example code for this procedure. + +Additionally, for backwards compatibility reasons, the `USBHID` plugin has a convenience +`USBHID_begin_with_serial()` function which works just like `USBHID.begin()` except that it also +composites a `CompositeSerial` plugin. + +However, if you want a USB device using more than one plugin, then you will NOT call the plugin's +`begin()` method. \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/USBComposite.cpp b/STM32F1/libraries/USBComposite/USBComposite.cpp new file mode 100644 index 000000000..b659f11c6 --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBComposite.cpp @@ -0,0 +1,147 @@ +#include "USBComposite.h" + +#define DEFAULT_VENDOR_ID 0x1EAF +#define DEFAULT_PRODUCT_ID 0x0004 + +static char* putSerialNumber(char* out, int nibbles, uint32 id) { + for (int i=0; i>= 4) { + uint8 nibble = id & 0xF; + if (nibble <= 9) + *out++ = nibble + '0'; + else + *out++ = nibble - 10 + 'a'; + } + return out; +} + +const char* getDeviceIDString() { + static char string[80/4+1]; + char* p = string; + + uint32 id = (uint32) *(uint16*) (0x1FFFF7E8+0x02); + p = putSerialNumber(p, 4, id); + + id = *(uint32*) (0x1FFFF7E8+0x04); + p = putSerialNumber(p, 8, id); + + id = *(uint32*) (0x1FFFF7E8+0x08); + p = putSerialNumber(p, 8, id); + + *p = 0; + + return string; +} + +USBCompositeDevice::USBCompositeDevice(void) { + vendorId = 0; + productId = 0; + numParts = 0; + setManufacturerString(NULL); + setProductString(NULL); + setSerialString(DEFAULT_SERIAL_STRING); + iManufacturer[0] = 0; + iProduct[0] = 0; + iSerialNumber[0] = 0; + } + +void USBCompositeDevice::setVendorId(uint16 _vendorId) { + if (_vendorId != 0) + vendorId = _vendorId; + else + vendorId = DEFAULT_VENDOR_ID; +} + +void USBCompositeDevice::setProductId(uint16 _productId) { + if (_productId != 0) + productId = _productId; + else + productId = DEFAULT_PRODUCT_ID; +} + +void setString(uint8* out, const usb_descriptor_string* defaultDescriptor, const char* s, uint32 maxLength) { + if (s == NULL) { + uint8 n = defaultDescriptor->bLength; + uint8 m = USB_DESCRIPTOR_STRING_LEN(maxLength); + if (n > m) + n = m; + memcpy(out, defaultDescriptor, n); + out[0] = n; + } + else { + uint32 n = strlen(s); + if (n > maxLength) + n = maxLength; + out[0] = (uint8)USB_DESCRIPTOR_STRING_LEN(n); + out[1] = USB_DESCRIPTOR_TYPE_STRING; + for (uint32 i=0; i= USB_COMPOSITE_MAX_PARTS) + return false; + parts[i] = part; + init[i] = _init; + stop[i] = _stop; + plugin[i] = _plugin; + if (i >= numParts) + numParts++; + return true; +} + +USBCompositeDevice USBComposite; diff --git a/STM32F1/libraries/USBComposite/USBComposite.h b/STM32F1/libraries/USBComposite/USBComposite.h new file mode 100644 index 000000000..152c3c36d --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBComposite.h @@ -0,0 +1,64 @@ +#ifndef _USBCOMPOSITE_H_ +#define _USBCOMPOSITE_H_ + +#include +#include "Stream.h" +#include "usb_generic.h" +//#include + +#include +#include +#include +#include + +#define USB_MAX_PRODUCT_LENGTH 32 +#define USB_MAX_MANUFACTURER_LENGTH 32 +#define USB_MAX_SERIAL_NUMBER_LENGTH 20 + + +// You could use this for a serial number, but you'll be revealing the device ID to the host, +// and hence burning it for cryptographic purposes. +const char* getDeviceIDString(); + +#define USB_COMPOSITE_MAX_PARTS 6 + +class USBCompositeDevice; + +#define DEFAULT_SERIAL_STRING "00000000000000000001" + +typedef bool(*USBPartInitializer)(void*); +typedef void(*USBPartStopper)(void*); + +class USBCompositeDevice { +private: + bool enabled = false; + bool haveSerialNumber = false; + uint8_t iManufacturer[USB_DESCRIPTOR_STRING_LEN(USB_MAX_MANUFACTURER_LENGTH)]; + uint8_t iProduct[USB_DESCRIPTOR_STRING_LEN(USB_MAX_PRODUCT_LENGTH)]; + uint8_t iSerialNumber[USB_DESCRIPTOR_STRING_LEN(USB_MAX_SERIAL_NUMBER_LENGTH)]; + uint16 vendorId; + uint16 productId; + USBCompositePart* parts[USB_COMPOSITE_MAX_PARTS]; + USBPartInitializer init[USB_COMPOSITE_MAX_PARTS]; + USBPartStopper stop[USB_COMPOSITE_MAX_PARTS]; + void* plugin[USB_COMPOSITE_MAX_PARTS]; + uint32 numParts; +public: + USBCompositeDevice(void); + void setVendorId(uint16 vendor=0); + void setProductId(uint16 product=0); + void setManufacturerString(const char* manufacturer=NULL); + void setProductString(const char* product=NULL); + void setSerialString(const char* serialNumber=DEFAULT_SERIAL_STRING); + bool begin(void); + void end(void); + void clear(); + bool isReady() { + return enabled && usb_is_connected(USBLIB) && usb_is_configured(USBLIB); + } + bool add(USBCompositePart* part, void* plugin, USBPartInitializer init = NULL, USBPartStopper stop = NULL); +}; + +extern USBCompositeDevice USBComposite; +#endif + \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp b/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp new file mode 100644 index 000000000..9da0f19db --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp @@ -0,0 +1,274 @@ +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include + +#include +#include +#include +#include +#include +#include + +#include "usb_serial.h" + +#define USB_TIMEOUT 50 + +#if defined(SERIAL_USB) +static void rxHook(unsigned, void*); +static void ifaceSetupHook(unsigned, void*); +#endif + +bool USBCompositeSerial::init(USBCompositeSerial* me) { + (void)me; +#if defined(SERIAL_USB) + composite_cdcacm_set_hooks(USBHID_CDCACM_HOOK_RX, rxHook); + composite_cdcacm_set_hooks(USBHID_CDCACM_HOOK_IFACE_SETUP, ifaceSetupHook); +#endif + return true; +} + +void USBCompositeSerial::begin(long speed) { + (void)speed; + if (!enabled) { + USBComposite.clear(); + registerComponent(); + USBComposite.begin(); + enabled = true; + } +} + +void USBCompositeSerial::end() { + if (enabled) { + USBComposite.end(); + enabled = false; + } +} + +size_t USBCompositeSerial::write(uint8 ch) { +size_t n = 0; + this->write(&ch, 1); + return n; +} + +size_t USBCompositeSerial::write(const char *str) { +size_t n = 0; + this->write((const uint8*)str, strlen(str)); + return n; +} + +size_t USBCompositeSerial::write(const uint8 *buf, uint32 len) +{ + size_t n = 0; + + if (!this->isConnected() || !buf) { + return 0; + } + + uint32 txed = 0; + while (txed < len) { + txed += composite_cdcacm_tx((const uint8*)buf + txed, len - txed); + } + + return n; +} + +int USBCompositeSerial::available(void) { + return composite_cdcacm_data_available(); +} + +int USBCompositeSerial::peek(void) +{ + uint8 b; + if (composite_cdcacm_peek(&b, 1)==1) + { + return b; + } + else + { + return -1; + } +} + +bool USBCompositeSerial::registerComponent() { + return USBComposite.add(&usbSerialPart, this, (USBPartInitializer)&USBCompositeSerial::init); +} + +void USBCompositeSerial::flush(void) +{ +/*Roger Clark. Rather slow method. Need to improve this */ + uint8 b; + while(composite_cdcacm_data_available()) + { + this->read(&b, 1); + } + return; +} + +uint32 USBCompositeSerial::read(uint8 * buf, uint32 len) { + uint32 rxed = 0; + while (rxed < len) { + rxed += composite_cdcacm_rx(buf + rxed, len - rxed); + } + + return rxed; +} + +/* Blocks forever until 1 byte is received */ +int USBCompositeSerial::read(void) { + uint8 b; + /* + this->read(&b, 1); + return b; + */ + + if (composite_cdcacm_rx(&b, 1)==0) + { + return -1; + } + else + { + return b; + } +} + +uint8 USBCompositeSerial::pending(void) { + return composite_cdcacm_get_pending(); +} + +uint8 USBCompositeSerial::isConnected(void) { + return usb_is_connected(USBLIB) && usb_is_configured(USBLIB) && composite_cdcacm_get_dtr(); +} + +uint8 USBCompositeSerial::getDTR(void) { + return composite_cdcacm_get_dtr(); +} + +uint8 USBCompositeSerial::getRTS(void) { + return composite_cdcacm_get_rts(); +} + +#if defined(SERIAL_USB) + +enum reset_state_t { + DTR_UNSET, + DTR_HIGH, + DTR_NEGEDGE, + DTR_LOW +}; + +static reset_state_t reset_state = DTR_UNSET; + +static void ifaceSetupHook(unsigned hook, void *requestvp) { + (void)hook; + uint8 request = *(uint8*)requestvp; + + // Ignore requests we're not interested in. + if (request != USBHID_CDCACM_SET_CONTROL_LINE_STATE) { + return; + } + + // We need to see a negative edge on DTR before we start looking + // for the in-band magic reset byte sequence. + uint8 dtr = composite_cdcacm_get_dtr(); + switch (reset_state) { + case DTR_UNSET: + reset_state = dtr ? DTR_HIGH : DTR_LOW; + break; + case DTR_HIGH: + reset_state = dtr ? DTR_HIGH : DTR_NEGEDGE; + break; + case DTR_NEGEDGE: + reset_state = dtr ? DTR_HIGH : DTR_LOW; + break; + case DTR_LOW: + reset_state = dtr ? DTR_HIGH : DTR_LOW; + break; + } + + if ((composite_cdcacm_get_baud() == 1200) && (reset_state == DTR_NEGEDGE)) { + iwdg_init(IWDG_PRE_4, 10); + while (1); + } +} + +#define RESET_DELAY 100000 +static void wait_reset(void) { + delay_us(RESET_DELAY); + nvic_sys_reset(); +} + +#define STACK_TOP 0x20000800 +#define EXC_RETURN 0xFFFFFFF9 +#define DEFAULT_CPSR 0x61000000 +static void rxHook(unsigned hook, void *ignored) { + (void)hook; + (void)ignored; + /* FIXME this is mad buggy; we need a new reset sequence. E.g. NAK + * after each RX means you can't reset if any bytes are waiting. */ + if (reset_state == DTR_NEGEDGE) { + reset_state = DTR_LOW; + + if (composite_cdcacm_data_available() >= 4) { + // The magic reset sequence is "1EAF". + static const uint8 magic[4] = {'1', 'E', 'A', 'F'}; + + uint8 chkBuf[4]; + + // Peek at the waiting bytes, looking for reset sequence, + // bailing on mismatch. + composite_cdcacm_peek_ex(chkBuf, composite_cdcacm_data_available() - 4, 4); + for (unsigned i = 0; i < sizeof(magic); i++) { + if (chkBuf[i] != magic[i]) { + return; + } + } + + // Got the magic sequence -> reset, presumably into the bootloader. + // Return address is wait_reset, but we must set the thumb bit. + uintptr_t target = (uintptr_t)wait_reset | 0x1; + asm volatile("mov r0, %[stack_top] \n\t" // Reset stack + "mov sp, r0 \n\t" + "mov r0, #1 \n\t" + "mov r1, %[target_addr] \n\t" + "mov r2, %[cpsr] \n\t" + "push {r2} \n\t" // Fake xPSR + "push {r1} \n\t" // PC target addr + "push {r0} \n\t" // Fake LR + "push {r0} \n\t" // Fake R12 + "push {r0} \n\t" // Fake R3 + "push {r0} \n\t" // Fake R2 + "push {r0} \n\t" // Fake R1 + "push {r0} \n\t" // Fake R0 + "mov lr, %[exc_return] \n\t" + "bx lr" + : + : [stack_top] "r" (STACK_TOP), + [target_addr] "r" (target), + [exc_return] "r" (EXC_RETURN), + [cpsr] "r" (DEFAULT_CPSR) + : "r0", "r1", "r2"); + + /* Can't happen. */ + ASSERT_FAULT(0); + } + } +} +#endif + + +USBCompositeSerial CompositeSerial; + diff --git a/STM32F1/libraries/USBComposite/USBCompositeSerial.h b/STM32F1/libraries/USBComposite/USBCompositeSerial.h new file mode 100644 index 000000000..4112617bb --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBCompositeSerial.h @@ -0,0 +1,40 @@ +#ifndef _COMPOSITE_SERIAL_H_ +#define _COMPOSITE_SERIAL_H_ + +#include "USBComposite.h" +#include "usb_serial.h" + +class USBCompositeSerial : public Stream { +private: + bool enabled = false; +public: + void begin(long speed=9600); + void end(); + static bool init(USBCompositeSerial* me); + bool registerComponent(); + + operator bool() { return true; } // Roger Clark. This is needed because in cardinfo.ino it does if (!Serial) . It seems to be a work around for the Leonardo that we needed to implement just to be compliant with the API + + virtual int available(void);// Changed to virtual + + uint32 read(uint8 * buf, uint32 len); + // uint8 read(void); + + // Roger Clark. added functions to support Arduino 1.0 API + virtual int peek(void); + virtual int read(void); + int availableForWrite(void); + virtual void flush(void); + + size_t write(uint8); + size_t write(const char *str); + size_t write(const uint8*, uint32); + + uint8 getRTS(); + uint8 getDTR(); + uint8 isConnected(); + uint8 pending(); +}; + +extern USBCompositeSerial CompositeSerial; +#endif diff --git a/STM32F1/libraries/USBComposite/USBHID.cpp b/STM32F1/libraries/USBComposite/USBHID.cpp new file mode 100644 index 000000000..e0b69b4ec --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBHID.cpp @@ -0,0 +1,180 @@ +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#include "USBHID.h" +#include "USBCompositeSerial.h" + +#include +#include +#include +#include "usb_hid.h" +#include "usb_serial.h" +#include "usb_generic.h" +#include +#include +#include + +#include + +/* + * USB HID interface + */ + +bool USBHIDDevice::registerComponent() { + return USBComposite.add(&usbHIDPart, this); +} + +void USBHIDDevice::setReportDescriptor(const uint8_t* report_descriptor, uint16_t report_descriptor_length) { + usb_hid_set_report_descriptor(report_descriptor, report_descriptor_length); +} + +void USBHIDDevice::setReportDescriptor(const HIDReportDescriptor* report) { + setReportDescriptor(report->descriptor, report->length); +} + +void USBHIDDevice::begin(const uint8_t* report_descriptor, uint16_t report_descriptor_length, uint16_t idVendor, uint16_t idProduct, + const char* manufacturer, const char* product, const char* serialNumber) { + + if (enabledHID) + return; + + setReportDescriptor(report_descriptor, report_descriptor_length); + + USBComposite.clear(); + USBComposite.setVendorId(idVendor); + USBComposite.setProductId(idProduct); + USBComposite.setManufacturerString(manufacturer); + USBComposite.setProductString(product); + USBComposite.setSerialString(serialNumber); + registerComponent(); + + USBComposite.begin(); + + enabledHID = true; +} + +void USBHIDDevice::begin(const HIDReportDescriptor* report, uint16_t idVendor, uint16_t idProduct, + const char* manufacturer, const char* product, const char* serialNumber) { + begin(report->descriptor, report->length, idVendor, idProduct, manufacturer, product, serialNumber); +} + +void USBHIDDevice::setBuffers(uint8_t type, volatile HIDBuffer_t* fb, int count) { + usb_hid_set_buffers(type, fb, count); +} + +bool USBHIDDevice::addBuffer(uint8_t type, volatile HIDBuffer_t* buffer) { + return 0 != usb_hid_add_buffer(type, buffer); +} + +void USBHIDDevice::clearBuffers(uint8_t type) { + usb_hid_clear_buffers(type); +} + +void USBHIDDevice::clearBuffers() { + clearBuffers(HID_REPORT_TYPE_OUTPUT); + clearBuffers(HID_REPORT_TYPE_FEATURE); +} + +void USBHIDDevice::end(void){ + if(enabledHID){ + USBComposite.end(); + enabledHID = false; + } +} + +void HIDReporter::sendReport() { +// while (usb_is_transmitting() != 0) { +// } + + unsigned toSend = bufferSize; + uint8* b = buffer; + + while (toSend) { + unsigned delta = usb_hid_tx(b, toSend); + toSend -= delta; + b += delta; + } + +// while (usb_is_transmitting() != 0) { +// } + + /* flush out to avoid having the pc wait for more data */ + usb_hid_tx(NULL, 0); +} + +HIDReporter::HIDReporter(uint8_t* _buffer, unsigned _size, uint8_t _reportID) { + if (_reportID == 0) { + buffer = _buffer+1; + bufferSize = _size-1; + } + else { + buffer = _buffer; + bufferSize = _size; + } + memset(buffer, 0, bufferSize); + reportID = _reportID; + if (_size > 0 && reportID != 0) + buffer[0] = _reportID; +} + +HIDReporter::HIDReporter(uint8_t* _buffer, unsigned _size) { + buffer = _buffer; + bufferSize = _size; + memset(buffer, 0, _size); + reportID = 0; +} + +void HIDReporter::setFeature(uint8_t* in) { + return usb_hid_set_feature(reportID, in); +} + +uint16_t HIDReporter::getData(uint8_t type, uint8_t* out, uint8_t poll) { + return usb_hid_get_data(type, reportID, out, poll); +} + +uint16_t HIDReporter::getFeature(uint8_t* out, uint8_t poll) { + return usb_hid_get_data(HID_REPORT_TYPE_FEATURE, reportID, out, poll); +} + +uint16_t HIDReporter::getOutput(uint8_t* out, uint8_t poll) { + return usb_hid_get_data(HID_REPORT_TYPE_OUTPUT, reportID, out, poll); +} + +USBHIDDevice USBHID; + +void USBHID_begin_with_serial(const uint8_t* report_descriptor, uint16_t report_descriptor_length, uint16_t idVendor, uint16_t idProduct, + const char* manufacturer, const char* product, const char* serialNumber) { + + USBComposite.clear(); + USBComposite.setVendorId(idVendor); + USBComposite.setProductId(idProduct); + USBComposite.setManufacturerString(manufacturer); + USBComposite.setProductString(product); + USBComposite.setSerialString(serialNumber); + + USBHID.setReportDescriptor(report_descriptor, report_descriptor_length); + USBHID.registerComponent(); + + CompositeSerial.registerComponent(); + + USBComposite.begin(); +} + +void USBHID_begin_with_serial(const HIDReportDescriptor* report, uint16_t idVendor, uint16_t idProduct, + const char* manufacturer, const char* product, const char* serialNumber) { + USBHID_begin_with_serial(report->descriptor, report->length, idVendor, idProduct, manufacturer, product, serialNumber); +} + diff --git a/STM32F1/libraries/USBComposite/USBHID.h b/STM32F1/libraries/USBComposite/USBHID.h new file mode 100644 index 000000000..0362f4e7c --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBHID.h @@ -0,0 +1,608 @@ +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#ifndef _USBHID_H_ +#define _USBHID_H_ + +#include +#include +#include +#include +#include "Stream.h" +#include "usb_hid.h" + +#define USB_HID_MAX_PRODUCT_LENGTH 32 +#define USB_HID_MAX_MANUFACTURER_LENGTH 32 +#define USB_HID_MAX_SERIAL_NUMBER_LENGTH 20 + +#define HID_MOUSE_REPORT_ID 1 +#define HID_KEYBOARD_REPORT_ID 2 +#define HID_CONSUMER_REPORT_ID 3 +#define HID_JOYSTICK_REPORT_ID 20 + +#define HID_KEYBOARD_ROLLOVER 6 + +#define MACRO_GET_ARGUMENT_2(x, y, ...) y +#define MACRO_GET_ARGUMENT_1_WITH_DEFAULT(default, ...) MACRO_GET_ARGUMENT_2(placeholder, ## __VA_ARGS__, default) +#define MACRO_ARGUMENT_2_TO_END(skip, ...) __VA_ARGS__ + +// HIDBuffer_t data buffers must have even memory length because of how PMA transfers work +#define HID_DATA_BUFFER_SIZE(n) (((n)+1)/2*2) + +/* note that featureSize must be 1 less than the buffer size for the feature, + since the latter must include the reportId */ +/* this only works in a collection with a report_id */ +#define HID_FEATURE_REPORT_DESCRIPTOR(dataSize) \ + 0x06, 0x00, 0xFF, /* USAGE_PAGE (Vendor Defined Page 1) */ \ + 0x09, 0x01, /* USAGE (Vendor Usage 1) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x26, 0xff, 0x00, /* LOGICAL_MAXIMUM (255) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x95, dataSize, /* REPORT_COUNT (xx) */ \ + 0xB1, 0x02, /* FEATURE (Data,Var,Abs) */ \ + +#define HID_OUTPUT_REPORT_DESCRIPTOR(dataSize) \ + 0x06, 0x00, 0xFF, /* USAGE_PAGE (Vendor Defined Page 1) */ \ + 0x09, 0x01, /* USAGE (Vendor Usage 1) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x26, 0xff, 0x00, /* LOGICAL_MAXIMUM (255) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x95, dataSize, /* REPORT_COUNT (32) */ \ + 0x91, 0x02, /* OUTPUT (Data,Var,Abs) */ \ + +#define HID_CONSUMER_REPORT_DESCRIPTOR(...) \ + 0x05, 0x0C, /* usage page (consumer device) */ \ + 0x09, 0x01, /* usage -- consumer control */ \ + 0xA1, 0x01, /* collection (application) */ \ + 0x85, MACRO_GET_ARGUMENT_1_WITH_DEFAULT(HID_CONSUMER_REPORT_ID, ## __VA_ARGS__), /* REPORT_ID */ \ + 0x15, 0x00, /* logical minimum */ \ + 0x26, 0xFF, 0x03, /* logical maximum (3ff) */ \ + 0x19, 0x00, /* usage minimum (0) */ \ + 0x2A, 0xFF, 0x03, /* usage maximum (3ff) */ \ + 0x75, 0x10, /* report size (16) */ \ + 0x95, 0x01, /* report count (1) */ \ + 0x81, 0x00, /* input */ \ + MACRO_ARGUMENT_2_TO_END(__VA_ARGS__) \ + 0xC0 /* end collection */ + +#define HID_MOUSE_REPORT_DESCRIPTOR(...) \ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) // 54 */ \ + 0x09, 0x02, /* USAGE (Mouse) */ \ + 0xa1, 0x01, /* COLLECTION (Application) */ \ + 0x85, MACRO_GET_ARGUMENT_1_WITH_DEFAULT(HID_MOUSE_REPORT_ID, ## __VA_ARGS__), /* REPORT_ID */ \ + 0x09, 0x01, /* USAGE (Pointer) */ \ + 0xa1, 0x00, /* COLLECTION (Physical) */ \ + 0x05, 0x09, /* USAGE_PAGE (Button) */ \ + 0x19, 0x01, /* USAGE_MINIMUM (Button 1) */ \ + 0x29, 0x08, /* USAGE_MAXIMUM (Button 8) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ \ + 0x95, 0x08, /* REPORT_COUNT (8) */ \ + 0x75, 0x01, /* REPORT_SIZE (1) */ \ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ \ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ \ + 0x09, 0x30, /* USAGE (X) */ \ + 0x09, 0x31, /* USAGE (Y) */ \ + 0x09, 0x38, /* USAGE (Wheel) */ \ + 0x15, 0x81, /* LOGICAL_MINIMUM (-127) */ \ + 0x25, 0x7f, /* LOGICAL_MAXIMUM (127) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x95, 0x03, /* REPORT_COUNT (3) */ \ + 0x81, 0x06, /* INPUT (Data,Var,Rel) */ \ + 0xc0, /* END_COLLECTION */ \ + MACRO_ARGUMENT_2_TO_END(__VA_ARGS__) \ + 0xc0 /* END_COLLECTION */ + +#define HID_ABS_MOUSE_REPORT_DESCRIPTOR(...) \ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) // 54 */ \ + 0x09, 0x02, /* USAGE (Mouse) */ \ + 0xa1, 0x01, /* COLLECTION (Application) */ \ + 0x85, MACRO_GET_ARGUMENT_1_WITH_DEFAULT(HID_MOUSE_REPORT_ID, ## __VA_ARGS__), /* REPORT_ID */ \ + 0x09, 0x01, /* USAGE (Pointer) */ \ + 0xa1, 0x00, /* COLLECTION (Physical) */ \ + 0x05, 0x09, /* USAGE_PAGE (Button) */ \ + 0x19, 0x01, /* USAGE_MINIMUM (Button 1) */ \ + 0x29, 0x08, /* USAGE_MAXIMUM (Button 8) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ \ + 0x95, 0x08, /* REPORT_COUNT (8) */ \ + 0x75, 0x01, /* REPORT_SIZE (1) */ \ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ \ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ \ + 0x09, 0x30, /* USAGE (X) */ \ + 0x09, 0x31, /* USAGE (Y) */ \ + 0x16, 0x00, 0x80, /* LOGICAL_MINIMUM (-32768) */ \ + 0x26, 0xFF, 0x7f, /* LOGICAL_MAXIMUM (32767) */ \ + 0x75, 0x10, /* REPORT_SIZE (16) */ \ + 0x95, 0x02, /* REPORT_COUNT (2) */ \ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ \ + 0x09, 0x38, /* USAGE (Wheel) */ \ + 0x15, 0x81, /* LOGICAL_MINIMUM (-127) */ \ + 0x25, 0x7f, /* LOGICAL_MAXIMUM (127) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x95, 0x01, /* REPORT_COUNT (1) */ \ + 0x81, 0x06, /* INPUT (Data,Var,Rel) */ \ + 0xc0, /* END_COLLECTION */ \ + MACRO_ARGUMENT_2_TO_END(__VA_ARGS__) \ + 0xc0 /* END_COLLECTION */ + +#define HID_KEYBOARD_REPORT_DESCRIPTOR(...) \ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) // 47 */ \ + 0x09, 0x06, /* USAGE (Keyboard) */ \ + 0xa1, 0x01, /* COLLECTION (Application) */ \ + 0x85, MACRO_GET_ARGUMENT_1_WITH_DEFAULT(HID_KEYBOARD_REPORT_ID, ## __VA_ARGS__), /* REPORT_ID */ \ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ \ + 0x19, 0xe0, /* USAGE_MINIMUM (Keyboard LeftControl) */ \ + 0x29, 0xe7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ \ + 0x75, 0x01, /* REPORT_SIZE (1) */ \ + 0x95, 0x08, /* REPORT_COUNT (8) */ \ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ \ +\ + 0x95, 0x01, /* REPORT_COUNT (1) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x81, 0x03, /* INPUT (Cnst,Var,Abs) */ \ +\ + 0x95, HID_KEYBOARD_ROLLOVER, /* REPORT_COUNT (6) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x25, 0x65, /* LOGICAL_MAXIMUM (101) */ \ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ \ +\ + 0x19, 0x00, /* USAGE_MINIMUM (Reserved (no event indicated)) */ \ + 0x29, 0x65, /* USAGE_MAXIMUM (Keyboard Application) */ \ + 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ \ +\ + 0x05, 0x08, /* USAGE_PAGE (LEDs) */ \ + 0x19, 0x01, /* USAGE_MINIMUM (Num Lock) */ \ + 0x29, 0x08, /* USAGE_MAXIMUM (Kana + 3 custom)*/ \ + 0x95, 0x08, /* REPORT_COUNT (8) */ \ + 0x75, 0x01, /* REPORT_SIZE (1) */ \ + 0x91, 0x02, /* OUTPUT (Data,Var,Abs) */ \ + MACRO_ARGUMENT_2_TO_END(__VA_ARGS__) \ + 0xc0 /* END_COLLECTION */ + +#define HID_BOOT_KEYBOARD_REPORT_DESCRIPTOR(...) \ + 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) // 47 */ \ + 0x09, 0x06, /* USAGE (Keyboard) */ \ + 0xa1, 0x01, /* COLLECTION (Application) */ \ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ \ + 0x19, 0xe0, /* USAGE_MINIMUM (Keyboard LeftControl) */ \ + 0x29, 0xe7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ \ + 0x75, 0x01, /* REPORT_SIZE (1) */ \ + 0x95, 0x08, /* REPORT_COUNT (8) */ \ + 0x81, 0x02, /* INPUT (Data,Var,Abs) */ \ +\ + 0x95, 0x01, /* REPORT_COUNT (1) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x81, 0x03, /* INPUT (Cnst,Var,Abs) */ \ +\ + 0x95, 0x06, /* REPORT_COUNT (6) */ \ + 0x75, 0x08, /* REPORT_SIZE (8) */ \ + 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \ + 0x25, 0x65, /* LOGICAL_MAXIMUM (101) */ \ + 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ \ +\ + 0x19, 0x00, /* USAGE_MINIMUM (Reserved (no event indicated)) */ \ + 0x29, 0x65, /* USAGE_MAXIMUM (Keyboard Application) */ \ + 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ \ +\ + 0x05, 0x08, /* USAGE_PAGE (LEDs) */ \ + 0x19, 0x01, /* USAGE_MINIMUM (Num Lock) */ \ + 0x29, 0x08, /* USAGE_MAXIMUM (Kana + 3 custom)*/ \ + 0x95, 0x08, /* REPORT_COUNT (8) */ \ + 0x75, 0x01, /* REPORT_SIZE (1) */ \ + 0x91, 0x02, /* OUTPUT (Data,Var,Abs) */ \ + __VA_ARGS__ \ + 0xc0 /* END_COLLECTION */ + +#define HID_JOYSTICK_REPORT_DESCRIPTOR(...) \ + 0x05, 0x01, /* Usage Page (Generic Desktop) */ \ + 0x09, 0x04, /* Usage (Joystick) */ \ + 0xA1, 0x01, /* Collection (Application) */ \ + 0x85, MACRO_GET_ARGUMENT_1_WITH_DEFAULT(HID_JOYSTICK_REPORT_ID, ## __VA_ARGS__), /* REPORT_ID */ \ + 0x15, 0x00, /* Logical Minimum (0) */ \ + 0x25, 0x01, /* Logical Maximum (1) */ \ + 0x75, 0x01, /* Report Size (1) */ \ + 0x95, 0x20, /* Report Count (32) */ \ + 0x05, 0x09, /* Usage Page (Button) */ \ + 0x19, 0x01, /* Usage Minimum (Button #1) */ \ + 0x29, 0x20, /* Usage Maximum (Button #32) */ \ + 0x81, 0x02, /* Input (variable,absolute) */ \ + 0x15, 0x00, /* Logical Minimum (0) */ \ + 0x25, 0x07, /* Logical Maximum (7) */ \ + 0x35, 0x00, /* Physical Minimum (0) */ \ + 0x46, 0x3B, 0x01, /* Physical Maximum (315) */ \ + 0x75, 0x04, /* Report Size (4) */ \ + 0x95, 0x01, /* Report Count (1) */ \ + 0x65, 0x14, /* Unit (20) */ \ + 0x05, 0x01, /* Usage Page (Generic Desktop) */ \ + 0x09, 0x39, /* Usage (Hat switch) */ \ + 0x81, 0x42, /* Input (variable,absolute,null_state) */ \ + 0x05, 0x01, /* Usage Page (Generic Desktop) */ \ + 0x09, 0x01, /* Usage (Pointer) */ \ + 0xA1, 0x00, /* Collection () */ \ + 0x15, 0x00, /* Logical Minimum (0) */ \ + 0x26, 0xFF, 0x03, /* Logical Maximum (1023) */ \ + 0x75, 0x0A, /* Report Size (10) */ \ + 0x95, 0x04, /* Report Count (4) */ \ + 0x09, 0x30, /* Usage (X) */ \ + 0x09, 0x31, /* Usage (Y) */ \ + 0x09, 0x33, /* Usage (Rx) */ \ + 0x09, 0x34, /* Usage (Ry) */ \ + 0x81, 0x02, /* Input (variable,absolute) */ \ + 0xC0, /* End Collection */ \ + 0x15, 0x00, /* Logical Minimum (0) */ \ + 0x26, 0xFF, 0x03, /* Logical Maximum (1023) */ \ + 0x75, 0x0A, /* Report Size (10) */ \ + 0x95, 0x02, /* Report Count (2) */ \ + 0x09, 0x36, /* Usage (Slider) */ \ + 0x09, 0x36, /* Usage (Slider) */ \ + 0x81, 0x02, /* Input (variable,absolute) */ \ + MACRO_ARGUMENT_2_TO_END(__VA_ARGS__) \ + 0xC0 + +#define RAWHID_USAGE_PAGE 0xFFC0 // recommended: 0xFF00 to 0xFFFF +#define RAWHID_USAGE 0x0C00 // recommended: 0x0100 to 0xFFFF + +#define LSB(x) ((x) & 0xFF) +#define MSB(x) (((x) & 0xFF00) >> 8) +// TODO: make this work for txSize > 255 +#define HID_RAW_REPORT_DESCRIPTOR(txSize, rxSize) \ + 0x06, LSB(RAWHID_USAGE_PAGE), MSB(RAWHID_USAGE_PAGE), \ + 0x0A, LSB(RAWHID_USAGE), MSB(RAWHID_USAGE), \ + 0xA1, 0x01, /* Collection 0x01 */ \ +/* 0x85, 10, */ /* REPORT_ID (1) */ \ + 0x75, 0x08, /* report size = 8 bits */ \ + 0x15, 0x00, /* logical minimum = 0 */ \ + 0x26, 0xFF, 0x00, /* logical maximum = 255 */ \ +\ + 0x96, LSB(txSize), MSB(txSize), /* report count TX */ \ + 0x09, 0x01, /* usage */ \ + 0x81, 0x02, /* Input (array) */ \ +\ + 0x75, 0x08, /* report size = 8 bits */ \ + 0x15, 0x00, /* logical minimum = 0 */ \ + 0x26, 0xFF, 0x00, /* logical maximum = 255 */ \ + 0x96, LSB(rxSize), MSB(rxSize), /* report count RX */ \ + 0x09, 0x02, /* usage */ \ + 0x91, 0x02, /* OUTPUT (0x91) */ \ + 0xC0 /* end collection */ + +typedef struct { + uint8_t* descriptor; + uint16_t length; +} HIDReportDescriptor; + +class USBHIDDevice { +private: + bool enabledHID = false; +public: + bool registerComponent(); + void setReportDescriptor(const uint8_t* report_descriptor, uint16_t report_descriptor_length); + void setReportDescriptor(const HIDReportDescriptor* reportDescriptor); + // All the strings are zero-terminated ASCII strings. Use NULL for defaults. + void begin(const uint8_t* report_descriptor, uint16_t length, uint16_t idVendor=0, uint16_t idProduct=0, + const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); + void begin(const HIDReportDescriptor* reportDescriptor, uint16_t idVendor=0, uint16_t idProduct=0, + const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); + void setSerial(uint8 serialSupport=true); + void setBuffers(uint8_t buffers, volatile HIDBuffer_t* fb=NULL, int count=0); // type = HID_REPORT_TYPE_FEATURE or HID_REPORT_TYPE_OUTPUT + bool addBuffer(uint8_t type, volatile HIDBuffer_t* buffer); + void clearBuffers(uint8_t type); + void clearBuffers(); + inline bool addFeatureBuffer(volatile HIDBuffer_t* buffer) { + return addBuffer(HID_REPORT_TYPE_FEATURE, buffer); + } + inline bool addOutputBuffer(volatile HIDBuffer_t* buffer) { + return addBuffer(HID_REPORT_TYPE_OUTPUT, buffer); + } + inline void setFeatureBuffers(volatile HIDBuffer_t* fb=NULL, int count=0) { + setBuffers(HID_REPORT_TYPE_FEATURE, fb, count); + } + inline void setOutputBuffers(volatile HIDBuffer_t* fb=NULL, int count=0) { + setBuffers(HID_REPORT_TYPE_OUTPUT, fb, count); + } + void end(void); +}; + +void USBHID_begin_with_serial(const uint8_t* report_descriptor, uint16_t length, uint16_t idVendor=0, uint16_t idProduct=0, + const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); +void USBHID_begin_with_serial(const HIDReportDescriptor* reportDescriptor, uint16_t idVendor=0, uint16_t idProduct=0, + const char* manufacturer=NULL, const char* product=NULL, const char* serialNumber="00000000000000000001"); + +class HIDReporter { + private: + uint8_t* buffer; + unsigned bufferSize; + uint8_t reportID; + + public: + void sendReport(); + + public: + // if you use this init function, the buffer starts with a reportID, even if the reportID is zero, + // and bufferSize includes the reportID; if reportID is zero, sendReport() will skip the initial + // reportID byte + HIDReporter(uint8_t* _buffer, unsigned _size, uint8_t _reportID); + // if you use this init function, the buffer has no reportID byte in it + HIDReporter(uint8_t* _buffer, unsigned _size); + uint16_t getFeature(uint8_t* out=NULL, uint8_t poll=1); + uint16_t getOutput(uint8_t* out=NULL, uint8_t poll=1); + uint16_t getData(uint8_t type, uint8_t* out, uint8_t poll=1); // type = HID_REPORT_TYPE_FEATURE or HID_REPORT_TYPE_OUTPUT + void setFeature(uint8_t* feature); +}; + +//================================================================================ +//================================================================================ +// Mouse + +#define MOUSE_LEFT 1 +#define MOUSE_RIGHT 2 +#define MOUSE_MIDDLE 4 +#define MOUSE_ALL (MOUSE_LEFT | MOUSE_RIGHT | MOUSE_MIDDLE) + +class HIDMouse : public HIDReporter { +protected: + uint8_t _buttons; + void buttons(uint8_t b); + uint8_t reportBuffer[5]; +public: + HIDMouse(uint8_t reportID=HID_MOUSE_REPORT_ID) : HIDReporter(reportBuffer, sizeof(reportBuffer), reportID), _buttons(0) {} + void begin(void); + void end(void); + void click(uint8_t b = MOUSE_LEFT); + void move(signed char x, signed char y, signed char wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_ALL); // check all buttons by default +}; + +typedef struct { + uint8_t reportID; + uint8_t buttons; + int16_t x; + int16_t y; + uint8_t wheel; +} __packed AbsMouseReport_t; + +class HIDAbsMouse : public HIDReporter { +protected: + void buttons(uint8_t b); + AbsMouseReport_t report; +public: + HIDAbsMouse(uint8_t reportID=HID_MOUSE_REPORT_ID) : HIDReporter((uint8_t*)&report, sizeof(report), reportID) { + report.buttons = 0; + report.x = 0; + report.y = 0; + report.wheel = 0; + } + void begin(void); + void end(void); + void click(uint8_t b = MOUSE_LEFT); + void move(int16_t x, int16_t y, int8_t wheel = 0); + void press(uint8_t b = MOUSE_LEFT); // press LEFT by default + void release(uint8_t b = MOUSE_LEFT); // release LEFT by default + bool isPressed(uint8_t b = MOUSE_ALL); // check all buttons by default +}; + +typedef struct { + uint8_t reportID; + uint16_t button; +} __packed ConsumerReport_t; + +class HIDConsumer : public HIDReporter { +protected: + ConsumerReport_t report; +public: + enum { + BRIGHTNESS_UP = 0x6F, + BRIGHTNESS_DOWN = 0x70, + VOLUME_UP = 0xE9, + VOLUME_DOWN = 0xEA, + MUTE = 0xE2, + PLAY_OR_PAUSE = 0xCD + // see pages 75ff of http://www.usb.org/developers/hidpage/Hut1_12v2.pdf + }; + HIDConsumer(uint8_t reportID=HID_CONSUMER_REPORT_ID) : HIDReporter((uint8_t*)&report, sizeof(report), reportID) { + report.button = 0; + } + void begin(void); + void end(void); + void press(uint16_t button); + void release(); +}; + +#define KEY_LEFT_CTRL 0x80 +#define KEY_LEFT_SHIFT 0x81 +#define KEY_LEFT_ALT 0x82 +#define KEY_LEFT_GUI 0x83 +#define KEY_RIGHT_CTRL 0x84 +#define KEY_RIGHT_SHIFT 0x85 +#define KEY_RIGHT_ALT 0x86 +#define KEY_RIGHT_GUI 0x87 + +#define KEY_UP_ARROW 0xDA +#define KEY_DOWN_ARROW 0xD9 +#define KEY_LEFT_ARROW 0xD8 +#define KEY_RIGHT_ARROW 0xD7 +#define KEY_BACKSPACE 0xB2 +#define KEY_TAB 0xB3 +#define KEY_RETURN 0xB0 +#define KEY_ESC 0xB1 +#define KEY_INSERT 0xD1 +#define KEY_DELETE 0xD4 +#define KEY_PAGE_UP 0xD3 +#define KEY_PAGE_DOWN 0xD6 +#define KEY_HOME 0xD2 +#define KEY_END 0xD5 +#define KEY_CAPS_LOCK 0xC1 +#define KEY_F1 0xC2 +#define KEY_F2 0xC3 +#define KEY_F3 0xC4 +#define KEY_F4 0xC5 +#define KEY_F5 0xC6 +#define KEY_F6 0xC7 +#define KEY_F7 0xC8 +#define KEY_F8 0xC9 +#define KEY_F9 0xCA +#define KEY_F10 0xCB +#define KEY_F11 0xCC +#define KEY_F12 0xCD + +typedef struct{ + uint8_t reportID; + uint8_t modifiers; + uint8_t reserved; + uint8_t keys[HID_KEYBOARD_ROLLOVER]; +} __packed KeyReport_t; + +class HIDKeyboard : public Print, public HIDReporter { +public: + KeyReport_t keyReport; + +protected: + uint8_t leds[HID_BUFFER_ALLOCATE_SIZE(1,1)]; + HIDBuffer_t ledData; + uint8_t reportID; + uint8_t getKeyCode(uint8_t k, uint8_t* modifiersP); + bool adjustForHostCapsLock = true; + +public: + HIDKeyboard(uint8_t _reportID=HID_KEYBOARD_REPORT_ID) : + HIDReporter((uint8*)&keyReport, sizeof(KeyReport_t), _reportID), + ledData(leds, HID_BUFFER_SIZE(1,_reportID), _reportID, HID_BUFFER_MODE_NO_WAIT), + reportID(_reportID) + {} + void begin(void); + void end(void); + void setAdjustForHostCapsLock(bool state) { + adjustForHostCapsLock = state; + } + inline uint8 getLEDs(void) { + return leds[reportID != 0 ? 1 : 0]; + } + virtual size_t write(uint8_t k); + virtual size_t press(uint8_t k); + virtual size_t release(uint8_t k); + virtual void releaseAll(void); +}; + + +//================================================================================ +//================================================================================ +// Joystick + +// only works for little-endian machines, but makes the code so much more +// readable +typedef struct { + uint8_t reportID; + uint32_t buttons; + unsigned hat:4; + unsigned x:10; + unsigned y:10; + unsigned rx:10; + unsigned ry:10; + unsigned sliderLeft:10; + unsigned sliderRight:10; +} __packed JoystickReport_t; + +static_assert(sizeof(JoystickReport_t)==13, "Wrong endianness/packing!"); + +class HIDJoystick : public HIDReporter { +protected: + JoystickReport_t joyReport; + bool manualReport = false; + void safeSendReport(void); +public: + inline void send(void) { + sendReport(); + } + void setManualReportMode(bool manualReport); // in manual report mode, reports only sent when send() is called + bool getManualReportMode(); + void begin(void); + void end(void); + void button(uint8_t button, bool val); + void X(uint16_t val); + void Y(uint16_t val); + void position(uint16_t x, uint16_t y); + void Xrotate(uint16_t val); + void Yrotate(uint16_t val); + void sliderLeft(uint16_t val); + void sliderRight(uint16_t val); + void slider(uint16_t val); + void hat(int16_t dir); + HIDJoystick(uint8_t reportID=HID_JOYSTICK_REPORT_ID) : HIDReporter((uint8_t*)&joyReport, sizeof(joyReport), reportID) { + joyReport.buttons = 0; + joyReport.hat = 15; + joyReport.x = 512; + joyReport.y = 512; + joyReport.rx = 512; + joyReport.ry = 512; + joyReport.sliderLeft = 0; + joyReport.sliderRight = 0; + } +}; + +extern USBHIDDevice USBHID; + +templateclass HIDRaw : public HIDReporter { +private: + uint8_t txBuffer[txSize]; + uint8_t rxBuffer[HID_BUFFER_ALLOCATE_SIZE(rxSize,0)]; + HIDBuffer_t buf; +public: + HIDRaw() : HIDReporter(txBuffer, sizeof(txBuffer)) {} + void begin(void) { + buf.buffer = rxBuffer; + buf.bufferSize = HID_BUFFER_SIZE(rxSize,0); + buf.reportID = 0; + USBHID.addOutputBuffer(&buf); + } + void end(void); + void send(const uint8_t* data, unsigned n=sizeof(txBuffer)) { + memset(txBuffer, 0, sizeof(txBuffer)); + memcpy(txBuffer, data, n>sizeof(txBuffer)?sizeof(txBuffer):n); + sendReport(); + } +}; + +extern HIDMouse Mouse; +extern HIDKeyboard Keyboard; +extern HIDJoystick Joystick; +extern HIDKeyboard BootKeyboard; + +extern const HIDReportDescriptor* hidReportMouse; +extern const HIDReportDescriptor* hidReportKeyboard; +extern const HIDReportDescriptor* hidReportJoystick; +extern const HIDReportDescriptor* hidReportKeyboardMouse; +extern const HIDReportDescriptor* hidReportKeyboardJoystick; +extern const HIDReportDescriptor* hidReportKeyboardMouseJoystick; +extern const HIDReportDescriptor* hidReportBootKeyboard; + +#define HID_MOUSE hidReportMouse +#define HID_KEYBOARD hidReportKeyboard +#define HID_JOYSTICK hidReportJoystick +#define HID_KEYBOARD_MOUSE hidReportKeyboardMouse +#define HID_KEYBOARD_JOYSTICK hidReportKeyboardJoystick +#define HID_KEYBOARD_MOUSE_JOYSTICK hidReportKeyboardMouseJoystick +#define HID_BOOT_KEYBOARD hidReportBootKeyboard + +#endif + \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/USBMIDI.cpp b/STM32F1/libraries/USBComposite/USBMIDI.cpp new file mode 100644 index 000000000..ba0e8951c --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBMIDI.cpp @@ -0,0 +1,469 @@ +/****************************************************************************** + * This started out as a munging of Tymm Twillman's arduino Midi Library into the Libusb class, + * though by now very little of the original code is left, except for the class API and + * comments. Tymm Twillman kindly gave Alexander Pruss permission to relicense his code under the MIT + * license, which fixed a nasty licensing mess. + * + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2013 Magnus Lundin. + * Copyright (c) 2013 Donald Delmar Davis, Suspect Devices. + * (c) 2003-2008 Tymm Twillman + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + * + * + *****************************************************************************/ + +/** + * @brief USB MIDI device with a class compatible with maplemidi + */ + +#include "USBMIDI.h" + +#include +#include +#include +#include +#include "usb_midi_device.h" +#include +#include "usb_generic.h" + + +/* + * USBMidi interface + */ + +#define USB_TIMEOUT 50 + +void USBMidi::setChannel(unsigned int channel) { + channelIn_ = channel; + +} + +/*bool USBMidi::init(USBMidi* me) { + return true; +}*/ + +bool USBMidi::registerComponent() { + return USBComposite.add(&usbMIDIPart, this); +} + +void USBMidi::begin(unsigned channel) { + setChannel(channel); + + if (enabled) + return; + + USBComposite.clear(); + registerComponent(); + USBComposite.begin(); + + enabled = true; +} + +void USBMidi::end(void) { + if (enabled) { + USBComposite.end(); + enabled = false; + } +} + +void USBMidi::writePacket(uint32 p) { + this->writePackets(&p, 1); +} + +void USBMidi::writePackets(const void *buf, uint32 len) { + if (!this->isConnected() || !buf) { + return; + } + + uint32 txed = 0; + uint32 old_txed = 0; + uint32 start = millis(); + + uint32 sent = 0; + + while (txed < len && (millis() - start < USB_TIMEOUT)) { + sent = usb_midi_tx((const uint32*)buf + txed, len - txed); + txed += sent; + if (old_txed != txed) { + start = millis(); + } + old_txed = txed; + } + + + if (sent == USB_MIDI_TX_EPSIZE) { + while (usb_midi_is_transmitting() != 0) { + } + /* flush out to avoid having the pc wait for more data */ + usb_midi_tx(NULL, 0); + } +} + +uint32 USBMidi::available(void) { + return usb_midi_data_available(); +} + +uint32 USBMidi::readPackets(void *buf, uint32 len) { + if (!buf) { + return 0; + } + + uint32 rxed = 0; + while (rxed < len) { + rxed += usb_midi_rx((uint32*)buf + rxed, len - rxed); + } + + return rxed; +} + +/* Blocks forever until 1 byte is received */ +uint32 USBMidi::readPacket(void) { + uint32 p; + this->readPackets(&p, 1); + return p; +} + +uint8 USBMidi::pending(void) { + return usb_midi_get_pending(); +} + +uint8 USBMidi::isConnected(void) { + return usb_is_connected(USBLIB) && usb_is_configured(USBLIB); +} + + +USBMidi USBMIDI; + + +// These are midi status message types are defined in MidiSpec.h + +union EVENT_t { + uint32 i; + uint8 b[4]; + MIDI_EVENT_PACKET_t p; +}; + +// Handle decoding incoming MIDI traffic a word at a time -- remembers +// what it needs to from one call to the next. +// +// This is a private function & not meant to be called from outside this class. +// It's used whenever data is available from the USB port. +// +void USBMidi::dispatchPacket(uint32 p) +{ + union EVENT_t e; + + e.i=p; + + switch (e.p.cin) { + case CIN_3BYTE_SYS_COMMON: + if (e.p.midi0 == MIDIv1_SONG_POSITION_PTR) { + handleSongPosition(((uint16)e.p.midi2)<<7|((uint16)e.p.midi1)); + } + break; + + case CIN_2BYTE_SYS_COMMON: + switch (e.p.midi0) { + case MIDIv1_SONG_SELECT: + handleSongSelect(e.p.midi1); + break; + case MIDIv1_MTC_QUARTER_FRAME: + // reference library doesnt handle quarter frame. + break; + } + break; + case CIN_NOTE_OFF: + handleNoteOff(MIDIv1_VOICE_CHANNEL(e.p.midi0), e.p.midi1, e.p.midi2); + break; + case CIN_NOTE_ON: + handleNoteOn(MIDIv1_VOICE_CHANNEL(e.p.midi0), e.p.midi1, e.p.midi2); + break; + case CIN_AFTER_TOUCH: + handleVelocityChange(MIDIv1_VOICE_CHANNEL(e.p.midi0), e.p.midi1, e.p.midi2); + break; + case CIN_CONTROL_CHANGE: + handleControlChange(MIDIv1_VOICE_CHANNEL(e.p.midi0), e.p.midi1, e.p.midi2); + break; + case CIN_PROGRAM_CHANGE: + handleProgramChange(MIDIv1_VOICE_CHANNEL(e.p.midi0), e.p.midi1); + break; + case CIN_CHANNEL_PRESSURE: + handleAfterTouch(MIDIv1_VOICE_CHANNEL(e.p.midi0), e.p.midi1); + break; + + case CIN_PITCH_WHEEL: + handlePitchChange(((uint16)e.p.midi2)<<7|((uint16)e.p.midi1)); + break; + case CIN_1BYTE: + switch (e.p.midi0) { + case MIDIv1_CLOCK: + handleSync(); + break; + case MIDIv1_TICK: + break; + case MIDIv1_START: + handleStart(); + break; + case MIDIv1_CONTINUE: + handleContinue(); + break; + case MIDIv1_STOP: + handleStop(); + break; + case MIDIv1_ACTIVE_SENSE: + handleActiveSense(); + break; + case MIDIv1_RESET: + handleReset(); + break; + case MIDIv1_TUNE_REQUEST: + handleTuneRequest(); + break; + + default: + break; + } + break; + } +} + + +// Try to read data from USB port & pass anything read to processing function +void USBMidi::poll(void) +{ while(available()) { + dispatchPacket(readPacket()); + } +} + +static union EVENT_t outPacket; // since we only use one at a time no point in reallocating it + +// Send Midi NOTE OFF message to a given channel, with note 0-127 and velocity 0-127 +void USBMidi::sendNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_NOTE_OFF; + outPacket.p.midi0=MIDIv1_NOTE_OFF|(channel & 0x0f); + outPacket.p.midi1=note; + outPacket.p.midi2=velocity; + writePacket(outPacket.i); + +} + + +// Send Midi NOTE ON message to a given channel, with note 0-127 and velocity 0-127 +void USBMidi::sendNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_NOTE_ON; + outPacket.p.midi0=MIDIv1_NOTE_ON|(channel & 0x0f); + outPacket.p.midi1=note; + outPacket.p.midi2=velocity; + writePacket(outPacket.i); + +} + +// Send a Midi VELOCITY CHANGE message to a given channel, with given note 0-127, +// and new velocity 0-127 +// Note velocity change == polyphonic aftertouch. +// Note aftertouch == channel pressure. +void USBMidi::sendVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_AFTER_TOUCH; + outPacket.p.midi0=MIDIv1_AFTER_TOUCH |(channel & 0x0f); + outPacket.p.midi1=note; + outPacket.p.midi2=velocity; + writePacket(outPacket.i); + +} + + +// Send a Midi CC message to a given channel, as a given controller 0-127, with given +// value 0-127 +void USBMidi::sendControlChange(unsigned int channel, unsigned int controller, unsigned int value) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_CONTROL_CHANGE; + outPacket.p.midi0=MIDIv1_CONTROL_CHANGE |(channel & 0x0f); + outPacket.p.midi1=controller; + outPacket.p.midi2=value; + writePacket(outPacket.i); + +} + +// Send a Midi PROGRAM CHANGE message to given channel, with program ID 0-127 +void USBMidi::sendProgramChange(unsigned int channel, unsigned int program) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_PROGRAM_CHANGE; + outPacket.p.midi0=MIDIv1_PROGRAM_CHANGE |(channel & 0x0f); + outPacket.p.midi1=program; + writePacket(outPacket.i); + +} + +// Send a Midi AFTER TOUCH message to given channel, with velocity 0-127 +void USBMidi::sendAfterTouch(unsigned int channel, unsigned int velocity) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_CHANNEL_PRESSURE; + outPacket.p.midi0=MIDIv1_CHANNEL_PRESSURE |(channel & 0x0f); + outPacket.p.midi1=velocity; + writePacket(outPacket.i); + +} + +// Send a Midi PITCH CHANGE message, with a 14-bit pitch (always for all channels) +void USBMidi::sendPitchChange(unsigned int pitch) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_PITCH_WHEEL; + outPacket.p.midi0=MIDIv1_PITCH_WHEEL; + outPacket.p.midi1= (uint8) pitch & 0x07F; + outPacket.p.midi2= (uint8) (pitch>>7) & 0x7f; + writePacket(outPacket.i); + +} + +// Send a Midi SONG POSITION message, with a 14-bit position (always for all channels) +void USBMidi::sendSongPosition(unsigned int position) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_3BYTE_SYS_COMMON; + outPacket.p.midi0=MIDIv1_SONG_POSITION_PTR; + outPacket.p.midi1= (uint8) position & 0x07F; + outPacket.p.midi2= (uint8) (position>>7) & 0x7f; + writePacket(outPacket.i); + +} + +// Send a Midi SONG SELECT message, with a song ID of 0-127 (always for all channels) +void USBMidi::sendSongSelect(unsigned int song) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_2BYTE_SYS_COMMON; + outPacket.p.midi0=MIDIv1_SONG_SELECT; + outPacket.p.midi1= (uint8) song & 0x07F; + writePacket(outPacket.i); + +} + +// Send a Midi TUNE REQUEST message (TUNE REQUEST is always for all channels) +void USBMidi::sendTuneRequest(void) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_1BYTE; + outPacket.p.midi0=MIDIv1_TUNE_REQUEST; + writePacket(outPacket.i); +} + + +// Send a Midi SYNC message (SYNC is always for all channels) +void USBMidi::sendSync(void) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_1BYTE; + outPacket.p.midi0=MIDIv1_CLOCK; + writePacket(outPacket.i); +} + +// Send a Midi START message (START is always for all channels) +void USBMidi::sendStart(void) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_1BYTE; + outPacket.p.midi0=MIDIv1_START ; + writePacket(outPacket.i); +} + + +// Send a Midi CONTINUE message (CONTINUE is always for all channels) +void USBMidi::sendContinue(void) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_1BYTE; + outPacket.p.midi0=MIDIv1_CONTINUE ; + writePacket(outPacket.i); +} + + +// Send a Midi STOP message (STOP is always for all channels) +void USBMidi::sendStop(void) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_1BYTE; + outPacket.p.midi0=MIDIv1_STOP ; + writePacket(outPacket.i); +} + +// Send a Midi ACTIVE SENSE message (ACTIVE SENSE is always for all channels) +void USBMidi::sendActiveSense(void) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_1BYTE; + outPacket.p.midi0=MIDIv1_ACTIVE_SENSE ; + writePacket(outPacket.i); +} + +// Send a Midi RESET message (RESET is always for all channels) +void USBMidi::sendReset(void) +{ + outPacket.p.cable=DEFAULT_MIDI_CABLE; + outPacket.p.cin=CIN_1BYTE; + outPacket.p.midi0=MIDIv1_RESET ; + writePacket(outPacket.i); +} + +const uint32 midiNoteFrequency_10ths[128] = { + 82, 87, 92, 97, 103, 109, 116, 122, 130, 138, 146, 154, 164, 173, 184, 194, + 206, 218, 231, 245, 260, 275, 291, 309, 327, 346, 367, 389, 412, 437, 462, 490, + 519, 550, 583, 617, 654, 693, 734, 778, 824, 873, 925, 980, 1038, 1100, 1165, 1235, + 1308, 1386, 1468, 1556, 1648, 1746, 1850, 1960, 2077, 2200, 2331, 2469, 2616, 2772, 2937, 3111, + 3296, 3492, 3700, 3920, 4153, 4400, 4662, 4939, 5233, 5544, 5873, 6223, 6593, 6985, 7400, 7840, + 8306, 8800, 9323, 9878, 10465, 11087, 11747, 12445, 13185, 13969, 14800, 15680, 16612, 17600, 18647, 19755, + 20930, 22175, 23493, 24890, 26370, 27938, 29600, 31360, 33224, 35200, 37293, 39511, 41860, 44349, 46986, 49780, + 52740, 55877, 59199, 62719, 66449, 70400, 74586, 79021, 83720, 88698, 93973, 99561, 105481, 111753, 118398, 125439 }; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-parameter" +// Placeholders. You should subclass the Midi base class and define these to have your +// version called. +void USBMidi::handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) {} +void USBMidi::handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) {} +void USBMidi::handleVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity) {} +void USBMidi::handleControlChange(unsigned int channel, unsigned int controller, unsigned int value) {} +void USBMidi::handleProgramChange(unsigned int channel, unsigned int program) {} +void USBMidi::handleAfterTouch(unsigned int channel, unsigned int velocity) {} +void USBMidi::handlePitchChange(unsigned int pitch) {} +void USBMidi::handleSongPosition(unsigned int position) {} +void USBMidi::handleSongSelect(unsigned int song) {} +void USBMidi::handleTuneRequest(void) {} +void USBMidi::handleSync(void) {} +void USBMidi::handleStart(void) {} +void USBMidi::handleContinue(void) {} +void USBMidi::handleStop(void) {} +void USBMidi::handleActiveSense(void) {} +void USBMidi::handleReset(void) {} +#pragma GCC diagnostic pop diff --git a/STM32F1/libraries/USBComposite/USBMIDI.h b/STM32F1/libraries/USBComposite/USBMIDI.h new file mode 100644 index 000000000..e77004771 --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBMIDI.h @@ -0,0 +1,186 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2013 Magnus Lundin. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @brief Wirish USB MIDI port (MidiUSB). + */ + +#ifndef _USBMIDI_H_ +#define _USBMIDI_H_ + +//#include +#include +#include +#include "usb_generic.h" + +/* + * This is the Midi class. If you are just sending Midi data, you only need to make an + * instance of the class, passing it your USB port -- in most cases it looks like + * + * USBMidi midi; + * + * then you don't need to do anything else; you can start using it to send Midi messages, + * e.g. + * + * midi.sendNoteOn(1, note, velocity); + * + * If you are using it to receive Midi data, it's a little more complex & you will need + * to subclass the Midi class. + * + * For people not used to C++ this may look confusing, but it's actually pretty easy. + * Note that you only need to write the functions for event types you want to handle. + * They should match the names & prototypes of the functions in the class; look at + * the functions in the Midi class below that have the keyword "virtual" to see which + * ones you can use. + * + * Here's an example of one that takes NOTE ON, NOTE OFF, and CONTROL CHANGE: + * + * class MyMidi : public USBMidi { + * public: + * + * // Need this to compile; it just hands things off to the Midi class. + * MyMidi() : USBMidi(s) {} + * + * void handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) + * { + * if (note == 40) {digitalWrite(13, HIGH); } + * } + * + * void handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) + * { + * if (note == 40) { digitalWrite(13, LOW); } + * } + * + * void handleControlChange(unsigned int channel, unsigned int controller, + * unsigned int value) + * { + * analogWrite(6, value * 2); + * } + * + * Then you need to make an instance of this class: + * + * MyMidi midi(); + * + * If receiving Midi data, you also need to call the poll function every time through + * loop(); e.g. + * + * void loop() { + * midi.poll(); + * } + * + * This causes the Midi class to read data from the USB port and process it. + */ + +class USBMidi { +private: + bool enabled = false; + + /* Private Receive Parameters */ + + // The channel this Midi instance receives data for (0 means all channels) + int channelIn_; + + /* Internal functions */ + + // Called whenever data is read from the USB port + void dispatchPacket(uint32 packet); + +public: + //static bool init(USBMidi* me); + // This registers this USB composite device component with the USBComposite class instance. + bool registerComponent(); + void setChannel(unsigned channel=0); + unsigned getChannel() { + return channelIn_; + } + + // Call to start the USB port, at given baud. For many applications + // the default parameters are just fine (which will cause messages for all + // MIDI channels to be delivered) + void begin(unsigned int channel = 0); + //void begin(); + void end(); + + uint32 available(void); + + uint32 readPackets(void *buf, uint32 len); + uint32 readPacket(void); + + void writePacket(uint32); +// void write(const char *str); + void writePackets(const void*, uint32); + + uint8 isConnected(); + uint8 pending(); + + // poll() should be called every time through loop() IF dealing with incoming MIDI + // (if you're only SENDING MIDI events from the Arduino, you don't need to call + // poll); it causes data to be read from the USB port and processed. + void poll(); + + // Call these to send MIDI messages of the given types + void sendNoteOff(unsigned int channel, unsigned int note, unsigned int velocity); + void sendNoteOn(unsigned int channel, unsigned int note, unsigned int velocity); + void sendVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity); + void sendControlChange(unsigned int channel, unsigned int controller, unsigned int value); + void sendProgramChange(unsigned int channel, unsigned int program); + void sendAfterTouch(unsigned int channel, unsigned int velocity); + void sendPitchChange(unsigned int pitch); + void sendSongPosition(unsigned int position); + void sendSongSelect(unsigned int song); + void sendTuneRequest(void); + void sendSync(void); + void sendStart(void); + void sendContinue(void); + void sendStop(void); + void sendActiveSense(void); + void sendReset(void); + + // Overload these in a subclass to get MIDI messages when they come in + virtual void handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity); + virtual void handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity); + virtual void handleVelocityChange(unsigned int channel, unsigned int note, unsigned int velocity); + virtual void handleControlChange(unsigned int channel, unsigned int controller, unsigned int value); + virtual void handleProgramChange(unsigned int channel, unsigned int program); + virtual void handleAfterTouch(unsigned int channel, unsigned int velocity); + virtual void handlePitchChange(unsigned int pitch); + virtual void handleSongPosition(unsigned int position); + virtual void handleSongSelect(unsigned int song); + virtual void handleTuneRequest(void); + virtual void handleSync(void); + virtual void handleStart(void); + virtual void handleContinue(void); + virtual void handleStop(void); + virtual void handleActiveSense(void); + virtual void handleReset(void); +}; + +extern USBMidi USBMIDI; + +extern const uint32 midiNoteFrequency_10ths[128]; + +#endif \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/USBMassStorage.cpp b/STM32F1/libraries/USBComposite/USBMassStorage.cpp new file mode 100644 index 000000000..c376e6906 --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBMassStorage.cpp @@ -0,0 +1,45 @@ +#include "USBMassStorage.h" +#include "usb_mass.h" +#include "usb_mass_mal.h" +#include "usb_serial.h" +#include + +void USBMassStorageDevice::begin() { + if(!enabled) { + USBComposite.clear(); + registerComponent(); + USBComposite.begin(); + + enabled = true; + } +} + +void USBMassStorageDevice::end() { + USBComposite.end(); +} + +void USBMassStorageDevice::loop() { + usb_mass_loop(); +} + +bool USBMassStorageDevice::registerComponent() { + return USBComposite.add(&usbMassPart, this); +} + +void USBMassStorageDevice::setDrive(uint32 driveNumber, uint32 byteSize, MassStorageReader reader, + MassStorageWriter writer, MassStorageStatuser statuser, MassStorageInitializer initializer) { + if (driveNumber >= USB_MASS_MAX_DRIVES) + return; + usb_mass_drives[driveNumber].blockCount = byteSize/512; + usb_mass_drives[driveNumber].read = reader; + usb_mass_drives[driveNumber].write = writer; + usb_mass_drives[driveNumber].status = statuser; + usb_mass_drives[driveNumber].init = initializer; + usb_mass_drives[driveNumber].format = initializer; +} + +void USBMassStorageDevice::clearDrives() { + memset(usb_mass_drives, 0, sizeof(usb_mass_drives)); +} + +USBMassStorageDevice MassStorage; diff --git a/STM32F1/libraries/USBComposite/USBMassStorage.h b/STM32F1/libraries/USBComposite/USBMassStorage.h new file mode 100644 index 000000000..02663ab92 --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBMassStorage.h @@ -0,0 +1,25 @@ +#ifndef USBMASSSTORAGE_H +#define USBMASSSTORAGE_H + +#include +#include "USBComposite.h" +#include "usb_generic.h" +#include "usb_mass_mal.h" + +class USBMassStorageDevice { +private: + bool enabled = false; +public: + void begin(); + void end(); + void loop(); + void clearDrives(void); + bool registerComponent(); + void setDrive(uint32 driveNumber, uint32 byteSize, MassStorageReader reader, + MassStorageWriter writer = NULL, MassStorageStatuser = NULL, MassStorageInitializer = NULL); +}; + +extern USBMassStorageDevice MassStorage; + +#endif /* USBMASSSTORAGE_H */ + diff --git a/STM32F1/libraries/USBComposite/USBXBox360.cpp b/STM32F1/libraries/USBComposite/USBXBox360.cpp new file mode 100644 index 000000000..83237c0a2 --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBXBox360.cpp @@ -0,0 +1,173 @@ +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +/** + * @brief USB HID Keyboard device + */ + +#include +#include +#include +#include +#include "USBXBox360.h" +#include "usb_x360.h" + +void USBXBox360::sendReport(void){ + x360_tx(xbox360_Report, sizeof(xbox360_Report)); + + while (x360_is_transmitting() != 0) { + } + /* flush out to avoid having the pc wait for more data */ + x360_tx(NULL, 0); +} + +void USBXBox360::setRumbleCallback(void (*callback)(uint8 left, uint8 right)) { + x360_set_rumble_callback(callback); +} + +void USBXBox360::setLEDCallback(void (*callback)(uint8 pattern)) { + x360_set_led_callback(callback); +} + + +bool USBXBox360::init(void* ignore) { + (void)ignore; + usb_generic_set_info(0x045e, 0x028e, NULL, NULL, NULL); + return true; +} + +bool USBXBox360::registerComponent() { + return USBComposite.add(&usbX360Part, this, init); +} + +void USBXBox360::begin(void){ + if(!enabled){ + USBComposite.clear(); + registerComponent(); + USBComposite.begin(); + + enabled = true; + } +} + +void USBXBox360::end() { + if (enabled) { + enabled = false; + USBComposite.end(); + } +} + +void USBXBox360::stop(void){ + setRumbleCallback(NULL); + setLEDCallback(NULL); +} + +void USBXBox360::setManualReportMode(bool mode) { + manualReport = mode; +} + +bool USBXBox360::getManualReportMode() { + return manualReport; +} + +void USBXBox360::safeSendReport() { + if (!manualReport) { + while (x360_is_transmitting() != 0) { + } + sendReport(); + } +} + +void USBXBox360::send() { + while (x360_is_transmitting() != 0) { + } + sendReport(); +} + +void USBXBox360::button(uint8_t button, bool val){ + button--; + uint8_t mask = (1 << (button & 7)); + if (val) { + if (button < 8) xbox360_Report[2] |= mask; + else if (button < 16) xbox360_Report[3] |= mask; + } else { + mask = ~mask; + if (button < 8) xbox360_Report[2] &= mask; + else if (button < 16) xbox360_Report[3] &= mask; + } + + safeSendReport(); +} + +void USBXBox360::X(int16_t val){ + xbox360_Report[6] = val; + xbox360_Report[7] = (uint16)val >> 8; + + safeSendReport(); +} + +void USBXBox360::Y(int16_t val){ + xbox360_Report[8] = val; + xbox360_Report[9] = (uint16)val >> 8; + + safeSendReport(); +} + +void USBXBox360::XRight(int16_t val){ + xbox360_Report[0xA] = val; + xbox360_Report[0xB] = (uint16)val >> 8; + + safeSendReport(); +} + +void USBXBox360::YRight(int16_t val){ + xbox360_Report[0xC] = val; + xbox360_Report[0xD] = (uint16)val >> 8; + + safeSendReport(); +} + +void USBXBox360::position(int16_t x, int16_t y){ + xbox360_Report[6] = x; + xbox360_Report[7] = (uint16)x >> 8; + xbox360_Report[8] = y; + xbox360_Report[9] = (uint16)y >> 8; + + safeSendReport(); +} + +void USBXBox360::positionRight(int16_t x, int16_t y){ + xbox360_Report[0xA] = x; + xbox360_Report[0xB] = (uint16)x >> 8; + xbox360_Report[0xC] = y; + xbox360_Report[0xD] = (uint16)y >> 8; + + safeSendReport(); +} + +void USBXBox360::sliderLeft(uint8_t val){ + xbox360_Report[4] = val; + + safeSendReport(); +} + +void USBXBox360::sliderRight(uint8_t val){ + xbox360_Report[5] = val; + + safeSendReport(); +} + +USBXBox360 XBox360; diff --git a/STM32F1/libraries/USBComposite/USBXBox360.h b/STM32F1/libraries/USBComposite/USBXBox360.h new file mode 100644 index 000000000..e48e7a7f9 --- /dev/null +++ b/STM32F1/libraries/USBComposite/USBXBox360.h @@ -0,0 +1,58 @@ +/* Copyright (c) 2011, Peter Barrett +** +** Permission to use, copy, modify, and/or distribute this software for +** any purpose with or without fee is hereby granted, provided that the +** above copyright notice and this permission notice appear in all copies. +** +** THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL +** WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED +** WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR +** BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES +** OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, +** ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS +** SOFTWARE. +*/ + +#ifndef _USBXBox360_H +#define _USBXBox360_H + +#include +#include +#include "USBComposite.h" +#include "usb_generic.h" + +class USBXBox360 { +private: + uint8_t xbox360_Report[20] = {0,0x14};// 3,0,0,0,0,0x0F,0x20,0x80,0x00,0x02,0x08,0x20,0x80}; + bool manualReport = false; + bool enabled; + void safeSendReport(void); + void sendReport(void); +public: + void send(void); + static bool init(void* ignore); + bool registerComponent(); + void stop(); + void setManualReportMode(bool manualReport); + bool getManualReportMode(); + void begin(void); + void end(void); + void button(uint8_t button, bool val); + void X(int16_t val); + void Y(int16_t val); + void position(int16_t x, int16_t y); + void positionRight(int16_t x, int16_t y); + void XRight(int16_t val); + void YRight(int16_t val); + void sliderLeft(uint8_t val); + void sliderRight(uint8_t val); + void hat(int16_t dir); + void setLEDCallback(void (*callback)(uint8 pattern)); + void setRumbleCallback(void (*callback)(uint8 left, uint8 right)); +}; + +extern USBXBox360 XBox360; + +#endif + diff --git a/STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino b/STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino new file mode 100644 index 000000000..72b42f5f5 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/BootKeyboard/BootKeyboard.ino @@ -0,0 +1,15 @@ +#include + +void setup() +{ + USBHID_begin_with_serial(HID_BOOT_KEYBOARD); + BootKeyboard.begin(); // needed just in case you need LED support +} + +void loop() +{ + BootKeyboard.press(KEY_F12); + delay(100); + BootKeyboard.release(KEY_F12); + delay(1000); +} diff --git a/STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino b/STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino new file mode 100644 index 000000000..29368eaca --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/absmouse/absmouse.ino @@ -0,0 +1,25 @@ +#include + +const uint8_t reportDescription[] = { + HID_ABS_MOUSE_REPORT_DESCRIPTOR(HID_MOUSE_REPORT_ID) +}; + +HIDAbsMouse mouse; + +void setup(){ + USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + delay(1000); + mouse.move(0,0); + delay(1000); + mouse.press(MOUSE_LEFT); + mouse.move(500,500); + mouse.release(MOUSE_ALL); + mouse.click(MOUSE_RIGHT); +} + +void loop(){ + mouse.move(0,0); + delay(1000); + mouse.move(16384,16384); + delay(1000); +} diff --git a/STM32F1/libraries/USBComposite/examples/consumer/consumer.ino b/STM32F1/libraries/USBComposite/examples/consumer/consumer.ino new file mode 100644 index 000000000..9cf9c9f03 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/consumer/consumer.ino @@ -0,0 +1,18 @@ +#include + +const uint8_t reportDescription[] = { + HID_CONSUMER_REPORT_DESCRIPTOR() +}; + +HIDConsumer Consumer; + +void setup(){ + USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); +} + +void loop() { + Consumer.press(HIDConsumer::BRIGHTNESS_DOWN); + Consumer.release(); + delay(500); +} + diff --git a/STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino b/STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino new file mode 100644 index 000000000..d45a31243 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/keyboardwithleds/keyboardwithleds.ino @@ -0,0 +1,14 @@ +#include + + +void setup() { + USBHID_begin_with_serial(HID_KEYBOARD); + Keyboard.begin(); // needed for LED support + delay(1000); +} + +void loop() { + CompositeSerial.println(Keyboard.getLEDs()); +} + + diff --git a/STM32F1/libraries/USBComposite/examples/mass/image.h b/STM32F1/libraries/USBComposite/examples/mass/image.h new file mode 100644 index 000000000..f96b94115 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/mass/image.h @@ -0,0 +1,67 @@ +uint8 image[11776] = { +0xEB,0x3C,0x90,0x6D,0x6B,0x64,0x6F,0x73,0x66,0x73,0x00,0x00,0x02,0x04,0x01,0x00, +0x02,0x10,0x00,0x17,0x00,0xF8,0x01,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xDB,0x32,0x73,0x5A,0x20,0x20,0x20,0x20,0x20, +0x20,0x20,0x20,0x20,0x20,0x20,0x46,0x41,0x54,0x31,0x32,0x20,0x20,0x20,0x0E,0x1F, +0xBE,0x5B,0x7C,0xAC,0x22,0xC0,0x74,0x0B,0x56,0xB4,0x0E,0xBB,0x07,0x00,0xCD,0x10, +0x5E,0xEB,0xF0,0x32,0xE4,0xCD,0x16,0xCD,0x19,0xEB,0xFE,0x54,0x68,0x69,0x73,0x20, +0x69,0x73,0x20,0x6E,0x6F,0x74,0x20,0x61,0x20,0x62,0x6F,0x6F,0x74,0x61,0x62,0x6C, +0x65,0x20,0x64,0x69,0x73,0x6B,0x2E,0x20,0x20,0x50,0x6C,0x65,0x61,0x73,0x65,0x20, +0x69,0x6E,0x73,0x65,0x72,0x74,0x20,0x61,0x20,0x62,0x6F,0x6F,0x74,0x61,0x62,0x6C, +0x65,0x20,0x66,0x6C,0x6F,0x70,0x70,0x79,0x20,0x61,0x6E,0x64,0x0D,0x0A,0x70,0x72, +0x65,0x73,0x73,0x20,0x61,0x6E,0x79,0x20,0x6B,0x65,0x79,0x20,0x74,0x6F,0x20,0x74, +0x72,0x79,0x20,0x61,0x67,0x61,0x69,0x6E,0x20,0x2E,0x2E,0x2E,0x20,0x0D,0x0A,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0xAA, +0xF8,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xF8,0xFF,0xFF, +}; diff --git a/STM32F1/libraries/USBComposite/examples/mass/mass.ino b/STM32F1/libraries/USBComposite/examples/mass/mass.ino new file mode 100644 index 000000000..e10c04ef1 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/mass/mass.ino @@ -0,0 +1,65 @@ +#include + +#include "image.h" + +bool write(uint32_t memoryOffset, const uint8_t *writebuff, uint16_t transferLength) { + memcpy(image+memoryOffset, writebuff, transferLength); + + return true; +} + +bool read(uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength) { + memcpy(readbuff, image+memoryOffset, transferLength); + + return true; +} + +char hexNibble(uint8 x) { + return x < 10 ? x + '0' : x + 'A' - 10; +} + +char* format16(uint16 c) { + static char str[6]; + str[5] = 0; + char *p = str+5; + do { + *--p = (c % 10) + '0'; + c /= 10; + } while(c); + return p; +} + +void dumpDrive() { + char hex[7] = "0x11,"; + CompositeSerial.print("uint8 image["); + CompositeSerial.print(format16(sizeof(image))); + CompositeSerial.println("] = {"); + int last; + for (last=sizeof(image)-1;last>=0 && image[last] == 0;last--); + if (last<0) last=0; + + for (int i=0; i<=last; i++) { + if (i && i % 16 == 0) + CompositeSerial.println(""); + hex[2] = hexNibble(image[i]>>4); + hex[3] = hexNibble(image[i]&0xF); + CompositeSerial.print(hex); + } + CompositeSerial.println("\n};\n"); +} + +void setup() { + MassStorage.setDrive(0, sizeof(image), read, write); + MassStorage.registerComponent(); + CompositeSerial.registerComponent(); + USBComposite.begin(); + delay(2000); +} + +void loop() { + MassStorage.loop(); + if (CompositeSerial.available() && 'd' == CompositeSerial.read()) { + dumpDrive(); + } +} + diff --git a/STM32F1/libraries/USBComposite/examples/midiin/midiin.ino b/STM32F1/libraries/USBComposite/examples/midiin/midiin.ino new file mode 100644 index 000000000..20da70a78 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/midiin/midiin.ino @@ -0,0 +1,27 @@ +#include + +#define SPEAKER_PIN PA0 + +class myMidi : public USBMidi { + virtual void handleNoteOff(unsigned int channel, unsigned int note, unsigned int velocity) { + noTone(SPEAKER_PIN); + } + virtual void handleNoteOn(unsigned int channel, unsigned int note, unsigned int velocity) { + tone(SPEAKER_PIN, (midiNoteFrequency_10ths[note]+5)/10); + } + +}; + +myMidi midi; + +void setup() { + pinMode(SPEAKER_PIN, OUTPUT); + midi.registerComponent(); + CompositeSerial.registerComponent(); + USBComposite.begin(); +} + +void loop() { + midi.poll(); +} + diff --git a/STM32F1/libraries/USBComposite/examples/midiout/midiout.ino b/STM32F1/libraries/USBComposite/examples/midiout/midiout.ino new file mode 100644 index 000000000..3fe98b0c8 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/midiout/midiout.ino @@ -0,0 +1,17 @@ +#include + +const uint8_t notes[] = {60, 62, 64, 65, 67, 69, 71, 72, 61, 63, 66, 68, 70}; +const int numNotes = sizeof(notes)/sizeof(*notes); + +void setup() { + USBMIDI.begin(); + delay(1000); +} + +void loop() { + for (int i=0;i + +#define TXSIZE 256 +#define RXSIZE 300 + +HIDRaw raw; +uint8 buf[RXSIZE]; + +const uint8_t reportDescription[] = { + HID_RAW_REPORT_DESCRIPTOR(TXSIZE,RXSIZE) +}; + +void setup(){ + USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + raw.begin(); +} + +void loop() { + if (raw.getOutput(buf)) { + for (int i=0;i +#include +#include "SdFat.h" + +#define LED_PIN PB12 + +SdFatEX sd; +const uint32_t speed = SPI_CLOCK_DIV2 ; +const uint8_t SD_CHIP_SELECT = SS; +bool enabled = false; +uint32 cardSize; + +bool write(uint32_t memoryOffset, const uint8_t *writebuff, uint16_t transferLength) { + return sd.card()->writeBlocks(memoryOffset/512, writebuff, transferLength/512); +} + +bool read(uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength) { + return sd.card()->readBlocks(memoryOffset/512, readbuff, transferLength/512); +} + +void setup() { + pinMode(LED_PIN,OUTPUT); + digitalWrite(LED_PIN,1); +} + +void initReader() { + digitalWrite(LED_PIN,0); + cardSize = sd.card()->cardSize(); + MassStorage.setDrive(0, cardSize*512, read, write); + MassStorage.registerComponent(); + CompositeSerial.registerComponent(); + USBComposite.begin(); + enabled=true; +} + +void loop() { + if (!enabled) { + if (sd.begin(SD_CHIP_SELECT)) { + initReader(); + } + else { + delay(50); + } + } + else { + MassStorage.loop(); + } +} + diff --git a/STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino b/STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino new file mode 100644 index 000000000..f0c75dfc6 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/simplejoystick/simplejoystick.ino @@ -0,0 +1,13 @@ +#include + +void setup() { + USBHID_begin_with_serial(HID_JOYSTICK); +} + +void loop() { + Joystick.X(0); + delay(500); + Joystick.X(1023); + delay(500); +} + diff --git a/STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino b/STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino new file mode 100644 index 000000000..80c296feb --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/simplekeyboard/simplekeyboard.ino @@ -0,0 +1,13 @@ +#include + +void setup() { + USBHID_begin_with_serial(HID_KEYBOARD); + Keyboard.begin(); // useful to detect host capslock state and LEDs + delay(1000); +} + +void loop() { + Keyboard.println("Hello world"); + delay(10000); +} + diff --git a/STM32F1/libraries/USBComposite/examples/softjoystick/send.py b/STM32F1/libraries/USBComposite/examples/softjoystick/send.py new file mode 100644 index 000000000..5025db912 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/softjoystick/send.py @@ -0,0 +1,60 @@ +from pywinusb import hid +from time import sleep + +REPORT_ID = 20 +HID_REPORT_FEATURE = 3 + +device = hid.HidDeviceFilter(vendor_id = 0x1EAF).get_devices()[0] # , product_id = 0x0024 +print(device) +device.open() + +""" + uint8_t reportID; + uint32_t buttons; + unsigned hat:4; + unsigned x:10; + unsigned y:10; + unsigned rx:10; + unsigned ry:10; + unsigned sliderLeft:10; + unsigned sliderRight:10; +""" + +def toBits(n,bits): + return tuple((n>>i)&1 for i in range(bits)) + +def getByteFromBits(bits,n): + out = 0 + for i in range(8): + out += bits[8*n+i] << i + return out + +def joystickData(reportID=REPORT_ID, buttons=0, hat=15, x=512, y=512, rx=512, ry=512, sliderLeft=512, sliderRight=512): + joyData = ( toBits(reportID,8) + toBits(buttons,32) + toBits(hat,4) + toBits(x,10) + toBits(y,10) + + toBits(rx,10) + toBits(ry,10) + toBits(sliderLeft,10) + toBits(sliderRight,10) ) + out = [getByteFromBits(joyData,n) for n in range(13)] + print(out) + return out + +myReport = None + +for report in device.find_feature_reports(): + if report.report_id == REPORT_ID and report.report_type == "Feature": + myReport = report + break +if myReport is None: + for report in device.find_output_reports(): + if report.report_id == REPORT_ID and report.report_type == "Output": + myReport = report + break + +assert myReport is not None + +while True: + myReport.set_raw_data(joystickData(buttons=7,x=0,y=0)) + + myReport.send() + sleep(0.5) + myReport.set_raw_data(joystickData(buttons=0,x=1023,y=1023)) + myReport.send() + sleep(0.5) diff --git a/STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino b/STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino new file mode 100644 index 000000000..0fe9b5509 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/softjoystick/softjoystick.ino @@ -0,0 +1,47 @@ +// This is a silly project: you send a feature +// report from the PC, and it becomes a joystick setting. +// I guess it's not completely useless as it lets you +// get vJoy functionality without special vJoy drivers. + +#include + +#define DATA_SIZE (sizeof(JoystickReport_t)-1) + +class HIDJoystickRawData : public HIDJoystick { + private: + uint8_t featureData[HID_BUFFER_ALLOCATE_SIZE(DATA_SIZE,1)]; + HIDBuffer_t fb { featureData, HID_BUFFER_SIZE(DATA_SIZE,1), HID_JOYSTICK_REPORT_ID }; + public: + HIDJoystickRawData(uint8_t reportID=HID_JOYSTICK_REPORT_ID) : HIDJoystick(reportID) {} + + void begin() { + USBHID.setFeatureBuffers(&fb, 1); + } + + void setRawData(JoystickReport_t* p) { + joyReport = *p; + send(); + } +}; + +HIDJoystickRawData joy; +JoystickReport_t report = {HID_JOYSTICK_REPORT_ID}; + +const uint8_t reportDescription[] = { + HID_JOYSTICK_REPORT_DESCRIPTOR(HID_JOYSTICK_REPORT_ID, + HID_FEATURE_REPORT_DESCRIPTOR(DATA_SIZE)) +}; + +void setup() { + USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + joy.begin(); +} + +void loop() { + if (joy.getFeature(1+(uint8_t*)&report)) { + joy.setRawData(&report); + } + + delay(5); +} + diff --git a/STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino b/STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino new file mode 100644 index 000000000..7cf929d11 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/twojoysticks/twojoysticks.ino @@ -0,0 +1,40 @@ +#include + +const uint8_t reportDescription[] = { + HID_MOUSE_REPORT_DESCRIPTOR(), + HID_KEYBOARD_REPORT_DESCRIPTOR(), + HID_JOYSTICK_REPORT_DESCRIPTOR(), + HID_JOYSTICK_REPORT_DESCRIPTOR(HID_JOYSTICK_REPORT_ID+1), +}; + +HIDJoystick Joystick2(HID_JOYSTICK_REPORT_ID+1); + +void setup(){ + USBHID_begin_with_serial(reportDescription, sizeof(reportDescription)); + Joystick.setManualReportMode(true); + Joystick2.setManualReportMode(true); +} + +void loop(){ + Joystick.X(0); + Joystick.Y(0); + Joystick.sliderRight(1023); + Joystick.send(); + delay(400); + Joystick.X(1023); + Joystick.Y(1023); + Joystick.sliderRight(0); + Joystick.send(); + delay(400); + Joystick2.X(0); + Joystick2.Y(0); + Joystick2.sliderRight(1023); + Joystick2.send(); + delay(400); + Joystick2.X(1023); + Joystick2.Y(1023); + Joystick2.sliderRight(0); + Joystick2.send(); + delay(400); +} + diff --git a/STM32F1/libraries/USBComposite/examples/x360/x360.ino b/STM32F1/libraries/USBComposite/examples/x360/x360.ino new file mode 100644 index 000000000..d97a7f392 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/x360/x360.ino @@ -0,0 +1,15 @@ +#include + +void setup() { + XBox360.begin(); + delay(1000); +} + +void loop() { + XBox360.X(-32767); + XBox360.Y(-32767); + delay(1000); + XBox360.X(32767); + XBox360.Y(32767); + delay(1000); +} diff --git a/STM32F1/libraries/USBComposite/keywords.txt b/STM32F1/libraries/USBComposite/keywords.txt new file mode 100644 index 000000000..3092c0031 --- /dev/null +++ b/STM32F1/libraries/USBComposite/keywords.txt @@ -0,0 +1,89 @@ +####################################### +# Syntax Coloring Map USBHID +####################################### + +####################################### +# Datatypes (KEYWORD1) +####################################### + +HID KEYWORD1 +Joystick KEYWORD1 +Keyboard KEYWORD1 +Mouse KEYWORD1 +CompositeSerial KEYWORD1 +XBox360 KEYWORD1 + +####################################### +# Methods and Functions (KEYWORD2) +####################################### +begin KEYWORD2 +end KEYWORD2 +XRight KEYWORD2 +YRight KEYWORD2 +Yrotate KEYWORD2 +Y KEYWORD2 +Xrotate KEYWORD2 +X KEYWORD2 +sliderLeft KEYWORD2 +sliderRight KEYWORD2 +button KEYWORD2 +hat KEYWORD2 +setManualReportMode KEYWORD2 +getManualReportMode KEYWORD2 +release KEYWORD2 +press KEYWORD2 +releaseAll KEYWORD2 +move KEYWORD2 +send KEYWORD2 +click KEYWORD2 + + +####################################### +# Constants (LITERAL1) +####################################### +USB_HID_MOUSE LITERAL1 +USB_HID_KEYBOARD LITERAL1 +USB_HID_JOYSTICK LITERAL1 +USB_HID_KEYBOARD_MOUSE LITERAL1 +USB_HID_KEYBOARD_MOUSE_JOYSTICK LITERAL1 +USB_HID_KEYBOARD_JOYSTICK LITERAL1 +KEY_LEFT_CTRL LITERAL1 +KEY_LEFT_SHIFT LITERAL1 +KEY_LEFT_ALT LITERAL1 +KEY_LEFT_GUI LITERAL1 +KEY_RIGHT_CTRL LITERAL1 +KEY_RIGHT_SHIFT LITERAL1 +KEY_RIGHT_ALT LITERAL1 +KEY_RIGHT_GUI LITERAL1 +KEY_UP_ARROW LITERAL1 +KEY_DOWN_ARROW LITERAL1 +KEY_LEFT_ARROW LITERAL1 +KEY_RIGHT_ARROW LITERAL1 +KEY_BACKSPACE LITERAL1 +KEY_TAB LITERAL1 +KEY_RETURN LITERAL1 +KEY_ESC LITERAL1 +KEY_INSERT LITERAL1 +KEY_DELETE LITERAL1 +KEY_PAGE_UP LITERAL1 +KEY_PAGE_DOWN LITERAL1 +KEY_HOME LITERAL1 +KEY_END LITERAL1 +KEY_CAPS_LOCK LITERAL1 +KEY_F1 LITERAL1 +KEY_F2 LITERAL1 +KEY_F3 LITERAL1 +KEY_F4 LITERAL1 +KEY_F5 LITERAL1 +KEY_F6 LITERAL1 +KEY_F7 LITERAL1 +KEY_F8 LITERAL1 +KEY_F9 LITERAL1 +KEY_F10 LITERAL1 +KEY_F11 LITERAL1 +KEY_F12 LITERAL1 +MOUSE_LEFT LITERAL1 +MOUSE_MIDDLE LITERAL1 +MOUSE_RIGHT LITERAL1 +MOUSE_ALL LITERAL1 +HIDConsumer LITERAL1 diff --git a/STM32F1/libraries/USBComposite/library.properties b/STM32F1/libraries/USBComposite/library.properties new file mode 100644 index 000000000..1d8c2cb51 --- /dev/null +++ b/STM32F1/libraries/USBComposite/library.properties @@ -0,0 +1,10 @@ +name=USBComposite for STM32F1 +version=0.64 +author=Various +email=arpruss@gmail.com +sentence=USB HID / MIDI / mass storage library for STM32F1 +paragraph=USB HID / MIDI / mass storage library for STM32F1 +url=https://github.com/arpruss/USBHID_stm32f1 +architectures=STM32F1 +maintainer=arpruss@gmail.com +category=Communication \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/usb_generic.c b/STM32F1/libraries/USBComposite/usb_generic.c new file mode 100644 index 000000000..c9ed0b358 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_generic.c @@ -0,0 +1,531 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/usb/stm32f1/usb_hid.c + * @brief USB HID (human interface device) support + * + * FIXME: this works on the STM32F1 USB peripherals, and probably no + * place else. Nonportable bits really need to be factored out, and + * the result made cleaner. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +//#include +#include + + +//uint16 GetEPTxAddr(uint8 /*bEpNum*/); + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" +#include "usb_def.h" + +#include "usb_generic.h" + +// Are we currently sending an IN packet? +volatile int8 usbGenericTransmitting = -1; + +static uint8* usbGetConfigDescriptor(uint16 length); +static void usbInit(void); +static void usbReset(void); +static void usbClearFeature(void); +static void usbSetConfiguration(void); +static RESULT usbDataSetup(uint8 request); +static RESULT usbNoDataSetup(uint8 request); +static RESULT usbGetInterfaceSetting(uint8 interface, uint8 alt_setting); +static uint8* usbGetStringDescriptor(uint16 length); +static uint8* usbGetConfigDescriptor(uint16 length); +static uint8* usbGetDeviceDescriptor(uint16 length); +static void usbSetConfiguration(void); +static void usbSetDeviceAddress(void); + +#define LEAFLABS_ID_VENDOR 0x1EAF +#define MAPLE_ID_PRODUCT 0x0004 // was 0x0024 +#define USB_DEVICE_CLASS 0x00 +#define USB_DEVICE_SUBCLASS 0x00 +#define DEVICE_PROTOCOL 0x01 +#define HID_DESCRIPTOR_TYPE 0x21 + +static usb_descriptor_device usbGenericDescriptor_Device = + { + .bLength = sizeof(usb_descriptor_device), + .bDescriptorType = USB_DESCRIPTOR_TYPE_DEVICE, + .bcdUSB = 0x0200, + .bDeviceClass = USB_DEVICE_CLASS, + .bDeviceSubClass = USB_DEVICE_SUBCLASS, + .bDeviceProtocol = DEVICE_PROTOCOL, + .bMaxPacketSize0 = 0x40, + .idVendor = LEAFLABS_ID_VENDOR, + .idProduct = MAPLE_ID_PRODUCT, + .bcdDevice = 0x0200, + .iManufacturer = 0x01, + .iProduct = 0x02, + .iSerialNumber = 0x00, + .bNumConfigurations = 0x01, +}; + +typedef struct { + usb_descriptor_config_header Config_Header; + uint8 descriptorData[MAX_USB_DESCRIPTOR_DATA_SIZE]; +} __packed usb_descriptor_config; + +static usb_descriptor_config usbConfig; + +#define MAX_POWER (100 >> 1) + +static const usb_descriptor_config_header Base_Header = { + .bLength = sizeof(usb_descriptor_config_header), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CONFIGURATION, + .wTotalLength = 0, + .bNumInterfaces = 0, + .bConfigurationValue = 0x01, + .iConfiguration = 0x00, + .bmAttributes = (USB_CONFIG_ATTR_BUSPOWERED | + USB_CONFIG_ATTR_SELF_POWERED), + .bMaxPower = MAX_POWER, +}; + +static ONE_DESCRIPTOR Device_Descriptor = { + (uint8*)&usbGenericDescriptor_Device, + sizeof(usb_descriptor_device) +}; + +static ONE_DESCRIPTOR Config_Descriptor = { + (uint8*)&usbConfig, + 0 +}; + +static DEVICE my_Device_Table = { + .Total_Endpoint = 0, + .Total_Configuration = 1 +}; + +/* Unicode language identifier: 0x0409 is US English */ +/* FIXME move to Wirish */ +static const usb_descriptor_string usbHIDDescriptor_LangID = { + .bLength = USB_DESCRIPTOR_STRING_LEN(1), + .bDescriptorType = USB_DESCRIPTOR_TYPE_STRING, + .bString = {0x09, 0x04}, +}; + +#define default_iManufacturer_length 8 +const usb_descriptor_string usb_generic_default_iManufacturer = { + .bLength = USB_DESCRIPTOR_STRING_LEN(default_iManufacturer_length), + .bDescriptorType = USB_DESCRIPTOR_TYPE_STRING, + .bString = {'L', 0, 'e', 0, 'a', 0, 'f', 0, 'L', 0, 'a', 0, 'b', 0, 's', 0}, +}; + +#define default_iProduct_length 5 +const usb_descriptor_string usb_generic_default_iProduct = { + .bLength = USB_DESCRIPTOR_STRING_LEN(default_iProduct_length), + .bDescriptorType = USB_DESCRIPTOR_TYPE_STRING, + .bString = {'M', 0, 'a', 0, 'p', 0, 'l', 0, 'e', 0}, +}; + + +#define MAX_PACKET_SIZE 0x40 /* 64B, maximum for USB FS Devices */ +static DEVICE_PROP my_Device_Property = { + .Init = usbInit, + .Reset = usbReset, + .Process_Status_IN = NOP_Process, + .Process_Status_OUT = NOP_Process, + .Class_Data_Setup = usbDataSetup, + .Class_NoData_Setup = usbNoDataSetup, + .Class_Get_Interface_Setting = usbGetInterfaceSetting, + .GetDeviceDescriptor = usbGetDeviceDescriptor, + .GetConfigDescriptor = usbGetConfigDescriptor, + .GetStringDescriptor = usbGetStringDescriptor, + .RxEP_buffer = NULL, + .MaxPacketSize = MAX_PACKET_SIZE +}; + +static const USER_STANDARD_REQUESTS my_User_Standard_Requests = { + .User_GetConfiguration = NOP_Process, + .User_SetConfiguration = usbSetConfiguration, + .User_GetInterface = NOP_Process, + .User_SetInterface = NOP_Process, + .User_GetStatus = NOP_Process, + .User_ClearFeature = usbClearFeature, + .User_SetEndPointFeature = NOP_Process, + .User_SetDeviceFeature = NOP_Process, + .User_SetDeviceAddress = usbSetDeviceAddress +}; + +static uint8 numStringDescriptors = 3; + + +#define MAX_STRING_DESCRIPTORS 4 +static ONE_DESCRIPTOR String_Descriptor[MAX_STRING_DESCRIPTORS] = { + {(uint8*)&usbHIDDescriptor_LangID, USB_DESCRIPTOR_STRING_LEN(1)}, + {(uint8*)&usb_generic_default_iManufacturer, USB_DESCRIPTOR_STRING_LEN(default_iManufacturer_length)}, + {(uint8*)&usb_generic_default_iProduct, USB_DESCRIPTOR_STRING_LEN(default_iProduct_length)}, + {NULL, 0}, +}; + +static USBCompositePart** parts; +static uint32 numParts; +static DEVICE saved_Device_Table; +static DEVICE_PROP saved_Device_Property; +static USER_STANDARD_REQUESTS saved_User_Standard_Requests; + +static void (*ep_int_in[7])(void); +static void (*ep_int_out[7])(void); + +uint8 usb_generic_set_parts(USBCompositePart** _parts, unsigned _numParts) { + parts = _parts; + numParts = _numParts; + unsigned numInterfaces = 0; + unsigned numEndpoints = 1; + uint16 usbDescriptorSize = 0; + uint16 pmaOffset = USB_EP0_RX_BUFFER_ADDRESS + USB_EP0_BUFFER_SIZE; + + for (unsigned i = 0 ; i < 7 ; i++) { + ep_int_in[i] = NOP_Process; + ep_int_out[i] = NOP_Process; + } + + usbDescriptorSize = 0; + for (unsigned i = 0 ; i < _numParts ; i++ ) { + parts[i]->startInterface = numInterfaces; + numInterfaces += parts[i]->numInterfaces; + if (numEndpoints + parts[i]->numEndpoints > 8) { + return 0; + } + if (usbDescriptorSize + parts[i]->descriptorSize > MAX_USB_DESCRIPTOR_DATA_SIZE) { + return 0; + } + parts[i]->startEndpoint = numEndpoints; + USBEndpointInfo* ep = parts[i]->endpoints; + for (unsigned j = 0 ; j < parts[i]->numEndpoints ; j++) { + if (ep[j].bufferSize + pmaOffset > PMA_MEMORY_SIZE) { + return 0; + } + ep[j].pmaAddress = pmaOffset; + pmaOffset += ep[j].bufferSize; + ep[j].address = numEndpoints; + if (ep[j].callback == NULL) + ep[j].callback = NOP_Process; + if (ep[j].tx) { + ep_int_in[numEndpoints - 1] = ep[j].callback; + } + else { + ep_int_out[numEndpoints - 1] = ep[j].callback; + } + numEndpoints++; + } + parts[i]->getPartDescriptor(usbConfig.descriptorData + usbDescriptorSize); + usbDescriptorSize += parts[i]->descriptorSize; + } + + usbConfig.Config_Header = Base_Header; + usbConfig.Config_Header.bNumInterfaces = numInterfaces; + usbConfig.Config_Header.wTotalLength = usbDescriptorSize + sizeof(Base_Header); + Config_Descriptor.Descriptor_Size = usbConfig.Config_Header.wTotalLength; + + my_Device_Table.Total_Endpoint = numEndpoints; + + return 1; +} + +void usb_generic_set_info( uint16 idVendor, uint16 idProduct, const uint8* iManufacturer, const uint8* iProduct, const uint8* iSerialNumber) { + if (idVendor != 0) + usbGenericDescriptor_Device.idVendor = idVendor; + else + usbGenericDescriptor_Device.idVendor = LEAFLABS_ID_VENDOR; + + if (idProduct != 0) + usbGenericDescriptor_Device.idProduct = idProduct; + else + usbGenericDescriptor_Device.idProduct = MAPLE_ID_PRODUCT; + + if (iManufacturer == NULL) { + iManufacturer = (uint8*)&usb_generic_default_iManufacturer; + } + + String_Descriptor[1].Descriptor = (uint8*)iManufacturer; + String_Descriptor[1].Descriptor_Size = iManufacturer[0]; + + if (iProduct == NULL) { + iProduct = (uint8*)&usb_generic_default_iProduct; + } + + String_Descriptor[2].Descriptor = (uint8*)iProduct; + String_Descriptor[2].Descriptor_Size = iProduct[0]; + + if (iSerialNumber == NULL) { + numStringDescriptors = 3; + usbGenericDescriptor_Device.iSerialNumber = 0; + } + else { + String_Descriptor[3].Descriptor = (uint8*)iSerialNumber; + String_Descriptor[3].Descriptor_Size = iSerialNumber[0]; + numStringDescriptors = 4; + usbGenericDescriptor_Device.iSerialNumber = 3; + } +} + +void usb_generic_enable(void) { + /* Present ourselves to the host. Writing 0 to "disc" pin must + * pull USB_DP pin up while leaving USB_DM pulled down by the + * transceiver. See USB 2.0 spec, section 7.1.7.3. */ + +#ifdef GENERIC_BOOTLOADER + //Reset the USB interface on generic boards - developed by Victor PV + gpio_set_mode(GPIOA, 12, GPIO_OUTPUT_PP); + gpio_write_bit(GPIOA, 12, 0); + + for(volatile unsigned int i=0;i<512;i++);// Only small delay seems to be needed + gpio_set_mode(GPIOA, 12, GPIO_INPUT_FLOATING); +#endif + + if (BOARD_USB_DISC_DEV != NULL) { + gpio_set_mode(BOARD_USB_DISC_DEV, (uint8)(uint32)BOARD_USB_DISC_BIT, GPIO_OUTPUT_PP); + gpio_write_bit(BOARD_USB_DISC_DEV, (uint8)(uint32)BOARD_USB_DISC_BIT, 0); + } + + saved_Device_Table = Device_Table; + saved_Device_Property = Device_Property; + saved_User_Standard_Requests = User_Standard_Requests; + Device_Table = my_Device_Table; + Device_Property = my_Device_Property; + User_Standard_Requests = my_User_Standard_Requests; + + /* Initialize the USB peripheral. */ + usb_init_usblib(USBLIB, ep_int_in, ep_int_out); +} + +static void usbInit(void) { + pInformation->Current_Configuration = 0; + + USB_BASE->CNTR = USB_CNTR_FRES; + + USBLIB->irq_mask = 0; + USB_BASE->CNTR = USBLIB->irq_mask; + USB_BASE->ISTR = 0; + USBLIB->irq_mask = USB_CNTR_RESETM | USB_CNTR_SUSPM | USB_CNTR_WKUPM; + USB_BASE->CNTR = USBLIB->irq_mask; + + USB_BASE->ISTR = 0; + USBLIB->irq_mask = USB_ISR_MSK; + USB_BASE->CNTR = USBLIB->irq_mask; + + nvic_irq_enable(NVIC_USB_LP_CAN_RX0); + + for (unsigned i = 0 ; i < numParts ; i++) + if(parts[i]->usbInit != NULL) + parts[i]->usbInit(); + + USBLIB->state = USB_UNCONNECTED; +} + +#define BTABLE_ADDRESS 0x00 + +static void usbReset(void) { + pInformation->Current_Configuration = 0; + + /* current feature is current bmAttributes */ + pInformation->Current_Feature = (USB_CONFIG_ATTR_BUSPOWERED | + USB_CONFIG_ATTR_SELF_POWERED); + + USB_BASE->BTABLE = BTABLE_ADDRESS; + + /* setup control endpoint 0 */ + usb_set_ep_type(USB_EP0, USB_EP_EP_TYPE_CONTROL); + usb_set_ep_tx_stat(USB_EP0, USB_EP_STAT_TX_STALL); + usb_set_ep_rx_addr(USB_EP0, USB_EP0_RX_BUFFER_ADDRESS); + usb_set_ep_tx_addr(USB_EP0, USB_EP0_TX_BUFFER_ADDRESS); + usb_clear_status_out(USB_EP0); + + usb_set_ep_rx_count(USB_EP0, USB_EP0_BUFFER_SIZE); + usb_set_ep_rx_stat(USB_EP0, USB_EP_STAT_RX_VALID); + + for (unsigned i = 0 ; i < numParts ; i++) { + for (unsigned j = 0 ; j < parts[i]->numEndpoints ; j++) { + USBEndpointInfo* e = &(parts[i]->endpoints[j]); + uint8 address = e->address; + usb_set_ep_type(address, e->type); + if (parts[i]->endpoints[j].tx) { + usb_set_ep_tx_addr(address, e->pmaAddress); + usb_set_ep_tx_stat(address, USB_EP_STAT_TX_NAK); + usb_set_ep_rx_stat(address, USB_EP_STAT_RX_DISABLED); + } + else { + usb_set_ep_rx_addr(address, e->pmaAddress); + usb_set_ep_rx_count(address, e->bufferSize); + usb_set_ep_rx_stat(address, USB_EP_STAT_RX_VALID); + } + } + if (parts[i]->usbReset != NULL) + parts[i]->usbReset(); + } + + usbGenericTransmitting = -1; + + USBLIB->state = USB_ATTACHED; + SetDeviceAddress(0); + +} + +static void usb_power_down(void) { + USB_BASE->CNTR = USB_CNTR_FRES; + USB_BASE->ISTR = 0; + USB_BASE->CNTR = USB_CNTR_FRES + USB_CNTR_PDWN; +} + +void usb_generic_disable(void) { + /* Turn off the interrupt and signal disconnect (see e.g. USB 2.0 + * spec, section 7.1.7.3). */ + nvic_irq_disable(NVIC_USB_LP_CAN_RX0); + + if (BOARD_USB_DISC_DEV != NULL) { + gpio_write_bit(BOARD_USB_DISC_DEV, (uint8)(uint32)BOARD_USB_DISC_BIT, 1); + } + + usb_power_down(); + + Device_Table = saved_Device_Table; + Device_Property = saved_Device_Property; + User_Standard_Requests = saved_User_Standard_Requests; +} + +static RESULT usbDataSetup(uint8 request) { + uint8* (*CopyRoutine)(uint16) = 0; + + if(Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT) && request == GET_DESCRIPTOR && + pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE){ + CopyRoutine = usbGetConfigDescriptor; + } + + if (CopyRoutine == NULL){ + for (unsigned i = 0 ; i < numParts ; i++) { + RESULT r = parts[i]->usbDataSetup(request); + if (USB_UNSUPPORT != r) + return r; + } + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + return USB_SUCCESS; +} + +static RESULT usbNoDataSetup(uint8 request) { + for (unsigned i = 0 ; i < numParts ; i++) { + RESULT r = parts[i]->usbNoDataSetup(request); + if (USB_UNSUPPORT != r) + return r; + } + + return USB_UNSUPPORT; +} + +static void usbSetConfiguration(void) { + if (pInformation->Current_Configuration != 0) { + USBLIB->state = USB_CONFIGURED; + } + for (unsigned i = 0 ; i < numParts ; i++) { + if (parts[i]->usbSetConfiguration != NULL) + parts[i]->usbSetConfiguration(); + } +} + +static void usbClearFeature(void) { + for (unsigned i = 0 ; i < numParts ; i++) { + if (parts[i]->usbClearFeature != NULL) + parts[i]->usbClearFeature(); + } +} + +static void usbSetDeviceAddress(void) { + USBLIB->state = USB_ADDRESSED; +} + +static uint8* usbGetDeviceDescriptor(uint16 length) { + return Standard_GetDescriptorData(length, &Device_Descriptor); +} + +static uint8* usbGetConfigDescriptor(uint16 length) { + return Standard_GetDescriptorData(length, &Config_Descriptor); +} + +static uint8* usbGetStringDescriptor(uint16 length) { + uint8 wValue0 = pInformation->USBwValue0; + + if (wValue0 >= numStringDescriptors) { + return NULL; + } + return Standard_GetDescriptorData(length, &String_Descriptor[wValue0]); +} + + +static RESULT usbGetInterfaceSetting(uint8 interface, uint8 alt_setting) { + if (alt_setting > 0) { + return USB_UNSUPPORT; + } else if (interface >= usbConfig.Config_Header.bNumInterfaces) { + return USB_UNSUPPORT; + } + + return USB_SUCCESS; +} + +void usb_copy_to_pma(const uint8 *buf, uint16 len, uint16 pma_offset) { + uint16 *dst = (uint16*)usb_pma_ptr(pma_offset); + uint16 n = len >> 1; + uint16 i; + for (i = 0; i < n; i++) { + *dst = (uint16)(*buf) | *(buf + 1) << 8; + buf += 2; + dst += 2; + } + if (len & 1) { + *dst = *buf; + } +} + +void usb_copy_from_pma(uint8 *buf, uint16 len, uint16 pma_offset) { + uint32 *src = (uint32*)usb_pma_ptr(pma_offset); + uint16 *dst = (uint16*)buf; + uint16 n = len >> 1; + uint16 i; + for (i = 0; i < n; i++) { + *dst++ = *src++; + } + if (len & 1) { + *dst = *src & 0xFF; + } +} + diff --git a/STM32F1/libraries/USBComposite/usb_generic.h b/STM32F1/libraries/USBComposite/usb_generic.h new file mode 100644 index 000000000..d665d8fbe --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_generic.h @@ -0,0 +1,60 @@ +#ifndef _USB_GENERIC_H +#define _USB_GENERIC_H +#include +typedef unsigned short u16; +typedef unsigned char u8; +#include +#include + +#define PMA_MEMORY_SIZE 512 +#define MAX_USB_DESCRIPTOR_DATA_SIZE 200 + +#define USB_EP0_BUFFER_SIZE 0x40 +#define USB_EP0_TX_BUFFER_ADDRESS 0x40 +#define USB_EP0_RX_BUFFER_ADDRESS (USB_EP0_TX_BUFFER_ADDRESS+USB_EP0_BUFFER_SIZE) + +#ifdef __cplusplus +extern "C" { +#endif + +extern const usb_descriptor_string usb_generic_default_iManufacturer; +extern const usb_descriptor_string usb_generic_default_iProduct; + +typedef struct USBEndpointInfo { + void (*callback)(void); + uint16 bufferSize; + uint16 type; // bulk, interrupt, etc. + uint8 tx; // 1 if TX, 0 if RX + uint8 address; + uint16 pmaAddress; +} USBEndpointInfo; + +typedef struct USBCompositePart { + uint8 numInterfaces; + uint8 numEndpoints; + uint8 startInterface; + uint8 startEndpoint; + uint16 descriptorSize; + void (*getPartDescriptor)(uint8* out); + void (*usbInit)(void); + void (*usbReset)(void); + void (*usbSetConfiguration)(void); + void (*usbClearFeature)(void); + RESULT (*usbDataSetup)(uint8 request); + RESULT (*usbNoDataSetup)(uint8 request); + USBEndpointInfo* endpoints; +} USBCompositePart; + +void usb_generic_set_info(uint16 idVendor, uint16 idProduct, const uint8* iManufacturer, const uint8* iProduct, const uint8* iSerialNumber); +uint8 usb_generic_set_parts(USBCompositePart** _parts, unsigned _numParts); +void usb_generic_disable(void); +void usb_generic_enable(void); +extern volatile int8 usbGenericTransmitting; +void usb_copy_from_pma(uint8 *buf, uint16 len, uint16 pma_offset); +void usb_copy_to_pma(const uint8 *buf, uint16 len, uint16 pma_offset); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_hid.c b/STM32F1/libraries/USBComposite/usb_hid.c new file mode 100644 index 000000000..162cd4acb --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_hid.c @@ -0,0 +1,578 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/usb/stm32f1/usb_hid.c + * @brief USB HID (human interface device) support + * + * FIXME: this works on the STM32F1 USB peripherals, and probably no + * place else. Nonportable bits really need to be factored out, and + * the result made cleaner. + */ + +#include "usb_hid.h" +#include +#include +#include +#include + +/* Private headers */ +#include "usb_lib_globals.h" +#include "usb_reg_map.h" + +uint16 GetEPTxAddr(uint8 /*bEpNum*/); + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" +#include "usb_def.h" + +static uint32 ProtocolValue = 0; + +static void hidDataTxCb(void); +static void hidUSBReset(void); +static RESULT hidUSBDataSetup(uint8 request); +static RESULT hidUSBNoDataSetup(uint8 request); +//static RESULT usbGetInterfaceSetting(uint8 interface, uint8 alt_setting); +static uint8* HID_GetReportDescriptor(uint16 Length); +static uint8* HID_GetProtocolValue(uint16 Length); + +static volatile HIDBuffer_t hidBuffers[MAX_HID_BUFFERS] = {{ 0 }}; +static volatile HIDBuffer_t* currentHIDBuffer = NULL; + +//#define DUMMY_BUFFER_SIZE 0x40 // at least as big as a buffer size + +#define HID_INTERFACE_OFFSET 0x00 +#define NUM_HID_ENDPOINTS 1 +#define HID_INTERFACE_NUMBER (HID_INTERFACE_OFFSET+usbHIDPart.startInterface) + +/* + * Descriptors + */ + +static ONE_DESCRIPTOR HID_Report_Descriptor = { + (uint8*)NULL, + 0 +}; + + +#define HID_ENDPOINT_TX 0 + +typedef struct { + //HID + usb_descriptor_interface HID_Interface; + HIDDescriptor HID_Descriptor; + usb_descriptor_endpoint HIDDataInEndpoint; +} __packed hid_part_config; + +static const hid_part_config hidPartConfigData = { + .HID_Interface = { + .bLength = sizeof(usb_descriptor_interface), + .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, + .bInterfaceNumber = HID_INTERFACE_OFFSET, // PATCH + .bAlternateSetting = 0x00, + .bNumEndpoints = NUM_HID_ENDPOINTS, + .bInterfaceClass = USB_INTERFACE_CLASS_HID, + .bInterfaceSubClass = USB_INTERFACE_SUBCLASS_HID, + .bInterfaceProtocol = 0x00, /* Common AT Commands */ + .iInterface = 0x00, + }, + .HID_Descriptor = { + .len = 9,//sizeof(HIDDescDescriptor), + .dtype = HID_DESCRIPTOR_TYPE, + .versionL = 0x10, + .versionH = 0x01, + .country = 0x00, + .numDesc = 0x01, + .desctype = REPORT_DESCRIPTOR,//0x22, + .descLenL = 0x00, //PATCH + .descLenH = 0x00, //PATCH + }, + .HIDDataInEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = USB_DESCRIPTOR_ENDPOINT_IN | HID_ENDPOINT_TX, // PATCH + .bmAttributes = USB_ENDPOINT_TYPE_INTERRUPT, + .wMaxPacketSize = USB_HID_TX_EPSIZE,//0x40,//big enough for a keyboard 9 byte packet and for a mouse 5 byte packet + .bInterval = 0x0A, + } +}; + +static USBEndpointInfo hidEndpoints[1] = { + { + .callback = hidDataTxCb, + .bufferSize = USB_HID_TX_EPSIZE, + .type = USB_EP_EP_TYPE_INTERRUPT, // TODO: interrupt??? + .tx = 1, + } +}; + +#define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] + +static void getHIDPartDescriptor(uint8* out) { + memcpy(out, &hidPartConfigData, sizeof(hid_part_config)); + // patch to reflect where the part goes in the descriptor + OUT_BYTE(hidPartConfigData, HID_Interface.bInterfaceNumber) += usbHIDPart.startInterface; + OUT_BYTE(hidPartConfigData, HIDDataInEndpoint.bEndpointAddress) += usbHIDPart.startEndpoint; + OUT_BYTE(hidPartConfigData, HID_Descriptor.descLenL) = (uint8)HID_Report_Descriptor.Descriptor_Size; + OUT_BYTE(hidPartConfigData, HID_Descriptor.descLenH) = (uint8)(HID_Report_Descriptor.Descriptor_Size>>8); +} + +USBCompositePart usbHIDPart = { + .numInterfaces = 1, + .numEndpoints = sizeof(hidEndpoints)/sizeof(*hidEndpoints), + .descriptorSize = sizeof(hid_part_config), + .getPartDescriptor = getHIDPartDescriptor, + .usbInit = NULL, + .usbReset = hidUSBReset, + .usbDataSetup = hidUSBDataSetup, + .usbNoDataSetup = hidUSBNoDataSetup, + .usbClearFeature = NULL, + .usbSetConfiguration = NULL, + .endpoints = hidEndpoints +}; + + +#define HID_TX_BUFFER_SIZE 256 // must be power of 2 +#define HID_TX_BUFFER_SIZE_MASK (HID_TX_BUFFER_SIZE-1) +// Tx data +static volatile uint8 hidBufferTx[HID_TX_BUFFER_SIZE]; +// Write index to hidBufferTx +static volatile uint32 hid_tx_head = 0; +// Read index from hidBufferTx +static volatile uint32 hid_tx_tail = 0; + +#define CDC_SERIAL_RX_BUFFER_SIZE 256 // must be power of 2 +#define CDC_SERIAL_RX_BUFFER_SIZE_MASK (CDC_SERIAL_RX_BUFFER_SIZE-1) + + + + +void usb_hid_putc(char ch) { + while (!usb_hid_tx((uint8*)&ch, 1)) + ; +} + + /* +static void hidStatusIn() { + if (pInformation->ControlState == WAIT_STATUS_IN) { + if (currentInFeature >= 0) { + if (featureBuffers[currentInFeature].bufferSize == featureBuffers[currentInFeature].currentDataSize) + featureBuffers[currentInFeature].state = HID_BUFFER_UNREAD; + currentInFeature = -1; + } + if (currentOutput >= 0) { + if (outputBuffers[currentOutput].bufferSize == outputBuffers[currentOutput].currentDataSize) + outputBuffers[currentOutput].state = HID_BUFFER_UNREAD; + currentOutput = -1; + } + } +} + */ + +void usb_hid_set_report_descriptor(const uint8* report_descriptor, uint16 report_descriptor_length) { + HID_Report_Descriptor.Descriptor = (uint8*)report_descriptor; + HID_Report_Descriptor.Descriptor_Size = report_descriptor_length; +} + + +static volatile HIDBuffer_t* usb_hid_find_buffer(uint8 type, uint8 reportID) { + uint8 typeTest = type == HID_REPORT_TYPE_OUTPUT ? HID_BUFFER_MODE_OUTPUT : 0; + for (int i=0; ibuffer+delta, data, buffer->bufferSize-delta); + if (reportID) + buffer->buffer[0] = reportID; + buffer->currentDataSize = buffer->bufferSize; + buffer->state = HID_BUFFER_READ; + usb_set_ep_rx_stat(USB_EP0, USB_EP_STAT_RX_VALID); + return; + } +} + +static uint8 have_unread_data_in_hid_buffer() { + for (int i=0;ireportID == reportID && buffer->state != HID_BUFFER_EMPTY && !(poll && buffer->state == HID_BUFFER_READ)) { + if (buffer->bufferSize != buffer->currentDataSize) { + buffer->state = HID_BUFFER_EMPTY; + ret = 0; + } + else { + unsigned delta = reportID != 0; + if (out != NULL) + memcpy(out, (uint8*)buffer->buffer+delta, buffer->bufferSize-delta); + + if (poll) { + buffer->state = HID_BUFFER_READ; + } + + ret = buffer->bufferSize-delta; + } + } + + if (! have_unread_data_in_hid_buffer() ) { + usb_set_ep_rx_stat(USB_EP0, USB_EP_STAT_RX_VALID); + } + + nvic_irq_enable(NVIC_USB_LP_CAN_RX0); + + return ret; +} + +void usb_hid_clear_buffers(uint8 type) { + uint8 typeTest = type == HID_REPORT_TYPE_OUTPUT ? HID_BUFFER_MODE_OUTPUT : 0; + for (int i=0; imode |= HID_BUFFER_MODE_OUTPUT; + else + buf->mode &= ~HID_BUFFER_MODE_OUTPUT; + memset((void*)buf->buffer, 0, buf->bufferSize); + buf->buffer[0] = buf->reportID; + + volatile HIDBuffer_t* buffer = usb_hid_find_buffer(type, buf->reportID); + + if (buffer != NULL) { + *buffer = *buf; + return 1; + } + else { + for (int i=0; i (HID_TX_BUFFER_SIZE-tx_unsent-1) ) { + len = (HID_TX_BUFFER_SIZE-tx_unsent-1); + } + if (len==0) return 0; // buffer full + + uint16 i; + // copy data from user buffer to USB Tx buffer + for (i=0; i= 0); + + if (usbGenericTransmitting<0) { + hidDataTxCb(); // initiate data transmission + } + + return len; +} + + + +uint16 usb_hid_get_pending(void) { + return (hid_tx_head - hid_tx_tail) & HID_TX_BUFFER_SIZE_MASK; +} + +static void hidDataTxCb(void) +{ + uint32 tail = hid_tx_tail; // load volatile variable + uint32 tx_unsent = (hid_tx_head - tail) & HID_TX_BUFFER_SIZE_MASK; + if (tx_unsent==0) { + if ( (--usbGenericTransmitting)==0) goto flush_hid; // no more data to send + return; // it was already flushed, keep Tx endpoint disabled + } + usbGenericTransmitting = 1; + // We can only send up to USBHID_CDCACM_TX_EPSIZE bytes in the endpoint. + if (tx_unsent > USB_HID_TX_EPSIZE) { + tx_unsent = USB_HID_TX_EPSIZE; + } + // copy the bytes from USB Tx buffer to PMA buffer + uint32 *dst = usb_pma_ptr(usbHIDPart.endpoints[HID_ENDPOINT_TX].pmaAddress); + uint16 tmp = 0; + uint16 val; + unsigned i; + for (i = 0; i < tx_unsent; i++) { + val = hidBufferTx[tail]; + tail = (tail + 1) & HID_TX_BUFFER_SIZE_MASK; + if (i&1) { + *dst++ = tmp | (val<<8); + } else { + tmp = val; + } + } + if ( tx_unsent&1 ) { + *dst = tmp; + } + hid_tx_tail = tail; // store volatile variable + +flush_hid: + // enable Tx endpoint + usb_set_ep_tx_count(usbHIDPart.endpoints[HID_ENDPOINT_TX].address, tx_unsent); + usb_set_ep_tx_stat(usbHIDPart.endpoints[HID_ENDPOINT_TX].address, USB_EP_STAT_TX_VALID); +} + + + +static void hidUSBReset(void) { + /* Reset the RX/TX state */ + hid_tx_head = 0; + hid_tx_tail = 0; + + currentHIDBuffer = NULL; +} + +static uint8* HID_Set(uint16 length) { + if (currentHIDBuffer == NULL) + return NULL; + + if (length ==0) { + if ( (0 == (currentHIDBuffer->mode & HID_BUFFER_MODE_NO_WAIT)) && + currentHIDBuffer->state == HID_BUFFER_UNREAD && + pInformation->Ctrl_Info.Usb_wOffset < pInformation->USBwLengths.w) { + pInformation->Ctrl_Info.Usb_wLength = 0xFFFF; + return NULL; + } + + uint16 len = pInformation->USBwLengths.w; + if (len > currentHIDBuffer->bufferSize) + len = currentHIDBuffer->bufferSize; + + currentHIDBuffer->currentDataSize = len; + + currentHIDBuffer->state = HID_BUFFER_EMPTY; + + if (pInformation->Ctrl_Info.Usb_wOffset < len) { + pInformation->Ctrl_Info.Usb_wLength = len - pInformation->Ctrl_Info.Usb_wOffset; + } + else { + pInformation->Ctrl_Info.Usb_wLength = 0; + } + + return NULL; + } + + if (pInformation->USBwLengths.w <= pInformation->Ctrl_Info.Usb_wOffset + pInformation->Ctrl_Info.PacketSize) { + currentHIDBuffer->state = HID_BUFFER_UNREAD; + } + + return (uint8*)currentHIDBuffer->buffer + pInformation->Ctrl_Info.Usb_wOffset; +} + +static uint8* HID_GetFeature(uint16 length) { + if (currentHIDBuffer == NULL) + return NULL; + + unsigned wOffset = pInformation->Ctrl_Info.Usb_wOffset; + + if (length == 0) + { + pInformation->Ctrl_Info.Usb_wLength = currentHIDBuffer->bufferSize - wOffset; + return NULL; + } + + return (uint8*)currentHIDBuffer->buffer + wOffset; +} + +static RESULT hidUSBDataSetup(uint8 request) { + uint8* (*CopyRoutine)(uint16) = 0; + + if (pInformation->USBwIndex0 != HID_INTERFACE_NUMBER) + return USB_UNSUPPORT; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) { + switch (request) { + case SET_REPORT: + if (pInformation->USBwValue1 == HID_REPORT_TYPE_FEATURE) { + volatile HIDBuffer_t* buffer = usb_hid_find_buffer(HID_REPORT_TYPE_FEATURE, pInformation->USBwValue0); + + if (buffer == NULL) { + return USB_UNSUPPORT; + } + + if (0 == (buffer->mode & HID_BUFFER_MODE_NO_WAIT) && buffer->state == HID_BUFFER_UNREAD) { + return USB_NOT_READY; + } + else + { + currentHIDBuffer = buffer; + CopyRoutine = HID_Set; + } + } + else if (pInformation->USBwValue1 == HID_REPORT_TYPE_OUTPUT) { + volatile HIDBuffer_t* buffer = usb_hid_find_buffer(HID_REPORT_TYPE_OUTPUT, pInformation->USBwValue0); + + if (buffer == NULL) { + return USB_UNSUPPORT; + } + + if (0 == (buffer->mode & HID_BUFFER_MODE_NO_WAIT) && buffer->state == HID_BUFFER_UNREAD) { + return USB_NOT_READY; + } + else + { + currentHIDBuffer = buffer; + CopyRoutine = HID_Set; + } + } + break; + case GET_REPORT: + if (pInformation->USBwValue1 == HID_REPORT_TYPE_FEATURE) { + volatile HIDBuffer_t* buffer = usb_hid_find_buffer(HID_REPORT_TYPE_FEATURE, pInformation->USBwValue0); + + if (buffer == NULL || buffer->state == HID_BUFFER_EMPTY) { + return USB_UNSUPPORT; + } + + currentHIDBuffer = buffer; + CopyRoutine = HID_GetFeature; + break; + } + default: + break; + } + } + + if(Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)){ + switch (request){ + case GET_DESCRIPTOR: + if (pInformation->USBwValue1 == REPORT_DESCRIPTOR){ + CopyRoutine = HID_GetReportDescriptor; + } + break; + case GET_PROTOCOL: // TODO: check for interface number? + CopyRoutine = HID_GetProtocolValue; + break; + } + } + + if (CopyRoutine == NULL){ + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + return USB_SUCCESS; +} + +static RESULT hidUSBNoDataSetup(uint8 request) { + if (pInformation->USBwIndex0 != HID_INTERFACE_NUMBER) + return USB_UNSUPPORT; + + RESULT ret = USB_UNSUPPORT; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) { + switch(request) { + case SET_PROTOCOL: + ProtocolValue = pInformation->USBwValue0; + ret = USB_SUCCESS; + break; + } + } + return ret; +} + +/* +static RESULT HID_SetProtocol(void){ + uint8 wValue0 = pInformation->USBwValue0; + ProtocolValue = wValue0; + return USB_SUCCESS; +} +*/ +static uint8* HID_GetProtocolValue(uint16 Length){ + if (Length == 0){ + pInformation->Ctrl_Info.Usb_wLength = 1; + return NULL; + } else { + return (uint8 *)(&ProtocolValue); + } +} + +static uint8* HID_GetReportDescriptor(uint16 Length){ + return Standard_GetDescriptorData(Length, &HID_Report_Descriptor); +} + diff --git a/STM32F1/libraries/USBComposite/usb_hid.h b/STM32F1/libraries/USBComposite/usb_hid.h new file mode 100644 index 000000000..856fd3edc --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_hid.h @@ -0,0 +1,153 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/include/libmaple/usb_device.h + * @brief USB Composite with CDC ACM and HID support + * + * IMPORTANT: this API is unstable, and may change without notice. + */ + +#ifndef _USB_HID_H_ +#define _USB_HID_H_ + +#include +#include +#include "usb_generic.h" + +#define MAX_HID_BUFFERS 8 +#define HID_BUFFER_SIZE(n,reportID) ((n)+((reportID)!=0)) +#define HID_BUFFER_ALLOCATE_SIZE(n,reportID) ((HID_BUFFER_SIZE((n),(reportID))+1)/2*2) + +#define HID_BUFFER_MODE_NO_WAIT 1 +#define HID_BUFFER_MODE_OUTPUT 2 + +#define HID_BUFFER_EMPTY 0 +#define HID_BUFFER_UNREAD 1 +#define HID_BUFFER_READ 2 + +extern USBCompositePart usbHIDPart; + +typedef struct HIDBuffer_t { + volatile uint8_t* buffer; // use HID_BUFFER_ALLOCATE_SIZE() to calculate amount of memory to allocate + uint16_t bufferSize; // this should match HID_BUFFER_SIZE + uint8_t reportID; + uint8_t mode; + uint16_t currentDataSize; + uint8_t state; // HID_BUFFER_EMPTY, etc. +#ifdef __cplusplus + inline HIDBuffer_t(volatile uint8_t* _buffer=NULL, uint16_t _bufferSize=0, uint8_t _reportID=0, uint8_t _mode=0) { + reportID = _reportID; + buffer = _buffer; + bufferSize = _bufferSize; + mode = _mode; + } +#endif +} HIDBuffer_t; + +#ifdef __cplusplus +extern "C" { +#endif + +#define USB_HID_TX_EPSIZE 0x40 + +void usb_hid_set_report_descriptor(const uint8* report_descriptor, uint16 report_descriptor_length); +void usb_hid_clear_buffers(uint8_t type); +uint8_t usb_hid_add_buffer(uint8_t type, volatile HIDBuffer_t* buf); +void usb_hid_set_buffers(uint8_t type, volatile HIDBuffer_t* featureBuffers, int count); +uint16_t usb_hid_get_data(uint8_t type, uint8_t reportID, uint8_t* out, uint8_t poll); +void usb_hid_set_feature(uint8_t reportID, uint8_t* data); + + + +/* + * HID Requests + */ + +typedef enum _HID_REQUESTS +{ + + GET_REPORT = 1, + GET_IDLE, + GET_PROTOCOL, + + SET_REPORT = 9, + SET_IDLE, + SET_PROTOCOL + +} HID_REQUESTS; + +#define HID_REPORT_TYPE_INPUT 0x01 +#define HID_REPORT_TYPE_OUTPUT 0x02 +#define HID_REPORT_TYPE_FEATURE 0x03 + + +/* + * HID Descriptors, etc. + */ + +#define HID_ENDPOINT_INT 1 + +#define HID_DESCRIPTOR_TYPE 0x21 +#define REPORT_DESCRIPTOR 0x22 + + +typedef struct +{ + uint8_t len; // 9 + uint8_t dtype; // 0x21 + uint8_t versionL; // 0x101 + uint8_t versionH; // 0x101 + uint8_t country; + uint8_t numDesc; + uint8_t desctype; // 0x22 report + uint8_t descLenL; + uint8_t descLenH; +} HIDDescriptor; + + +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 + +#define USB_INTERFACE_CLASS_HID 0x03 +#define USB_INTERFACE_SUBCLASS_HID 0x01 + + /* + * HID interface + */ + +void usb_hid_putc(char ch); +uint32 usb_hid_tx(const uint8* buf, uint32 len); +uint32 usb_hid_tx_mod(const uint8* buf, uint32 len); + +uint32 usb_hid_data_available(void); /* in RX buffer */ +uint16 usb_hid_get_pending(void); + + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_mass.c b/STM32F1/libraries/USBComposite/usb_mass.c new file mode 100644 index 000000000..5ef053e78 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_mass.c @@ -0,0 +1,464 @@ +#include + +#include "usb_generic.h" +#include "usb_mass.h" +#include "usb_scsi.h" +#include "usb_mass_internal.h" + +#include +#include +#include + +/* Private headers */ +#include "usb_lib_globals.h" +#include "usb_reg_map.h" +#include "usb_regs.h" + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" +#include "usb_def.h" + +static void usb_mass_bot_cbw_decode(); + +static void usb_mass_set_configuration(); +static void usb_mass_clear_feature(); +static RESULT usb_mass_data_setup(uint8 request); +static RESULT usb_mass_no_data_setup(uint8 request); +static void usb_mass_reset(); +static uint8_t* usb_mass_get_max_lun(uint16_t Length); +static void usb_mass_in(void); +static void usb_mass_out(void); +uint32_t usb_mass_sil_write(uint8_t* pBufferPointer, uint32_t wBufferSize); +uint32_t usb_mass_sil_read(uint8_t* pBufferPointer); + +#define MASS_INTERFACE_OFFSET 0x00 +#define MASS_INTERFACE_NUMBER (MASS_INTERFACE_OFFSET+usbMassPart.startInterface) + + +#define LUN_DATA_LENGTH 1 + +static uint32_t maxLun = 0; +static uint32_t deviceState = DEVICE_STATE_UNCONNECTED; +uint8_t usb_mass_botState = BOT_STATE_IDLE; +BulkOnlyCBW usb_mass_CBW; +BulkOnlyCSW usb_mass_CSW; +uint8_t usb_mass_bulkDataBuff[MAX_BULK_PACKET_SIZE]; +uint16_t usb_mass_dataLength; +static uint8_t inRequestPending; +static uint8_t outRequestPending; + +typedef struct mass_descriptor_config { +// usb_descriptor_config_header Config_Header; + usb_descriptor_interface MASS_Interface; + usb_descriptor_endpoint DataInEndpoint; + usb_descriptor_endpoint DataOutEndpoint; +} __packed mass_descriptor_config; + + +#define MAX_POWER (500 >> 1) +const mass_descriptor_config usbMassConfigDescriptor = { + /*.Config_Header = + { + .bLength = sizeof (usb_descriptor_config_header), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CONFIGURATION, + .wTotalLength = sizeof (usb_descriptor_config), + .bNumInterfaces = 0x01, + .bConfigurationValue = 0x01, + .iConfiguration = 0x00, + .bmAttributes = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELF_POWERED), + .bMaxPower = MAX_POWER, + }, */ + + .MASS_Interface = + { + .bLength = sizeof (usb_descriptor_interface), + .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, + .bInterfaceNumber = 0x00, // PATCH + .bAlternateSetting = 0x00, + .bNumEndpoints = 0x02, + .bInterfaceClass = 8, // mass storage + .bInterfaceSubClass = 6, // SCSI + .bInterfaceProtocol = 0x50, // Bulk-Only + .iInterface = 0, + }, + + .DataInEndpoint = + { + .bLength = sizeof (usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | MASS_ENDPOINT_TX), // PATCH + .bmAttributes = USB_EP_TYPE_BULK, + .wMaxPacketSize = MAX_BULK_PACKET_SIZE, + .bInterval = 0, + }, + + .DataOutEndpoint = + { + .bLength = sizeof (usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_OUT | MASS_ENDPOINT_RX), // PATCH + .bmAttributes = USB_EP_TYPE_BULK, + .wMaxPacketSize = MAX_BULK_PACKET_SIZE, + .bInterval = 1, + } +}; + +USBEndpointInfo usbMassEndpoints[2] = { + { + .callback = usb_mass_in, + .bufferSize = MAX_BULK_PACKET_SIZE, + .type = USB_EP_EP_TYPE_BULK, + .tx = 1, + }, + { + .callback = usb_mass_out, + .bufferSize = MAX_BULK_PACKET_SIZE, + .type = USB_EP_EP_TYPE_BULK, + .tx = 0, + }, +}; + +#define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] + +static void getMassPartDescriptor(uint8* out) { + memcpy(out, &usbMassConfigDescriptor, sizeof(mass_descriptor_config)); + // patch to reflect where the part goes in the descriptor + OUT_BYTE(usbMassConfigDescriptor, MASS_Interface.bInterfaceNumber) += usbMassPart.startInterface; + OUT_BYTE(usbMassConfigDescriptor, DataInEndpoint.bEndpointAddress) += usbMassPart.startEndpoint; + OUT_BYTE(usbMassConfigDescriptor, DataOutEndpoint.bEndpointAddress) += usbMassPart.startEndpoint; +} + + + +USBCompositePart usbMassPart = { + .numInterfaces = 1, + .numEndpoints = sizeof(usbMassEndpoints)/sizeof(*usbMassEndpoints), + .descriptorSize = sizeof(mass_descriptor_config), + .getPartDescriptor = getMassPartDescriptor, + .usbInit = NULL, + .usbReset = usb_mass_reset, + .usbDataSetup = usb_mass_data_setup, + .usbNoDataSetup = usb_mass_no_data_setup, + .usbClearFeature = usb_mass_clear_feature, + .usbSetConfiguration = usb_mass_set_configuration, + .endpoints = usbMassEndpoints +}; + +static void usb_mass_reset(void) { + usb_mass_mal_init(0); + + pInformation->Current_Configuration = 0; // TODO: remove? + + /* current feature is current bmAttributes */ + pInformation->Current_Feature = (USB_CONFIG_ATTR_BUSPOWERED | USB_CONFIG_ATTR_SELF_POWERED); // usbMassConfigDescriptor.Config_Header.bmAttributes; // TODO: remove? + + deviceState = DEVICE_STATE_ATTACHED; + usb_mass_CBW.dSignature = BOT_CBW_SIGNATURE; + usb_mass_botState = BOT_STATE_IDLE; +} + +static void usb_mass_set_configuration(void) { + if (pInformation->Current_Configuration != 0) { + deviceState = USB_CONFIGURED; + ClearDTOG_TX(USB_MASS_TX_ENDP); + ClearDTOG_RX(USB_MASS_RX_ENDP); + usb_mass_botState = BOT_STATE_IDLE; + } +} + +static void usb_mass_clear_feature(void) { + /* when the host send a usb_mass_CBW with invalid signature or invalid length the two + Endpoints (IN & OUT) shall stall until receiving a Mass Storage Reset */ + if (usb_mass_CBW.dSignature != BOT_CBW_SIGNATURE) { + usb_mass_bot_abort(BOT_DIR_BOTH); + } +} + +static RESULT usb_mass_data_setup(uint8 request) { + uint8_t * (*copy_routine)(uint16_t); + + copy_routine = NULL; + if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + && (request == REQUEST_GET_MAX_LUN) && (pInformation->USBwValue == 0) + && (pInformation->USBwIndex == MASS_INTERFACE_NUMBER) && (pInformation->USBwLength == 0x01)) { + copy_routine = usb_mass_get_max_lun; + } else { + return USB_UNSUPPORT; + } + + if (copy_routine == NULL) { + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = copy_routine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*copy_routine)(0); + + return USB_SUCCESS; +} + +static uint8_t* usb_mass_get_max_lun(uint16_t length) { + if (length == 0) { + pInformation->Ctrl_Info.Usb_wLength = LUN_DATA_LENGTH; + return 0; + } else { + return ((uint8_t*) (&maxLun)); + } +} + +static RESULT usb_mass_no_data_setup(uint8 request) { + if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + && (request == REQUEST_MASS_STORAGE_RESET) && (pInformation->USBwValue == 0) + && (pInformation->USBwIndex == MASS_INTERFACE_NUMBER) && (pInformation->USBwLength == 0x00)) { + + /* Initialize Endpoint 1 */ + ClearDTOG_TX(USB_MASS_TX_ENDP); + + /* Initialize Endpoint 2 */ + ClearDTOG_RX(USB_MASS_RX_ENDP); + + /*initialize the usb_mass_CBW signature to enable the clear feature*/ + usb_mass_CBW.dSignature = BOT_CBW_SIGNATURE; + usb_mass_botState = BOT_STATE_IDLE; + + return USB_SUCCESS; + } + return USB_UNSUPPORT; +} + + +void usb_mass_loop() { + if (inRequestPending) { + inRequestPending = 0; + + switch (usb_mass_botState) { + case BOT_STATE_CSW_Send: + case BOT_STATE_ERROR: + usb_mass_botState = BOT_STATE_IDLE; + SetEPRxStatus(USB_MASS_RX_ENDP, USB_EP_ST_RX_VAL); /* enable the Endpoint to receive the next cmd*/ + break; + case BOT_STATE_DATA_IN: + switch (usb_mass_CBW.CB[0]) { + case SCSI_READ10: + scsi_read10_cmd(usb_mass_CBW.bLUN, SCSI_lba, SCSI_blkLen); + break; + } + break; + case BOT_STATE_DATA_IN_LAST: + usb_mass_bot_set_csw(BOT_CSW_CMD_PASSED, BOT_SEND_CSW_ENABLE); + SetEPRxStatus(USB_MASS_RX_ENDP, USB_EP_ST_RX_VAL); + break; + + default: + break; + } + } + + if (outRequestPending) { + outRequestPending = 0; + + uint8_t CMD; + CMD = usb_mass_CBW.CB[0]; + + switch (usb_mass_botState) { + case BOT_STATE_IDLE: + usb_mass_bot_cbw_decode(); + break; + case BOT_STATE_DATA_OUT: + if (CMD == SCSI_WRITE10) { + scsi_write10_cmd(usb_mass_CBW.bLUN, SCSI_lba, SCSI_blkLen); + break; + } + usb_mass_bot_abort(BOT_DIR_OUT); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_FIELED_IN_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_PHASE_ERROR, BOT_SEND_CSW_DISABLE); + break; + default: + usb_mass_bot_abort(BOT_DIR_BOTH); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_FIELED_IN_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_PHASE_ERROR, BOT_SEND_CSW_DISABLE); + break; + } + } +} + +/* + * IN + */ +static void usb_mass_in(void) { + inRequestPending = 1; +} + +/* + * OUT + */ +static void usb_mass_out(void) { + usb_mass_dataLength = usb_mass_sil_read(usb_mass_bulkDataBuff); + outRequestPending = 1; +} + +static void usb_mass_bot_cbw_decode() { + uint32_t counter; + + for (counter = 0; counter < usb_mass_dataLength; counter++) { + *((uint8_t *) & usb_mass_CBW + counter) = usb_mass_bulkDataBuff[counter]; + } + usb_mass_CSW.dTag = usb_mass_CBW.dTag; + usb_mass_CSW.dDataResidue = usb_mass_CBW.dDataLength; + if (usb_mass_dataLength != BOT_CBW_PACKET_LENGTH) { + usb_mass_bot_abort(BOT_DIR_BOTH); + /* reset the usb_mass_CBW.dSignature to disable the clear feature until receiving a Mass storage reset*/ + usb_mass_CBW.dSignature = 0; + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_PARAMETER_LIST_LENGTH_ERROR); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + return; + } + + if ((usb_mass_CBW.CB[0] == SCSI_READ10) || (usb_mass_CBW.CB[0] == SCSI_WRITE10)) { + /* Calculate Logical Block Address */ + SCSI_lba = (usb_mass_CBW.CB[2] << 24) | (usb_mass_CBW.CB[3] << 16) | (usb_mass_CBW.CB[4] << 8) | usb_mass_CBW.CB[5]; + /* Calculate the Number of Blocks to transfer */ + SCSI_blkLen = (usb_mass_CBW.CB[7] << 8) | usb_mass_CBW.CB[8]; + } + + if (usb_mass_CBW.dSignature == BOT_CBW_SIGNATURE) { + /* Valid usb_mass_CBW */ + if ((usb_mass_CBW.bLUN > maxLun) || (usb_mass_CBW.bCBLength < 1) || (usb_mass_CBW.bCBLength > 16)) { + usb_mass_bot_abort(BOT_DIR_BOTH); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_FIELED_IN_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + } else { + switch (usb_mass_CBW.CB[0]) { + case SCSI_REQUEST_SENSE: + scsi_request_sense_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_INQUIRY: + scsi_inquiry_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_START_STOP_UNIT: + scsi_start_stop_unit_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_ALLOW_MEDIUM_REMOVAL: + scsi_start_stop_unit_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_MODE_SENSE6: + scsi_mode_sense6_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_MODE_SENSE10: + scsi_mode_sense10_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_READ_FORMAT_CAPACITIES: + scsi_read_format_capacity_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_READ_CAPACITY10: + scsi_read_capacity10_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_TEST_UNIT_READY: + scsi_test_unit_ready_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_READ10: + scsi_read10_cmd(usb_mass_CBW.bLUN, SCSI_lba, SCSI_blkLen); + break; + case SCSI_WRITE10: + scsi_write10_cmd(usb_mass_CBW.bLUN, SCSI_lba, SCSI_blkLen); + break; + case SCSI_VERIFY10: + scsi_verify10_cmd(usb_mass_CBW.bLUN); + break; + case SCSI_FORMAT_UNIT: + scsi_format_cmd(usb_mass_CBW.bLUN); + break; + + case SCSI_MODE_SELECT10: + case SCSI_MODE_SELECT6: + case SCSI_SEND_DIAGNOSTIC: + case SCSI_READ6: + case SCSI_READ12: + case SCSI_READ16: + case SCSI_READ_CAPACITY16: + case SCSI_WRITE6: + case SCSI_WRITE12: + case SCSI_VERIFY12: + case SCSI_VERIFY16: + case SCSI_WRITE16: + scsi_invalid_cmd(usb_mass_CBW.bLUN); + break; + + default: + { + usb_mass_bot_abort(BOT_DIR_BOTH); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + } + } + } + } else { + /* Invalid usb_mass_CBW */ + usb_mass_bot_abort(BOT_DIR_BOTH); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + } +} + +void usb_mass_bot_abort(uint8_t direction) { + switch (direction) { + case BOT_DIR_IN: + SetEPTxStatus(USB_MASS_TX_ENDP, USB_EP_ST_TX_STL); + break; + case BOT_DIR_OUT: + SetEPRxStatus(USB_MASS_RX_ENDP, USB_EP_ST_RX_STL); + break; + case BOT_DIR_BOTH: + SetEPTxStatus(USB_MASS_TX_ENDP, USB_EP_ST_TX_STL); + SetEPRxStatus(USB_MASS_RX_ENDP, USB_EP_ST_RX_STL); + break; + default: + break; + } +} + +void usb_mass_transfer_data_request(uint8_t* dataPointer, uint16_t dataLen) { + usb_mass_sil_write(dataPointer, dataLen); + + SetEPTxStatus(USB_MASS_TX_ENDP, USB_EP_ST_TX_VAL); + usb_mass_botState = BOT_STATE_DATA_IN_LAST; + usb_mass_CSW.dDataResidue -= dataLen; + usb_mass_CSW.bStatus = BOT_CSW_CMD_PASSED; +} + +void usb_mass_bot_set_csw(uint8_t status, uint8_t sendPermission) { + usb_mass_CSW.dSignature = BOT_CSW_SIGNATURE; + usb_mass_CSW.bStatus = status; + + usb_mass_sil_write(((uint8_t *) & usb_mass_CSW), BOT_CSW_DATA_LENGTH); + + usb_mass_botState = BOT_STATE_ERROR; + if (sendPermission) { + usb_mass_botState = BOT_STATE_CSW_Send; + SetEPTxStatus(USB_MASS_TX_ENDP, USB_EP_ST_TX_VAL); + } +} + +uint32_t usb_mass_sil_write(uint8_t* pBufferPointer, uint32_t wBufferSize) { + /* Use the memory interface function to write to the selected endpoint */ + usb_copy_to_pma(pBufferPointer, wBufferSize, USB_MASS_TX_ADDR); + + /* Update the data length in the control register */ + SetEPTxCount(USB_MASS_TX_ENDP, wBufferSize); + + return 0; +} + +uint32_t usb_mass_sil_read(uint8_t* pBufferPointer) { + uint32_t usb_mass_dataLength = 0; + + /* Get the number of received data on the selected Endpoint */ + usb_mass_dataLength = GetEPRxCount(USB_MASS_RX_ENDP); + + /* Use the memory interface function to write to the selected endpoint */ + usb_copy_from_pma(pBufferPointer, usb_mass_dataLength, USB_MASS_RX_ADDR); + + /* Return the number of received data */ + return usb_mass_dataLength; +} diff --git a/STM32F1/libraries/USBComposite/usb_mass.h b/STM32F1/libraries/USBComposite/usb_mass.h new file mode 100644 index 000000000..7d4f7cea0 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_mass.h @@ -0,0 +1,112 @@ + +#ifndef _LIBMAPLE_USB_MASS_H_ +#define _LIBMAPLE_USB_MASS_H_ + +#include +#include +#include +#include +#include "usb_generic.h" +#include "usb_mass_mal.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define N_STRING_DESCRIPTORS 4 + +#define MAX_PACKET_SIZE 0x40 /* 64B, maximum for USB FS Devices */ +#define MAX_BULK_PACKET_SIZE 0x40 /* 64B, max bulk Can't use 512 because the internal buffers for USB is only 512B */ + + + /* MASS Storage Requests */ +#define REQUEST_GET_MAX_LUN 0xFE +#define REQUEST_MASS_STORAGE_RESET 0xFF + + /* USB device state */ + typedef enum _DEVICE_STATE { + DEVICE_STATE_UNCONNECTED, + DEVICE_STATE_ATTACHED, + DEVICE_STATE_POWERED, + DEVICE_STATE_SUSPENDED, + DEVICE_STATE_ADDRESSED, + DEVICE_STATE_CONFIGURED + } DEVICE_STATE; + +#define BOT_DIR_IN 0 +#define BOT_DIR_OUT 1 +#define BOT_DIR_BOTH 2 + + /*****************************************************************************/ + /*********************** Bulk-Only Transfer State machine ********************/ + /*****************************************************************************/ +#define BOT_STATE_IDLE 0 /* Idle state */ +#define BOT_STATE_DATA_OUT 1 /* Data Out state */ +#define BOT_STATE_DATA_IN 2 /* Data In state */ +#define BOT_STATE_DATA_IN_LAST 3 /* Last Data In Last */ +#define BOT_STATE_CSW_Send 4 /* Command Status Wrapper */ +#define BOT_STATE_ERROR 5 /* error state */ + +#define BOT_CBW_SIGNATURE 0x43425355 +#define BOT_CSW_SIGNATURE 0x53425355 +#define BOT_CBW_PACKET_LENGTH 31 + +#define BOT_CSW_DATA_LENGTH 0x000D + + /* CSW Status Definitions */ +#define BOT_CSW_CMD_PASSED 0x00 +#define BOT_CSW_CMD_FAILED 0x01 +#define BOT_CSW_PHASE_ERROR 0x02 + +#define BOT_SEND_CSW_DISABLE 0 +#define BOT_SEND_CSW_ENABLE 1 + +#define USB_EP1_IN 0x81 + + /* Bulk-only Command Block Wrapper */ + typedef struct _BulkOnlyCBW { + uint32_t dSignature; + uint32_t dTag; + uint32_t dDataLength; + uint8_t bmFlags; + uint8_t bLUN; + uint8_t bCBLength; + uint8_t CB[16]; + } BulkOnlyCBW; + + /* Bulk-only Command Status Wrapper */ + typedef struct _BulkOnlyCSW { + uint32_t dSignature; + uint32_t dTag; + uint32_t dDataResidue; + uint8_t bStatus; + } BulkOnlyCSW; + + typedef struct _usb_descriptor_config { + usb_descriptor_config_header Config_Header; + usb_descriptor_interface MASS_Interface; + usb_descriptor_endpoint DataInEndpoint; + usb_descriptor_endpoint DataOutEndpoint; + } __packed usb_descriptor_config; + + void usb_mass_enable(gpio_dev *disc_dev, uint8 disc_bit); + void usb_mass_disable(gpio_dev *disc_dev, uint8 disc_bit); + void usb_mass_loop(); + + void usb_mass_bot_set_csw(uint8_t cswStatus, uint8_t sendPermission); + void usb_mass_transfer_data_request(uint8_t* dataPointer, uint16_t dataLen); + void usb_mass_bot_abort(uint8_t direction); + + extern USBCompositePart usbMassPart; + +extern uint8_t usb_mass_botState; +extern BulkOnlyCBW usb_mass_CBW; +extern BulkOnlyCSW usb_mass_CSW; +extern uint8_t usb_mass_bulkDataBuff[MAX_BULK_PACKET_SIZE]; +extern uint16_t usb_mass_dataLength; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_mass_internal.h b/STM32F1/libraries/USBComposite/usb_mass_internal.h new file mode 100644 index 000000000..c3405a87b --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_mass_internal.h @@ -0,0 +1,12 @@ +#ifndef _USB_MASS_INTERNAL_H_ +#define _USB_MASS_INTERNAL_H_ + +extern USBEndpointInfo usbMassEndpoints[]; + +#define MASS_ENDPOINT_TX 0 +#define MASS_ENDPOINT_RX 1 +#define USB_MASS_RX_ENDP (usbMassEndpoints[MASS_ENDPOINT_RX].address) +#define USB_MASS_TX_ENDP (usbMassEndpoints[MASS_ENDPOINT_TX].address) +#define USB_MASS_RX_ADDR (usbMassEndpoints[MASS_ENDPOINT_RX].pmaAddress) +#define USB_MASS_TX_ADDR (usbMassEndpoints[MASS_ENDPOINT_TX].pmaAddress) +#endif \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/usb_mass_mal.c b/STM32F1/libraries/USBComposite/usb_mass_mal.c new file mode 100644 index 000000000..b3a79c3b2 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_mass_mal.c @@ -0,0 +1,42 @@ +#include +#include "usb_mass_mal.h" + + +#define USB_MASS_MAL_FAIL 1 +#define USB_MASS_MAL_SUCCESS 0 + +MassStorageDriveInfo usb_mass_drives[USB_MASS_MAX_DRIVES] = { { 0 } }; + +uint16_t usb_mass_mal_init(uint8_t lun) { + if (lun >= USB_MASS_MAX_DRIVES || (usb_mass_drives[lun].init != NULL && ! usb_mass_drives[lun].init())) + return USB_MASS_MAL_FAIL; + else + return USB_MASS_MAL_SUCCESS; +} + +void usb_mass_mal_format(uint8_t lun) { + if (lun < USB_MASS_MAX_DRIVES && usb_mass_drives[lun].format != NULL) + usb_mass_drives[lun].format(); +} + +uint16_t usb_mass_mal_get_status(uint8_t lun) { + if (lun >= USB_MASS_MAX_DRIVES || (usb_mass_drives[lun].status != NULL && ! usb_mass_drives[lun].status())) + return USB_MASS_MAL_FAIL; + else + return USB_MASS_MAL_SUCCESS; +} + +uint16_t usb_mass_mal_read_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength) { + if (lun >= USB_MASS_MAX_DRIVES || ! usb_mass_drives[lun].read(memoryOffset, readbuff, transferLength)) + return USB_MASS_MAL_FAIL; + else + return USB_MASS_MAL_SUCCESS; +} + +uint16_t usb_mass_mal_write_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *writebuff, uint16_t transferLength) { + if (lun >= USB_MASS_MAX_DRIVES || usb_mass_drives[lun].write == NULL + || ! usb_mass_drives[lun].write(memoryOffset, writebuff, transferLength)) + return USB_MASS_MAL_FAIL; + else + return USB_MASS_MAL_SUCCESS; +} diff --git a/STM32F1/libraries/USBComposite/usb_mass_mal.h b/STM32F1/libraries/USBComposite/usb_mass_mal.h new file mode 100644 index 000000000..455fd7151 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_mass_mal.h @@ -0,0 +1,39 @@ +#ifndef __USB_MASS_MAL_H +#define __USB_MASS_MAL_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define USB_MASS_MAX_DRIVES 2 + +typedef bool (*MassStorageWriter)(uint32_t memoryOffset, const uint8_t *writebuff, uint16_t transferLength); +typedef bool (*MassStorageReader)(uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength); +typedef bool (*MassStorageStatuser)(void); +typedef bool (*MassStorageInitializer)(void); +typedef bool (*MassStorageFormatter)(void); + +typedef struct { + uint32_t blockCount; + MassStorageReader read; + MassStorageWriter write; + MassStorageStatuser status; + MassStorageInitializer init; + MassStorageFormatter format; +} MassStorageDriveInfo; + +extern MassStorageDriveInfo usb_mass_drives[USB_MASS_MAX_DRIVES]; +uint16_t usb_mass_mal_init(uint8_t lun); +uint16_t usb_mass_mal_get_status(uint8_t lun); +uint16_t usb_mass_mal_read_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength); +uint16_t usb_mass_mal_write_memory(uint8_t lun, uint32_t memoryOffset, uint8_t *writebuff, uint16_t transferLength); +void usb_mass_mal_format(uint8_t lun); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_midi_device.c b/STM32F1/libraries/USBComposite/usb_midi_device.c new file mode 100644 index 000000000..549d58194 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_midi_device.c @@ -0,0 +1,532 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * Copyright (c) 2013 Magnus Lundin. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/usb/stm32f1/usb_midi_device.c + * @brief USB MIDI. + * + * FIXME: this works on the STM32F1 USB peripherals, and probably no + * place else. Nonportable bits really need to be factored out, and + * the result made cleaner. + */ + +#include +#include "usb_generic.h" +#include "usb_midi_device.h" +#include +#include + +#include +#include +#include + +/* Private headers */ +#include "usb_lib_globals.h" +#include "usb_reg_map.h" + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" +#include "usb_def.h" + +static void midiDataTxCb(void); +static void midiDataRxCb(void); + +static void usbMIDIReset(void); +static RESULT usbMIDIDataSetup(uint8 request); +static RESULT usbMIDINoDataSetup(uint8 request); + +#define MIDI_ENDPOINT_RX 0 +#define MIDI_ENDPOINT_TX 1 +#define USB_MIDI_RX_ENDP (midiEndpoints[MIDI_ENDPOINT_RX].address) +#define USB_MIDI_TX_ENDP (midiEndpoints[MIDI_ENDPOINT_TX].address) +#define USB_MIDI_RX_ADDR (midiEndpoints[MIDI_ENDPOINT_RX].pmaAddress) +#define USB_MIDI_TX_ADDR (midiEndpoints[MIDI_ENDPOINT_TX].pmaAddress) + +/* + * Descriptors + */ + +typedef struct { +// usb_descriptor_config_header Config_Header; + /* Control Interface */ + usb_descriptor_interface AC_Interface; + AC_CS_INTERFACE_DESCRIPTOR(1) AC_CS_Interface; + /* Control Interface */ + usb_descriptor_interface MS_Interface; + MS_CS_INTERFACE_DESCRIPTOR MS_CS_Interface; + MIDI_IN_JACK_DESCRIPTOR MIDI_IN_JACK_1; + MIDI_IN_JACK_DESCRIPTOR MIDI_IN_JACK_2; + MIDI_OUT_JACK_DESCRIPTOR(1) MIDI_OUT_JACK_3; + MIDI_OUT_JACK_DESCRIPTOR(1) MIDI_OUT_JACK_4; + usb_descriptor_endpoint DataOutEndpoint; + MS_CS_BULK_ENDPOINT_DESCRIPTOR(1) MS_CS_DataOutEndpoint; + usb_descriptor_endpoint DataInEndpoint; + MS_CS_BULK_ENDPOINT_DESCRIPTOR(1) MS_CS_DataInEndpoint; +} __packed usb_descriptor_config; + +static const usb_descriptor_config usbMIDIDescriptor_Config = { + /* .Config_Header = { + .bLength = sizeof(usb_descriptor_config_header), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CONFIGURATION, + .wTotalLength = sizeof(usb_descriptor_config), + .bNumInterfaces = 0x02, + .bConfigurationValue = 0x01, + .iConfiguration = 0x00, + .bmAttributes = (USB_CONFIG_ATTR_BUSPOWERED | + USB_CONFIG_ATTR_SELF_POWERED), + .bMaxPower = MAX_POWER, + }, */ + + .AC_Interface = { + .bLength = sizeof(usb_descriptor_interface), + .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, + .bInterfaceNumber = 0x00, // PATCH + .bAlternateSetting = 0x00, + .bNumEndpoints = 0x00, + .bInterfaceClass = USB_INTERFACE_CLASS_AUDIO, + .bInterfaceSubClass = USB_INTERFACE_AUDIOCONTROL, + .bInterfaceProtocol = 0x00, + .iInterface = 0x00, + }, + + .AC_CS_Interface = { + .bLength = AC_CS_INTERFACE_DESCRIPTOR_SIZE(1), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_INTERFACE, + .SubType = 0x01, + .bcdADC = 0x0100, + .wTotalLength = AC_CS_INTERFACE_DESCRIPTOR_SIZE(1), + .bInCollection = 0x01, + .baInterfaceNr = {0x01}, + }, + + .MS_Interface = { + .bLength = sizeof(usb_descriptor_interface), + .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, + .bInterfaceNumber = 0x01, // PATCH + .bAlternateSetting = 0x00, + .bNumEndpoints = 0x02, + .bInterfaceClass = USB_INTERFACE_CLASS_AUDIO, + .bInterfaceSubClass = USB_INTERFACE_MIDISTREAMING, + .bInterfaceProtocol = 0x00, + .iInterface = 0, // was 0x04 + }, + + .MS_CS_Interface = { + .bLength = sizeof(MS_CS_INTERFACE_DESCRIPTOR), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_INTERFACE, + .SubType = 0x01, + .bcdADC = 0x0100, + .wTotalLength = sizeof(MS_CS_INTERFACE_DESCRIPTOR) + +sizeof(MIDI_IN_JACK_DESCRIPTOR) + +sizeof(MIDI_IN_JACK_DESCRIPTOR) + +MIDI_OUT_JACK_DESCRIPTOR_SIZE(1) + +MIDI_OUT_JACK_DESCRIPTOR_SIZE(1) + +sizeof(usb_descriptor_endpoint) + +MS_CS_BULK_ENDPOINT_DESCRIPTOR_SIZE(1) + +sizeof(usb_descriptor_endpoint) + +MS_CS_BULK_ENDPOINT_DESCRIPTOR_SIZE(1) + /* 0x41-4 */, + }, + + .MIDI_IN_JACK_1 = { + .bLength = sizeof(MIDI_IN_JACK_DESCRIPTOR), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_INTERFACE, + .SubType = MIDI_IN_JACK, + .bJackType = MIDI_JACK_EMBEDDED, + .bJackId = 0x01, + .iJack = 0x05, + }, + + .MIDI_IN_JACK_2 = { + .bLength = sizeof(MIDI_IN_JACK_DESCRIPTOR), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_INTERFACE, + .SubType = MIDI_IN_JACK, + .bJackType = MIDI_JACK_EXTERNAL, + .bJackId = 0x02, + .iJack = 0x00, + }, + + .MIDI_OUT_JACK_3 = { + .bLength = MIDI_OUT_JACK_DESCRIPTOR_SIZE(1), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_INTERFACE, + .SubType = MIDI_OUT_JACK, + .bJackType = MIDI_JACK_EMBEDDED, + .bJackId = 0x03, + .bNrInputPins = 0x01, + .baSourceId = {0x02}, + .baSourcePin = {0x01}, + .iJack = 0x00, + }, + + .MIDI_OUT_JACK_4 = { + .bLength = MIDI_OUT_JACK_DESCRIPTOR_SIZE(1), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_INTERFACE, + .SubType = MIDI_OUT_JACK, + .bJackType = MIDI_JACK_EXTERNAL, +// .bJackId = 0x04, + .bJackId = 0x03, + .bNrInputPins = 0x01, + .baSourceId = {0x01}, + .baSourcePin = {0x01}, + .iJack = 0x00, + }, + + .DataOutEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_OUT | + MIDI_ENDPOINT_RX), // PATCH + .bmAttributes = USB_EP_TYPE_BULK, + .wMaxPacketSize = USB_MIDI_RX_EPSIZE, + .bInterval = 0x00, + }, + + .MS_CS_DataOutEndpoint = { + .bLength = MS_CS_BULK_ENDPOINT_DESCRIPTOR_SIZE(1), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_ENDPOINT, + .SubType = 0x01, + .bNumEmbMIDIJack = 0x01, + .baAssocJackID = {0x01}, + }, + + .DataInEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | MIDI_ENDPOINT_TX), // PATCH + .bmAttributes = USB_EP_TYPE_BULK, + .wMaxPacketSize = USB_MIDI_TX_EPSIZE, + .bInterval = 0x00, + }, + + .MS_CS_DataInEndpoint = { + .bLength = MS_CS_BULK_ENDPOINT_DESCRIPTOR_SIZE(1), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CS_ENDPOINT, + .SubType = 0x01, + .bNumEmbMIDIJack = 0x01, + .baAssocJackID = {0x03}, + }, + +}; + +/* I/O state */ + +/* Received data */ +static volatile uint32 midiBufferRx[USB_MIDI_RX_EPSIZE/4]; +/* Read index into midiBufferRx */ +static volatile uint32 rx_offset = 0; +/* Transmit data */ +static volatile uint32 midiBufferTx[USB_MIDI_TX_EPSIZE/4]; +/* Write index into midiBufferTx */ +static volatile uint32 tx_offset = 0; +/* Number of bytes left to transmit */ +static volatile uint32 n_unsent_packets = 0; +/* Are we currently sending an IN packet? */ +static volatile uint8 transmitting = 0; +/* Number of unread bytes */ +static volatile uint32 n_unread_packets = 0; + + +// eventually all of this should be in a place for settings which can be written to flash. +volatile uint8 myMidiChannel = DEFAULT_MIDI_CHANNEL; +volatile uint8 myMidiDevice = DEFAULT_MIDI_DEVICE; +volatile uint8 myMidiCable = DEFAULT_MIDI_CABLE; +volatile uint8 myMidiID[] = { LEAFLABS_MMA_VENDOR_1,LEAFLABS_MMA_VENDOR_2,LEAFLABS_MMA_VENDOR_3,0}; + +#define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] + +static void getMIDIPartDescriptor(uint8* out) { + memcpy(out, &usbMIDIDescriptor_Config, sizeof(usbMIDIDescriptor_Config)); + // patch to reflect where the part goes in the descriptor + OUT_BYTE(usbMIDIDescriptor_Config, AC_Interface.bInterfaceNumber) += usbMIDIPart.startInterface; + OUT_BYTE(usbMIDIDescriptor_Config, MS_Interface.bInterfaceNumber) += usbMIDIPart.startInterface; + OUT_BYTE(usbMIDIDescriptor_Config, DataOutEndpoint.bEndpointAddress) += usbMIDIPart.startEndpoint; + OUT_BYTE(usbMIDIDescriptor_Config, DataInEndpoint.bEndpointAddress) += usbMIDIPart.startEndpoint; +} + +static USBEndpointInfo midiEndpoints[2] = { + { + .callback = midiDataRxCb, + .bufferSize = USB_MIDI_RX_EPSIZE, + .type = USB_EP_EP_TYPE_BULK, + .tx = 0 + }, + { + .callback = midiDataTxCb, + .bufferSize = USB_MIDI_TX_EPSIZE, + .type = USB_EP_EP_TYPE_BULK, + .tx = 1, + } +}; + +USBCompositePart usbMIDIPart = { + .numInterfaces = 2, + .numEndpoints = sizeof(midiEndpoints)/sizeof(*midiEndpoints), + .descriptorSize = sizeof(usbMIDIDescriptor_Config), + .getPartDescriptor = getMIDIPartDescriptor, + .usbInit = NULL, + .usbReset = usbMIDIReset, + .usbDataSetup = usbMIDIDataSetup, + .usbNoDataSetup = usbMIDINoDataSetup, + .endpoints = midiEndpoints +}; + +/* + * MIDI interface + */ + +/* This function is non-blocking. + * + * It copies data from a usercode buffer into the USB peripheral TX + * buffer, and returns the number of bytes copied. */ +uint32 usb_midi_tx(const uint32* buf, uint32 packets) { + uint32 bytes=packets*4; + /* Last transmission hasn't finished, so abort. */ + if (usb_midi_is_transmitting()) { + /* Copy to TxBuffer */ + + return 0; /* return len */ + } + + /* We can only put USB_MIDI_TX_EPSIZE bytes in the buffer. */ + if (bytes > USB_MIDI_TX_EPSIZE) { + bytes = USB_MIDI_TX_EPSIZE; + packets=bytes/4; + } + + /* Queue bytes for sending. */ + if (packets) { + usb_copy_to_pma((uint8 *)buf, bytes, USB_MIDI_TX_ADDR); + } + // We still need to wait for the interrupt, even if we're sending + // zero bytes. (Sending zero-size packets is useful for flushing + // host-side buffers.) + usb_set_ep_tx_count(USB_MIDI_TX_ENDP, bytes); + n_unsent_packets = packets; + transmitting = 1; + usb_set_ep_tx_stat(USB_MIDI_TX_ENDP, USB_EP_STAT_TX_VALID); + + return packets; +} + +uint32 usb_midi_data_available(void) { + return n_unread_packets; +} + +uint8 usb_midi_is_transmitting(void) { + return transmitting; +} + +uint16 usb_midi_get_pending(void) { + return n_unsent_packets; +} + +/* Nonblocking byte receive. + * + * Copies up to len bytes from our private data buffer (*NOT* the PMA) + * into buf and deq's the FIFO. */ +uint32 usb_midi_rx(uint32* buf, uint32 packets) { + /* Copy bytes to buffer. */ + uint32 n_copied = usb_midi_peek(buf, packets); + + /* Mark bytes as read. */ + n_unread_packets -= n_copied; + rx_offset += n_copied; + + /* If all bytes have been read, re-enable the RX endpoint, which + * was set to NAK when the current batch of bytes was received. */ + if (n_unread_packets == 0) { + usb_set_ep_rx_count(USB_MIDI_RX_ENDP, USB_MIDI_RX_EPSIZE); + usb_set_ep_rx_stat(USB_MIDI_RX_ENDP, USB_EP_STAT_RX_VALID); + rx_offset = 0; + } + + return n_copied; +} + +/* Nonblocking byte lookahead. + * + * Looks at unread bytes without marking them as read. */ +uint32 usb_midi_peek(uint32* buf, uint32 packets) { + uint32 i; + if (packets > n_unread_packets) { + packets = n_unread_packets; + } + + for (i = 0; i < packets; i++) { + buf[i] = midiBufferRx[i + rx_offset]; + } + + return packets; +} + +/* + * Callbacks + */ + +static void midiDataTxCb(void) { + n_unsent_packets = 0; + transmitting = 0; +} + +static void midiDataRxCb(void) { + usb_set_ep_rx_stat(USB_MIDI_RX_ENDP, USB_EP_STAT_RX_NAK); + n_unread_packets = usb_get_ep_rx_count(USB_MIDI_RX_ENDP) / 4; + /* This copy won't overwrite unread bytes, since we've set the RX + * endpoint to NAK, and will only set it to VALID when all bytes + * have been read. */ + + usb_copy_from_pma((uint8*)midiBufferRx, n_unread_packets * 4, + USB_MIDI_RX_ADDR); + + // discard volatile + LglSysexHandler((uint32*)midiBufferRx,(uint32*)&rx_offset,(uint32*)&n_unread_packets); + + if (n_unread_packets == 0) { + usb_set_ep_rx_count(USB_MIDI_RX_ENDP, USB_MIDI_RX_EPSIZE); + usb_set_ep_rx_stat(USB_MIDI_RX_ENDP, USB_EP_STAT_RX_VALID); + rx_offset = 0; + } + +} + +static void usbMIDIReset(void) { + /* Reset the RX/TX state */ + n_unread_packets = 0; + n_unsent_packets = 0; + rx_offset = 0; +} + +static RESULT usbMIDIDataSetup(uint8 request) { + (void)request;//unused +#if 0 + uint8* (*CopyRoutine)(uint16) = 0; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) { + } + + if (CopyRoutine == NULL) { + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + return USB_SUCCESS; +#endif + return USB_UNSUPPORT; +} + +static RESULT usbMIDINoDataSetup(uint8 request) { + (void)request;//unused +#if 0 + RESULT ret = USB_UNSUPPORT; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) { + } + return ret; +#endif + return USB_UNSUPPORT; +} + +// .............THIS IS NOT WORKING YET................ +// send debugging information to +static uint8_t sysexbuffer[80]={CIN_SYSEX,0xF0,0x7D,0x33,CIN_SYSEX,0x33,0x00,0xf7}; // !!!bad hardcoded number foo !!! +uint8_t iSysHexLine(uint8_t rectype, uint16_t address, uint8_t *payload,uint8_t payloadlength, uint8_t *buffer); +void sendThroughSysex(char *printbuffer, int bufferlength) { + int n; + n = iSysHexLine(1, 0 , (uint8_t *) printbuffer, (uint8_t) bufferlength , sysexbuffer+6); + usb_midi_tx((uint32*)sysexbuffer,n/4); +} + +#define HIGHBYTE(x) ((uint8_t) (((x) >> 8) & 0x00ff) ) +#define LOWBYTE(x) ((uint8_t) ((x) & 0x00ff) ) +#define HIGHNIBBLE(x) ((((uint8_t)(x)) & 0xF0) >> 4) +#define LOWNIBBLE(x) (((uint8_t)(x)) & 0x0F) +#define HEXCHAR(c) ((c>9)?55+c:48+c) + + +uint8_t iSysHexLine(uint8_t rectype, uint16_t address, uint8_t *payload,uint8_t payloadlength, uint8_t *buffer) { + + int i=0; int j; int thirdone; + uint8_t n=0; + uint16_t checksum=0; + //uint16_t length=0; + + buffer[i++]=':'; + + checksum+=payloadlength; + buffer[i++]=HEXCHAR(HIGHNIBBLE(payloadlength)); + buffer[i++]=HEXCHAR(LOWNIBBLE(payloadlength)); + buffer[i++]=CIN_SYSEX; + + n=HIGHBYTE(address); + checksum+=n; + buffer[i++]=HEXCHAR(HIGHNIBBLE(n)); + buffer[i++]=HEXCHAR(LOWNIBBLE(n)); + + n=LOWBYTE(address); + checksum+=n; + buffer[i++]=HEXCHAR(HIGHNIBBLE(n)); + buffer[i++]=CIN_SYSEX; + buffer[i++]=HEXCHAR(LOWNIBBLE(n)); + + n=rectype; + checksum+=n; + buffer[i++]=HEXCHAR(HIGHNIBBLE(n)); + buffer[i++]=HEXCHAR(LOWNIBBLE(n)); + buffer[i++]=CIN_SYSEX; + thirdone=0; + for (j=0; j +#include +#include +#include +#include "usb_generic.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern USBCompositePart usbMIDIPart; + +typedef union { + uint8 byte[4]; + uint32 data; +} USB_MIDI_Event_Packet; + +/* + * USB MIDI Requests + */ + +/* + * Descriptors, etc. + */ +#define USB_DESCRIPTOR_TYPE_CS_INTERFACE 0x24 +#define USB_DESCRIPTOR_TYPE_CS_ENDPOINT 0x25 + + +#define USB_DEVICE_CLASS_UNDEFINED 0x00 +#define USB_DEVICE_CLASS_CDC 0x02 +#define USB_DEVICE_SUBCLASS_UNDEFINED 0x00 + +#define USB_INTERFACE_CLASS_AUDIO 0x01 +#define USB_INTERFACE_SUBCLASS_UNDEFINED 0x00 +#define USB_INTERFACE_AUDIOCONTROL 0x01 +#define USB_INTERFACE_AUDIOSTREAMING 0x02 +#define USB_INTERFACE_MIDISTREAMING 0x03 + +/* MIDI Streaming class specific interfaces */ +#define MIDI_IN_JACK 0x02 +#define MIDI_OUT_JACK 0x03 + +#define MIDI_JACK_EMBEDDED 0x01 +#define MIDI_JACK_EXTERNAL 0x02 + + +#define AC_CS_INTERFACE_DESCRIPTOR_SIZE(DataSize) (8 + DataSize) +#define AC_CS_INTERFACE_DESCRIPTOR(DataSize) \ + struct { \ + uint8 bLength; \ + uint8 bDescriptorType; \ + uint8 SubType; \ + uint16 bcdADC; \ + uint16 wTotalLength; \ + uint8 bInCollection; \ + uint8 baInterfaceNr[DataSize]; \ + } __packed + +typedef struct { + uint8 bLength; + uint8 bDescriptorType; + uint8 SubType; + uint16 bcdADC; + uint16 wTotalLength; + } __packed MS_CS_INTERFACE_DESCRIPTOR; + +typedef struct { + uint8 bLength; + uint8 bDescriptorType; + uint8 SubType; + uint8 bJackType; + uint8 bJackId; + uint8 iJack; + } __packed MIDI_IN_JACK_DESCRIPTOR; + +#define MIDI_OUT_JACK_DESCRIPTOR_SIZE(DataSize) (7 + 2*DataSize) +#define MIDI_OUT_JACK_DESCRIPTOR(DataSize) \ + struct { \ + uint8 bLength; \ + uint8 bDescriptorType; \ + uint8 SubType; \ + uint8 bJackType; \ + uint8 bJackId; \ + uint8 bNrInputPins; \ + uint8 baSourceId[DataSize]; \ + uint8 baSourcePin[DataSize]; \ + uint8 iJack; \ + } __packed + + +#define MS_CS_BULK_ENDPOINT_DESCRIPTOR_SIZE(DataSize) (4 + DataSize) +#define MS_CS_BULK_ENDPOINT_DESCRIPTOR(DataSize) \ + struct { \ + uint8 bLength; \ + uint8 bDescriptorType; \ + uint8 SubType; \ + uint8 bNumEmbMIDIJack; \ + uint8 baAssocJackID[DataSize]; \ + } __packed + +/* + * Endpoint configuration + */ + +#define USB_MIDI_TX_EPSIZE 0x40 + +#define USB_MIDI_RX_EPSIZE 0x40 + +#ifndef __cplusplus +#define USB_MIDI_DECLARE_DEV_DESC(vid, pid) \ + { \ + .bLength = sizeof(usb_descriptor_device), \ + .bDescriptorType = USB_DESCRIPTOR_TYPE_DEVICE, \ + .bcdUSB = 0x0110, \ + .bDeviceClass = USB_DEVICE_CLASS_UNDEFINED, \ + .bDeviceSubClass = USB_DEVICE_SUBCLASS_UNDEFINED, \ + .bDeviceProtocol = 0x00, \ + .bMaxPacketSize0 = 0x40, \ + .idVendor = vid, \ + .idProduct = pid, \ + .bcdDevice = 0x0200, \ + .iManufacturer = 0x01, \ + .iProduct = 0x02, \ + .iSerialNumber = 0x00, \ + .bNumConfigurations = 0x01, \ + } +#endif + +/* + * Sysex Stuff. + */ + +#define SYSEX_BUFFER_LENGTH 256 + + + /* + * MIDI interface + */ + + void usb_midi_putc(char ch); + uint32 usb_midi_tx(const uint32* buf, uint32 len); + uint32 usb_midi_rx(uint32* buf, uint32 len); + uint32 usb_midi_peek(uint32* buf, uint32 len); + + uint32 usb_midi_data_available(void); /* in RX buffer */ + uint16 usb_midi_get_pending(void); + uint8 usb_midi_is_transmitting(void); + + void sendThroughSysex(char *printbuffer, int bufferlength); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_scsi.c b/STM32F1/libraries/USBComposite/usb_scsi.c new file mode 100644 index 000000000..2ff3dfde3 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_scsi.c @@ -0,0 +1,333 @@ +#include "usb_mass.h" +#include "usb_mass_mal.h" +#include "usb_mass_internal.h" +#include "usb_scsi.h" + +#include +#include +#include + +/* Private headers */ +#include "usb_lib_globals.h" +#include "usb_reg_map.h" +#include "usb_regs.h" + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" +#include "usb_def.h" + +#define SCSI_READ_FORMAT_CAPACITY_DATA_LEN 0x0C +#define SCSI_READ_FORMAT_CAPACITY10_DATA_LEN 0x08 +#define SCSI_MODE_SENSE6_DATA_LEN 0x04 +#define SCSI_MODE_SENSE10_DATA_LEN 0x08 + +#define SCSI_TXFR_IDLE 0 +#define SCSI_TXFR_ONGOING 1 + +extern uint32_t usb_mass_sil_write(uint8_t* pBufferPointer, uint32_t wBufferSize); + +/* See usb_scsi_data.c */ +extern uint8_t SCSI_page00InquiryData[]; +extern uint8_t SCSI_standardInquiryData[]; +extern uint8_t SCSI_standardInquiryData2[]; +extern uint8_t SCSI_senseData[]; +extern uint8_t SCSI_modeSense6Data[]; +extern uint8_t SCSI_modeSense10Data[]; +extern uint8_t SCSI_readFormatCapacityData[]; +extern uint8_t SCSI_readFormatCapacity10Data[]; + +uint32_t SCSI_lba; +uint32_t SCSI_blkLen; +uint8_t SCSI_transferState = SCSI_TXFR_IDLE; +uint32_t SCSI_blockReadCount = 0; +uint32_t SCSI_blockOffset; +uint32_t SCSI_counter = 0; +uint8_t SCSI_dataBuffer[512]; /* 512 bytes (SDCard block size) */ + +uint8_t scsi_address_management(uint8_t lun, uint8_t cmd, uint32_t lba, uint32_t blockNbr); +void scsi_read_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLength); +void scsi_write_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLength); + +void scsi_inquiry_cmd(uint8_t lun) { + uint8_t* inquiryData; + uint16_t inquiryDataLength; + + if (usb_mass_CBW.CB[1] & 0x01) /*Evpd is set*/ { + inquiryData = SCSI_page00InquiryData; + inquiryDataLength = 5; + } else { + if (lun == 0) { + inquiryData = SCSI_standardInquiryData; + } else { + inquiryData = SCSI_standardInquiryData2; + } + + if (usb_mass_CBW.CB[4] <= SCSI_STANDARD_INQUIRY_DATA_LEN) { + inquiryDataLength = usb_mass_CBW.CB[4]; + } else { + inquiryDataLength = SCSI_STANDARD_INQUIRY_DATA_LEN; + } + } + usb_mass_transfer_data_request(inquiryData, inquiryDataLength); +} + +void scsi_request_sense_cmd(uint8_t lun) { + uint8_t requestSenseDataLength; + if (usb_mass_CBW.CB[4] <= SCSI_REQUEST_SENSE_DATA_LEN) { + requestSenseDataLength = usb_mass_CBW.CB[4]; + } else { + requestSenseDataLength = SCSI_REQUEST_SENSE_DATA_LEN; + } + usb_mass_transfer_data_request(SCSI_senseData, requestSenseDataLength); +} + +void scsi_start_stop_unit_cmd(uint8_t lun) { + usb_mass_bot_set_csw(BOT_CSW_CMD_PASSED, BOT_SEND_CSW_ENABLE); +} + +void scsi_mode_sense6_cmd(uint8_t lun) { + usb_mass_transfer_data_request(SCSI_modeSense6Data, SCSI_MODE_SENSE6_DATA_LEN); +} + +void scsi_mode_sense10_cmd(uint8_t lun) { + usb_mass_transfer_data_request(SCSI_modeSense10Data, SCSI_MODE_SENSE10_DATA_LEN); +} + +void scsi_read_format_capacity_cmd(uint8_t lun) { + if (usb_mass_mal_get_status(lun)) { + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_NOT_READY, SCSI_MEDIUM_NOT_PRESENT); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_ENABLE); + usb_mass_bot_abort(BOT_DIR_IN); + return; + } + SCSI_readFormatCapacityData[4] = (uint8_t) (usb_mass_drives[lun].blockCount >> 24); + SCSI_readFormatCapacityData[5] = (uint8_t) (usb_mass_drives[lun].blockCount >> 16); + SCSI_readFormatCapacityData[6] = (uint8_t) (usb_mass_drives[lun].blockCount >> 8); + SCSI_readFormatCapacityData[7] = (uint8_t) (usb_mass_drives[lun].blockCount); + + SCSI_readFormatCapacityData[9] = (uint8_t) (SCSI_BLOCK_SIZE >> 16); + SCSI_readFormatCapacityData[10] = (uint8_t) (SCSI_BLOCK_SIZE >> 8); + SCSI_readFormatCapacityData[11] = (uint8_t) (SCSI_BLOCK_SIZE); + usb_mass_transfer_data_request(SCSI_readFormatCapacityData, SCSI_READ_FORMAT_CAPACITY_DATA_LEN); +} + +void scsi_read_capacity10_cmd(uint8_t lun) { + if (usb_mass_mal_get_status(lun)) { + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_NOT_READY, SCSI_MEDIUM_NOT_PRESENT); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_ENABLE); + usb_mass_bot_abort(BOT_DIR_IN); + return; + } + + SCSI_readFormatCapacity10Data[0] = (uint8_t) ((usb_mass_drives[lun].blockCount - 1) >> 24); + SCSI_readFormatCapacity10Data[1] = (uint8_t) ((usb_mass_drives[lun].blockCount - 1) >> 16); + SCSI_readFormatCapacity10Data[2] = (uint8_t) ((usb_mass_drives[lun].blockCount - 1) >> 8); + SCSI_readFormatCapacity10Data[3] = (uint8_t) (usb_mass_drives[lun].blockCount - 1); + + SCSI_readFormatCapacity10Data[4] = (uint8_t) (SCSI_BLOCK_SIZE >> 24); + SCSI_readFormatCapacity10Data[5] = (uint8_t) (SCSI_BLOCK_SIZE >> 16); + SCSI_readFormatCapacity10Data[6] = (uint8_t) (SCSI_BLOCK_SIZE >> 8); + SCSI_readFormatCapacity10Data[7] = (uint8_t) (SCSI_BLOCK_SIZE); + usb_mass_transfer_data_request(SCSI_readFormatCapacity10Data, SCSI_READ_FORMAT_CAPACITY10_DATA_LEN); +} + +void scsi_read10_cmd(uint8_t lun, uint32_t lba, uint32_t blockNbr) { + if (usb_mass_botState == BOT_STATE_IDLE) { + if (!(scsi_address_management(usb_mass_CBW.bLUN, SCSI_READ10, lba, blockNbr))) /*address out of range*/ { + return; + } + + if ((usb_mass_CBW.bmFlags & 0x80) != 0) { + usb_mass_botState = BOT_STATE_DATA_IN; + scsi_read_memory(lun, lba, blockNbr); + } else { + usb_mass_bot_abort(BOT_DIR_BOTH); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_FIELED_IN_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_ENABLE); + } + return; + } else if (usb_mass_botState == BOT_STATE_DATA_IN) { + scsi_read_memory(lun, lba, blockNbr); + } +} + +void scsi_write10_cmd(uint8_t lun, uint32_t lba, uint32_t blockNbr) { + if (usb_mass_botState == BOT_STATE_IDLE) { + if (!(scsi_address_management(usb_mass_CBW.bLUN, SCSI_WRITE10, lba, blockNbr)))/*address out of range*/ { + return; + } + + if ((usb_mass_CBW.bmFlags & 0x80) == 0) { + usb_mass_botState = BOT_STATE_DATA_OUT; + SetEPRxStatus(USB_MASS_RX_ENDP, USB_EP_ST_RX_VAL); + } else { + usb_mass_bot_abort(BOT_DIR_IN); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_FIELED_IN_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + } + return; + } else if (usb_mass_botState == BOT_STATE_DATA_OUT) { + scsi_write_memory(lun, lba, blockNbr); + } +} + +void scsi_test_unit_ready_cmd(uint8_t lun) { + if (usb_mass_mal_get_status(lun)) { + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_NOT_READY, SCSI_MEDIUM_NOT_PRESENT); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_ENABLE); + usb_mass_bot_abort(BOT_DIR_IN); + return; + } else { + usb_mass_bot_set_csw(BOT_CSW_CMD_PASSED, BOT_SEND_CSW_ENABLE); + } +} + +void scsi_verify10_cmd(uint8_t lun) { + if ((usb_mass_CBW.dDataLength == 0) && !(usb_mass_CBW.CB[1] & SCSI_BLKVFY))/* BLKVFY not set*/ { + usb_mass_bot_set_csw(BOT_CSW_CMD_PASSED, BOT_SEND_CSW_ENABLE); + } else { + usb_mass_bot_abort(BOT_DIR_BOTH); + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_FIELED_IN_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + } +} + +void scsi_format_cmd(uint8_t lun) { + if (usb_mass_mal_get_status(lun)) { + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_NOT_READY, SCSI_MEDIUM_NOT_PRESENT); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_ENABLE); + usb_mass_bot_abort(BOT_DIR_IN); + return; + } + usb_mass_mal_format(lun); + usb_mass_bot_set_csw(BOT_CSW_CMD_PASSED, BOT_SEND_CSW_ENABLE); +} + +void scsi_set_sense_data(uint8_t lun, uint8_t sensKey, uint8_t asc) { + SCSI_senseData[2] = sensKey; + SCSI_senseData[12] = asc; +} + +void scsi_invalid_cmd(uint8_t lun) { + if (usb_mass_CBW.dDataLength == 0) { + usb_mass_bot_abort(BOT_DIR_IN); + } else { + if ((usb_mass_CBW.bmFlags & 0x80) != 0) { + usb_mass_bot_abort(BOT_DIR_IN); + } else { + usb_mass_bot_abort(BOT_DIR_BOTH); + } + } + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); +} + +uint8_t scsi_address_management(uint8_t lun, uint8_t cmd, uint32_t lba, uint32_t blockNbr) { + + if ((lba + blockNbr) > usb_mass_drives[lun].blockCount) { + if (cmd == SCSI_WRITE10) { + usb_mass_bot_abort(BOT_DIR_BOTH); + } + usb_mass_bot_abort(BOT_DIR_IN); + scsi_set_sense_data(lun, SCSI_ILLEGAL_REQUEST, SCSI_ADDRESS_OUT_OF_RANGE); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + return (FALSE); + } + + + if (usb_mass_CBW.dDataLength != blockNbr * SCSI_BLOCK_SIZE) { + if (cmd == SCSI_WRITE10) { + usb_mass_bot_abort(BOT_DIR_BOTH); + } else { + usb_mass_bot_abort(BOT_DIR_IN); + } + scsi_set_sense_data(usb_mass_CBW.bLUN, SCSI_ILLEGAL_REQUEST, SCSI_INVALID_FIELED_IN_COMMAND); + usb_mass_bot_set_csw(BOT_CSW_CMD_FAILED, BOT_SEND_CSW_DISABLE); + return (FALSE); + } + return (TRUE); +} + +void scsi_read_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLength) { + static uint32_t offset, length; + + if (SCSI_transferState == SCSI_TXFR_IDLE) { + offset = memoryOffset * SCSI_BLOCK_SIZE; + length = transferLength * SCSI_BLOCK_SIZE; + SCSI_transferState = SCSI_TXFR_ONGOING; + } + + if (SCSI_transferState == SCSI_TXFR_ONGOING) { + if (SCSI_blockReadCount == 0) { + usb_mass_mal_read_memory(lun, offset, SCSI_dataBuffer, SCSI_BLOCK_SIZE); + + usb_mass_sil_write(SCSI_dataBuffer, MAX_BULK_PACKET_SIZE); + + SCSI_blockReadCount = SCSI_BLOCK_SIZE - MAX_BULK_PACKET_SIZE; + SCSI_blockOffset = MAX_BULK_PACKET_SIZE; + } else { + usb_mass_sil_write(SCSI_dataBuffer + SCSI_blockOffset, MAX_BULK_PACKET_SIZE); + + SCSI_blockReadCount -= MAX_BULK_PACKET_SIZE; + SCSI_blockOffset += MAX_BULK_PACKET_SIZE; + } + + SetEPTxStatus(USB_MASS_TX_ENDP, USB_EP_ST_TX_VAL); + + offset += MAX_BULK_PACKET_SIZE; + length -= MAX_BULK_PACKET_SIZE; + + usb_mass_CSW.dDataResidue -= MAX_BULK_PACKET_SIZE; + usb_mass_CSW.bStatus = BOT_CSW_CMD_PASSED; + // TODO: Led_RW_ON(); + } + + if (length == 0) { + SCSI_blockReadCount = 0; + SCSI_blockOffset = 0; + offset = 0; + usb_mass_botState = BOT_STATE_DATA_IN_LAST; + SCSI_transferState = SCSI_TXFR_IDLE; + // TODO: Led_RW_OFF(); + } +} + +void scsi_write_memory(uint8_t lun, uint32_t memoryOffset, uint32_t transferLength) { + static uint32_t offset, length; + uint32_t idx; + uint32_t temp = SCSI_counter + 64; + + if (SCSI_transferState == SCSI_TXFR_IDLE) { + offset = memoryOffset * SCSI_BLOCK_SIZE; + length = transferLength * SCSI_BLOCK_SIZE; + SCSI_transferState = SCSI_TXFR_ONGOING; + } + + if (SCSI_transferState == SCSI_TXFR_ONGOING) { + + for (idx = 0; SCSI_counter < temp; SCSI_counter++) { + *((uint8_t *) SCSI_dataBuffer + SCSI_counter) = usb_mass_bulkDataBuff[idx++]; + } + + offset += usb_mass_dataLength; + length -= usb_mass_dataLength; + + if (!(length % SCSI_BLOCK_SIZE)) { + SCSI_counter = 0; + usb_mass_mal_write_memory(lun, offset - SCSI_BLOCK_SIZE, SCSI_dataBuffer, SCSI_BLOCK_SIZE); + } + + usb_mass_CSW.dDataResidue -= usb_mass_dataLength; + SetEPRxStatus(USB_MASS_RX_ENDP, USB_EP_ST_RX_VAL); /* enable the next transaction*/ + + // TODO: Led_RW_ON(); + } + + if ((length == 0) || (usb_mass_botState == BOT_STATE_CSW_Send)) { + SCSI_counter = 0; + usb_mass_bot_set_csw(BOT_CSW_CMD_PASSED, BOT_SEND_CSW_ENABLE); + SCSI_transferState = SCSI_TXFR_IDLE; + // TODO: Led_RW_OFF(); + } +} \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/usb_scsi.h b/STM32F1/libraries/USBComposite/usb_scsi.h new file mode 100644 index 000000000..a5b121a92 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_scsi.h @@ -0,0 +1,96 @@ +#ifndef __USB_SCSI_H +#define __USB_SCSI_H + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define SCSI_BLOCK_SIZE 512 + + /* SCSI Commands */ +#define SCSI_FORMAT_UNIT 0x04 +#define SCSI_INQUIRY 0x12 +#define SCSI_MODE_SELECT6 0x15 +#define SCSI_MODE_SELECT10 0x55 +#define SCSI_MODE_SENSE6 0x1A +#define SCSI_MODE_SENSE10 0x5A +#define SCSI_ALLOW_MEDIUM_REMOVAL 0x1E +#define SCSI_READ6 0x08 +#define SCSI_READ10 0x28 +#define SCSI_READ12 0xA8 +#define SCSI_READ16 0x88 + +#define SCSI_READ_CAPACITY10 0x25 +#define SCSI_READ_CAPACITY16 0x9E + +#define SCSI_REQUEST_SENSE 0x03 +#define SCSI_START_STOP_UNIT 0x1B +#define SCSI_TEST_UNIT_READY 0x00 +#define SCSI_WRITE6 0x0A +#define SCSI_WRITE10 0x2A +#define SCSI_WRITE12 0xAA +#define SCSI_WRITE16 0x8A + +#define SCSI_VERIFY10 0x2F +#define SCSI_VERIFY12 0xAF +#define SCSI_VERIFY16 0x8F + +#define SCSI_SEND_DIAGNOSTIC 0x1D +#define SCSI_READ_FORMAT_CAPACITIES 0x23 + +#define SCSI_NO_SENSE 0 +#define SCSI_RECOVERED_ERROR 1 +#define SCSI_NOT_READY 2 +#define SCSI_MEDIUM_ERROR 3 +#define SCSI_HARDWARE_ERROR 4 +#define SCSI_ILLEGAL_REQUEST 5 +#define SCSI_UNIT_ATTENTION 6 +#define SCSI_DATA_PROTECT 7 +#define SCSI_BLANK_CHECK 8 +#define SCSI_VENDOR_SPECIFIC 9 +#define SCSI_COPY_ABORTED 10 +#define SCSI_ABORTED_COMMAND 11 +#define SCSI_VOLUME_OVERFLOW 13 +#define SCSI_MISCOMPARE 14 + +#define SCSI_INVALID_COMMAND 0x20 +#define SCSI_INVALID_FIELED_IN_COMMAND 0x24 +#define SCSI_PARAMETER_LIST_LENGTH_ERROR 0x1A +#define SCSI_INVALID_FIELD_IN_PARAMETER_LIST 0x26 +#define SCSI_ADDRESS_OUT_OF_RANGE 0x21 +#define SCSI_MEDIUM_NOT_PRESENT 0x3A +#define SCSI_MEDIUM_HAVE_CHANGED 0x28 + +#define SCSI_READ_FORMAT_CAPACITY_DATA_LEN 0x0C +#define SCSI_READ_CAPACITY10_DATA_LEN 0x08 +#define SCSI_MODE_SENSE10_DATA_LEN 0x08 +#define SCSI_MODE_SENSE6_DATA_LEN 0x04 +#define SCSI_REQUEST_SENSE_DATA_LEN 0x12 +#define SCSI_STANDARD_INQUIRY_DATA_LEN 0x24 +#define SCSI_BLKVFY 0x04 + + extern uint32_t SCSI_lba; + extern uint32_t SCSI_blkLen; + + void scsi_inquiry_cmd(uint8_t lun); + void scsi_request_sense_cmd(uint8_t lun); + void scsi_start_stop_unit_cmd(uint8_t lun); + void scsi_mode_sense6_cmd(uint8_t lun); + void scsi_mode_sense10_cmd(uint8_t lun); + void scsi_read_format_capacity_cmd(uint8_t lun); + void scsi_read_capacity10_cmd(uint8_t lun); + void scsi_read10_cmd(uint8_t lun, uint32_t lba, uint32_t blockNbr); + void scsi_write10_cmd(uint8_t lun, uint32_t lba, uint32_t blockNbr); + void scsi_test_unit_ready_cmd(uint8_t lun); + void scsi_verify10_cmd(uint8_t lun); + void scsi_format_cmd(uint8_t lun); + void scsi_set_sense_data(uint8_t lun, uint8_t sensKey, uint8_t asc); + void scsi_invalid_cmd(uint8_t lun); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_scsi_data.c b/STM32F1/libraries/USBComposite/usb_scsi_data.c new file mode 100644 index 000000000..a692fd769 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_scsi_data.c @@ -0,0 +1,120 @@ + +#include "usb_scsi.h" + +uint8_t SCSI_page00InquiryData[] = { + 0x00, /* PERIPHERAL QUALIFIER & PERIPHERAL DEVICE TYPE*/ + 0x00, + 0x00, + 0x00, + 0x00 /* Supported Pages 00*/ +}; + +uint8_t SCSI_standardInquiryData[] = { + 0x00, /* Direct Access Device */ + 0x80, /* RMB = 1: Removable Medium */ + 0x02, /* Version: No conformance claim to standard */ + 0x02, + + 36 - 4, /* Additional Length */ + 0x00, /* SCCS = 1: Storage Controller Component */ + 0x00, + 0x00, + /* Vendor Identification */ + 'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', + /* Product Identification */ + 'S', 'D', ' ', 'F', 'l', 'a', 's', 'h', ' ', + 'D', 'i', 's', 'k', ' ', ' ', ' ', + /* Product Revision Level */ + '1', '.', '0', ' ' +}; + +uint8_t SCSI_standardInquiryData2[] = { + 0x00, /* Direct Access Device */ + 0x80, /* RMB = 1: Removable Medium */ + 0x02, /* Version: No conformance claim to standard */ + 0x02, + + 36 - 4, /* Additional Length */ + 0x00, /* SCCS = 1: Storage Controller Component */ + 0x00, + 0x00, + /* Vendor Identification */ + 'S', 'T', 'M', ' ', ' ', ' ', ' ', ' ', + /* Product Identification */ + 'N', 'A', 'N', 'D', ' ', 'F', 'l', 'a', 's', 'h', ' ', + 'D', 'i', 's', 'k', ' ', + /* Product Revision Level */ + '1', '.', '0', ' ' +}; + +uint8_t SCSI_senseData[] = { + 0x70, /*RespCode*/ + 0x00, /*SegmentNumber*/ + SCSI_NO_SENSE, /* Sens_Key*/ + 0x00, + 0x00, + 0x00, + 0x00, /*Information*/ + 0x0A, /*AdditionalSenseLength*/ + 0x00, + 0x00, + 0x00, + 0x00, /*CmdInformation*/ + SCSI_NO_SENSE, /*Asc*/ + 0x00, /*ASCQ*/ + 0x00, /*FRUC*/ + 0x00, /*TBD*/ + 0x00, + 0x00 /*SenseKeySpecific*/ +}; + +uint8_t SCSI_modeSense6Data[] = { + 0x03, + 0x00, + 0x00, + 0x00, +}; + +uint8_t SCSI_modeSense10Data[] = { + 0x00, + 0x06, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00 +}; + +uint8_t SCSI_readFormatCapacityData[] = { + 0x00, + 0x00, + 0x00, + 0x08, /* Capacity List Length */ + + /* Block Count */ + 0, + 0, + 0, + 0, + + /* Block Length */ + 0x02, /* Descriptor Code: Formatted Media */ + 0, + 0, + 0 +}; + +uint8_t SCSI_readFormatCapacity10Data[] = { + /* Last Logical Block */ + 0, + 0, + 0, + 0, + + /* Block Length */ + 0, + 0, + 0, + 0 +}; \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/usb_serial.c b/STM32F1/libraries/USBComposite/usb_serial.c new file mode 100644 index 000000000..390d256d5 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_serial.c @@ -0,0 +1,580 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/usb/stm32f1/usb_hid.c + * @brief USB HID (human interface device) support + * + * FIXME: this works on the STM32F1 USB peripherals, and probably no + * place else. Nonportable bits really need to be factored out, and + * the result made cleaner. + */ + +#include "usb_serial.h" +#include "usb_generic.h" +#include +#include +#include +#include + +/* Private headers */ +#include "usb_lib_globals.h" +#include "usb_reg_map.h" + +#define CDCACM_ENDPOINT_TX 0 +#define CDCACM_ENDPOINT_MANAGEMENT 1 +#define CDCACM_ENDPOINT_RX 2 + +uint16 GetEPTxAddr(uint8 /*bEpNum*/); + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" +#include "usb_def.h" + +static void serialUSBReset(void); +static RESULT serialUSBDataSetup(uint8 request); +static RESULT serialUSBNoDataSetup(uint8 request); +static void vcomDataTxCb(void); +static void vcomDataRxCb(void); + +#define NUM_SERIAL_ENDPOINTS 3 +#define CCI_INTERFACE_OFFSET 0x00 +#define DCI_INTERFACE_OFFSET 0x01 +#define SERIAL_MANAGEMENT_INTERFACE_NUMBER (CCI_INTERFACE_OFFSET+usbSerialPart.startInterface) + +/* + * Descriptors + */ + + +typedef struct { + //CDCACM + IADescriptor IAD; + usb_descriptor_interface CCI_Interface; + CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_IntHeader; + CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_CallManagement; + CDC_FUNCTIONAL_DESCRIPTOR(1) CDC_Functional_ACM; + CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_Union; + usb_descriptor_endpoint ManagementEndpoint; + usb_descriptor_interface DCI_Interface; + usb_descriptor_endpoint DataOutEndpoint; + usb_descriptor_endpoint DataInEndpoint; +} __packed serial_part_config; + + +static const serial_part_config serialPartConfigData = { + .IAD = { + .bLength = 0x08, + .bDescriptorType = 0x0B, + .bFirstInterface = CCI_INTERFACE_OFFSET, // PATCH + .bInterfaceCount = 0x02, + .bFunctionClass = 0x02, + .bFunctionSubClass = 0x02, + .bFunctionProtocol = 0x01, + .iFunction = 0x02, + }, + .CCI_Interface = { + .bLength = sizeof(usb_descriptor_interface), + .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, + .bInterfaceNumber = CCI_INTERFACE_OFFSET, // PATCH + .bAlternateSetting = 0x00, + .bNumEndpoints = 0x01, + .bInterfaceClass = USB_INTERFACE_CLASS_CDC, + .bInterfaceSubClass = USB_INTERFACE_SUBCLASS_CDC_ACM, + .bInterfaceProtocol = 0x01, /* Common AT Commands */ + .iInterface = 0x00, + }, + + .CDC_Functional_IntHeader = { + .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(2), + .bDescriptorType = 0x24, + .SubType = 0x00, + .Data = {0x01, 0x10}, + }, + + .CDC_Functional_CallManagement = { + .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(2), + .bDescriptorType = 0x24, + .SubType = 0x01, + .Data = {0x03, DCI_INTERFACE_OFFSET}, // PATCH + }, + + .CDC_Functional_ACM = { + .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(1), + .bDescriptorType = 0x24, + .SubType = 0x02, + .Data = {0x06}, + }, + + .CDC_Functional_Union = { + .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(2), + .bDescriptorType = 0x24, + .SubType = 0x06, + .Data = {CCI_INTERFACE_OFFSET, DCI_INTERFACE_OFFSET}, // PATCH, PATCH + }, + + .ManagementEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | + CDCACM_ENDPOINT_MANAGEMENT), // PATCH + .bmAttributes = USB_EP_TYPE_INTERRUPT, + .wMaxPacketSize = USBHID_CDCACM_MANAGEMENT_EPSIZE, + .bInterval = 0xFF, + }, + + .DCI_Interface = { + .bLength = sizeof(usb_descriptor_interface), + .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, + .bInterfaceNumber = DCI_INTERFACE_OFFSET, // PATCH + .bAlternateSetting = 0x00, + .bNumEndpoints = 0x02, + .bInterfaceClass = USB_INTERFACE_CLASS_DIC, + .bInterfaceSubClass = 0x00, /* None */ + .bInterfaceProtocol = 0x00, /* None */ + .iInterface = 0x00, + }, + + .DataOutEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_OUT | + CDCACM_ENDPOINT_RX), // patch + .bmAttributes = USB_EP_TYPE_BULK, + .wMaxPacketSize = USBHID_CDCACM_RX_EPSIZE, + .bInterval = 0x00, + }, + + .DataInEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | CDCACM_ENDPOINT_TX), // PATCH + .bmAttributes = USB_EP_TYPE_BULK, + .wMaxPacketSize = USBHID_CDCACM_TX_EPSIZE, + .bInterval = 0x00, + } +}; + +#define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] + +static USBEndpointInfo serialEndpoints[3] = { + { + .callback = vcomDataTxCb, + .bufferSize = USBHID_CDCACM_TX_EPSIZE, + .type = USB_EP_EP_TYPE_BULK, + .tx = 1, + }, + { + .callback = NULL, + .bufferSize = USBHID_CDCACM_MANAGEMENT_EPSIZE, + .type = USB_EP_EP_TYPE_INTERRUPT, + .tx = 1, + }, + { + .callback = vcomDataRxCb, + .bufferSize = USBHID_CDCACM_RX_EPSIZE, + .type = USB_EP_EP_TYPE_BULK, + .tx = 0, + }, +}; + +static void getSerialPartDescriptor(uint8* out) { + memcpy(out, &serialPartConfigData, sizeof(serial_part_config)); + + // patch to reflect where the part goes in the descriptor + OUT_BYTE(serialPartConfigData, ManagementEndpoint.bEndpointAddress) += usbSerialPart.startEndpoint; + OUT_BYTE(serialPartConfigData, DataOutEndpoint.bEndpointAddress) += usbSerialPart.startEndpoint; + OUT_BYTE(serialPartConfigData, DataInEndpoint.bEndpointAddress) += usbSerialPart.startEndpoint; + + OUT_BYTE(serialPartConfigData, IAD.bFirstInterface) += usbSerialPart.startInterface; + OUT_BYTE(serialPartConfigData, CCI_Interface.bInterfaceNumber) += usbSerialPart.startInterface; + OUT_BYTE(serialPartConfigData, DCI_Interface.bInterfaceNumber) += usbSerialPart.startInterface; + OUT_BYTE(serialPartConfigData, CDC_Functional_CallManagement.Data[1]) += usbSerialPart.startInterface; + OUT_BYTE(serialPartConfigData, CDC_Functional_Union.Data[0]) += usbSerialPart.startInterface; + OUT_BYTE(serialPartConfigData, CDC_Functional_Union.Data[1]) += usbSerialPart.startInterface; +} + +USBCompositePart usbSerialPart = { + .numInterfaces = 2, + .numEndpoints = sizeof(serialEndpoints)/sizeof(*serialEndpoints), + .descriptorSize = sizeof(serial_part_config), + .getPartDescriptor = getSerialPartDescriptor, + .usbInit = NULL, + .usbReset = serialUSBReset, + .usbDataSetup = serialUSBDataSetup, + .usbNoDataSetup = serialUSBNoDataSetup, + .endpoints = serialEndpoints +}; + +#define CDC_SERIAL_RX_BUFFER_SIZE 256 // must be power of 2 +#define CDC_SERIAL_RX_BUFFER_SIZE_MASK (CDC_SERIAL_RX_BUFFER_SIZE-1) + +/* Received data */ +static volatile uint8 vcomBufferRx[CDC_SERIAL_RX_BUFFER_SIZE]; +/* Write index to vcomBufferRx */ +static volatile uint32 vcom_rx_head; +/* Read index from vcomBufferRx */ +static volatile uint32 vcom_rx_tail; + +#define CDC_SERIAL_TX_BUFFER_SIZE 256 // must be power of 2 +#define CDC_SERIAL_TX_BUFFER_SIZE_MASK (CDC_SERIAL_TX_BUFFER_SIZE-1) +// Tx data +static volatile uint8 vcomBufferTx[CDC_SERIAL_TX_BUFFER_SIZE]; +// Write index to vcomBufferTx +static volatile uint32 vcom_tx_head; +// Read index from vcomBufferTx +static volatile uint32 vcom_tx_tail; + + + +/* Other state (line coding, DTR/RTS) */ + +static volatile composite_cdcacm_line_coding line_coding = { + /* This default is 115200 baud, 8N1. */ + .dwDTERate = 115200, + .bCharFormat = USBHID_CDCACM_STOP_BITS_1, + .bParityType = USBHID_CDCACM_PARITY_NONE, + .bDataBits = 8, +}; + +/* DTR in bit 0, RTS in bit 1. */ +static volatile uint8 line_dtr_rts = 0; + + +static void (*rx_hook)(unsigned, void*) = 0; +static void (*iface_setup_hook)(unsigned, void*) = 0; + +void composite_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*)) { + if (hook_flags & USBHID_CDCACM_HOOK_RX) { + rx_hook = hook; + } + if (hook_flags & USBHID_CDCACM_HOOK_IFACE_SETUP) { + iface_setup_hook = hook; + } +} + +void composite_cdcacm_putc(char ch) { + while (!composite_cdcacm_tx((uint8*)&ch, 1)) + ; +} + +/* This function is non-blocking. + * + * It copies data from a user buffer into the USB peripheral TX + * buffer, and returns the number of bytes copied. */ +uint32 composite_cdcacm_tx(const uint8* buf, uint32 len) +{ + if (len==0) return 0; // no data to send + + uint32 head = vcom_tx_head; // load volatile variable + uint32 tx_unsent = (head - vcom_tx_tail) & CDC_SERIAL_TX_BUFFER_SIZE_MASK; + + // We can only put bytes in the buffer if there is place + if (len > (CDC_SERIAL_TX_BUFFER_SIZE-tx_unsent-1) ) { + len = (CDC_SERIAL_TX_BUFFER_SIZE-tx_unsent-1); + } + if (len==0) return 0; // buffer full + + uint16 i; + // copy data from user buffer to USB Tx buffer + for (i=0; i= 0); + + if (usbGenericTransmitting<0) { + vcomDataTxCb(); // initiate data transmission + } + + return len; +} + + + +uint32 composite_cdcacm_data_available(void) { + return (vcom_rx_head - vcom_rx_tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; +} + +uint16 composite_cdcacm_get_pending(void) { + return (vcom_tx_head - vcom_tx_tail) & CDC_SERIAL_TX_BUFFER_SIZE_MASK; +} + +/* Non-blocking byte receive. + * + * Copies up to len bytes from our private data buffer (*NOT* the PMA) + * into buf and deq's the FIFO. */ +uint32 composite_cdcacm_rx(uint8* buf, uint32 len) +{ + /* Copy bytes to buffer. */ + uint32 n_copied = composite_cdcacm_peek(buf, len); + + /* Mark bytes as read. */ + uint16 tail = vcom_rx_tail; // load volatile variable + tail = (tail + n_copied) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + vcom_rx_tail = tail; // store volatile variable + + uint32 rx_unread = (vcom_rx_head - tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + // If buffer was emptied to a pre-set value, re-enable the RX endpoint + if ( rx_unread <= 64 ) { // experimental value, gives the best performance + usb_set_ep_rx_stat(usbSerialPart.endpoints[CDCACM_ENDPOINT_RX].address, USB_EP_STAT_RX_VALID); + } + return n_copied; +} + +/* Non-blocking byte lookahead. + * + * Looks at unread bytes without marking them as read. */ +uint32 composite_cdcacm_peek(uint8* buf, uint32 len) +{ + unsigned i; + uint32 tail = vcom_rx_tail; + uint32 rx_unread = (vcom_rx_head-tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + + if (len > rx_unread) { + len = rx_unread; + } + + for (i = 0; i < len; i++) { + buf[i] = vcomBufferRx[tail]; + tail = (tail + 1) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + } + + return len; +} + +uint32 composite_cdcacm_peek_ex(uint8* buf, uint32 offset, uint32 len) +{ + unsigned i; + uint32 tail = (vcom_rx_tail + offset) & CDC_SERIAL_RX_BUFFER_SIZE_MASK ; + uint32 rx_unread = (vcom_rx_head-tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + + if (len + offset > rx_unread) { + len = rx_unread - offset; + } + + for (i = 0; i < len; i++) { + buf[i] = vcomBufferRx[tail]; + tail = (tail + 1) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + } + + return len; +} + +/* Roger Clark. Added. for Arduino 1.0 API support of Serial.peek() */ +int composite_cdcacm_peek_char() +{ + if (composite_cdcacm_data_available() == 0) + { + return -1; + } + + return vcomBufferRx[vcom_rx_tail]; +} + +uint8 composite_cdcacm_get_dtr() { + return ((line_dtr_rts & USBHID_CDCACM_CONTROL_LINE_DTR) != 0); +} + +uint8 composite_cdcacm_get_rts() { + return ((line_dtr_rts & USBHID_CDCACM_CONTROL_LINE_RTS) != 0); +} + +void composite_cdcacm_get_line_coding(composite_cdcacm_line_coding *ret) { + ret->dwDTERate = line_coding.dwDTERate; + ret->bCharFormat = line_coding.bCharFormat; + ret->bParityType = line_coding.bParityType; + ret->bDataBits = line_coding.bDataBits; +} + +int composite_cdcacm_get_baud(void) { + return line_coding.dwDTERate; +} + +int composite_cdcacm_get_stop_bits(void) { + return line_coding.bCharFormat; +} + +int composite_cdcacm_get_parity(void) { + return line_coding.bParityType; +} + +int composite_cdcacm_get_n_data_bits(void) { + return line_coding.bDataBits; +} + +/* + * Callbacks + */ +static void vcomDataTxCb(void) +{ + uint32 tail = vcom_tx_tail; // load volatile variable + uint32 tx_unsent = (vcom_tx_head - tail) & CDC_SERIAL_TX_BUFFER_SIZE_MASK; + if (tx_unsent==0) { + if ( (--usbGenericTransmitting)==0) goto flush_vcom; // no more data to send + return; // it was already flushed, keep Tx endpoint disabled + } + usbGenericTransmitting = 1; + // We can only send up to USBHID_CDCACM_TX_EPSIZE bytes in the endpoint. + if (tx_unsent > USBHID_CDCACM_TX_EPSIZE) { + tx_unsent = USBHID_CDCACM_TX_EPSIZE; + } + // copy the bytes from USB Tx buffer to PMA buffer + uint32 *dst = usb_pma_ptr(usbSerialPart.endpoints[CDCACM_ENDPOINT_TX].pmaAddress); + uint16 tmp = 0; + uint16 val; + unsigned i; + for (i = 0; i < tx_unsent; i++) { + val = vcomBufferTx[tail]; + tail = (tail + 1) & CDC_SERIAL_TX_BUFFER_SIZE_MASK; + if (i&1) { + *dst++ = tmp | (val<<8); + } else { + tmp = val; + } + } + if ( tx_unsent&1 ) { + *dst = tmp; + } + vcom_tx_tail = tail; // store volatile variable +flush_vcom: + // enable Tx endpoint + usb_set_ep_tx_count(usbSerialPart.endpoints[CDCACM_ENDPOINT_TX].address, tx_unsent); + usb_set_ep_tx_stat(usbSerialPart.endpoints[CDCACM_ENDPOINT_TX].address, USB_EP_STAT_TX_VALID); +} + + +static void vcomDataRxCb(void) +{ + uint32 head = vcom_rx_head; // load volatile variable + + uint32 ep_rx_size = usb_get_ep_rx_count(usbSerialPart.endpoints[CDCACM_ENDPOINT_RX].address); + // This copy won't overwrite unread bytes as long as there is + // enough room in the USB Rx buffer for next packet + uint32 *src = usb_pma_ptr(usbSerialPart.endpoints[CDCACM_ENDPOINT_RX].pmaAddress); + uint16 tmp = 0; + uint8 val; + uint32 i; + for (i = 0; i < ep_rx_size; i++) { + if (i&1) { + val = tmp>>8; + } else { + tmp = *src++; + val = tmp&0xFF; + } + vcomBufferRx[head] = val; + head = (head + 1) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + } + vcom_rx_head = head; // store volatile variable + + uint32 rx_unread = (head - vcom_rx_tail) & CDC_SERIAL_RX_BUFFER_SIZE_MASK; + // only enable further Rx if there is enough room to receive one more packet + if ( rx_unread < (CDC_SERIAL_RX_BUFFER_SIZE-USBHID_CDCACM_RX_EPSIZE) ) { + usb_set_ep_rx_stat(usbSerialPart.endpoints[CDCACM_ENDPOINT_RX].address, USB_EP_STAT_RX_VALID); + } + + if (rx_hook) { + rx_hook(USBHID_CDCACM_HOOK_RX, 0); + } +} + +static uint8* vcomGetSetLineCoding(uint16 length) { + if (length == 0) { + pInformation->Ctrl_Info.Usb_wLength = sizeof(struct composite_cdcacm_line_coding); + } + return (uint8*)&line_coding; +} + +static void serialUSBReset(void) { + //VCOM + vcom_rx_head = 0; + vcom_rx_tail = 0; + vcom_tx_head = 0; + vcom_tx_tail = 0; +} + +static RESULT serialUSBDataSetup(uint8 request) { + uint8* (*CopyRoutine)(uint16) = 0; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT) && + pInformation->USBwIndex0 == SERIAL_MANAGEMENT_INTERFACE_NUMBER) { + switch (request) { + case USBHID_CDCACM_GET_LINE_CODING: + CopyRoutine = vcomGetSetLineCoding; + break; + case USBHID_CDCACM_SET_LINE_CODING: + CopyRoutine = vcomGetSetLineCoding; + break; + default: + break; + } + /* Call the user hook. */ + if (iface_setup_hook) { + uint8 req_copy = request; + iface_setup_hook(USBHID_CDCACM_HOOK_IFACE_SETUP, &req_copy); + } + } + + if (CopyRoutine == NULL){ + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + return USB_SUCCESS; +} + +static RESULT serialUSBNoDataSetup(uint8 request) { + RESULT ret = USB_UNSUPPORT; + + if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT) && + pInformation->USBwIndex0 == SERIAL_MANAGEMENT_INTERFACE_NUMBER) { + switch(request) { + case USBHID_CDCACM_SET_COMM_FEATURE: + /* We support set comm. feature, but don't handle it. */ + ret = USB_SUCCESS; + break; + case USBHID_CDCACM_SET_CONTROL_LINE_STATE: + /* Track changes to DTR and RTS. */ + line_dtr_rts = (pInformation->USBwValues.bw.bb0 & + (USBHID_CDCACM_CONTROL_LINE_DTR | + USBHID_CDCACM_CONTROL_LINE_RTS)); + ret = USB_SUCCESS; + break; + } + /* Call the user hook. */ + if (iface_setup_hook) { + uint8 req_copy = request; + iface_setup_hook(USBHID_CDCACM_HOOK_IFACE_SETUP, &req_copy); + } + } + return ret; +} + diff --git a/STM32F1/libraries/USBComposite/usb_serial.h b/STM32F1/libraries/USBComposite/usb_serial.h new file mode 100644 index 000000000..926901b6a --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_serial.h @@ -0,0 +1,157 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/include/libmaple/usb_device.h + * @brief USB Composite with CDC ACM and HID support + * + * IMPORTANT: this API is unstable, and may change without notice. + */ + +#ifndef _USB_SERIAL_H_ +#define _USB_SERIAL_H_ + +#include +#include +#include "usb_generic.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern USBCompositePart usbSerialPart; + +/* + * CDC ACM Requests + */ + +#define USBHID_CDCACM_SET_LINE_CODING 0x20 +#define USBHID_CDCACM_GET_LINE_CODING 0x21 +#define USBHID_CDCACM_SET_COMM_FEATURE 0x02 +#define USBHID_CDCACM_SET_CONTROL_LINE_STATE 0x22 +#define USBHID_CDCACM_CONTROL_LINE_DTR (0x01) +#define USBHID_CDCACM_CONTROL_LINE_RTS (0x02) + +#define USBHID_CDCACM_MANAGEMENT_EPSIZE 0x10 +#define USBHID_CDCACM_RX_EPSIZE 0x40 +#define USBHID_CDCACM_TX_EPSIZE 0x40 +/* + * Descriptors, etc. + */ + + + +#define USBHID_CDCACM_CTRL_ENDP 0 + +typedef struct +{ + uint8_t bLength; + uint8_t bDescriptorType; + uint8_t bFirstInterface; + uint8_t bInterfaceCount; + uint8_t bFunctionClass; + uint8_t bFunctionSubClass; + uint8_t bFunctionProtocol; + uint8_t iFunction; +} IADescriptor; + +#define CDC_FUNCTIONAL_DESCRIPTOR_SIZE(DataSize) (3 + DataSize) +#define CDC_FUNCTIONAL_DESCRIPTOR(DataSize) \ + struct { \ + uint8 bLength; \ + uint8 bDescriptorType; \ + uint8 SubType; \ + uint8 Data[DataSize]; \ + } __packed + +#define USB_DEVICE_CLASS_CDC 0x02 +#define USB_DEVICE_SUBCLASS_CDC 0x00 +#define USB_INTERFACE_CLASS_CDC 0x02 +#define USB_INTERFACE_SUBCLASS_CDC_ACM 0x02 +#define USB_INTERFACE_CLASS_DIC 0x0A + +/* + * CDC ACM interface + */ + +void composite_cdcacm_putc(char ch); +uint32 composite_cdcacm_tx(const uint8* buf, uint32 len); +uint32 composite_cdcacm_rx(uint8* buf, uint32 len); +uint32 composite_cdcacm_peek(uint8* buf, uint32 len); +uint32 composite_cdcacm_peek_ex(uint8* buf, uint32 offset, uint32 len); + +uint32 composite_cdcacm_data_available(void); /* in RX buffer */ +uint16 composite_cdcacm_get_pending(void); +uint8 usb_is_transmitting(void); + +uint8 composite_cdcacm_get_dtr(void); +uint8 composite_cdcacm_get_rts(void); + +typedef struct composite_cdcacm_line_coding { + uint32 dwDTERate; /* Baud rate */ + +#define USBHID_CDCACM_STOP_BITS_1 0 +#define USBHID_CDCACM_STOP_BITS_1_5 1 +#define USBHID_CDCACM_STOP_BITS_2 2 + uint8 bCharFormat; /* Stop bits */ + +#define USBHID_CDCACM_PARITY_NONE 0 +#define USBHID_CDCACM_PARITY_ODD 1 +#define USBHID_CDCACM_PARITY_EVEN 2 +#define USBHID_CDCACM_PARITY_MARK 3 +#define USBHID_CDCACM_PARITY_SPACE 4 + uint8 bParityType; /* Parity type */ + + uint8 bDataBits; /* Data bits: 5, 6, 7, 8, or 16 */ +} __packed composite_cdcacm_line_coding; + +/* Retrieve a copy of the current line coding structure. */ +void composite_cdcacm_get_line_coding(composite_cdcacm_line_coding*); + +/* Line coding conveniences. */ +int composite_cdcacm_get_baud(void); /* dwDTERate */ +int composite_cdcacm_get_stop_bits(void); /* bCharFormat */ +int composite_cdcacm_get_parity(void); /* bParityType */ +int composite_cdcacm_get_n_data_bits(void); /* bDataBits */ + +/* + * Hack: hooks for bootloader reset signalling + */ + +#define USBHID_CDCACM_HOOK_RX 0x1 +#define USBHID_CDCACM_HOOK_IFACE_SETUP 0x2 + +void composite_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*)); + +static inline __always_inline void composite_cdcacm_remove_hooks(unsigned hook_flags) { + composite_cdcacm_set_hooks(hook_flags, 0); +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/USBComposite/usb_setup.cpp b/STM32F1/libraries/USBComposite/usb_setup.cpp new file mode 100644 index 000000000..2136bf040 --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_setup.cpp @@ -0,0 +1,61 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*****************************************************************************/ + +/** + * @file wirish/stm32f1/boards_setup.cpp + * @author Marti Bolivar + * @brief STM32F1 chip setup. + * + * This file controls how init() behaves on the STM32F1. Be very + * careful when changing anything here. Many of these values depend + * upon each other. + */ + +#include "boards_private.h" +#include "USBHID.h" +#include +#include + +#include +#include + +namespace wirish { + namespace priv { + + void board_setup_usb(void) { + //Serial = CompositeSerial; +#ifdef GENERIC_BOOTLOADER + //Reset the USB interface on generic boards - developed by Victor PV + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP); + gpio_write_bit(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit,0); + + for(volatile unsigned int i=0;i<512;i++);// Only small delay seems to be needed, and USB pins will get configured in Serial.begin + gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_INPUT_FLOATING); +#endif + } + + } +} diff --git a/STM32F1/libraries/USBComposite/usb_x360.c b/STM32F1/libraries/USBComposite/usb_x360.c new file mode 100644 index 000000000..9c5bfd7bb --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_x360.c @@ -0,0 +1,486 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * FIXME: this works on the STM32F1 USB peripherals, and probably no + * place else. Nonportable bits really need to be factored out, and + * the result made cleaner. + */ + +#include "usb_generic.h" +#include "usb_x360.h" + +#include + +#include +#include +#include + +/* Private headers */ +#include "usb_lib_globals.h" +#include "usb_reg_map.h" + +/* usb_lib headers */ +#include "usb_type.h" +#include "usb_core.h" +#include "usb_def.h" + +typedef enum _HID_REQUESTS +{ + + GET_REPORT = 1, + GET_IDLE, + GET_PROTOCOL, + + SET_REPORT = 9, + SET_IDLE, + SET_PROTOCOL + +} HID_REQUESTS; + +#define USB_ENDPOINT_IN(addr) ((addr) | 0x80) +#define HID_ENDPOINT_INT 1 +#define USB_ENDPOINT_TYPE_INTERRUPT 0x03 + +#define HID_DESCRIPTOR_TYPE 0x21 + +#define REPORT_DESCRIPTOR 0x22 + + +typedef struct +{ + uint8_t len; // 9 + uint8_t dtype; // 0x21 + uint8_t versionL; // 0x101 + uint8_t versionH; // 0x101 + uint8_t country; + uint8_t numDesc; + uint8_t desctype; // 0x22 report + uint8_t descLenL; + uint8_t descLenH; +} HIDDescriptor; + +#define X360_INTERFACE_OFFSET 0 +#define X360_INTERFACE_NUMBER (X360_INTERFACE_OFFSET+usbX360Part.startInterface) +#define X360_ENDPOINT_TX 0 +#define X360_ENDPOINT_RX 1 +#define USB_X360_RX_ADDR x360Endpoints[X360_ENDPOINT_RX].pmaAddress +#define USB_X360_TX_ADDR x360Endpoints[X360_ENDPOINT_TX].pmaAddress +#define USB_X360_RX_ENDP x360Endpoints[X360_ENDPOINT_RX].address +#define USB_X360_TX_ENDP x360Endpoints[X360_ENDPOINT_TX].address + +u16 GetEPTxAddr(u8 bEpNum); + +static uint32 ProtocolValue; + +static void x360DataTxCb(void); +static void x360DataRxCb(void); +static void (*x360_rumble_callback)(uint8 left, uint8 right); +static void (*x360_led_callback)(uint8 pattern); + +static void x360Reset(void); +static RESULT x360DataSetup(uint8 request); +static RESULT x360NoDataSetup(uint8 request); +static uint8 *HID_GetProtocolValue(uint16 Length); + +/* + * Descriptors + */ + +#if 0 +const uint8_t hid_report_descriptor[] = { + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x05, // USAGE (Game Pad) + 0xa1, 0x01, // COLLECTION (Application) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x3a, // USAGE (Counted Buffer) + 0xa1, 0x02, // COLLECTION (Logical) + 0x75, 0x08, // REPORT_SIZE (8) + 0x95, 0x02, // REPORT_COUNT (2) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x3f, // USAGE (Reserved) + 0x09, 0x3b, // USAGE (Byte Count) + 0x81, 0x01, // INPUT (Cnst,Ary,Abs) + 0x75, 0x01, // REPORT_SIZE (1) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x35, 0x00, // PHYSICAL_MINIMUM (0) + 0x45, 0x01, // PHYSICAL_MAXIMUM (1) + 0x95, 0x04, // REPORT_COUNT (4) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x0c, // USAGE_MINIMUM (Button 12) + 0x29, 0x0f, // USAGE_MAXIMUM (Button 15) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x75, 0x01, // REPORT_SIZE (1) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x35, 0x00, // PHYSICAL_MINIMUM (0) + 0x45, 0x01, // PHYSICAL_MAXIMUM (1) + 0x95, 0x04, // REPORT_COUNT (4) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x09, 0x09, // USAGE (Button 9) + 0x09, 0x0a, // USAGE (Button 10) + 0x09, 0x07, // USAGE (Button 7) + 0x09, 0x08, // USAGE (Button 8) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x75, 0x01, // REPORT_SIZE (1) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x35, 0x00, // PHYSICAL_MINIMUM (0) + 0x45, 0x01, // PHYSICAL_MAXIMUM (1) + 0x95, 0x03, // REPORT_COUNT (3) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x09, 0x05, // USAGE (Button 5) + 0x09, 0x06, // USAGE (Button 6) + 0x09, 0x0b, // USAGE (Button 11) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x75, 0x01, // REPORT_SIZE (1) + 0x95, 0x01, // REPORT_COUNT (1) + 0x81, 0x01, // INPUT (Cnst,Ary,Abs) + 0x75, 0x01, // REPORT_SIZE (1) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x25, 0x01, // LOGICAL_MAXIMUM (1) + 0x35, 0x00, // PHYSICAL_MINIMUM (0) + 0x45, 0x01, // PHYSICAL_MAXIMUM (1) + 0x95, 0x04, // REPORT_COUNT (4) + 0x05, 0x09, // USAGE_PAGE (Button) + 0x19, 0x01, // USAGE_MINIMUM (Button 1) + 0x29, 0x04, // USAGE_MAXIMUM (Button 4) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x75, 0x08, // REPORT_SIZE (8) + 0x15, 0x00, // LOGICAL_MINIMUM (0) + 0x26, 0xff, 0x00, // LOGICAL_MAXIMUM (255) + 0x35, 0x00, // PHYSICAL_MINIMUM (0) + 0x46, 0xff, 0x00, // PHYSICAL_MAXIMUM (255) + 0x95, 0x02, // REPORT_COUNT (2) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x32, // USAGE (Z) + 0x09, 0x35, // USAGE (Rz) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0x75, 0x10, // REPORT_SIZE (16) + 0x16, 0x00, 0x80, // LOGICAL_MINIMUM (-32768) + 0x26, 0xff, 0x7f, // LOGICAL_MAXIMUM (32767) + 0x36, 0x00, 0x80, // PHYSICAL_MINIMUM (-32768) + 0x46, 0xff, 0x7f, // PHYSICAL_MAXIMUM (32767) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x95, 0x02, // REPORT_COUNT (2) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x30, // USAGE (X) + 0x09, 0x31, // USAGE (Y) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0xc0, // END_COLLECTION + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x01, // USAGE (Pointer) + 0xa1, 0x00, // COLLECTION (Physical) + 0x95, 0x02, // REPORT_COUNT (2) + 0x05, 0x01, // USAGE_PAGE (Generic Desktop) + 0x09, 0x33, // USAGE (Rx) + 0x09, 0x34, // USAGE (Ry) + 0x81, 0x02, // INPUT (Data,Var,Abs) + 0xc0, // END_COLLECTION + 0xc0, // END_COLLECTION + 0xc0 // END_COLLECTION +}; +#endif + +typedef struct { +// usb_descriptor_config_header Config_Header; + usb_descriptor_interface HID_Interface; + uint8 unknown_descriptor1[17]; + usb_descriptor_endpoint DataInEndpoint; + usb_descriptor_endpoint DataOutEndpoint; +} __packed usb_descriptor_config; + + +#define MAX_POWER (100 >> 1) +static const usb_descriptor_config X360Descriptor_Config = +{ +#if 0 + .Config_Header = { + .bLength = sizeof(usb_descriptor_config_header), + .bDescriptorType = USB_DESCRIPTOR_TYPE_CONFIGURATION, + .wTotalLength = sizeof(usb_descriptor_config),//0, + .bNumInterfaces = 0x01, + .bConfigurationValue = 0x01, + .iConfiguration = 0x00, + .bmAttributes = (USB_CONFIG_ATTR_BUSPOWERED | + USB_CONFIG_ATTR_SELF_POWERED), + .bMaxPower = MAX_POWER, + }, +#endif + + .HID_Interface = { + .bLength = sizeof(usb_descriptor_interface), + .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, + .bInterfaceNumber = X360_INTERFACE_OFFSET, // PATCH + .bAlternateSetting = 0x00, + .bNumEndpoints = 0x02, + .bInterfaceClass = 0xFF, + .bInterfaceSubClass = 0x5D, + .bInterfaceProtocol = 0x01, + .iInterface = 0x00, + }, + + .unknown_descriptor1 = { + 17,33,0,1,1,37,129,20,0,0,0,0,19,2,8,0,0, + }, + + .DataInEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | X360_ENDPOINT_TX),//PATCH + .bmAttributes = USB_EP_TYPE_INTERRUPT, + .wMaxPacketSize = 0x20, + .bInterval = 4, + }, + + .DataOutEndpoint = { + .bLength = sizeof(usb_descriptor_endpoint), + .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, + .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_OUT | X360_ENDPOINT_RX),//PATCH + .bmAttributes = USB_EP_TYPE_INTERRUPT, + .wMaxPacketSize = 0x20, + .bInterval = 8, + }, +}; + +static USBEndpointInfo x360Endpoints[2] = { + { + .callback = x360DataTxCb, + .bufferSize = 0x20, + .type = USB_EP_EP_TYPE_INTERRUPT, + .tx = 1 + }, + { + .callback = x360DataRxCb, + .bufferSize = 0x20, + .type = USB_EP_EP_TYPE_INTERRUPT, + .tx = 0, + } +}; + +#define OUT_BYTE(s,v) out[(uint8*)&(s.v)-(uint8*)&s] + +static void getX360PartDescriptor(uint8* out) { + memcpy(out, &X360Descriptor_Config, sizeof(X360Descriptor_Config)); + // patch to reflect where the part goes in the descriptor + OUT_BYTE(X360Descriptor_Config, HID_Interface.bInterfaceNumber) += usbX360Part.startInterface; + OUT_BYTE(X360Descriptor_Config, DataOutEndpoint.bEndpointAddress) += usbX360Part.startEndpoint; + OUT_BYTE(X360Descriptor_Config, DataInEndpoint.bEndpointAddress) += usbX360Part.startEndpoint; +} + +USBCompositePart usbX360Part = { + .numInterfaces = 1, + .numEndpoints = sizeof(x360Endpoints)/sizeof(*x360Endpoints), + .descriptorSize = sizeof(X360Descriptor_Config), + .getPartDescriptor = getX360PartDescriptor, + .usbInit = NULL, + .usbReset = x360Reset, + .usbDataSetup = x360DataSetup, + .usbNoDataSetup = x360NoDataSetup, + .endpoints = x360Endpoints +}; + + +/* + * Etc. + */ + +/* I/O state */ + +/* Received data */ +static volatile uint8 hidBufferRx[USB_X360_RX_EPSIZE]; + + +/* Number of bytes left to transmit */ +static volatile uint32 n_unsent_bytes = 0; +/* Are we currently sending an IN packet? */ +static volatile uint8 transmitting = 0; + + +/* + * HID interface + */ + +void x360_set_rumble_callback(void (*callback)(uint8 left, uint8 right)) { + x360_rumble_callback = callback; +} + +void x360_set_led_callback(void (*callback)(uint8 pattern)) { + x360_led_callback = callback; +} + +/*void x360_disable(void) { + x360_set_rumble_callback(NULL); + x360_set_led_callback(NULL); + usb_generic_disable(); +}*/ + +void x360_putc(char ch) { + while (!x360_tx((uint8*)&ch, 1)) + ; +} + + +/* This function is non-blocking. + * + * It copies data from a usercode buffer into the USB peripheral TX + * buffer, and returns the number of bytes copied. */ +uint32 x360_tx(const uint8* buf, uint32 len) { + /* Last transmission hasn't finished, so abort. */ + if (x360_is_transmitting()) { + return 0; + } + + /* We can only put USB_X360_TX_EPSIZE bytes in the buffer. */ + if (len > USB_X360_TX_EPSIZE) { + len = USB_X360_TX_EPSIZE; + } + + /* Queue bytes for sending. */ + if (len) { + usb_copy_to_pma(buf, len, GetEPTxAddr(USB_X360_TX_ENDP));//USB_X360_TX_ADDR); + } + // We still need to wait for the interrupt, even if we're sending + // zero bytes. (Sending zero-size packets is useful for flushing + // host-side buffers.) + usb_set_ep_tx_count(USB_X360_TX_ENDP, len); + n_unsent_bytes = len; + transmitting = 1; + usb_set_ep_tx_stat(USB_X360_TX_ENDP, USB_EP_STAT_TX_VALID); + + return len; +} + +uint8 x360_is_transmitting(void) { + return transmitting; +} + +uint16 x360_get_pending(void) { + return n_unsent_bytes; +} + +static void x360DataRxCb(void) +{ + uint32 ep_rx_size = usb_get_ep_rx_count(USB_X360_RX_ENDP); + // This copy won't overwrite unread bytes as long as there is + // enough room in the USB Rx buffer for next packet + uint32 *src = usb_pma_ptr(USB_X360_RX_ADDR); + uint16 tmp = 0; + uint8 val; + uint32 i; + for (i = 0; i < ep_rx_size; i++) { + if (i&1) { + val = tmp>>8; + } else { + tmp = *src++; + val = tmp&0xFF; + } + hidBufferRx[i] = val; + } + + if (ep_rx_size == 3) { + if (x360_led_callback != NULL && hidBufferRx[0] == 1 && hidBufferRx[1] == 3) + x360_led_callback(hidBufferRx[2]); + } + else if (ep_rx_size == 8) { + if (x360_rumble_callback != NULL && hidBufferRx[0] == 0 && hidBufferRx[1] == 8) + x360_rumble_callback(hidBufferRx[3],hidBufferRx[4]); + } + usb_set_ep_rx_stat(USB_X360_RX_ENDP, USB_EP_STAT_RX_VALID); +} + +/* + * Callbacks + */ + +static void x360DataTxCb(void) { + n_unsent_bytes = 0; + transmitting = 0; +} + +static RESULT x360DataSetup(uint8 request) { + uint8* (*CopyRoutine)(uint16) = 0; + +#if 0 + if (request == GET_DESCRIPTOR + && pInformation->USBwIndex0 == X360_INTERFACE_NUMBER && + && (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) + && (pInformation->USBwIndex0 == 0)){ + if (pInformation->USBwValue1 == REPORT_DESCRIPTOR){ + CopyRoutine = HID_GetReportDescriptor; + } else + if (pInformation->USBwValue1 == HID_DESCRIPTOR_TYPE){ + CopyRoutine = HID_GetHIDDescriptor; + } + + } /* End of GET_DESCRIPTOR */ + /*** GET_PROTOCOL ***/ + else +#endif + if(pInformation->USBwIndex0 == X360_INTERFACE_NUMBER && + (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + && request == GET_PROTOCOL){ + CopyRoutine = HID_GetProtocolValue; + } + + if (CopyRoutine == NULL){ + return USB_UNSUPPORT; + } + + pInformation->Ctrl_Info.CopyData = CopyRoutine; + pInformation->Ctrl_Info.Usb_wOffset = 0; + (*CopyRoutine)(0); + return USB_SUCCESS; +} + +static RESULT x360NoDataSetup(uint8 request) { + if ((Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) + && (request == SET_PROTOCOL)){ + uint8 wValue0 = pInformation->USBwValue0; + ProtocolValue = wValue0; + return USB_SUCCESS; + }else{ + return USB_UNSUPPORT; + } +} + +static uint8* HID_GetProtocolValue(uint16 Length){ + if (Length == 0){ + pInformation->Ctrl_Info.Usb_wLength = 1; + return NULL; + } else { + return (uint8 *)(&ProtocolValue); + } +} + +static void x360Reset(void) { + /* Reset the RX/TX state */ + n_unsent_bytes = 0; + transmitting = 0; +} \ No newline at end of file diff --git a/STM32F1/libraries/USBComposite/usb_x360.h b/STM32F1/libraries/USBComposite/usb_x360.h new file mode 100644 index 000000000..7d2d3e10b --- /dev/null +++ b/STM32F1/libraries/USBComposite/usb_x360.h @@ -0,0 +1,75 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2011 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +#ifndef _USB_X360_H +#define _USB_X360_H + +#include +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + + +/* + * Descriptors, etc. + */ + +//extern const uint8_t hid_report_descriptor[]; + +/* + * Endpoint configuration + */ + +#define USB_X360_TX_EPSIZE 0x20 +#define USB_X360_RX_EPSIZE 0x20 + +/* + * HID interface + */ + +extern USBCompositePart usbX360Part; +void x360_enable(); +void x360_disable(); + +void x360_putc(char ch); +uint32 x360_tx(const uint8* buf, uint32 len); +uint32 x360_rx(uint8* buf, uint32 len); +uint32 x360_hid_peek(uint8* buf, uint32 len); +uint32 x360_data_available(void); /* in RX buffer */ +uint16 x360_get_pending(void); +uint8 x360_is_transmitting(void); +void x360_set_rx_callback(void (*callback)(const uint8* buffer, uint32 size)); +void x360_set_rumble_callback(void (*callback)(uint8 left, uint8 right)); +void x360_set_led_callback(void (*callback)(uint8 pattern)); + +#ifdef __cplusplus +} +#endif + +#endif From 0197d63dc0dcefe48874af853bd82cf7b2ce1199 Mon Sep 17 00:00:00 2001 From: victorpv Date: Thu, 12 Apr 2018 22:30:37 -0500 Subject: [PATCH 096/373] Multiple updates to SDIO library Changes __io for __IO Increase the time for some delays Adds compatibility with SdSdioEX class while using DMA Implement a retry mechanism (needs further testing) Implement command ACMD42 to disconnect the sd internal pullup in D3 in 4bit mode --- STM32F1/cores/maple/sdio.cpp | 51 +- STM32F1/libraries/SDIO/SdioF1.cpp | 729 ++++++++++++++---- STM32F1/libraries/SDIO/SdioF1.h | 4 +- .../system/libmaple/include/libmaple/sdio.h | 26 +- 4 files changed, 643 insertions(+), 167 deletions(-) diff --git a/STM32F1/cores/maple/sdio.cpp b/STM32F1/cores/maple/sdio.cpp index 8bd94915b..23dfa4e41 100644 --- a/STM32F1/cores/maple/sdio.cpp +++ b/STM32F1/cores/maple/sdio.cpp @@ -32,8 +32,8 @@ sdio_dev * SDIO = SDIO_BASE; -#define DELAY_LONG 10 -#define DELAY_SHORT 1 +#define DELAY_LONG 20 +#define DELAY_SHORT 2 uint8_t dly = DELAY_LONG; // microseconds delay after accessing registers @@ -43,9 +43,13 @@ uint8_t dly = DELAY_LONG; // microseconds delay after accessing registers void sdio_gpios_init(void) { gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_AF_OUTPUT_PP); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); +/* gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_AF_OUTPUT_PP); +*/ + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_PU); gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_AF_OUTPUT_PP); gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_AF_OUTPUT_PP); /* @@ -63,12 +67,12 @@ void sdio_gpios_init(void) void sdio_gpios_deinit(void) { - gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_INPUT_FLOATING); - gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_INPUT_FLOATING); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D0].gpio_device, PIN_MAP[BOARD_SDIO_D0].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_CLK].gpio_device, PIN_MAP[BOARD_SDIO_CLK].gpio_bit, GPIO_INPUT_PU); + gpio_set_mode(PIN_MAP[BOARD_SDIO_CMD].gpio_device, PIN_MAP[BOARD_SDIO_CMD].gpio_bit, GPIO_INPUT_PU); /* * Todo just remove it, not needed for F1. @@ -110,19 +114,35 @@ void sdio_power_off(void) void sdio_set_clock(uint32_t clk) { - if (clk>24000000UL) clk = 24000000UL; // limit the SDIO master clock to 24MHz + /* + * limit the SDIO master clock to 8/3 of PCLK2.See RM 22.3 + * Also limited to no more than 48Mhz + */ + clk = min(clk,(SDIOCLK/3)*8); + clk = min(clk,36000000); if (clk<1000000) dly = DELAY_LONG; else dly = DELAY_SHORT; + /* + * round up divider, so we don't run the card over the speed supported. + + */ + uint32 div = SDIOCLK/clk + (SDIOCLK % clk != 0) - 2; + + sdio_disable(); - SDIO->CLKCR = (SDIO->CLKCR & (~(SDIO_CLKCR_CLKDIV|SDIO_CLKCR_BYPASS))) | SDIO_CLKCR_CLKEN | (((SDIOCLK/clk)-2)&SDIO_CLKCR_CLKDIV); + //Serial.println(div,DEC); + SDIO->CLKCR = (SDIO->CLKCR & (~(SDIO_CLKCR_CLKDIV|SDIO_CLKCR_BYPASS))) | SDIO_CLKCR_PWRSAV | SDIO_CLKCR_HWFC_EN | SDIO_CLKCR_CLKEN | (div & SDIO_CLKCR_CLKDIV); delay_us(dly); } void sdio_set_dbus_width(uint16_t bus_w) { SDIO->CLKCR = (SDIO->CLKCR & (~SDIO_CLKCR_WIDBUS)) | bus_w; + gpio_set_mode(PIN_MAP[BOARD_SDIO_D1].gpio_device, PIN_MAP[BOARD_SDIO_D1].gpio_bit, GPIO_AF_OUTPUT_PP); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D2].gpio_device, PIN_MAP[BOARD_SDIO_D2].gpio_bit, GPIO_AF_OUTPUT_PP); + gpio_set_mode(PIN_MAP[BOARD_SDIO_D3].gpio_device, PIN_MAP[BOARD_SDIO_D3].gpio_bit, GPIO_AF_OUTPUT_PP); delay_us(dly); } @@ -149,9 +169,10 @@ void sdio_disable(void) */ void sdio_begin(void) { - sdio_gpios_init(); + sdio_init(); sdio_power_on(); + sdio_gpios_init(); // Set initial SCK rate. sdio_set_clock(400000); delay_us(200); // generate 80 pulses at 400kHz @@ -162,11 +183,11 @@ void sdio_begin(void) */ void sdio_end(void) { - sdio_disable(); - while ( sdio_cmd_xfer_ongoing() ); + while ( sdio_cmd_xfer_ongoing() ); + sdio_disable(); + sdio_gpios_deinit(); sdio_power_off(); rcc_clk_disable(RCC_SDIO); - sdio_gpios_deinit(); } /** diff --git a/STM32F1/libraries/SDIO/SdioF1.cpp b/STM32F1/libraries/SDIO/SdioF1.cpp index 8957b37d3..e8a15f9a1 100644 --- a/STM32F1/libraries/SDIO/SdioF1.cpp +++ b/STM32F1/libraries/SDIO/SdioF1.cpp @@ -30,7 +30,7 @@ //============================================================================== //#define SDHC_PROCTL_DTW_4BIT 0x01 #define CMD8_RETRIES 10 -#define BUSY_TIMEOUT_MILLIS 1500 +#define BUSY_TIMEOUT_MILLIS 1000 //============================================================================== #define CMD_RESP_NONE SDIO_CMD_WAIT_NO_RESP #define CMD_RESP_R1 SDIO_CMD_WAIT_SHORT_RESP // normal response @@ -61,6 +61,12 @@ #define CMD38_XFERTYP (uint16_t)( CMD38 | CMD_RESP_R1b ) #define ACMD41_XFERTYP (uint16_t)( ACMD41 | CMD_RESP_R3 ) +/* + * ACMD42 to enable disable CD/D3 pull up. Needed for 4bit mode. + */ +const uint8_t ACMD42 = 0X2A; +#define ACMD42_XFERTYP (uint16_t)( ACMD41 | CMD_RESP_R1 ) + #define CMD55_XFERTYP (uint16_t)( CMD55 | CMD_RESP_R1 ) //============================================================================= @@ -69,20 +75,33 @@ static void initSDHC(void); static bool isBusyCMD13(void); static bool isBusyTransferComplete(void); +static bool isBusyTransferCRC(void); //static bool isBusyCommandComplete(); //static bool isBusyCommandInhibit(); static bool readReg16(uint32_t xfertyp, void* data); //static void setSdclk(uint32_t kHzMax); static bool yieldTimeout(bool (*fcn)(void)); +static bool yieldDmaStatus(void); static bool waitDmaStatus(void); static bool waitTimeout(bool (*fcn)(void)); //----------------------------------------------------------------------------- +static const uint32_t IDLE_STATE = 0; +static const uint32_t READ_STATE = 1; +static const uint32_t WRITE_STATE = 2; +volatile uint32_t m_curLba; +volatile uint32_t m_limitLba; +volatile uint8_t m_curState; +volatile uint64_t m_totalReadLbas = 0; +volatile uint64_t m_readErrors = 0; +volatile uint64_t m_writeErrors = 0; +volatile uint64_t m_totalWriteLbas = 0; + #define TRX_RD 0 #define TRX_WR 1 static uint8_t m_dir = TRX_RD; static bool (*m_busyFcn)() = 0; static bool m_initDone = false; -static uint32_t m_lba; // for raw non-DMA read(write)Start, read(write)Data, read(write)Stop +//static uint32_t m_lba; // for raw non-DMA read(write)Start, read(write)Data, read(write)Stop static uint32_t m_cnt; // for raw non-DMA read(write)Start, read(write)Data, read(write)Stop static bool m_version2; static bool m_highCapacity; @@ -96,28 +115,29 @@ static uint32_t m_ocr; static cid_t m_cid; static csd_t m_csd; static uint32_t t = 0; + +uint32_t aligned[128]; // temporary buffer for misaligned buffers //============================================================================= -/* - * Todo Remove this or change it, but rather remove since this can be checked with debugger. - */ + #if USE_DEBUG_MODE #define DBG_PRINT() { \ Serial.write('_'); Serial.print(__FUNCTION__); Serial.write('_'); Serial.print(__LINE__); Serial.print(": "); \ - Serial.print("DMA->LISR: "); Serial.print(SDIO_DMA_DEV->regs->LISR, HEX); \ + Serial.print("DMA->ISR: 0x"); Serial.print(SDIO_DMA_DEV->regs->ISR, HEX); \ /*Serial.print("DMA->HISR: "); Serial.println(SDIO_DMA_DEV->regs->HISR, HEX);*/ \ - Serial.print(", DMA->CR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].CR, HEX); \ - Serial.print(", DMA->NDTR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].NDTR, HEX); \ - /**/Serial.print(", DMA->PAR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].PAR, HEX); \ - /**/Serial.print(", DMA->M0AR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].M0AR, HEX); \ - Serial.print(", DMA->FCR: "); Serial.print(SDIO_DMA_DEV->regs->STREAM[SDIO_DMA_CHANNEL].FCR, HEX); \ + Serial.print(", DMA->CCR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CCR4, HEX); \ + Serial.print(", DMA->CNDTR: "); Serial.print(SDIO_DMA_DEV->regs->CNDTR4,DEC); \ + /**/Serial.print(", DMA->CPAR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CPAR4, HEX); \ + /**/Serial.print(", DMA->CMAR: 0x"); Serial.print(SDIO_DMA_DEV->regs->CMAR4, HEX); \ + Serial.print(", DMA->IFCR: 0x"); Serial.print(SDIO_DMA_DEV->regs->IFCR, HEX); \ \ /*Serial.print(" SDIO->POWER: "); Serial.println(SDIO->POWER, HEX);*/ \ - Serial.print(", SDIO->CLKCR: "); Serial.print(SDIO->CLKCR, HEX); \ - Serial.print(", SDIO->DTIMER: "); Serial.print(SDIO->DTIMER, HEX); \ - Serial.print(", SDIO->DCTRL: "); Serial.print(SDIO->DCTRL, HEX); \ + Serial.print(", SDIO->CLKCR: 0x"); Serial.print(SDIO->CLKCR, HEX); \ + Serial.print(", SDIO->DTIMER: 0x"); Serial.print(SDIO->DTIMER, HEX); \ + Serial.print(", SDIO->DCTRL: 0x"); Serial.print(SDIO->DCTRL, HEX); \ /**/Serial.print(", SDIO->DLEN: "); Serial.print(SDIO->DLEN); \ Serial.print(", SDIO->DCOUNT: "); Serial.print(SDIO->DCOUNT); \ - Serial.print(", SDIO->STA: "); Serial.println(SDIO->STA, HEX); \ + Serial.print(", SDIO->STA: 0x"); Serial.println(SDIO->STA, HEX); \ + Serial.print(", SDIO->FIFOCNT: "); Serial.println(SDIO->FIFOCNT); \ /*delay(1);*/ \ } #define DBG_PIN PD0 @@ -131,7 +151,7 @@ static void _panic(const char *message, uint32_t code) { Serial.print(message); Serial.println(code, HEX); //Block the execution with blinky leds - while (1); + while (1) {delay (1);}; /* pinMode(BOARD_LED_PIN, OUTPUT); //pinMode(BOARD_LED2_PIN, OUTPUT); @@ -171,13 +191,14 @@ void yield(void) } val = dma_get_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - if ( val & DMA_ISR_FEIF ) { +/* if ( val & DMA_ISR_FEIF ) { val ^= DMA_ISR_FEIF; dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); } +*/ if ( val ) { if (val & DMA_ISR_TEIF) Serial.print(" TEIF"); - if (val & DMA_ISR_DMEIF) Serial.print(" DMEIF"); + //if (val & DMA_ISR_DMEIF) Serial.print(" DMEIF"); //if (val & DMA_ISR_FEIF) Serial.print(" FEIF"); _panic(" - DMA: Data Transmission Error ", val); } @@ -208,7 +229,7 @@ static bool cardCommand(uint16_t xfertyp, uint32_t arg) #if USE_DEBUG_MODE==2 Serial.print("cardCommand: "); Serial.print(xfertyp&SDIO_CMD_CMDINDEX); Serial.print(", arg: "); Serial.print(arg, HEX); #endif - uint8_t resp = sdio_cmd_send(xfertyp, arg); // returns non-zero if fails, zero if OK + uint8_t resp = sdio_cmd_send(xfertyp, arg); // returns non-zero if OK, zero if it fails #if USE_DEBUG_MODE==2 Serial.print(", resp: "); Serial.print(resp, HEX); Serial.print(", SDIO->STA: "); Serial.print(SDIO->STA, HEX); Serial.print(", cmd_resp: "); Serial.print(SDIO->RESP[0], HEX); @@ -264,19 +285,38 @@ static bool isBusyCMD13(void) { } return !(SDIO->RESP[0] & CARD_STATUS_READY_FOR_DATA); } -/*---------------------------------------------------------------------------*/ + +/* + * Returns False if DMA transfer disabled. + * True otherwise + */ +static bool inline isEnabledDMA(void) +{ + return dma_is_enabled(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); +} + +/* + * Returns False if DMA transfer is completed or in error. + * True otherwise + */ static bool isBusyDMA(void) { + if (!isEnabledDMA()) return false; uint8_t isr = dma_get_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - isr &= DMA_ISR_TCIF | DMA_ISR_TEIF; + isr &= DMA_ISR_TCIF | DMA_ISR_TEIF; //if (isr&DMA_ISR_TCIF) dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return !(isr); // ignore transfer error flag } + /*---------------------------------------------------------------------------*/ +/* + * Returns true while the transfer has not completed + * False when it has completed. + */ static bool isBusyTransferComplete(void) { uint32_t mask = SDIO->STA &(SDIO_STA_DATAEND | SDIO_STA_TRX_ERROR_FLAGS); -#if USE_DEBUG_MODE +//#if USE_DEBUG_MODE if ( mask & SDIO_STA_TRX_ERROR_FLAGS ) { Serial.print("XFER ERROR: SDIO->STA: "); Serial.print(SDIO->STA, HEX); if (mask & SDIO_STA_STBITERR) Serial.print(" STBITERR"); @@ -286,13 +326,43 @@ static bool isBusyTransferComplete(void) if (mask & SDIO_STA_DCRCFAIL) Serial.print(" DCRCFAIL"); Serial.println(); } -#endif +//#endif if (mask) { dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return false; } return true; } + + +/* + * New function, to follow Reference Manual sequence. + * Returns true if still not confirmed DBCKEND: Data block sent/received (CRC check passed) + * False when it has completed the transfer with CRC check. + */ +static bool isBusyTransferCRC(void) +{ + uint32_t mask = SDIO->STA &(SDIO_STA_DBCKEND | SDIO_STA_TRX_ERROR_FLAGS); +#if USE_DEBUG_MODE + if ( mask & SDIO_STA_TRX_ERROR_FLAGS ) { + Serial.print("XFER ERROR: SDIO->STA: "); Serial.print(SDIO->STA, HEX); + if (mask & SDIO_STA_STBITERR) Serial.print(" STBITERR"); + if (mask & SDIO_STA_RXOVERR) Serial.print(" RXOVERR"); + if (mask & SDIO_STA_TXUNDERR) Serial.print(" TXUNDERR"); + if (mask & SDIO_STA_DTIMEOUT) Serial.print(" DTIMEOUT"); + if (mask & SDIO_STA_DCRCFAIL) Serial.print(" DCRCFAIL"); + Serial.println(); + } +#endif + if (mask) { + //dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + //Serial.print("SDIO->STA SDIO_STA_DBCKEND"); Serial.println(SDIO->STA && SDIO_STA_DBCKEND, HEX); + return false; + } + return true; +} + + /*---------------------------------------------------------------------------*/ static void trxStart(uint8_t* buf, uint32_t n, uint8_t dir) { @@ -305,62 +375,86 @@ static void trxStart(uint8_t* buf, uint32_t n, uint8_t dir) /*---------------------------------------------------------------------------*/ static bool trxStop() { - if (!cardCommand(CMD12_XFERTYP, 0)) { - return sdError(SD_CARD_ERROR_CMD12); - } - if ( t ) { - Serial.print(", in "); Serial.println(millis()-t); - t = 0; - } - return true; + if (!cardCommand(CMD12_XFERTYP, 0)) { + return sdError(SD_CARD_ERROR_CMD12); + } + /* + * Added this to wait to complete on sync. + */ + if (yieldTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + if ( t ) { + Serial.print(", in "); Serial.println(millis()-t); + t = 0; + } + return true; } /*---------------------------------------------------------------------------*/ -static bool dmaTrxStart(uint8_t* buf, uint32_t n, uint8_t dir) +static bool dmaTrxStart(uint32_t n, uint8_t dir) { - m_dir = dir; - if ((3 & (uint32_t)buf) || n == 0) { // check alignment - _panic("- transferStart: unaligned buffer address ", (uint32_t)buf); - return sdError(SD_CARD_ERROR_DMA); - } - if (dir==TRX_RD && yieldTimeout(isBusyCMD13)) { - return sdError(SD_CARD_ERROR_CMD13); - } - uint32_t flags = (SDIO_BLOCKSIZE_512 | SDIO_DCTRL_DMAEN | SDIO_DCTRL_DTEN); + uint32_t flags = (SDIO_BLOCKSIZE_512 | SDIO_DCTRL_DMAEN | SDIO_DCTRL_DTEN); if (dir==TRX_RD) flags |= SDIO_DIR_RX; // setup SDIO to transfer n blocks of 512 bytes sdio_setup_transfer(0x00FFFFFF, n, flags); - // setup SDIO_DMA_DEV stream 3 channel 4 - /* - * Moved to begin. - */ - //dma_init(SDIO_DMA_DEV); - /* - * Todo. Check this, channel must be disabled to change DMA priority, and seems like channel is not completing transfers - */ - //dma_set_priority(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, DMA_PRIORITY_VERY_HIGH); - flags = (DMA_MINC_MODE); - // not extra flag if read - if (dir!=TRX_RD) flags |= DMA_FROM_MEM;// write - dma_setup_transfer(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, &SDIO->FIFO, DMA_SIZE_32BITS, buf, DMA_SIZE_32BITS, flags); - dma_set_num_transfers(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, n>>2); // F1 DMA controller counts each word as 1 data item. - //dma_set_fifo_flags(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, (DMA_FCR_DMDIS | DMA_FCR_FTH_FULL)); // disable direct mode | threshold FULL - dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); - dma_enable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + return true; } + +/* + * This one replaces dmaTrxStart, and will just prepare the DMA part, then a new + * one will enable the DMA reception as per the RM. + */ +static bool dmaTrxPrepare(uint8_t* buf, uint32_t n, uint8_t dir) +{ + uint32_t flags; + m_dir = dir; + if ((3 & (uint32_t)buf) || n == 0) { // check alignment + _panic("- transferStart: unaligned buffer address ", (uint32_t)buf); + return sdError(SD_CARD_ERROR_DMA); + } + /* + * No point to wait here again if we always wait before calling this. + if (dir==TRX_RD && yieldTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + */ + + /* + * Following RM 22.3.2. Setup DMA first, SDIO peripheral next + * + */ + flags = (DMA_MINC_MODE); + // not extra flag if read + if (dir!=TRX_RD) flags |= DMA_FROM_MEM;// write + dma_setup_transfer(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, &SDIO->FIFO, DMA_SIZE_32BITS, buf, DMA_SIZE_32BITS, flags); + dma_set_num_transfers(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, n>>2); // F1 DMA controller counts each word as 1 data item. + //dma_set_fifo_flags(SDIO_DMA_DEV, SDIO_DMA_CHANNEL, (DMA_FCR_DMDIS | DMA_FCR_FTH_FULL)); // disable direct mode | threshold FULL + dma_clear_isr_bits(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + dma_enable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + + return true; +} + + /*---------------------------------------------------------------------------*/ static bool dmaTrxEnd(bool multi_block) { - if ( !waitDmaStatus() ) { + if(m_curState != READ_STATE){ + if ( yieldTimeout(isBusyTransferComplete) ) { + DBG_PRINT(); + if (m_dir==TRX_RD) + return sdError(SD_CARD_ERROR_READ_CRC); + else + return sdError(SD_CARD_ERROR_WRITE); + } + } + + if ( !yieldDmaStatus() ) { DBG_PRINT(); return sdError(SD_CARD_ERROR_DMA); } - if ( waitTimeout(isBusyTransferComplete) ) { - if (m_dir==TRX_RD) - return sdError(SD_CARD_ERROR_READ_TIMEOUT); - else - return sdError(SD_CARD_ERROR_WRITE_TIMEOUT); - } + if (multi_block) { return trxStop(); } else { @@ -375,6 +469,10 @@ static bool dmaTrxEnd(bool multi_block) // Read 16 byte CID or CSD register. static bool readReg16(uint32_t xfertyp, void* data) { + // It's not safe to call this function if a multiblock read/write is going on. + if (m_curState != IDLE_STATE) { + return false; + } uint8_t* d = reinterpret_cast(data); if (!cardCommand(xfertyp, m_rca)) { return false; // Caller will set errorCode. @@ -389,21 +487,38 @@ static bool readReg16(uint32_t xfertyp, void* data) /*---------------------------------------------------------------------------*/ // Return true if timeout occurs. static bool yieldTimeout(bool (*fcn)()) { + m_busyFcn = fcn; uint32_t m = millis(); while (fcn()) { if ((millis() - m) > BUSY_TIMEOUT_MILLIS) { + m_busyFcn = 0; return true; } yield(); } + m_busyFcn = 0; return false; // Caller will set errorCode. } /*---------------------------------------------------------------------------*/ -static bool waitDmaStatus(void) +static bool yieldDmaStatus(void) { if (yieldTimeout(isBusyDMA)) { + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + return false; // Caller will set errorCode. + } + // Did not time out. Disable it and return true. + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); + return true; +} +/*---------------------------------------------------------------------------*/ +static bool waitDmaStatus(void) +{ + if (waitTimeout(isBusyDMA)) { + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return false; // Caller will set errorCode. } + // Did not time out. Disable it and return true + dma_disable(SDIO_DMA_DEV, SDIO_DMA_CHANNEL); return true; } /*---------------------------------------------------------------------------*/ @@ -419,10 +534,12 @@ static bool waitTimeout(bool (*fcn)(void)) { return false; // Caller will set errorCode. } -uint32_t aligned[128]; // temporary buffer for misaligned buffers + //============================================================================= bool SdioCard::begin(void) { + + uint32_t arg; m_initDone = false; m_errorCode = SD_CARD_ERROR_NONE; m_highCapacity = false; @@ -447,6 +564,7 @@ delay(100); if (!cardCommand(CMD0_XFERTYP, 0)) { return sdError(SD_CARD_ERROR_CMD0); } + delay(50); //small pause after reset command // Try several times for case of reset delay. for (uint32_t i = 0; i < CMD8_RETRIES; i++) { if (cardCommand(CMD8_XFERTYP, 0X1AA)) { @@ -457,7 +575,7 @@ delay(100); break; } } - uint32_t arg = m_version2 ? 0X40300000 : 0x00300000; + arg = m_version2 ? 0X50300000 : 0x00300000; uint32_t m = millis(); do { if (!cardAcmd(0, ACMD41_XFERTYP, arg) || @@ -478,6 +596,7 @@ delay(100); return sdError(SD_CARD_ERROR_CMD3); } m_rca = SDIO->RESP[0] & 0xFFFF0000; + if (!readReg16(CMD9_XFERTYP, &m_csd)) { return sdError(SD_CARD_ERROR_CMD9); } @@ -487,14 +606,21 @@ delay(100); if (!cardCommand(CMD7_XFERTYP, m_rca)) { return sdError(SD_CARD_ERROR_CMD7); } + + arg = 0x00; //bit 0, Connect[1]/Disconnect[0] the 50 KOhm pull-up resistor on CD/DAT3 + if (!cardAcmd(m_rca, ACMD42_XFERTYP, arg)) { + _panic("*** ACMD42 to disconnect D3 pullup failed! ***", 0); + } + // Set card to bus width four. - /* if (!cardAcmd(m_rca, ACMD6_XFERTYP, 2)) { return sdError(SD_CARD_ERROR_ACMD6); } + + // Set SDHC to bus width four. sdio_set_dbus_width(SDIO_CLKCR_WIDBUS_4BIT); - */ +/* // Determine if High Speed mode is supported and set frequency. uint8_t status[64]; // see "Physical Layer Simplified Specification Version 6.00", chapter 4.3.10, Table 4-13. @@ -502,15 +628,17 @@ delay(100); // Function Selection of Function Group 1: bits 379:376, which is low nibble of byte [16] if (cardCMD6(0X00FFFFFF, status) && (2 & status[13]) && cardCMD6(0X80FFFFF1, status) && (status[16] & 0XF) == 1) { - //Serial.println("\n*** 50MHz clock supported ***"); + Serial.println("\n*** 50MHz clock supported ***"); + m_sdClkKhz = 24000; // set clock to 24MHz } else { //_panic("*** Only 25MHz clock supported! ***", 0); + m_sdClkKhz = 8000; // set clock to 24MHz } + */ + // delay seems to be needed for cards that take some time to adjust */ + delay(1); - /* - * Todo Raise clock to 24Mhz once transfers work - */ - m_sdClkKhz = 24000; // set clock to 24MHz + m_sdClkKhz = 18000; // set clock to 24MHz sdio_set_clock(m_sdClkKhz*1000); m_initDone = true; @@ -573,52 +701,157 @@ uint32_t SdioCard::kHzSdClk() { bool SdioCard::readBlock(uint32_t lba, uint8_t* buf) { #if USE_DEBUG_MODE - Serial.print("readBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX); + Serial.print("readBlock: "); Serial.println(lba); //Serial.print(", buf: "); Serial.println((uint32_t)buf, HEX); #endif - // prepare SDIO and DMA for data read transfer - dmaTrxStart((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); - // send command to start data transfer - if ( !cardCommand(CMD17_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD17); - } - if ( dmaTrxEnd(0)) { - if ( (uint32_t)buf & 3 ) { - //memcpy(buf, aligned, 512); - register uint8_t * dst = buf; - register uint8_t * src = (uint8_t *)aligned; - register uint16_t i = 64; - while ( i-- ) { // do 8 byte copies, is much faster than single byte copy - *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; - } - } - return true; - } - return false; + volatile bool _state = false; + uint16_t retries = 3; + while ( retries-- ){ + /*if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); + } + */ + + if (m_curState != READ_STATE || m_curLba != lba) { +#if USE_DEBUG_MODE + Serial.print("New lba, syncing :"); + Serial.println(lba); +#endif + _state = syncBlocks(); + DBG_PRINT(); + if (!_state) { + return false; + } + m_limitLba = (lba + 1024); //arbitrary limit, tested with 32KB before and worked fine. + // prepare DMA for data read transfer + _state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); + DBG_PRINT(); + + // prepare SDIO data read transfer 0x8000 = 64*512 + _state = dmaTrxStart(512, TRX_RD); + DBG_PRINT(); + + // send command to start data transfer + _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); + DBG_PRINT(); + if ( !_state ) { + return sdError(SD_CARD_ERROR_CMD18); + } + + m_curLba = lba; + m_curState = READ_STATE; + } + else { + // prepare DMA for data read transfer + _state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); + + // prepare SDIO data read transfer + _state = dmaTrxStart(512, TRX_RD); + } + + + _state = dmaTrxEnd(0); + + if ( _state ) { + if ( (uint32_t)buf & 3 ) { + //memcpy(buf, aligned, 512); + register uint8_t * dst = buf; + register uint8_t * src = (uint8_t *)aligned; + register uint16_t i = 64; + while ( i-- ) { // do 8 byte copies, is much faster than single byte copy + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + } + } + m_totalReadLbas++; + m_curLba++; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + sdError(SD_CARD_ERROR_NONE); + return true; + } + syncBlocks(); + m_readErrors++; + + } + DBG_PRINT() + syncBlocks(); + m_readErrors++; + return false; } /*---------------------------------------------------------------------------*/ bool SdioCard::readBlocks(uint32_t lba, uint8_t* buf, size_t n) { #if USE_DEBUG_MODE - Serial.print("readBlocks: "); Serial.print(lba); - //Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX); - Serial.print(", "); Serial.println(n); + Serial.print("readBlocks: "); Serial.print(lba); + //Serial.print(", buf: "); Serial.print((uint32_t)buf, HEX); + Serial.print(", "); Serial.println(n); #endif - if ((uint32_t)buf & 3) { - for (size_t i = 0; i < n; i++, lba++, buf += 512) { - if (!readBlock(lba, buf)) { - return false; // readBlock will set errorCode. - } - } - return true; - } - // prepare SDIO and DMA for data read transfer - dmaTrxStart(buf, 512*n, TRX_RD); - // send command to start data transfer - if ( !cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD18); - } - return dmaTrxEnd(1); + volatile bool _state = false; + uint16_t retries = 3; + while ( retries-- ){ + + if ((uint32_t)buf & 3) { + for (size_t i = 0; i < n; i++, lba++, buf += 512) { + if (!readBlock(lba, buf)) { + return false; // readBlock will set errorCode. + } + } + return true; + } + + if (m_curState != READ_STATE || m_curLba != lba) { + #if USE_DEBUG_MODE + Serial.print("New lba, syncing :"); + Serial.println(lba); + #endif + _state = syncBlocks(); + DBG_PRINT(); + if (!_state) { + return false; + } + m_limitLba = (lba + 1024); //arbitrary limit + // prepare DMA for data read transfer + _state = dmaTrxPrepare(buf, 512*n, TRX_RD); + + // prepare SDIO for data read transfer + _state = dmaTrxStart(512*n, TRX_RD); + + // send command to start data transfer + _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); + if ( !_state ) { + return sdError(SD_CARD_ERROR_CMD18); + } + m_curLba = lba; + m_curState = READ_STATE; + } + + else { + // prepare DMA for data read transfer + _state = dmaTrxPrepare(buf, 512*n, TRX_RD); + + // prepare SDIO data read transfer + _state = dmaTrxStart(512*n, TRX_RD); + } + + _state = dmaTrxEnd(0); + + if (_state){ + m_totalReadLbas += n; + m_curLba += n; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + sdError(SD_CARD_ERROR_NONE); + return true; + } + syncBlocks(); + m_readErrors++; + } + DBG_PRINT() + syncBlocks(); + m_readErrors++; + return false; } //----------------------------------------------------------------------------- bool SdioCard::readCID(void* cid) { @@ -631,6 +864,7 @@ bool SdioCard::readCSD(void* csd) { return true; } /*---------------------------------------------------------------------------*/ +/* replacing this one with DMA support. bool SdioCard::readData(uint8_t *dst) { //Serial.print("readData: "); Serial.print(m_lba); Serial.print(", m_cnt: "); Serial.println(m_cnt); @@ -675,6 +909,51 @@ bool SdioCard::readData(uint8_t *dst) m_cnt--; return !(SDIO->STA&SDIO_STA_TRX_ERROR_FLAGS); } +*/ +bool SdioCard::readData(uint8_t *buf) +{ + + volatile bool _state = false; + uint16_t retries = 3; + while ( retries-- ){ + // prepare DMA for data read transfer + _state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); + + // prepare SDIO data read transfer + _state = dmaTrxStart(512, TRX_RD); + _state = dmaTrxEnd(0); + + if ( _state ) { + if ( (uint32_t)buf & 3 ) { + //memcpy(buf, aligned, 512); + register uint8_t * dst = buf; + register uint8_t * src = (uint8_t *)aligned; + register uint16_t i = 64; + while ( i-- ) { // do 8 byte copies, is much faster than single byte copy + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + } + } + m_curLba += 1; + return true; + } + else { + readStop(); + //_state = dmaTrxPrepare((uint32_t)buf & 3 ? (uint8_t*)aligned : buf, 512, TRX_RD); + //_state = dmaTrxStart(512, TRX_RD); + _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? m_curLba : 512*m_curLba)); + if ( !_state ) { + return sdError(SD_CARD_ERROR_CMD18); + } + } + } + DBG_PRINT() + m_readErrors++; + return sdError(SD_CARD_ERROR_READ); + +} + + //----------------------------------------------------------------------------- bool SdioCard::readOCR(uint32_t* ocr) { *ocr = m_ocr; @@ -683,29 +962,80 @@ bool SdioCard::readOCR(uint32_t* ocr) { //----------------------------------------------------------------------------- bool SdioCard::readStart(uint32_t lba) { + m_curLba = lba; + /* m_lba = lba; m_cnt = 1024; return true; + */ + volatile bool _state = false; + if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); + } + _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); + DBG_PRINT(); + if ( !_state ) { + return sdError(SD_CARD_ERROR_CMD18); + } + m_curState = READ_STATE; + return true; } /*---------------------------------------------------------------------------*/ // SDHC will do Auto CMD12 after count blocks. bool SdioCard::readStart(uint32_t lba, uint32_t count) { //Serial.print("readStart: "); Serial.print(lba); Serial.print(", cnt: "); Serial.println(count); + m_curLba = lba; +/* m_lba = lba; m_cnt = count; return true; +*/ + volatile bool _state = false; + if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); + } + _state = cardCommand(CMD18_XFERTYP, (m_highCapacity ? lba : 512*lba)); + DBG_PRINT(); + if ( !_state ) { + return sdError(SD_CARD_ERROR_CMD18); + } + m_curState = READ_STATE; + return true; } /*---------------------------------------------------------------------------*/ bool SdioCard::readStop() { - //Serial.println("readStop."); - m_lba = 0; - m_cnt = 0; + if ( isEnabledDMA()){ + yieldDmaStatus(); + } + sdio_setup_transfer(0x00FFFFFF, 0, 0); + // Empty SDIO FIFO + while ( SDIO->STA & SDIO_STA_RXDAVL) { + volatile uint32 _unused = SDIO->FIFO; + } + //Serial.println("readStop."); + //m_lba = 0; + if (!trxStop()) { + return false; + } return true; } //----------------------------------------------------------------------------- -bool SdioCard::syncBlocks() { +inline bool SdioCard::syncBlocks() { +/* if ( isEnabledDMA()){ + waitDmaStatus(); + } +*/ + if (m_curState == READ_STATE) { + m_curState = IDLE_STATE; + if (!readStop()) { + return false; + } + } else if (m_curState == WRITE_STATE) { + m_curState = IDLE_STATE; + return writeStop(); + } return true; } //----------------------------------------------------------------------------- @@ -733,17 +1063,48 @@ bool SdioCard::writeBlock(uint32_t lba, const uint8_t* buf) *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; } } - if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end - return sdError(SD_CARD_ERROR_CMD13); + + + + if (m_curState != WRITE_STATE || m_curLba != lba) { + if (!syncBlocks()) { + return false; + } + + m_limitLba = (lba + 1024); //arbitrary limit + + // prepare DMA for data transfer + dmaTrxPrepare(ptr, 512, TRX_WR); // 1 block, write transfer + + // send command to start data transfer + if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD25); + } + m_curLba = lba; + m_curState = WRITE_STATE; + } - // send command to start data transfer - if ( !cardCommand(CMD24_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD24); + else { + if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); + } + // prepare DMA for data transfer + dmaTrxPrepare(ptr, 512, TRX_WR); // 1 block, write transfer } - // prepare SDIO and DMA for data transfer - dmaTrxStart(ptr, 512, TRX_WR); // 1 block, write transfer - return dmaTrxEnd(0); + // prepare SDIO for data transfer + dmaTrxStart(512, TRX_WR); // 1 block, write transfer + + if (!dmaTrxEnd(0)){ + m_curState = IDLE_STATE; + m_writeErrors++; + return false; + } + m_curLba++; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + return true; } /*---------------------------------------------------------------------------*/ bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) @@ -770,16 +1131,46 @@ bool SdioCard::writeBlocks(uint32_t lba, const uint8_t* buf, size_t n) return sdError(SD_CARD_ERROR_ACMD23); } #endif - // send command to start data transfer - if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { - return sdError(SD_CARD_ERROR_CMD25); - } - // prepare SDIO and DMA for data transfer - dmaTrxStart((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer - return dmaTrxEnd(1); + if (m_curState != WRITE_STATE || m_curLba != lba) { + if (!syncBlocks()) { + return false; + } + + m_limitLba = (lba + 1024); //arbitrary limit, 512KB + // prepare DMA for data transfer + dmaTrxPrepare((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer + + // send command to start data transfer + if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD25); + } + m_curLba = lba; + m_curState = WRITE_STATE; + + } + else { + // prepare DMA for data transfer + dmaTrxPrepare((uint8_t *)buf, 512*n, TRX_WR); // n blocks, write transfer + } + + // prepare SDIO for data transfer + dmaTrxStart(512*n, TRX_WR); // n blocks, write transfer + + if (!dmaTrxEnd(0)){ + m_writeErrors++; + m_curState = IDLE_STATE; + return false; + } + m_curLba += n; + if (m_curLba >= m_limitLba) { + syncBlocks(); + } + return true; + } /*---------------------------------------------------------------------------*/ +/* bool SdioCard::writeData(const uint8_t* src) { //Serial.print("writeData: "); Serial.print(m_lba); Serial.print(", cnt: "); Serial.println(m_cnt); @@ -826,27 +1217,91 @@ bool SdioCard::writeData(const uint8_t* src) } return !(SDIO->STA&SDIO_STA_TRX_ERROR_FLAGS); } +*/ +bool SdioCard::writeData(const uint8_t* src) +{ + uint8_t * ptr = (uint8_t *)src; + if (3 & (uint32_t)ptr) { + Serial.print("writeBlock: "); Serial.print(m_curLba); + Serial.print(", buf: "); Serial.print((uint32_t)ptr, HEX); + //memcpy(aligned, buf, 512); + register uint8_t * src = (uint8_t *)ptr; + ptr = (uint8_t *)aligned; + register uint8_t * dst = ptr; + register uint16_t i = 64; + while ( i-- ) { // do 8 byte copies, is much faster than single byte copy + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; *dst++ = *src++; + } + } + + if (yieldTimeout(isBusyCMD13)) { // wait for previous transmission end + return sdError(SD_CARD_ERROR_CMD13); + } + // prepare DMA for data transfer + dmaTrxPrepare(ptr, 512, TRX_WR); // 1 block, write transfer + DBG_PRINT(); + + // prepare SDIO for data transfer + dmaTrxStart(512, TRX_WR); // 1 block, write transfer + DBG_PRINT(); + + if (!dmaTrxEnd(0)){ + m_writeErrors++; + return false; + } + return true; +} //----------------------------------------------------------------------------- bool SdioCard::writeStart(uint32_t lba) { + /* m_lba = lba; m_cnt = 1024; return true; + */ + DBG_PRINT(); + m_curLba = lba; + if (yieldTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD25); + } + m_curState = WRITE_STATE; + return true; } /*---------------------------------------------------------------------------*/ // SDHC will do Auto CMD12 after count blocks. bool SdioCard::writeStart(uint32_t lba, uint32_t count) { //Serial.print("writeStart: "); Serial.print(lba); Serial.print(", cnt: "); Serial.println(count); + /* m_lba = lba; m_cnt = count; return true; + */ + m_curLba = lba; + if (yieldTimeout(isBusyCMD13)) { + return sdError(SD_CARD_ERROR_CMD13); + } + if ( !cardCommand(CMD25_XFERTYP, (m_highCapacity ? lba : 512*lba)) ) { + return sdError(SD_CARD_ERROR_CMD25); + } + m_curState = WRITE_STATE; + return true; } /*---------------------------------------------------------------------------*/ bool SdioCard::writeStop() { - //Serial.println("writeStop."); - m_lba = 0; - m_cnt = 0; - return true; + if ( isEnabledDMA()){ + if ( !yieldDmaStatus() ) { + DBG_PRINT(); + return sdError(SD_CARD_ERROR_DMA); + } + } + //m_lba = 0; + m_curState = IDLE_STATE; + return trxStop(); + //Serial.println("writeStop."); } diff --git a/STM32F1/libraries/SDIO/SdioF1.h b/STM32F1/libraries/SDIO/SdioF1.h index c995b1c5c..efa47749c 100644 --- a/STM32F1/libraries/SDIO/SdioF1.h +++ b/STM32F1/libraries/SDIO/SdioF1.h @@ -1,6 +1,6 @@ -#ifndef _SDIOF4_H_ -#define _SDIOF4_H_ +#ifndef _SDIOF1_H_ +#define _SDIOF1_H_ #include diff --git a/STM32F1/system/libmaple/include/libmaple/sdio.h b/STM32F1/system/libmaple/include/libmaple/sdio.h index 3a5a9c3ea..11ec98608 100644 --- a/STM32F1/system/libmaple/include/libmaple/sdio.h +++ b/STM32F1/system/libmaple/include/libmaple/sdio.h @@ -52,19 +52,19 @@ extern "C" { // SDIO register map type typedef struct sdio_reg_map { - __io uint32 POWER; // 0x00 - __io uint32 CLKCR; // 0x04 - __io uint32 ARG; // 0x08 - __io uint32 CMD; // 0x0C - __io uint32 RESPCMD; // 0x10 (0x3F) - __io const uint32 RESP[4]; // 0x14 - contain the card status, which is part of the received response. - __io uint32 DTIMER; // 0x24 - contains the data timeout period, in card bus clock periods. - __io uint32 DLEN; // 0x28 (0x01FF FFFF) - contains the number of data bytes to be transferred - __io uint32 DCTRL; // 0x2C - __io uint32 DCOUNT; // 0x30 (0x01FF FFFF) - __io uint32 STA; // 0x34 - __io uint32 ICR; // 0x38 - __io uint32 MASK; // 0x3C + __IO uint32 POWER; // 0x00 + __IO uint32 CLKCR; // 0x04 + __IO uint32 ARG; // 0x08 + __IO uint32 CMD; // 0x0C + __IO uint32 RESPCMD; // 0x10 (0x3F) + __IO const uint32 RESP[4]; // 0x14 - contain the card status, which is part of the received response. + __IO uint32 DTIMER; // 0x24 - contains the data timeout period, in card bus clock periods. + __IO uint32 DLEN; // 0x28 (0x01FF FFFF) - contains the number of data bytes to be transferred + __IO uint32 DCTRL; // 0x2C + __IO uint32 DCOUNT; // 0x30 (0x01FF FFFF) + __IO uint32 STA; // 0x34 + __IO uint32 ICR; // 0x38 + __IO uint32 MASK; // 0x3C const uint32 RESERVED1[2]; __IO uint32 FIFOCNT; // 0x48 (0x01FF FFFF) const uint32 RESERVED2[13]; From df96076900320869328302aacff8bb79a35a8198 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 13 Apr 2018 14:10:49 +1000 Subject: [PATCH 097/373] Added missing F103V linker file, included in https://github.com/rogerclarkmelbourne/Arduino_STM32/pull/489 --- .../generic_stm32f103vb/ld/stm32f103veDFU.ld | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 STM32F1/variants/generic_stm32f103vb/ld/stm32f103veDFU.ld diff --git a/STM32F1/variants/generic_stm32f103vb/ld/stm32f103veDFU.ld b/STM32F1/variants/generic_stm32f103vb/ld/stm32f103veDFU.ld new file mode 100644 index 000000000..5782fb9fa --- /dev/null +++ b/STM32F1/variants/generic_stm32f103vb/ld/stm32f103veDFU.ld @@ -0,0 +1,30 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 64K + rom (rx) : ORIGIN = 0x08002000, LENGTH = 504K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc From 7ef6e71a781270f69b50e0c113b8ed9e1aa8c15a Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 13 Apr 2018 14:52:55 +1000 Subject: [PATCH 098/373] Add flash wait state optimisation from @tomtor --- STM32F1/system/libmaple/stm32f1/include/series/flash.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/flash.h b/STM32F1/system/libmaple/stm32f1/include/series/flash.h index a0bcd8219..0ed43c6a8 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/flash.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/flash.h @@ -132,7 +132,7 @@ typedef struct flash_reg_map { * Series-specific configuration values. */ -#define FLASH_SAFE_WAIT_STATES FLASH_WAIT_STATE_2 +#define FLASH_SAFE_WAIT_STATES (F_CPU > 48000000 ? FLASH_WAIT_STATE_2 : F_CPU > 24000000 ? FLASH_WAIT_STATE_1 : FLASH_WAIT_STATE_0) /* Flash memory features available via ACR */ enum { From 1f85ecb3b9f940d2e0eabab0f3d9989d4ff98a35 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 13 Apr 2018 15:03:03 +1000 Subject: [PATCH 099/373] Added PLL Mulplier setting for 16MHz. Note this change does not add 16Mhz menu options to any boards, it simply supports them if they were added --- STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/hytiny_stm32f103t/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/maple/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/maple_mini/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/maple_ret6/wirish/boards_setup.cpp | 2 ++ STM32F1/variants/microduino/wirish/boards_setup.cpp | 2 ++ 12 files changed, 24 insertions(+) diff --git a/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp index 9e8332eec..5f595eeca 100644 --- a/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp index 04130152c..1632caa36 100644 --- a/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp index 8da724ded..13d7b8978 100644 --- a/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp index 9e8332eec..5f595eeca 100644 --- a/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp index dba014b91..0b96261d8 100644 --- a/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp index dba014b91..0b96261d8 100644 --- a/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp index 3d4e4e8cf..0f6fd0f37 100644 --- a/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/hytiny_stm32f103t/wirish/boards_setup.cpp b/STM32F1/variants/hytiny_stm32f103t/wirish/boards_setup.cpp index f10fcf864..905198972 100644 --- a/STM32F1/variants/hytiny_stm32f103t/wirish/boards_setup.cpp +++ b/STM32F1/variants/hytiny_stm32f103t/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/maple/wirish/boards_setup.cpp b/STM32F1/variants/maple/wirish/boards_setup.cpp index c4b55c099..d1170cdbe 100644 --- a/STM32F1/variants/maple/wirish/boards_setup.cpp +++ b/STM32F1/variants/maple/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/maple_mini/wirish/boards_setup.cpp b/STM32F1/variants/maple_mini/wirish/boards_setup.cpp index f10fcf864..905198972 100644 --- a/STM32F1/variants/maple_mini/wirish/boards_setup.cpp +++ b/STM32F1/variants/maple_mini/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/maple_ret6/wirish/boards_setup.cpp b/STM32F1/variants/maple_ret6/wirish/boards_setup.cpp index c4b55c099..d1170cdbe 100644 --- a/STM32F1/variants/maple_ret6/wirish/boards_setup.cpp +++ b/STM32F1/variants/maple_ret6/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif diff --git a/STM32F1/variants/microduino/wirish/boards_setup.cpp b/STM32F1/variants/microduino/wirish/boards_setup.cpp index 785753a20..1f1ec5ec8 100644 --- a/STM32F1/variants/microduino/wirish/boards_setup.cpp +++ b/STM32F1/variants/microduino/wirish/boards_setup.cpp @@ -54,6 +54,8 @@ #define BOARD_RCC_PLLMUL RCC_PLLMUL_9 #elif F_CPU==48000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 + #elif F_CPU==16000000 + #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif #endif From 4f691b9eebfcd63fa6f918cc02171e127ac9f246 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 13 Apr 2018 16:32:56 +1000 Subject: [PATCH 100/373] Add support for boards with 16MHz HSE crystal. Note to use this feature users must add -D XTAL16M to the appropriate build options in boards.txt, as there are too few boards with 16MHz crystals to warrant adding this as a separate menu to each board in boards.txt --- STM32F1/cores/maple/libmaple/rcc_f1.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/STM32F1/cores/maple/libmaple/rcc_f1.c b/STM32F1/cores/maple/libmaple/rcc_f1.c index 04dfb7f57..3fc916acf 100644 --- a/STM32F1/cores/maple/libmaple/rcc_f1.c +++ b/STM32F1/cores/maple/libmaple/rcc_f1.c @@ -134,6 +134,12 @@ void rcc_configure_pll(rcc_pll_cfg *pll_cfg) { cfgr &= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL); cfgr |= pll_cfg->pllsrc | pll_mul; +#ifdef XTAL16M + // 16MHz crystal (HSE) + // in this case we additionally set the Bit 17 (PLLXTPRE=1) => then HSE clock is divided by 2 before PLL entry + cfgr |= RCC_CFGR_PLLXTPRE; +#endif + RCC_BASE->CFGR = cfgr; } From 479cfc1fb4a39cb8398b309805eef93ba33e76fe Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 13 Apr 2018 16:47:15 +1000 Subject: [PATCH 101/373] Removed unused ErrorStatus enum from usb_type.h as its redundant and the definition of SUCCESS clashed with other definitions --- STM32F1/system/libmaple/usb/usb_lib/usb_type.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/system/libmaple/usb/usb_lib/usb_type.h b/STM32F1/system/libmaple/usb/usb_lib/usb_type.h index 34b3bf5b7..02bd5efb7 100644 --- a/STM32F1/system/libmaple/usb/usb_lib/usb_type.h +++ b/STM32F1/system/libmaple/usb/usb_lib/usb_type.h @@ -62,7 +62,7 @@ typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus; typedef enum { DISABLE = 0, ENABLE = !DISABLE} FunctionalState; -typedef enum { ERROR = 0, SUCCESS = !ERROR} ErrorStatus; +//typedef enum { ERROR = 0, SUCCESS = !ERROR} ErrorStatus; /* Exported macro ------------------------------------------------------------*/ /* Exported functions ------------------------------------------------------- */ From 50ed00effc17ca2c7c4df4c780c2fbe0da29be39 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Fri, 13 Apr 2018 18:26:45 +0200 Subject: [PATCH 102/373] Update timer.h fix compile error --- STM32F1/system/libmaple/include/libmaple/timer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/system/libmaple/include/libmaple/timer.h b/STM32F1/system/libmaple/include/libmaple/timer.h index e9a49e9e9..87b83e551 100644 --- a/STM32F1/system/libmaple/include/libmaple/timer.h +++ b/STM32F1/system/libmaple/include/libmaple/timer.h @@ -843,7 +843,7 @@ static inline void timer_dma_disable_req(timer_dev *dev, uint8 channel) { */ static inline void timer_enable_irq(timer_dev *dev, uint8 interrupt) { // clear interrupt flag, use different masks for reserved bits - dev->regs->SR = (~BIT(interrupt)) & ( (dev->type==TIMER_ADVANCED) ? 0x1EFF : + (dev->regs).adv->SR = (~BIT(interrupt)) & ( (dev->type==TIMER_ADVANCED) ? 0x1EFF : ( (dev->type==TIMER_GENERAL) ? 0x1E5F : 0x0001) ); *bb_perip(&(dev->regs).adv->DIER, interrupt) = 1; } From d33e50ab0d95bdce5abfabb78ae76091486350b7 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Fri, 13 Apr 2018 23:42:46 +0200 Subject: [PATCH 103/373] Update BluePill-RTClock-test.ino fix weekday, see #498. --- .../examples/BluePill-RTClock-test/BluePill-RTClock-test.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino index f6b44959e..cc78ec59d 100644 --- a/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino +++ b/STM32F1/libraries/RTClock/examples/BluePill-RTClock-test/BluePill-RTClock-test.ino @@ -40,7 +40,7 @@ uint8_t AlarmExchange = 0; bool dispflag = true; //----------------------------------------------------------------------------- -const char * weekdays[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; +const char * weekdays[] = {"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}; const char * months[] = {"Dummy", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; //----------------------------------------------------------------------------- uint8_t str2month(const char * d) From 84b1c8c1fe3edb8d0bb7ea8c0310c9dad6a44399 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Tue, 17 Apr 2018 08:28:51 +0200 Subject: [PATCH 104/373] F4: update Print.cpp port from #486. --- STM32F4/cores/maple/Print.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/STM32F4/cores/maple/Print.cpp b/STM32F4/cores/maple/Print.cpp index 0a71cf018..2e6e15476 100644 --- a/STM32F4/cores/maple/Print.cpp +++ b/STM32F4/cores/maple/Print.cpp @@ -47,12 +47,8 @@ */ size_t Print::write(const char *str) { - size_t n = 0; - while (*str) { - write(*str++); - n++; - } - return n; + if (str == NULL) return 0; + return write((const uint8_t *)str, strlen(str)); } size_t Print::write(const void *buffer, uint32 size) { From b16686a06ac71f3e636a47af04ed930e13af665a Mon Sep 17 00:00:00 2001 From: edogaldo Date: Tue, 17 Apr 2018 11:19:36 +0200 Subject: [PATCH 105/373] Allow IRQ overriding --- STM32F1/cores/maple/libmaple/adc_f1.c | 4 +- STM32F1/cores/maple/libmaple/dma_f1.c | 22 +- STM32F1/cores/maple/libmaple/exc.S | 1 - STM32F1/cores/maple/libmaple/exti.c | 14 +- STM32F1/cores/maple/libmaple/i2c_f1.c | 8 +- .../maple/libmaple/stm32f1/performance/isrs.S | 268 +++++++++--------- STM32F1/cores/maple/libmaple/systick.c | 2 +- STM32F1/cores/maple/libmaple/timer.c | 28 +- STM32F1/cores/maple/libmaple/usart_f1.c | 10 +- .../cores/maple/libmaple/usb/stm32f1/usb.c | 2 +- 10 files changed, 179 insertions(+), 180 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/adc_f1.c b/STM32F1/cores/maple/libmaple/adc_f1.c index 8cb4b4a1a..a8ea30b52 100644 --- a/STM32F1/cores/maple/libmaple/adc_f1.c +++ b/STM32F1/cores/maple/libmaple/adc_f1.c @@ -72,7 +72,7 @@ adc_dev *ADC3 = &adc3; adc irq routine. Added by bubulindo. */ -void __irq_adc() { +__weak void __irq_adc() { //get status uint32 adc_sr = ADC1->regs->SR; //End Of Conversion @@ -107,7 +107,7 @@ void __irq_adc() { added by bubulindo */ #if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) -void __irq_adc3() { +__weak void __irq_adc3() { //get status uint32 adc_sr = ADC3->regs->SR; //End Of Conversion diff --git a/STM32F1/cores/maple/libmaple/dma_f1.c b/STM32F1/cores/maple/libmaple/dma_f1.c index 33dc0ef77..fb5b03cc8 100644 --- a/STM32F1/cores/maple/libmaple/dma_f1.c +++ b/STM32F1/cores/maple/libmaple/dma_f1.c @@ -360,48 +360,48 @@ void dma_setup_transfer(dma_dev *dev, * IRQ handlers */ -void __irq_dma1_channel1(void) { +__weak void __irq_dma1_channel1(void) { dma_irq_handler(DMA1, DMA_CH1); } -void __irq_dma1_channel2(void) { +__weak void __irq_dma1_channel2(void) { dma_irq_handler(DMA1, DMA_CH2); } -void __irq_dma1_channel3(void) { +__weak void __irq_dma1_channel3(void) { dma_irq_handler(DMA1, DMA_CH3); } -void __irq_dma1_channel4(void) { +__weak void __irq_dma1_channel4(void) { dma_irq_handler(DMA1, DMA_CH4); } -void __irq_dma1_channel5(void) { +__weak void __irq_dma1_channel5(void) { dma_irq_handler(DMA1, DMA_CH5); } -void __irq_dma1_channel6(void) { +__weak void __irq_dma1_channel6(void) { dma_irq_handler(DMA1, DMA_CH6); } -void __irq_dma1_channel7(void) { +__weak void __irq_dma1_channel7(void) { dma_irq_handler(DMA1, DMA_CH7); } #if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) -void __irq_dma2_channel1(void) { +__weak void __irq_dma2_channel1(void) { dma_irq_handler(DMA2, DMA_CH1); } -void __irq_dma2_channel2(void) { +__weak void __irq_dma2_channel2(void) { dma_irq_handler(DMA2, DMA_CH2); } -void __irq_dma2_channel3(void) { +__weak void __irq_dma2_channel3(void) { dma_irq_handler(DMA2, DMA_CH3); } -void __irq_dma2_channel4_5(void) { +__weak void __irq_dma2_channel4_5(void) { if ((DMA2_BASE->CCR4 & DMA_CCR_EN) && (DMA2_BASE->ISR & DMA_ISR_GIF4)) { dma_irq_handler(DMA2, DMA_CH4); } diff --git a/STM32F1/cores/maple/libmaple/exc.S b/STM32F1/cores/maple/libmaple/exc.S index 7631e4885..24153fc51 100644 --- a/STM32F1/cores/maple/libmaple/exc.S +++ b/STM32F1/cores/maple/libmaple/exc.S @@ -41,7 +41,6 @@ # SP--> r0 .text -.globl __exc_hardfault .globl __exc_nmi .globl __exc_hardfault .globl __exc_memmanage diff --git a/STM32F1/cores/maple/libmaple/exti.c b/STM32F1/cores/maple/libmaple/exti.c index c8836a7b0..982ba06db 100644 --- a/STM32F1/cores/maple/libmaple/exti.c +++ b/STM32F1/cores/maple/libmaple/exti.c @@ -212,31 +212,31 @@ void exti_do_select(__IO uint32 *exti_cr, exti_num num, exti_cfg port) { * Interrupt handlers */ -void __irq_exti0(void) { +__weak void __irq_exti0(void) { dispatch_single_exti(EXTI0); } -void __irq_exti1(void) { +__weak void __irq_exti1(void) { dispatch_single_exti(EXTI1); } -void __irq_exti2(void) { +__weak void __irq_exti2(void) { dispatch_single_exti(EXTI2); } -void __irq_exti3(void) { +__weak void __irq_exti3(void) { dispatch_single_exti(EXTI3); } -void __irq_exti4(void) { +__weak void __irq_exti4(void) { dispatch_single_exti(EXTI4); } -void __irq_exti9_5(void) { +__weak void __irq_exti9_5(void) { dispatch_extis(5, 9); } -void __irq_exti15_10(void) { +__weak void __irq_exti15_10(void) { dispatch_extis(10, 15); } diff --git a/STM32F1/cores/maple/libmaple/i2c_f1.c b/STM32F1/cores/maple/libmaple/i2c_f1.c index 8439793da..3b1cc3676 100644 --- a/STM32F1/cores/maple/libmaple/i2c_f1.c +++ b/STM32F1/cores/maple/libmaple/i2c_f1.c @@ -76,19 +76,19 @@ void i2c_master_release_bus(const i2c_dev *dev) { * IRQ handlers */ -void __irq_i2c1_ev(void) { +__weak void __irq_i2c1_ev(void) { _i2c_irq_handler(I2C1); } -void __irq_i2c2_ev(void) { +__weak void __irq_i2c2_ev(void) { _i2c_irq_handler(I2C2); } -void __irq_i2c1_er(void) { +__weak void __irq_i2c1_er(void) { _i2c_irq_error_handler(I2C1); } -void __irq_i2c2_er(void) { +__weak void __irq_i2c2_er(void) { _i2c_irq_error_handler(I2C2); } diff --git a/STM32F1/cores/maple/libmaple/stm32f1/performance/isrs.S b/STM32F1/cores/maple/libmaple/stm32f1/performance/isrs.S index 8c1a44fcd..7a9b4aad5 100644 --- a/STM32F1/cores/maple/libmaple/stm32f1/performance/isrs.S +++ b/STM32F1/cores/maple/libmaple/stm32f1/performance/isrs.S @@ -76,9 +76,9 @@ __default_handler: .weak __exc_pendsv .globl __exc_pendsv .set __exc_pendsv, __default_handler - .weak __exc_systick - .globl __exc_systick - .set __exc_systick, __default_handler +// .weak __exc_systick // __exc_systick() defined in STM32F1/cores/maple/libmaple/systick.c +// .globl __exc_systick +// .set __exc_systick, __default_handler .weak __irq_wwdg .globl __irq_wwdg .set __irq_wwdg, __default_handler @@ -97,110 +97,110 @@ __default_handler: .weak __irq_rcc .globl __irq_rcc .set __irq_rcc, __default_handler - .weak __irq_exti0 - .globl __irq_exti0 - .set __irq_exti0, __default_handler - .weak __irq_exti1 - .globl __irq_exti1 - .set __irq_exti1, __default_handler - .weak __irq_exti2 - .globl __irq_exti2 - .set __irq_exti2, __default_handler - .weak __irq_exti3 - .globl __irq_exti3 - .set __irq_exti3, __default_handler - .weak __irq_exti4 - .globl __irq_exti4 - .set __irq_exti4, __default_handler - .weak __irq_dma1_channel1 - .globl __irq_dma1_channel1 - .set __irq_dma1_channel1, __default_handler - .weak __irq_dma1_channel2 - .globl __irq_dma1_channel2 - .set __irq_dma1_channel2, __default_handler - .weak __irq_dma1_channel3 - .globl __irq_dma1_channel3 - .set __irq_dma1_channel3, __default_handler - .weak __irq_dma1_channel4 - .globl __irq_dma1_channel4 - .set __irq_dma1_channel4, __default_handler - .weak __irq_dma1_channel5 - .globl __irq_dma1_channel5 - .set __irq_dma1_channel5, __default_handler - .weak __irq_dma1_channel6 - .globl __irq_dma1_channel6 - .set __irq_dma1_channel6, __default_handler - .weak __irq_dma1_channel7 - .globl __irq_dma1_channel7 - .set __irq_dma1_channel7, __default_handler - .weak __irq_adc - .globl __irq_adc - .set __irq_adc, __default_handler +// .weak __irq_exti0 // __irq_exti0() defined in STM32F1/cores/maple/libmaple/exti.c +// .globl __irq_exti0 +// .set __irq_exti0, __default_handler +// .weak __irq_exti1 // __irq_exti1() defined in STM32F1/cores/maple/libmaple/exti.c +// .globl __irq_exti1 +// .set __irq_exti1, __default_handler +// .weak __irq_exti2 // __irq_exti2() defined in STM32F1/cores/maple/libmaple/exti.c +// .globl __irq_exti2 +// .set __irq_exti2, __default_handler +// .weak __irq_exti3 // __irq_exti3() defined in STM32F1/cores/maple/libmaple/exti.c +// .globl __irq_exti3 +// .set __irq_exti3, __default_handler +// .weak __irq_exti4 // __irq_exti4() defined in STM32F1/cores/maple/libmaple/exti.c +// .globl __irq_exti4 +// .set __irq_exti4, __default_handler +// .weak __irq_dma1_channel1 // __irq_dma1_channel1() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma1_channel1 +// .set __irq_dma1_channel1, __default_handler +// .weak __irq_dma1_channel2 // __irq_dma1_channel2() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma1_channel2 +// .set __irq_dma1_channel2, __default_handler +// .weak __irq_dma1_channel3 // __irq_dma1_channel3() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma1_channel3 +// .set __irq_dma1_channel3, __default_handler +// .weak __irq_dma1_channel4 // __irq_dma1_channel4() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma1_channel4 +// .set __irq_dma1_channel4, __default_handler +// .weak __irq_dma1_channel5 // __irq_dma1_channel5() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma1_channel5 +// .set __irq_dma1_channel5, __default_handler +// .weak __irq_dma1_channel6 // __irq_dma1_channel6() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma1_channel6 +// .set __irq_dma1_channel6, __default_handler +// .weak __irq_dma1_channel7 // __irq_dma1_channel7() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma1_channel7 +// .set __irq_dma1_channel7, __default_handler +// .weak __irq_adc // __irq_adc() defined in STM32F1/cores/maple/libmaple/adc_f1.c +// .globl __irq_adc +// .set __irq_adc, __default_handler .weak __irq_usb_hp_can_tx .globl __irq_usb_hp_can_tx .set __irq_usb_hp_can_tx, __default_handler - .weak __irq_usb_lp_can_rx0 - .globl __irq_usb_lp_can_rx0 - .set __irq_usb_lp_can_rx0, __default_handler +// .weak __irq_usb_lp_can_rx0 // __irq_usb_lp_can_rx0() defined in STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c +// .globl __irq_usb_lp_can_rx0 +// .set __irq_usb_lp_can_rx0, __default_handler .weak __irq_can_rx1 .globl __irq_can_rx1 .set __irq_can_rx1, __default_handler .weak __irq_can_sce .globl __irq_can_sce .set __irq_can_sce, __default_handler - .weak __irq_exti9_5 - .globl __irq_exti9_5 - .set __irq_exti9_5, __default_handler - .weak __irq_tim1_brk - .globl __irq_tim1_brk - .set __irq_tim1_brk, __default_handler - .weak __irq_tim1_up - .globl __irq_tim1_up - .set __irq_tim1_up, __default_handler - .weak __irq_tim1_trg_com - .globl __irq_tim1_trg_com - .set __irq_tim1_trg_com, __default_handler - .weak __irq_tim1_cc - .globl __irq_tim1_cc - .set __irq_tim1_cc, __default_handler - - .weakref __irq_tim2, __default_handler - .globl __irq_tim2 - .weakref __irq_tim3, __default_handler - .globl __irq_tim3 - .weakref __irq_tim4, __default_handler - .globl __irq_tim4 - - .weak __irq_i2c1_ev - .globl __irq_i2c1_ev - .set __irq_i2c1_ev, __default_handler - .weak __irq_i2c1_er - .globl __irq_i2c1_er - .set __irq_i2c1_er, __default_handler - .weak __irq_i2c2_ev - .globl __irq_i2c2_ev - .set __irq_i2c2_ev, __default_handler - .weak __irq_i2c2_er - .globl __irq_i2c2_er - .set __irq_i2c2_er, __default_handler +// .weak __irq_exti9_5 // __irq_exti9_5() defined in STM32F1/cores/maple/libmaple/exti.c +// .globl __irq_exti9_5 +// .set __irq_exti9_5, __default_handler +// .weak __irq_tim1_brk // __irq_tim1_brk() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim1_brk +// .set __irq_tim1_brk, __default_handler +// .weak __irq_tim1_up // __irq_tim1_up() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim1_up +// .set __irq_tim1_up, __default_handler +// .weak __irq_tim1_trg_com // __irq_tim1_trg_com() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim1_trg_com +// .set __irq_tim1_trg_com, __default_handler +// .weak __irq_tim1_cc // __irq_tim1_cc() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim1_cc +// .set __irq_tim1_cc, __default_handler +// +// .weakref __irq_tim2, __default_handler // __irq_tim2() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim2 +// .weakref __irq_tim3, __default_handler // __irq_tim3() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim3 +// .weakref __irq_tim4, __default_handler // __irq_tim4() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim4 +// +// .weak __irq_i2c1_ev // __irq_i2c1_ev() defined in STM32F1/cores/maple/libmaple/i2c_f1.c +// .globl __irq_i2c1_ev +// .set __irq_i2c1_ev, __default_handler +// .weak __irq_i2c1_er // __irq_i2c1_er() defined in STM32F1/cores/maple/libmaple/i2c_f1.c +// .globl __irq_i2c1_er +// .set __irq_i2c1_er, __default_handler +// .weak __irq_i2c2_ev // __irq_i2c2_ev() defined in STM32F1/cores/maple/libmaple/i2c_f1.c +// .globl __irq_i2c2_ev +// .set __irq_i2c2_ev, __default_handler +// .weak __irq_i2c2_er // __irq_i2c2_er() defined in STM32F1/cores/maple/libmaple/i2c_f1.c +// .globl __irq_i2c2_er +// .set __irq_i2c2_er, __default_handler .weak __irq_spi1 .globl __irq_spi1 .set __irq_spi1, __default_handler .weak __irq_spi2 .globl __irq_spi2 .set __irq_spi2, __default_handler - .weak __irq_usart1 - .globl __irq_usart1 - .set __irq_usart1, __default_handler - .weak __irq_usart2 - .globl __irq_usart2 - .set __irq_usart2, __default_handler - .weak __irq_usart3 - .globl __irq_usart3 - .set __irq_usart3, __default_handler - .weak __irq_exti15_10 - .globl __irq_exti15_10 - .set __irq_exti15_10, __default_handler +// .weak __irq_usart1 // __irq_usart1() defined in STM32F1/cores/maple/libmaple/usart_f1.c +// .globl __irq_usart1 +// .set __irq_usart1, __default_handler +// .weak __irq_usart2 // __irq_usart2() defined in STM32F1/cores/maple/libmaple/usart_f1.c +// .globl __irq_usart2 +// .set __irq_usart2, __default_handler +// .weak __irq_usart3 // __irq_usart3() defined in STM32F1/cores/maple/libmaple/usart_f1.c +// .globl __irq_usart3 +// .set __irq_usart3, __default_handler +// .weak __irq_exti15_10 // __irq_exti15_10() defined in STM32F1/cores/maple/libmaple/exti.c +// .globl __irq_exti15_10 +// .set __irq_exti15_10, __default_handler .weak __irq_rtcalarm .globl __irq_rtcalarm .set __irq_rtcalarm, __default_handler @@ -208,55 +208,55 @@ __default_handler: .globl __irq_usbwakeup .set __irq_usbwakeup, __default_handler #if defined (STM32_HIGH_DENSITY) - .weak __irq_tim8_brk - .globl __irq_tim8_brk - .set __irq_tim8_brk, __default_handler - .weak __irq_tim8_up - .globl __irq_tim8_up - .set __irq_tim8_up, __default_handler - .weak __irq_tim8_trg_com - .globl __irq_tim8_trg_com - .set __irq_tim8_trg_com, __default_handler - .weak __irq_tim8_cc - .globl __irq_tim8_cc - .set __irq_tim8_cc, __default_handler - .weak __irq_adc3 - .globl __irq_adc3 - .set __irq_adc3, __default_handler +// .weak __irq_tim8_brk // __irq_tim8_brk() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim8_brk +// .set __irq_tim8_brk, __default_handler +// .weak __irq_tim8_up // __irq_tim8_up() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim8_up +// .set __irq_tim8_up, __default_handler +// .weak __irq_tim8_trg_com // __irq_tim8_trg_com() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim8_trg_com +// .set __irq_tim8_trg_com, __default_handler +// .weak __irq_tim8_cc // __irq_tim8_cc() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim8_cc +// .set __irq_tim8_cc, __default_handler +// .weak __irq_adc3 // __irq_adc3() defined in STM32F1/cores/maple/libmaple/adc_f1.c +// .globl __irq_adc3 +// .set __irq_adc3, __default_handler .weak __irq_fsmc .globl __irq_fsmc .set __irq_fsmc, __default_handler .weak __irq_sdio .globl __irq_sdio .set __irq_sdio, __default_handler - .weak __irq_tim5 - .globl __irq_tim5 - .set __irq_tim5, __default_handler +// .weak __irq_tim5 // __irq_tim5() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim5 +// .set __irq_tim5, __default_handler .weak __irq_spi3 .globl __irq_spi3 .set __irq_spi3, __default_handler - .weak __irq_uart4 - .globl __irq_uart4 - .set __irq_uart4, __default_handler - .weak __irq_uart5 - .globl __irq_uart5 - .set __irq_uart5, __default_handler - .weak __irq_tim6 - .globl __irq_tim6 - .set __irq_tim6, __default_handler - .weak __irq_tim7 - .globl __irq_tim7 - .set __irq_tim7, __default_handler - .weak __irq_dma2_channel1 - .globl __irq_dma2_channel1 - .set __irq_dma2_channel1, __default_handler - .weak __irq_dma2_channel2 - .globl __irq_dma2_channel2 - .set __irq_dma2_channel2, __default_handler - .weak __irq_dma2_channel3 - .globl __irq_dma2_channel3 - .set __irq_dma2_channel3, __default_handler - .weak __irq_dma2_channel4_5 - .globl __irq_dma2_channel4_5 - .set __irq_dma2_channel4_5, __default_handler +// .weak __irq_uart4 // __irq_uart4() defined in STM32F1/cores/maple/libmaple/usart_f1.c +// .globl __irq_uart4 +// .set __irq_uart4, __default_handler +// .weak __irq_uart5 // __irq_uart5() defined in STM32F1/cores/maple/libmaple/usart_f1.c +// .globl __irq_uart5 +// .set __irq_uart5, __default_handler +// .weak __irq_tim6 // __irq_tim6() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim6 +// .set __irq_tim6, __default_handler +// .weak __irq_tim7 // __irq_tim7() defined in STM32F1/cores/maple/libmaple/timer.c +// .globl __irq_tim7 +// .set __irq_tim7, __default_handler +// .weak __irq_dma2_channel1 // __irq_dma2_channel1() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma2_channel1 +// .set __irq_dma2_channel1, __default_handler +// .weak __irq_dma2_channel2 // __irq_dma2_channel2() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma2_channel2 +// .set __irq_dma2_channel2, __default_handler +// .weak __irq_dma2_channel3 // __irq_dma2_channel3() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma2_channel3 +// .set __irq_dma2_channel3, __default_handler +// .weak __irq_dma2_channel4_5 // __irq_dma2_channel4_5() defined in STM32F1/cores/maple/libmaple/dma_f1.c +// .globl __irq_dma2_channel4_5 +// .set __irq_dma2_channel4_5, __default_handler #endif /* STM32_HIGH_DENSITY */ \ No newline at end of file diff --git a/STM32F1/cores/maple/libmaple/systick.c b/STM32F1/cores/maple/libmaple/systick.c index 7568abe06..1ac92f18f 100644 --- a/STM32F1/cores/maple/libmaple/systick.c +++ b/STM32F1/cores/maple/libmaple/systick.c @@ -80,7 +80,7 @@ void systick_attach_callback(void (*callback)(void)) { * SysTick ISR */ -void __exc_systick(void) { +__weak void __exc_systick(void) { systick_uptime_millis++; if (systick_user_callback) { systick_user_callback(); diff --git a/STM32F1/cores/maple/libmaple/timer.c b/STM32F1/cores/maple/libmaple/timer.c index fa50c200d..5f124301a 100644 --- a/STM32F1/cores/maple/libmaple/timer.c +++ b/STM32F1/cores/maple/libmaple/timer.c @@ -478,78 +478,78 @@ static void enable_bas_gen_irq(timer_dev *dev) { * file. */ -void __irq_tim1_brk(void) { +__weak void __irq_tim1_brk(void) { dispatch_adv_brk(TIMER1); #if STM32_HAVE_TIMER(9) dispatch_tim_9_12(TIMER9); #endif } -void __irq_tim1_up(void) { +__weak void __irq_tim1_up(void) { dispatch_adv_up(TIMER1); #if STM32_HAVE_TIMER(10) dispatch_tim_10_11_13_14(TIMER10); #endif } -void __irq_tim1_trg_com(void) { +__weak void __irq_tim1_trg_com(void) { dispatch_adv_trg_com(TIMER1); #if STM32_HAVE_TIMER(11) dispatch_tim_10_11_13_14(TIMER11); #endif } -void __irq_tim1_cc(void) { +__weak void __irq_tim1_cc(void) { dispatch_adv_cc(TIMER1); } -void __irq_tim2(void) { +__weak void __irq_tim2(void) { dispatch_general(TIMER2); } -void __irq_tim3(void) { +__weak void __irq_tim3(void) { dispatch_general(TIMER3); } -void __irq_tim4(void) { +__weak void __irq_tim4(void) { dispatch_general(TIMER4); } #if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) -void __irq_tim5(void) { +__weak void __irq_tim5(void) { dispatch_general(TIMER5); } -void __irq_tim6(void) { +__weak void __irq_tim6(void) { dispatch_basic(TIMER6); } -void __irq_tim7(void) { +__weak void __irq_tim7(void) { dispatch_basic(TIMER7); } -void __irq_tim8_brk(void) { +__weak void __irq_tim8_brk(void) { dispatch_adv_brk(TIMER8); #if STM32_HAVE_TIMER(12) dispatch_tim_9_12(TIMER12); #endif } -void __irq_tim8_up(void) { +__weak void __irq_tim8_up(void) { dispatch_adv_up(TIMER8); #if STM32_HAVE_TIMER(13) dispatch_tim_10_11_13_14(TIMER13); #endif } -void __irq_tim8_trg_com(void) { +__weak void __irq_tim8_trg_com(void) { dispatch_adv_trg_com(TIMER8); #if STM32_HAVE_TIMER(14) dispatch_tim_10_11_13_14(TIMER14); #endif } -void __irq_tim8_cc(void) { +__weak void __irq_tim8_cc(void) { dispatch_adv_cc(TIMER8); } #endif /* defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) */ \ No newline at end of file diff --git a/STM32F1/cores/maple/libmaple/usart_f1.c b/STM32F1/cores/maple/libmaple/usart_f1.c index 2b590fc74..30ce000fe 100644 --- a/STM32F1/cores/maple/libmaple/usart_f1.c +++ b/STM32F1/cores/maple/libmaple/usart_f1.c @@ -200,24 +200,24 @@ void usart_foreach(void (*fn)(usart_dev*)) { * Interrupt handlers. */ -void __irq_usart1(void) { +__weak void __irq_usart1(void) { usart_irq(&usart1_rb, &usart1_wb, USART1_BASE); } -void __irq_usart2(void) { +__weak void __irq_usart2(void) { usart_irq(&usart2_rb, &usart2_wb, USART2_BASE); } -void __irq_usart3(void) { +__weak void __irq_usart3(void) { usart_irq(&usart3_rb, &usart3_wb, USART3_BASE); } #ifdef STM32_HIGH_DENSITY -void __irq_uart4(void) { +__weak void __irq_uart4(void) { usart_irq(&uart4_rb, &uart4_wb, UART4_BASE); } -void __irq_uart5(void) { +__weak void __irq_uart5(void) { usart_irq(&uart5_rb, &uart5_wb, UART5_BASE); } #endif diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c index 0feb745eb..4f6c82356 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb.c @@ -190,7 +190,7 @@ static void usb_resume(RESUME_STATE eResumeSetVal) { } #define SUSPEND_ENABLED 1 -void __irq_usb_lp_can_rx0(void) { +__weak void __irq_usb_lp_can_rx0(void) { uint16 istr = USB_BASE->ISTR; /* Use USB_ISR_MSK to only include code for bits we care about. */ From 4bb4ce913b0c26dd016e0de4bbd072656c79fda7 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Thu, 19 Apr 2018 18:09:09 +1000 Subject: [PATCH 106/373] Removed STM32F3 folder as it was only included as an archive, and is still available in the STM32F3 branch --- STM32F3/README.md | 45 - STM32F3/boards.txt | 62 - STM32F3/cores/maple/Arduino.h | 4 - STM32F3/cores/maple/WProgram.h | 35 - STM32F3/cores/maple/libmaple/adc.c | 52 - STM32F3/cores/maple/libmaple/bkp.c | 69 - STM32F3/cores/maple/libmaple/dac.c | 120 -- STM32F3/cores/maple/libmaple/dma.c | 82 -- STM32F3/cores/maple/libmaple/dma_private.h | 61 - STM32F3/cores/maple/libmaple/exc.S | 101 -- STM32F3/cores/maple/libmaple/exti.c | 293 ----- STM32F3/cores/maple/libmaple/exti_private.h | 34 - STM32F3/cores/maple/libmaple/flash.c | 55 - STM32F3/cores/maple/libmaple/gpio.c | 50 - STM32F3/cores/maple/libmaple/i2c.c | 52 - STM32F3/cores/maple/libmaple/i2c_private.h | 75 -- .../maple/libmaple/include/libmaple/adc.h | 319 ----- .../maple/libmaple/include/libmaple/bitband.h | 128 -- .../maple/libmaple/include/libmaple/bkp.h | 100 -- .../maple/libmaple/include/libmaple/comp.h | 46 - .../maple/libmaple/include/libmaple/dac.h | 158 --- .../maple/libmaple/include/libmaple/delay.h | 65 - .../maple/libmaple/include/libmaple/dma.h | 444 ------- .../libmaple/include/libmaple/dma_common.h | 112 -- .../maple/libmaple/include/libmaple/dsp.h | 131 -- .../maple/libmaple/include/libmaple/exti.h | 143 --- .../maple/libmaple/include/libmaple/flash.h | 106 -- .../maple/libmaple/include/libmaple/fpu.h | 56 - .../maple/libmaple/include/libmaple/fsmc.h | 340 ----- .../maple/libmaple/include/libmaple/gpio.h | 121 -- .../maple/libmaple/include/libmaple/i2c.h | 304 ----- .../libmaple/include/libmaple/i2c_common.h | 93 -- .../maple/libmaple/include/libmaple/iwdg.h | 115 -- .../libmaple/include/libmaple/libmaple.h | 48 - .../include/libmaple/libmaple_types.h | 73 -- .../maple/libmaple/include/libmaple/nvic.h | 155 --- .../maple/libmaple/include/libmaple/opamp.h | 46 - .../maple/libmaple/include/libmaple/pwr.h | 115 -- .../maple/libmaple/include/libmaple/rcc.h | 175 --- .../libmaple/include/libmaple/ring_buffer.h | 188 --- .../maple/libmaple/include/libmaple/scb.h | 214 ---- .../maple/libmaple/include/libmaple/spi.h | 487 ------- .../maple/libmaple/include/libmaple/stm32.h | 239 ---- .../maple/libmaple/include/libmaple/syscfg.h | 116 -- .../maple/libmaple/include/libmaple/systick.h | 115 -- .../maple/libmaple/include/libmaple/timer.h | 1119 ----------------- .../maple/libmaple/include/libmaple/usart.h | 464 ------- .../maple/libmaple/include/libmaple/usb.h | 176 --- .../libmaple/include/libmaple/usb_cdcacm.h | 179 --- .../maple/libmaple/include/libmaple/util.h | 111 -- STM32F3/cores/maple/libmaple/iwdg.c | 62 - STM32F3/cores/maple/libmaple/nvic.c | 103 -- STM32F3/cores/maple/libmaple/pwr.c | 41 - STM32F3/cores/maple/libmaple/rcc.c | 169 --- STM32F3/cores/maple/libmaple/rcc_private.h | 67 - STM32F3/cores/maple/libmaple/rules.mk | 53 - STM32F3/cores/maple/libmaple/spi.c | 129 -- STM32F3/cores/maple/libmaple/spi_private.h | 37 - STM32F3/cores/maple/libmaple/stm32_private.h | 45 - STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c | 412 ------ STM32F3/cores/maple/libmaple/stm32f3/f3_bkp.c | 49 - .../cores/maple/libmaple/stm32f3/f3_comp.c | 61 - STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c | 364 ------ .../cores/maple/libmaple/stm32f3/f3_exti.c | 40 - STM32F3/cores/maple/libmaple/stm32f3/f3_fpu.c | 57 - .../cores/maple/libmaple/stm32f3/f3_gpio.c | 169 --- STM32F3/cores/maple/libmaple/stm32f3/f3_i2c.c | 319 ----- .../cores/maple/libmaple/stm32f3/f3_opamp.c | 46 - STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c | 149 --- STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c | 143 --- .../cores/maple/libmaple/stm32f3/f3_syscfg.c | 43 - .../cores/maple/libmaple/stm32f3/f3_timer.c | 147 --- .../cores/maple/libmaple/stm32f3/f3_usart.c | 210 ---- .../libmaple/stm32f3/include/series/adc.h | 696 ---------- .../libmaple/stm32f3/include/series/bkp.h | 62 - .../libmaple/stm32f3/include/series/comp.h | 119 -- .../libmaple/stm32f3/include/series/crc.h | 94 -- .../libmaple/stm32f3/include/series/dac.h | 74 -- .../libmaple/stm32f3/include/series/dma.h | 557 -------- .../libmaple/stm32f3/include/series/exti.h | 49 - .../libmaple/stm32f3/include/series/flash.h | 164 --- .../libmaple/stm32f3/include/series/fpu.h | 65 - .../libmaple/stm32f3/include/series/gpio.h | 255 ---- .../libmaple/stm32f3/include/series/i2c.h | 315 ----- .../libmaple/stm32f3/include/series/nvic.h | 153 --- .../libmaple/stm32f3/include/series/opamp.h | 123 -- .../libmaple/stm32f3/include/series/pwr.h | 52 - .../libmaple/stm32f3/include/series/rcc.h | 632 ---------- .../libmaple/stm32f3/include/series/simd.h | 109 -- .../libmaple/stm32f3/include/series/spi.h | 178 --- .../libmaple/stm32f3/include/series/stm32.h | 238 ---- .../libmaple/stm32f3/include/series/syscfg.h | 138 -- .../libmaple/stm32f3/include/series/timer.h | 123 -- .../libmaple/stm32f3/include/series/usart.h | 277 ---- STM32F3/cores/maple/libmaple/stm32f3/rules.mk | 48 - STM32F3/cores/maple/libmaple/syscfg.c | 41 - STM32F3/cores/maple/libmaple/systick.c | 88 -- STM32F3/cores/maple/libmaple/timer.c | 456 ------- STM32F3/cores/maple/libmaple/timer_private.h | 235 ---- STM32F3/cores/maple/libmaple/usart.c | 122 -- STM32F3/cores/maple/libmaple/usart_private.c | 41 - STM32F3/cores/maple/libmaple/usart_private.h | 42 - STM32F3/cores/maple/libmaple/usb/README | 63 - STM32F3/cores/maple/libmaple/usb/usb.c | 387 ------ STM32F3/cores/maple/libmaple/usb/usb_cdcacm.c | 723 ----------- .../maple/libmaple/usb/usb_lib/usb_core.c | 1013 --------------- .../maple/libmaple/usb/usb_lib/usb_core.h | 251 ---- .../maple/libmaple/usb/usb_lib/usb_def.h | 88 -- .../maple/libmaple/usb/usb_lib/usb_init.c | 64 - .../maple/libmaple/usb/usb_lib/usb_init.h | 57 - .../maple/libmaple/usb/usb_lib/usb_lib.h | 36 - .../maple/libmaple/usb/usb_lib/usb_mem.c | 73 -- .../maple/libmaple/usb/usb_lib/usb_mem.h | 40 - .../maple/libmaple/usb/usb_lib/usb_regs.c | 748 ----------- .../maple/libmaple/usb/usb_lib/usb_regs.h | 627 --------- .../maple/libmaple/usb/usb_lib/usb_type.h | 77 -- .../maple/libmaple/usb/usb_lib_globals.h | 55 - .../cores/maple/libmaple/usb/usb_reg_map.c | 88 -- .../cores/maple/libmaple/usb/usb_reg_map.h | 617 --------- STM32F3/cores/maple/libmaple/util.c | 150 --- STM32F3/cores/maple/main.cpp | 44 - STM32F3/cores/maple/wirish/HardwareSPI.cpp | 320 ----- STM32F3/cores/maple/wirish/HardwareSPI.h | 225 ---- STM32F3/cores/maple/wirish/HardwareSerial.cpp | 139 -- STM32F3/cores/maple/wirish/HardwareSerial.h | 102 -- STM32F3/cores/maple/wirish/HardwareTimer.cpp | 156 --- STM32F3/cores/maple/wirish/HardwareTimer.h | 337 ----- STM32F3/cores/maple/wirish/Print.cpp | 244 ---- STM32F3/cores/maple/wirish/Print.h | 66 - STM32F3/cores/maple/wirish/bit_constants.h | 579 --------- STM32F3/cores/maple/wirish/bits.h | 35 - STM32F3/cores/maple/wirish/boards.cpp | 215 ---- STM32F3/cores/maple/wirish/boards.h | 173 --- STM32F3/cores/maple/wirish/boards_private.h | 71 -- STM32F3/cores/maple/wirish/cxxabi-compat.cpp | 6 - STM32F3/cores/maple/wirish/ext_interrupts.cpp | 90 -- STM32F3/cores/maple/wirish/ext_interrupts.h | 128 -- STM32F3/cores/maple/wirish/io.h | 222 ---- STM32F3/cores/maple/wirish/main.cxx | 40 - STM32F3/cores/maple/wirish/pwm.cpp | 48 - STM32F3/cores/maple/wirish/pwm.h | 56 - STM32F3/cores/maple/wirish/rules.mk | 66 - .../maple/wirish/stm32f3/boards_setup.cpp | 92 -- .../wirish/stm32f3/f3_wirish_digital.cpp | 99 -- .../cores/maple/wirish/stm32f3/util_hooks.c | 45 - .../maple/wirish/stm32f3/wirish_debug.cpp | 70 -- STM32F3/cores/maple/wirish/syscalls.c | 175 --- STM32F3/cores/maple/wirish/usb_serial.cpp | 260 ---- STM32F3/cores/maple/wirish/usb_serial.h | 67 - STM32F3/cores/maple/wirish/wirish.h | 77 -- STM32F3/cores/maple/wirish/wirish_analog.cpp | 47 - STM32F3/cores/maple/wirish/wirish_debug.h | 57 - STM32F3/cores/maple/wirish/wirish_digital.cpp | 94 -- STM32F3/cores/maple/wirish/wirish_math.cpp | 49 - STM32F3/cores/maple/wirish/wirish_math.h | 151 --- STM32F3/cores/maple/wirish/wirish_shift.cpp | 37 - STM32F3/cores/maple/wirish/wirish_time.cpp | 45 - STM32F3/cores/maple/wirish/wirish_time.h | 95 -- STM32F3/cores/maple/wirish/wirish_types.h | 68 - STM32F3/examples/Blinkf3/Blinkf3.ino | 38 - .../examples/f3_buttondemo/f3_buttondemo.ino | 54 - .../f3_functionTimer/f3_functionTimer.ino | 144 --- STM32F3/examples/f3_gyrodemo/f3_gyrodemo.ino | 100 -- .../examples/f3_lsm303demo/f3_lsm303demo.ino | 111 -- .../examples/f3_ultrasonic/f3_ultrasonic.ino | 137 -- STM32F3/libraries/gyro/gyro.cpp | 337 ----- STM32F3/libraries/gyro/gyro.h | 118 -- STM32F3/libraries/gyro/l3gd20.h | 93 -- STM32F3/libraries/lsm303/lsm303.cpp | 225 ---- STM32F3/libraries/lsm303/lsm303.h | 77 -- STM32F3/libraries/lsm303/lsm303reg.h | 131 -- STM32F3/libraries/ringbuffer/ringbuffer.cpp | 320 ----- STM32F3/libraries/ringbuffer/ringbuffer.h | 155 --- STM32F3/libraries/roboter/debug.cpp | 196 --- STM32F3/libraries/roboter/debug.h | 58 - STM32F3/libraries/roboter/eeprom.cpp | 169 --- STM32F3/libraries/roboter/eeprom.h | 53 - STM32F3/libraries/roboter/functiontimer.cpp | 234 ---- STM32F3/libraries/roboter/functiontimer.h | 51 - STM32F3/libraries/roboter/motor.cpp | 259 ---- STM32F3/libraries/roboter/motor.h | 58 - STM32F3/libraries/roboter/sound.cpp | 30 - STM32F3/libraries/roboter/sound.h | 33 - STM32F3/libraries/roboter/ultraschall.cpp | 536 -------- STM32F3/libraries/roboter/ultraschall.h | 156 --- STM32F3/platform.txt | 144 --- STM32F3/variants/discovery_f3/board/board.h | 138 -- .../variants/discovery_f3/discovery_f3.cpp | 193 --- STM32F3/variants/discovery_f3/ld/common.inc | 229 ---- .../variants/discovery_f3/ld/extra_libs.inc | 7 - STM32F3/variants/discovery_f3/ld/flash.ld | 28 - STM32F3/variants/discovery_f3/ld/jtag.ld | 33 - .../variants/discovery_f3/ld/mem-flash.inc | 6 - STM32F3/variants/discovery_f3/ld/mem-jtag.inc | 6 - STM32F3/variants/discovery_f3/ld/mem-ram.inc | 6 - STM32F3/variants/discovery_f3/ld/names.inc | 78 -- STM32F3/variants/discovery_f3/ld/ram.ld | 27 - .../discovery_f3/ld/vector_symbols.inc | 98 -- STM32F3/variants/discovery_f3/stm32_isrs.S | 331 ----- .../discovery_f3/stm32_vector_table.S | 134 -- STM32F3/variants/discovery_f3/wirish/start.S | 57 - .../variants/discovery_f3/wirish/start_c.c | 95 -- 202 files changed, 31982 deletions(-) delete mode 100644 STM32F3/README.md delete mode 100644 STM32F3/boards.txt delete mode 100644 STM32F3/cores/maple/Arduino.h delete mode 100644 STM32F3/cores/maple/WProgram.h delete mode 100644 STM32F3/cores/maple/libmaple/adc.c delete mode 100644 STM32F3/cores/maple/libmaple/bkp.c delete mode 100644 STM32F3/cores/maple/libmaple/dac.c delete mode 100644 STM32F3/cores/maple/libmaple/dma.c delete mode 100644 STM32F3/cores/maple/libmaple/dma_private.h delete mode 100644 STM32F3/cores/maple/libmaple/exc.S delete mode 100644 STM32F3/cores/maple/libmaple/exti.c delete mode 100644 STM32F3/cores/maple/libmaple/exti_private.h delete mode 100644 STM32F3/cores/maple/libmaple/flash.c delete mode 100644 STM32F3/cores/maple/libmaple/gpio.c delete mode 100644 STM32F3/cores/maple/libmaple/i2c.c delete mode 100644 STM32F3/cores/maple/libmaple/i2c_private.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/adc.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/bitband.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/bkp.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/comp.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/dac.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/delay.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/dma.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/dma_common.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/dsp.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/exti.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/flash.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/fpu.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/gpio.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/i2c.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/i2c_common.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/libmaple.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/nvic.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/opamp.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/pwr.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/rcc.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/scb.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/spi.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/stm32.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/syscfg.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/systick.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/timer.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/usart.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/usb.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/usb_cdcacm.h delete mode 100644 STM32F3/cores/maple/libmaple/include/libmaple/util.h delete mode 100644 STM32F3/cores/maple/libmaple/iwdg.c delete mode 100644 STM32F3/cores/maple/libmaple/nvic.c delete mode 100644 STM32F3/cores/maple/libmaple/pwr.c delete mode 100644 STM32F3/cores/maple/libmaple/rcc.c delete mode 100644 STM32F3/cores/maple/libmaple/rcc_private.h delete mode 100644 STM32F3/cores/maple/libmaple/rules.mk delete mode 100644 STM32F3/cores/maple/libmaple/spi.c delete mode 100644 STM32F3/cores/maple/libmaple/spi_private.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32_private.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_bkp.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_comp.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_exti.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_fpu.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_i2c.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_opamp.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_syscfg.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_timer.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/f3_usart.c delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/exti.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/nvic.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/pwr.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/simd.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/spi.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/stm32.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h delete mode 100644 STM32F3/cores/maple/libmaple/stm32f3/rules.mk delete mode 100644 STM32F3/cores/maple/libmaple/syscfg.c delete mode 100644 STM32F3/cores/maple/libmaple/systick.c delete mode 100644 STM32F3/cores/maple/libmaple/timer.c delete mode 100644 STM32F3/cores/maple/libmaple/timer_private.h delete mode 100644 STM32F3/cores/maple/libmaple/usart.c delete mode 100644 STM32F3/cores/maple/libmaple/usart_private.c delete mode 100644 STM32F3/cores/maple/libmaple/usart_private.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/README delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb.c delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_cdcacm.c delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.c delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_def.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.c delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_lib.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.c delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.c delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib/usb_type.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_lib_globals.h delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_reg_map.c delete mode 100644 STM32F3/cores/maple/libmaple/usb/usb_reg_map.h delete mode 100644 STM32F3/cores/maple/libmaple/util.c delete mode 100644 STM32F3/cores/maple/main.cpp delete mode 100644 STM32F3/cores/maple/wirish/HardwareSPI.cpp delete mode 100644 STM32F3/cores/maple/wirish/HardwareSPI.h delete mode 100644 STM32F3/cores/maple/wirish/HardwareSerial.cpp delete mode 100644 STM32F3/cores/maple/wirish/HardwareSerial.h delete mode 100644 STM32F3/cores/maple/wirish/HardwareTimer.cpp delete mode 100644 STM32F3/cores/maple/wirish/HardwareTimer.h delete mode 100644 STM32F3/cores/maple/wirish/Print.cpp delete mode 100644 STM32F3/cores/maple/wirish/Print.h delete mode 100644 STM32F3/cores/maple/wirish/bit_constants.h delete mode 100644 STM32F3/cores/maple/wirish/bits.h delete mode 100644 STM32F3/cores/maple/wirish/boards.cpp delete mode 100644 STM32F3/cores/maple/wirish/boards.h delete mode 100644 STM32F3/cores/maple/wirish/boards_private.h delete mode 100644 STM32F3/cores/maple/wirish/cxxabi-compat.cpp delete mode 100644 STM32F3/cores/maple/wirish/ext_interrupts.cpp delete mode 100644 STM32F3/cores/maple/wirish/ext_interrupts.h delete mode 100644 STM32F3/cores/maple/wirish/io.h delete mode 100644 STM32F3/cores/maple/wirish/main.cxx delete mode 100644 STM32F3/cores/maple/wirish/pwm.cpp delete mode 100644 STM32F3/cores/maple/wirish/pwm.h delete mode 100644 STM32F3/cores/maple/wirish/rules.mk delete mode 100644 STM32F3/cores/maple/wirish/stm32f3/boards_setup.cpp delete mode 100644 STM32F3/cores/maple/wirish/stm32f3/f3_wirish_digital.cpp delete mode 100644 STM32F3/cores/maple/wirish/stm32f3/util_hooks.c delete mode 100644 STM32F3/cores/maple/wirish/stm32f3/wirish_debug.cpp delete mode 100644 STM32F3/cores/maple/wirish/syscalls.c delete mode 100644 STM32F3/cores/maple/wirish/usb_serial.cpp delete mode 100644 STM32F3/cores/maple/wirish/usb_serial.h delete mode 100644 STM32F3/cores/maple/wirish/wirish.h delete mode 100644 STM32F3/cores/maple/wirish/wirish_analog.cpp delete mode 100644 STM32F3/cores/maple/wirish/wirish_debug.h delete mode 100644 STM32F3/cores/maple/wirish/wirish_digital.cpp delete mode 100644 STM32F3/cores/maple/wirish/wirish_math.cpp delete mode 100644 STM32F3/cores/maple/wirish/wirish_math.h delete mode 100644 STM32F3/cores/maple/wirish/wirish_shift.cpp delete mode 100644 STM32F3/cores/maple/wirish/wirish_time.cpp delete mode 100644 STM32F3/cores/maple/wirish/wirish_time.h delete mode 100644 STM32F3/cores/maple/wirish/wirish_types.h delete mode 100644 STM32F3/examples/Blinkf3/Blinkf3.ino delete mode 100644 STM32F3/examples/f3_buttondemo/f3_buttondemo.ino delete mode 100644 STM32F3/examples/f3_functionTimer/f3_functionTimer.ino delete mode 100644 STM32F3/examples/f3_gyrodemo/f3_gyrodemo.ino delete mode 100644 STM32F3/examples/f3_lsm303demo/f3_lsm303demo.ino delete mode 100644 STM32F3/examples/f3_ultrasonic/f3_ultrasonic.ino delete mode 100644 STM32F3/libraries/gyro/gyro.cpp delete mode 100644 STM32F3/libraries/gyro/gyro.h delete mode 100644 STM32F3/libraries/gyro/l3gd20.h delete mode 100644 STM32F3/libraries/lsm303/lsm303.cpp delete mode 100644 STM32F3/libraries/lsm303/lsm303.h delete mode 100644 STM32F3/libraries/lsm303/lsm303reg.h delete mode 100644 STM32F3/libraries/ringbuffer/ringbuffer.cpp delete mode 100644 STM32F3/libraries/ringbuffer/ringbuffer.h delete mode 100644 STM32F3/libraries/roboter/debug.cpp delete mode 100644 STM32F3/libraries/roboter/debug.h delete mode 100644 STM32F3/libraries/roboter/eeprom.cpp delete mode 100644 STM32F3/libraries/roboter/eeprom.h delete mode 100644 STM32F3/libraries/roboter/functiontimer.cpp delete mode 100644 STM32F3/libraries/roboter/functiontimer.h delete mode 100644 STM32F3/libraries/roboter/motor.cpp delete mode 100644 STM32F3/libraries/roboter/motor.h delete mode 100644 STM32F3/libraries/roboter/sound.cpp delete mode 100644 STM32F3/libraries/roboter/sound.h delete mode 100644 STM32F3/libraries/roboter/ultraschall.cpp delete mode 100644 STM32F3/libraries/roboter/ultraschall.h delete mode 100644 STM32F3/platform.txt delete mode 100644 STM32F3/variants/discovery_f3/board/board.h delete mode 100644 STM32F3/variants/discovery_f3/discovery_f3.cpp delete mode 100644 STM32F3/variants/discovery_f3/ld/common.inc delete mode 100644 STM32F3/variants/discovery_f3/ld/extra_libs.inc delete mode 100644 STM32F3/variants/discovery_f3/ld/flash.ld delete mode 100644 STM32F3/variants/discovery_f3/ld/jtag.ld delete mode 100644 STM32F3/variants/discovery_f3/ld/mem-flash.inc delete mode 100644 STM32F3/variants/discovery_f3/ld/mem-jtag.inc delete mode 100644 STM32F3/variants/discovery_f3/ld/mem-ram.inc delete mode 100644 STM32F3/variants/discovery_f3/ld/names.inc delete mode 100644 STM32F3/variants/discovery_f3/ld/ram.ld delete mode 100644 STM32F3/variants/discovery_f3/ld/vector_symbols.inc delete mode 100644 STM32F3/variants/discovery_f3/stm32_isrs.S delete mode 100644 STM32F3/variants/discovery_f3/stm32_vector_table.S delete mode 100644 STM32F3/variants/discovery_f3/wirish/start.S delete mode 100644 STM32F3/variants/discovery_f3/wirish/start_c.c diff --git a/STM32F3/README.md b/STM32F3/README.md deleted file mode 100644 index 75cd5a402..000000000 --- a/STM32F3/README.md +++ /dev/null @@ -1,45 +0,0 @@ -STM32F3 files have been supplied by Frank-Michael Krause. - -The API is not as up to date as in the STM F103 files. -It looks like this port is as the F103 files orginally were when I started work on the project. -The API is for pre- Arduino 1.0 and doesn't include a lot of functions in the 1.0 API, and the class inheritance will -be different in a number of places, most importantly in the Serial class. -Specifically Stream.cpp / .h are not present in this port. - - - --------------------- Details from Frank-Michael ---------------------------- - -This port of libmaple for Arduino-IDE is based on the inofficial F3 branch -of libmaple found on -https://github.com/ventosus/libmaple/tree/F3 -and supports at the moment the STM32F3Discovery board with programming via ST-link. -Linker is configured for linking to flash, not to RAM - -Changes by Frank-Michael Krause (mich dot krause at web dot de): - -- renaming some stm32f3 related files because the Arduino build system copy all objects to same directory so the source file names must be different -- selected the correct startup modules and linker scripts for board variant stm32f3discovery - -Notes: - -- the pin names as noted on stm32f3discovery board (PA0, PA1, ..., PF10) can be used as pin id -- usb is untested because I haven't used it really -- There are some libraries and examples related to the STM32F3discovery board. - They are commented mostly in german only because I wrote them for use at robotic club of a secondary school - and the kids like to have the documentation in german. - - gyro: Interface library for the gyro-chip of the stm32f3discovery, setup the gyro in FIFO mode and so - requiring update calls only every < 120ms - lsm303: Interface library for Acceleration sensor of the stm32f3discovery, magnetometer not yet supported (writing this driver is currently under work by a student at school) - ringbuffer: Class impelentig a ringbuffer with functions for adding time stampes per added element, averaging functions, accessing the stored data like an array - roboter: several functionalities needed to program a robot: - - dc motor control as known from Lego NXC language - - support for HC-SR04 ultrasonic sensors driven by interrupt or blocking direct measurement - - function timers based on timer interrupt - - modul for interfacing a 24Cxx I2C eeprom chip - - - - - diff --git a/STM32F3/boards.txt b/STM32F3/boards.txt deleted file mode 100644 index 98a184df4..000000000 --- a/STM32F3/boards.txt +++ /dev/null @@ -1,62 +0,0 @@ -# - -menu.opt=Optimize - -############################################################## -discovery_f3.name=STM32F3Discovery - -discovery_f3.upload.tool=stlink -discovery_f3.upload.protocol=stlink - -#discovery_f407.upload.use_1200bps_touch=false -discovery_f3.upload.file_type=bin -discovery_f3.upload.maximum_size=262144 -discovery_f3.upload.maximum_data_size=49152 - -#discovery_f3.upload.usbID=1EAF:0003 -#discovery_f3.upload.altID=1 -#discovery_f3.upload.auto_reset=true - -discovery_f3.build.mcu=cortex-m3 -discovery_f3.build.f_cpu=72000000L -discovery_f3.build.core=maple -discovery_f3.build.extra_flags=-DMCU_STM32F303VC -mthumb -DSTM32_XL_DENSITY -march=armv7-m -DSTM32F3 -DF303VC -DBOARD_discovery_f3 -discovery_f3.build.ldscript=ld/jtag.ld -discovery_f3.build.variant=discovery_f3 -discovery_f3.build.variant_system_lib=lib_f3.a -discovery_f3.build.vect=VECT_TAB_BASE -discovery_f3.build.density=STM32_XL_DENSITY -discovery_f3.build.error_led_port=GPIOE -discovery_f3.build.error_led_pin=8 -discovery_f3.build.board=STM32F3Discovery - -#-- Optimizations -discovery_f3.menu.opt.osstd=Smallest (default) -discovery_f3.menu.opt.osstd.build.flags.optimize=-Os -discovery_f3.menu.opt.osstd.build.flags.ldspecs= -discovery_f3.menu.opt.oslto=Smallest Code with LTO -discovery_f3.menu.opt.oslto.build.flags.optimize=-Os -flto -discovery_f3.menu.opt.oslto.build.flags.ldspecs=-flto -discovery_f3.menu.opt.o1std=Fast (-O1) -discovery_f3.menu.opt.o1std.build.flags.optimize=-O1 -discovery_f3.menu.opt.o1std.build.flags.ldspecs= -discovery_f3.menu.opt.o1lto=Fast (-O1) with LTO -discovery_f3.menu.opt.o1lto.build.flags.optimize=-O1 -flto -discovery_f3.menu.opt.o1lto.build.flags.ldspecs=-flto -discovery_f3.menu.opt.o2std=Faster (-O2) -discovery_f3.menu.opt.o2std.build.flags.optimize=-O2 -discovery_f3.menu.opt.o2std.build.flags.ldspecs= -discovery_f3.menu.opt.o2lto=Faster (-O2) with LTO -discovery_f3.menu.opt.o2lto.build.flags.optimize=-O2 -flto -discovery_f3.menu.opt.o2lto.build.flags.ldspecs=-flto -discovery_f3.menu.opt.o3std=Fastest (-O3) -discovery_f3.menu.opt.o3std.build.flags.optimize=-O3 -discovery_f3.menu.opt.o3std.build.flags.ldspecs= -discovery_f3.menu.opt.o3lto=Fastest (-O3) with LTO -discovery_f3.menu.opt.o3lto.build.flags.optimize=-O3 -flto -discovery_f3.menu.opt.o3lto.build.flags.ldspecs=-flto -discovery_f3.menu.opt.ogstd=Debug (-g) -discovery_f3.menu.opt.ogstd.build.flags.optimize=-Og -discovery_f3.menu.opt.ogstd.build.flags.ldspecs= -############################################################## - diff --git a/STM32F3/cores/maple/Arduino.h b/STM32F3/cores/maple/Arduino.h deleted file mode 100644 index 7278f8990..000000000 --- a/STM32F3/cores/maple/Arduino.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef Arduino_h -#define Arduino_h -#include "WProgram.h" -#endif diff --git a/STM32F3/cores/maple/WProgram.h b/STM32F3/cores/maple/WProgram.h deleted file mode 100644 index b24ec2a30..000000000 --- a/STM32F3/cores/maple/WProgram.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#ifndef _WIRISH_WPROGRAM_H_ -#define _WIRISH_WPROGRAM_H_ - -#include - -void setup(); -void loop(); - -#endif diff --git a/STM32F3/cores/maple/libmaple/adc.c b/STM32F3/cores/maple/libmaple/adc.c deleted file mode 100644 index 630a8a88f..000000000 --- a/STM32F3/cores/maple/libmaple/adc.c +++ /dev/null @@ -1,52 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/adc.c - * @author Marti Bolivar , - * Perry Hung , - * F3-port by Hanspeter Portner - * @brief Analog to digital converter routines - */ - -#include -#include -#include - -/** - * @brief Initialize an ADC peripheral. - * - * Initializes the RCC clock line for the given peripheral. Resets - * ADC device registers. - * - * @param dev ADC peripheral to initialize - */ -void adc_init(const adc_dev *dev) { - rcc_clk_enable(dev->clk_id); - rcc_reset_dev(dev->clk_id); -} diff --git a/STM32F3/cores/maple/libmaple/bkp.c b/STM32F3/cores/maple/libmaple/bkp.c deleted file mode 100644 index c48440b06..000000000 --- a/STM32F3/cores/maple/libmaple/bkp.c +++ /dev/null @@ -1,69 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/bkp.c - * @author F3-port by Hanspeter Portner - * @brief Backup register support (STM32F1 & STM32F3 only). - */ - -#include -#include -#include - -bkp_dev bkp = { - .regs = BKP_BASE, -}; -/** Backup device. */ -const bkp_dev *BKP = &bkp; - -void bkp_enable_writes(void) { - *bb_perip(&PWR_BASE->CR, PWR_CR_DBP_BIT) = 1; -} - -void bkp_disable_writes(void) { - *bb_perip(&PWR_BASE->CR, PWR_CR_DBP_BIT) = 0; -} - -uint16 bkp_read(uint8 reg) { - __IO uint32* dr = bkp_data_register(reg); - if (!dr) { - ASSERT(0); /* nonexistent register */ - return 0; - } - return (uint16)*dr; -} - -void bkp_write(uint8 reg, uint16 val) { - __IO uint32* dr = bkp_data_register(reg); - if (!dr) { - ASSERT(0); /* nonexistent register */ - return; - } - *dr = (uint32)val; -} - diff --git a/STM32F3/cores/maple/libmaple/dac.c b/STM32F3/cores/maple/libmaple/dac.c deleted file mode 100644 index d802d2b0c..000000000 --- a/STM32F3/cores/maple/libmaple/dac.c +++ /dev/null @@ -1,120 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Bryan Newbold. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/dac.c - * @brief Digital to analog converter support. - */ - -#include -#include -#include - -#if STM32_HAVE_DAC -dac_dev dac = { - .regs = DAC_BASE, -}; -const dac_dev *DAC = &dac; -#endif - -/** - * @brief Initialize the digital to analog converter - * @param dev DAC device - * @param flags Flags: - * DAC_CH1: Enable channel 1 - * DAC_CH2: Enable channel 2 - * @sideeffect May set PA4 or PA5 to INPUT_ANALOG - */ -void dac_init(const dac_dev *dev, uint32 flags) { - /* First turn on the clock */ - rcc_clk_enable(RCC_DAC); - rcc_reset_dev(RCC_DAC); - - if (flags & DAC_CH1) { - dac_enable_channel(dev, 1); - } - - if (flags & DAC_CH2) { - dac_enable_channel(dev, 2); - } -} - -/** - * @brief Write a 12-bit value to the DAC to output - * @param dev DAC device - * @param channel channel to select (1 or 2) - * @param val value to write - */ -void dac_write_channel(const dac_dev *dev, uint8 channel, uint16 val) { - switch(channel) { - case 1: - dev->regs->DHR12R1 = DAC_DHR12R1_DACC1DHR & val; - break; - case 2: - dev->regs->DHR12R2 = DAC_DHR12R2_DACC2DHR & val; - break; - } -} - -/** - * @brief Enable a DAC channel - * @param dev DAC device - * @param channel channel to enable, either 1 or 2 - * @sideeffect May change pin mode of PA4 or PA5 - */ -void dac_enable_channel(const dac_dev *dev, uint8 channel) { - /* - * Setup ANALOG mode on PA4 and PA5. This mapping is consistent - * across all supported STM32s with a DAC. - */ - switch (channel) { - case 1: - gpio_set_mode(GPIOA, 4, GPIO_MODE_ANALOG); - dev->regs->CR |= DAC_CR_EN1; - break; - case 2: - gpio_set_mode(GPIOA, 5, GPIO_MODE_ANALOG); - dev->regs->CR |= DAC_CR_EN2; - break; - } -} - -/** - * @brief Disable a DAC channel - * @param dev DAC device - * @param channel channel to disable, either 1 or 2 - */ -void dac_disable_channel(const dac_dev *dev, uint8 channel) { - switch (channel) { - case 1: - dev->regs->CR &= ~DAC_CR_EN1; - break; - case 2: - dev->regs->CR &= ~DAC_CR_EN2; - break; - } -} diff --git a/STM32F3/cores/maple/libmaple/dma.c b/STM32F3/cores/maple/libmaple/dma.c deleted file mode 100644 index 1dc875e3b..000000000 --- a/STM32F3/cores/maple/libmaple/dma.c +++ /dev/null @@ -1,82 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Michael Hope. - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/dma.c - * @author Marti Bolivar ; - * Original implementation by Michael Hope - * @brief Portable DMA routines. - */ - -#include -#include "dma_private.h" -#include "stm32_private.h" - -/* - * Convenience routines - */ - -/** - * @brief Initialize a DMA device. - * @param dev Device to initialize. - */ -void dma_init(dma_dev *dev) { - rcc_clk_enable(dev->clk_id); -} - -/* - * Private API - */ - -enum dma_atype _dma_addr_type(__IO void *addr) { - switch (stm32_block_purpose((void*)addr)) { - /* Notice we're treating the code block as memory here. That's - * correct for addresses in Flash and in [0x0, 0x7FFFFFF] - * (provided that those addresses are aliased to Flash, SRAM, or - * FSMC, depending on BOOT[01] and possibly SYSCFG_MEMRMP). It's - * not correct for other addresses in the code block, but those - * will (hopefully) just fail-fast with transfer or bus errors. If - * lots of people get confused, it might be worth being more - * careful here. */ - case STM32_BLOCK_CODE: /* Fall through */ - case STM32_BLOCK_SRAM: /* ... */ - case STM32_BLOCK_FSMC_1_2: /* ... */ - case STM32_BLOCK_FSMC_3_4: - return DMA_ATYPE_MEM; - case STM32_BLOCK_PERIPH: - return DMA_ATYPE_PER; - case STM32_BLOCK_FSMC_REG: /* Fall through */ - /* Is this right? I can't think of a reason to DMA into or out - * of the FSMC registers. [mbolivar] */ - case STM32_BLOCK_UNUSED: /* ... */ - case STM32_BLOCK_CORTEX_INTERNAL: /* ... */ - return DMA_ATYPE_OTHER; - default: - ASSERT(0); /* Can't happen */ - return DMA_ATYPE_OTHER; - } -} diff --git a/STM32F3/cores/maple/libmaple/dma_private.h b/STM32F3/cores/maple/libmaple/dma_private.h deleted file mode 100644 index 93385255c..000000000 --- a/STM32F3/cores/maple/libmaple/dma_private.h +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -#ifndef _LIBMAPLE_DMA_PRIVATE_H_ -#define _LIBMAPLE_DMA_PRIVATE_H_ - -#include -#include - -/* - * IRQ handling - */ - -/* Wrap this in an ifdef to shut up GCC. (We provide DMA_GET_HANDLER - * in the series support files, which need dma_irq_handler().) */ -#ifdef DMA_GET_HANDLER -static __always_inline void dma_irq_handler(dma_dev *dev, dma_tube tube) { - void (*handler)(void) = DMA_GET_HANDLER(dev, tube); - if (handler) { - handler(); - dma_clear_isr_bits(dev, tube); /* in case handler doesn't */ - } -} -#endif - -/* - * Conveniences for dealing with tube sources/destinations - */ - -enum dma_atype { - DMA_ATYPE_MEM, - DMA_ATYPE_PER, - DMA_ATYPE_OTHER, -}; - -enum dma_atype _dma_addr_type(__IO void *addr); - -#endif diff --git a/STM32F3/cores/maple/libmaple/exc.S b/STM32F3/cores/maple/libmaple/exc.S deleted file mode 100644 index 7631e4885..000000000 --- a/STM32F3/cores/maple/libmaple/exc.S +++ /dev/null @@ -1,101 +0,0 @@ -/* ***************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - * ****************************************************************************/ - -# On an exception, push a fake stack thread mode stack frame and redirect -# thread execution to a thread mode error handler - -# From RM008: -# The SP is decremented by eight words by the completion of the stack push. -# Figure 5-1 shows the contents of the stack after an exception pre-empts the -# current program flow. -# -# Old SP--> -# xPSR -# PC -# LR -# r12 -# r3 -# r2 -# r1 -# SP--> r0 - -.text -.globl __exc_hardfault -.globl __exc_nmi -.globl __exc_hardfault -.globl __exc_memmanage -.globl __exc_busfault -.globl __exc_usagefault - -.code 16 -.thumb_func -__exc_nmi: - mov r0, #1 - b __default_exc - -.thumb_func -__exc_hardfault: - mov r0, #2 - b __default_exc - -.thumb_func -__exc_memmanage: - mov r0, #3 - b __default_exc - -.thumb_func -__exc_busfault: - mov r0, #4 - b __default_exc - -.thumb_func -__exc_usagefault: - mov r0, #5 - b __default_exc - -.thumb_func -__default_exc: - ldr r2, NVIC_CCR @ Enable returning to thread mode even if there are - mov r1 ,#1 @ pending exceptions. See flag NONEBASETHRDENA. - str r1, [r2] - cpsid i @ Disable global interrupts - ldr r2, SYSTICK_CSR @ Disable systick handler - mov r1, #0 - str r1, [r2] - ldr r1, CPSR_MASK @ Set default CPSR - push {r1} - ldr r1, TARGET_PC @ Set target pc - push {r1} - sub sp, sp, #24 @ Don't care - ldr r1, EXC_RETURN @ Return to thread mode - mov lr, r1 - bx lr @ Exception exit - -.align 4 -CPSR_MASK: .word 0x61000000 -EXC_RETURN: .word 0xFFFFFFF9 -TARGET_PC: .word __error -NVIC_CCR: .word 0xE000ED14 @ NVIC configuration control register -SYSTICK_CSR: .word 0xE000E010 @ Systick control register - diff --git a/STM32F3/cores/maple/libmaple/exti.c b/STM32F3/cores/maple/libmaple/exti.c deleted file mode 100644 index f59c0eb0d..000000000 --- a/STM32F3/cores/maple/libmaple/exti.c +++ /dev/null @@ -1,293 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/exti.c - * @brief External interrupt control routines - */ - -#include -#include -#include -#include - -static inline void dispatch_single_exti(uint32 exti_num); -static inline void dispatch_extis(uint32 start, uint32 stop); - -/* - * Internal state - */ - -typedef struct exti_channel { - void (*handler)(void *); - void *arg; -} exti_channel; - -static exti_channel exti_channels[] = { - { .handler = NULL, .arg = NULL }, // EXTI0 - { .handler = NULL, .arg = NULL }, // EXTI1 - { .handler = NULL, .arg = NULL }, // EXTI2 - { .handler = NULL, .arg = NULL }, // EXTI3 - { .handler = NULL, .arg = NULL }, // EXTI4 - { .handler = NULL, .arg = NULL }, // EXTI5 - { .handler = NULL, .arg = NULL }, // EXTI6 - { .handler = NULL, .arg = NULL }, // EXTI7 - { .handler = NULL, .arg = NULL }, // EXTI8 - { .handler = NULL, .arg = NULL }, // EXTI9 - { .handler = NULL, .arg = NULL }, // EXTI10 - { .handler = NULL, .arg = NULL }, // EXTI11 - { .handler = NULL, .arg = NULL }, // EXTI12 - { .handler = NULL, .arg = NULL }, // EXTI13 - { .handler = NULL, .arg = NULL }, // EXTI14 - { .handler = NULL, .arg = NULL }, // EXTI15 -}; - -/* - * Portable routines - */ - -/** - * @brief Register a handler to run upon external interrupt. - * - * This function assumes that the interrupt request corresponding to - * the given external interrupt is masked. - * - * @param num External interrupt line number. - * @param port Port to use as source input for external interrupt. - * @param handler Function handler to execute when interrupt is triggered. - * @param mode Type of transition to trigger on, one of: - * EXTI_RISING, EXTI_FALLING, EXTI_RISING_FALLING. - * @see exti_num - * @see exti_cfg - * @see voidFuncPtr - * @see exti_trigger_mode - */ -void exti_attach_interrupt(exti_num num, - exti_cfg port, - voidFuncPtr handler, - exti_trigger_mode mode) { - // Call callback version with arg being null - exti_attach_callback(num, port, (voidArgumentFuncPtr)handler, NULL, mode); -} - -/** - * @brief Register a handler with an argument to run upon external interrupt. - * - * This function assumes that the interrupt request corresponding to - * the given external interrupt is masked. - * - * @param num External interrupt line number. - * @param port Port to use as source input for external interrupt. - * @param handler Function handler to execute when interrupt is triggered. - * @param arg Argument to pass to the interrupt handler. - * @param mode Type of transition to trigger on, one of: - * EXTI_RISING, EXTI_FALLING, EXTI_RISING_FALLING. - * @see exti_num - * @see exti_cfg - * @see voidFuncPtr - * @see exti_trigger_mode - */ -void exti_attach_callback(exti_num num, - exti_cfg port, - voidArgumentFuncPtr handler, - void *arg, - exti_trigger_mode mode) { - ASSERT(handler); - - /* Register the handler */ - exti_channels[num].handler = handler; - exti_channels[num].arg = arg; - - /* Set trigger mode */ - switch (mode) { - case EXTI_RISING: - bb_peri_set_bit(&EXTI_BASE->RTSR, num, 1); - break; - case EXTI_FALLING: - bb_peri_set_bit(&EXTI_BASE->FTSR, num, 1); - break; - case EXTI_RISING_FALLING: - bb_peri_set_bit(&EXTI_BASE->RTSR, num, 1); - bb_peri_set_bit(&EXTI_BASE->FTSR, num, 1); - break; - } - - /* Use the chip-specific exti_select() to map num to port */ - exti_select(num, port); - - /* Unmask external interrupt request */ - bb_peri_set_bit(&EXTI_BASE->IMR, num, 1); - - /* Enable the interrupt line */ - switch(num) - { - case EXTI0: - nvic_irq_enable(NVIC_EXTI0); - break; - case EXTI1: - nvic_irq_enable(NVIC_EXTI1); - break; - case EXTI2: - nvic_irq_enable(NVIC_EXTI2); - break; - case EXTI3: - nvic_irq_enable(NVIC_EXTI3); - break; - case EXTI4: - nvic_irq_enable(NVIC_EXTI4); - break; - case EXTI5: - case EXTI6: - case EXTI7: - case EXTI8: - case EXTI9: - nvic_irq_enable(NVIC_EXTI_9_5); - break; - case EXTI10: - case EXTI11: - case EXTI12: - case EXTI13: - case EXTI14: - case EXTI15: - nvic_irq_enable(NVIC_EXTI_15_10); - break; - } -} - -/** - * @brief Unregister an external interrupt handler - * @param num External interrupt line to disable. - * @see exti_num - */ -void exti_detach_interrupt(exti_num num) { - /* First, mask the interrupt request */ - bb_peri_set_bit(&EXTI_BASE->IMR, num, 0); - - /* Then, clear the trigger selection registers */ - bb_peri_set_bit(&EXTI_BASE->FTSR, num, 0); - bb_peri_set_bit(&EXTI_BASE->RTSR, num, 0); - - /* Finally, unregister the user's handler */ - exti_channels[num].handler = NULL; - exti_channels[num].arg = NULL; -} - -/* - * Private routines - */ - -void exti_do_select(__IO uint32 *exti_cr, exti_num num, exti_cfg port) { - uint32 shift = 4 * (num % 4); - uint32 cr = *exti_cr; - cr &= ~(0xF << shift); - cr |= port << shift; - *exti_cr = cr; -} - -/* - * Interrupt handlers - */ - -void __irq_exti0(void) { - dispatch_single_exti(EXTI0); -} - -void __irq_exti1(void) { - dispatch_single_exti(EXTI1); -} - -void __irq_exti2(void) { - dispatch_single_exti(EXTI2); - // FIXME handle capatitive touch IRQ on F302/303 -} - -void __irq_exti3(void) { - dispatch_single_exti(EXTI3); -} - -void __irq_exti4(void) { - dispatch_single_exti(EXTI4); -} - -void __irq_exti9_5(void) { - dispatch_extis(5, 9); -} - -void __irq_exti15_10(void) { - dispatch_extis(10, 15); -} - -/* - * Auxiliary functions - */ - -/* Clear the pending bits for EXTIs whose bits are set in exti_msk. - * - * If a pending bit is cleared as the last instruction in an ISR, it - * won't actually be cleared in time and the ISR will fire again. To - * compensate, this function NOPs for 2 cycles after clearing the - * pending bits to ensure it takes effect. */ -static __always_inline void clear_pending_msk(uint32 exti_msk) { - EXTI_BASE->PR = exti_msk; - asm volatile("nop"); - asm volatile("nop"); -} - -/* This dispatch routine is for non-multiplexed EXTI lines only; i.e., - * it doesn't check EXTI_PR. */ -static __always_inline void dispatch_single_exti(uint32 exti) { - voidArgumentFuncPtr handler = exti_channels[exti].handler; - - if (!handler) { - return; - } - - handler(exti_channels[exti].arg); - clear_pending_msk(1U << exti); -} - -/* Dispatch routine for EXTIs which share an IRQ. */ -static __always_inline void dispatch_extis(uint32 start, uint32 stop) { - uint32 pr = EXTI_BASE->PR; - uint32 handled_msk = 0; - uint32 exti; - - /* Dispatch user handlers for pending EXTIs. */ - for (exti = start; exti <= stop; exti++) { - uint32 eb = (1U << exti); - if (pr & eb) { - voidArgumentFuncPtr handler = exti_channels[exti].handler; - if (handler) { - handler(exti_channels[exti].arg); - handled_msk |= eb; - } - } - } - - /* Clear the pending bits for handled EXTIs. */ - clear_pending_msk(handled_msk); -} diff --git a/STM32F3/cores/maple/libmaple/exti_private.h b/STM32F3/cores/maple/libmaple/exti_private.h deleted file mode 100644 index 221cae454..000000000 --- a/STM32F3/cores/maple/libmaple/exti_private.h +++ /dev/null @@ -1,34 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -#ifndef _LIBMAPLE_EXTI_PRIVATE_H_ -#define _LIBMAPLE_EXTI_PRIVATE_H_ - -#include - -void exti_do_select(__IO uint32 *exti_cr, exti_num num, exti_cfg port); - -#endif diff --git a/STM32F3/cores/maple/libmaple/flash.c b/STM32F3/cores/maple/libmaple/flash.c deleted file mode 100644 index c57bbbf66..000000000 --- a/STM32F3/cores/maple/libmaple/flash.c +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/flash.c - * @brief Flash management functions - */ - -#include -#include - -/** - * @brief Set flash wait states - * - * Note that not all wait states are available on every MCU. See the - * Flash programming manual for your MCU for restrictions on the - * allowed value of wait_states for a given system clock (SYSCLK) - * frequency. - * - * @param wait_states number of wait states (one of - * FLASH_WAIT_STATE_0, FLASH_WAIT_STATE_1, - * ..., FLASH_WAIT_STATE_7). - */ -void flash_set_latency(uint32 wait_states) { - uint32 val = FLASH_BASE->ACR; - - val &= ~FLASH_ACR_LATENCY; - val |= wait_states; - - FLASH_BASE->ACR = val; -} diff --git a/STM32F3/cores/maple/libmaple/gpio.c b/STM32F3/cores/maple/libmaple/gpio.c deleted file mode 100644 index 6e63d2f08..000000000 --- a/STM32F3/cores/maple/libmaple/gpio.c +++ /dev/null @@ -1,50 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/gpio.c - * @brief Generic STM32 GPIO support. - */ - -#include -#include - -/* - * GPIO routines - */ - -/** - * Initialize a GPIO device. - * - * Enables the clock for and resets the given device. - * - * @param dev GPIO device to initialize. - */ -void gpio_init(gpio_dev *dev) { - rcc_clk_enable(dev->clk_id); - rcc_reset_dev(dev->clk_id); -} diff --git a/STM32F3/cores/maple/libmaple/i2c.c b/STM32F3/cores/maple/libmaple/i2c.c deleted file mode 100644 index 87b96d1f9..000000000 --- a/STM32F3/cores/maple/libmaple/i2c.c +++ /dev/null @@ -1,52 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/i2c.c - * @author Perry Hung , - * F3-port by Hanspeter Portner - * @brief Inter-Integrated Circuit (I2C) support. - * - * Currently, only master mode is supported. - */ - -#include "i2c_private.h" - -#include -#include -#include -#include -#include -#include - -#include - -void i2c_init(i2c_dev *dev) { - rcc_reset_dev(dev->clk_id); - rcc_clk_enable(dev->clk_id); -} diff --git a/STM32F3/cores/maple/libmaple/i2c_private.h b/STM32F3/cores/maple/libmaple/i2c_private.h deleted file mode 100644 index 4857955b7..000000000 --- a/STM32F3/cores/maple/libmaple/i2c_private.h +++ /dev/null @@ -1,75 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#ifndef _LIBMAPLE_I2C_PRIVATE_H_ -#define _LIBMAPLE_I2C_PRIVATE_H_ - -#include - -/* For old-style definitions (SDA/SCL on same GPIO device) */ -#define I2C_DEV_OLD(num, port, sda, scl) \ - { \ - .regs = I2C##num##_BASE, \ - .gpio_port = port, \ - .scl_port = NULL, \ - .sda_port = NULL, \ - .sda_pin = sda, \ - .scl_pin = scl, \ - .clk_id = RCC_I2C##num, \ - .ev_nvic_line = NVIC_I2C##num##_EV, \ - .er_nvic_line = NVIC_I2C##num##_ER, \ - .state = I2C_STATE_DISABLED, \ - } - -/* For new-style definitions (SDA/SCL may be on different GPIO devices) */ -#define I2C_DEV_NEW(num, sdaport, sdabit, sclport, sclbit) \ - { \ - .regs = I2C##num##_BASE, \ - .gpio_port = NULL, \ - .scl_port = sclport, \ - .scl_pin = sclbit, \ - .sda_port = sdaport, \ - .sda_pin = sdabit, \ - .clk_id = RCC_I2C##num, \ - .ev_nvic_line = NVIC_I2C##num##_EV, \ - .er_nvic_line = NVIC_I2C##num##_ER, \ - .state = I2C_STATE_DISABLED, \ - } - -void _i2c_irq_handler(i2c_dev *dev); -void _i2c_irq_error_handler(i2c_dev *dev); - -struct gpio_dev; - -static inline struct gpio_dev* scl_port(const i2c_dev *dev) { - return (dev->gpio_port == NULL) ? dev->scl_port : dev->gpio_port; -} - -static inline struct gpio_dev* sda_port(const i2c_dev *dev) { - return (dev->gpio_port == NULL) ? dev->sda_port : dev->gpio_port; -} - -#endif /* _LIBMAPLE_I2C_PRIVATE_H_ */ diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/adc.h b/STM32F3/cores/maple/libmaple/include/libmaple/adc.h deleted file mode 100644 index e2d711d3a..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/adc.h +++ /dev/null @@ -1,319 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/adc.h - * @author Marti Bolivar , - * Perry Hung , - * F3-port by Hanspeter Portner - * @brief Analog-to-Digital Conversion (ADC) header. - */ - -#ifndef _LIBMAPLE_ADC_H_ -#define _LIBMAPLE_ADC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include -#include - -/** - * TODO document - */ -typedef struct adc_callback_data { - uint32 irq_flags; - void *arg; -} adc_callback_data; - -/** - * TODO document - */ -typedef struct adc_private_data { - void (*handler)(adc_callback_data*); - uint32 handler_flags; - adc_callback_data cb_data; -} adc_private_data; - -/* Pull in the series header - * - * IMPORTANT: The series header must define the following: - * - * - enum adc_extsel_event (and typedef to adc_extsel_event): One per - * external event used to trigger start of conversion of a regular - * group. If two different series support the same event as a - * trigger, they must use the same token for the enumerator for that - * event. (The value of the enumerator is of course allowed to be - * different). - * - * - enum adc_smp_rate (and typedef to adc_smp_rate): One per - * available sampling time. These must be in the form ADC_SMPR_X_Y - * for X.Y cycles (e.g. ADC_SMPR_1_5 means 1.5 cycles), or - * ADC_SMPR_X for X cycles (e.g. ADC_SMPR_3 means 3 cycles). - * - * - enum adc_prescaler (and typedef): One per available prescaler, - * suitable for adc_set_prescaler. Series which have the same - * prescaler dividers (e.g. STM32F1 and STM32F2 both divide PCLK2 by - * 2, 4, 6, or 8) must provide the same tokens as enumerators, for - * portability. - */ - -#include - -/* - * Routines - */ - -extern void adc_init(const adc_dev *dev); - -/** - * @brief Set external event select for regular group - * @param dev ADC device - * @param event Event used to trigger the start of conversion. - * @see adc_extsel_event - */ -extern void adc_set_extsel(const adc_dev *dev, adc_extsel_event event); - -/** - * @brief Set the sample rate for all channels on an ADC device. - * - * Don't call this during conversion. - * - * @param dev adc device - * @param smp_rate sample rate to set - * @see adc_smp_rate - */ -extern void adc_set_sample_rate(const adc_dev *dev, adc_smp_rate smp_rate); - -/** - * @brief Enable scan mode for an ADC. - * - * In scan mode, the ADC converts all channels in a regular or - * injected sequence. After each conversion is done, the ADC - * automatically starts converting the next channel in the sequence. - * - * Scan mode is disabled by default. - * - * @see adc_disable_scan() - */ -extern void adc_enable_scan(const adc_dev *dev); - -/** - * @brief Disable scan mode for an ADC. - * - * This is the default setting. - * - * @see adc_enable_scan() - */ -extern void adc_disable_scan(const adc_dev *dev); - -/** - * @brief Enable continuous mode for an ADC. - * - * In this mode, the ADC will automatically perform conversions - * continuously until taken out of this mode or disabled. - * - * Continuous mode is disabled by default. - * - * @see adc_disable_continuous() - */ -extern void adc_enable_continuous(const adc_dev *dev); - -/** - * @brief Disable continuous mode for an ADC. - * - * This is the default setting. - * - * @see adc_enable_continuous() - */ -extern void adc_disable_continuous(const adc_dev *dev); - -/** - * @brief Set the sequence of channels to convert. - * - * This sets the (regular) sequence of up to 16 channels to convert. - * - * @param dev ADC device - * @param channels ADC channels to convert; these can repeat and may - * be in any order. - * @param len Length of `channels', from 1 to 16. - * @see adc_start_conv() - */ -extern void adc_set_conv_seq(const adc_dev *dev, const uint8 *channels, uint8 len); - -/** - * @brief Attach an interrupt handler and enable its interrupts. - * - * This function sets `handler' as the function to be called when any - * ADC interrupts for `dev' occur. At most one ADC interrupt handler - * may be attached at any time. Subsequent calls to this function will - * overwrite any previously attached handler. - * - * When `handler' is called, its argument will point to a struct - * adc_callback_data. The .irq_flags field in this struct will be a - * logical OR of adc_interrupt_id values encoding the reason(s) for - * the call. Its .arg field will be the `arg' argument to this - * function. - * - * The interrupt bits set in the adc_callback_data's .irq_flags will - * always be a subset of those set in the `interrupt_flags' argument - * to this function. That is, interrupts not given here in the - * `interrupt_flags' argument will never cause `handler' to be - * called. This has the effect that any enabled ADC interrupts not - * specified in `interrupt_flags' will be ignored. - * - * This function additionally enables the ADC interrupts specified by - * `interrupt_flags'. - * - * @param dev ADC device whose interrupts to attach to. - * @param interrupt_flags Logical or of adc_interrupt_id values - * specifying interrupts to enable. - * @param handler Interrupt handler to call when any interrupt in - * interrupt_flags occurs. - * @param arg Value to store in .arg field of handler's callback data. - * @see enum adc_interrupt_id - * @see struct adc_callback_data - */ -extern void adc_attach_interrupt(const adc_dev *dev, uint32 interrupt_flags, - void (*handler)(adc_callback_data*), void *arg); - -/** - * @brief Disable ADC interrupts and detach interrupt handlers. - * - * This function disables all interrupts for `dev', and unsets any - * handler attached with adc_attach_interrupt(). - * - * @param dev ADC device whose handler to detach. - */ -extern void adc_detach_interrupt(const adc_dev *dev); - -/** - * @brief Enable ADC interrupts - * @param dev ADC device - * @param interrupt_flags Logical or of adc_interrupt_id values to enable. - * @see adc_disable_interrupt() - * @see adc_attach_interrupt() - */ -extern void adc_enable_interrupts(const adc_dev *dev, uint32 interrupt_flags); - -/** - * @brief Disable ADC interrupts. - * @param dev ADC device - * @param interrupt_flags Logical or of adc_interrupt_id values to disable. - * @brief adc_enable_interrupt() - */ -extern void adc_disable_interrupts(const adc_dev *dev, uint32 interrupt_flags); - -/** - * @brief Perform a single synchronous software triggered conversion on a - * channel. - * @param dev ADC device to use for reading. - * @param channel channel to convert - * @return conversion result - */ -extern uint16 adc_read(const adc_dev *dev, uint8 channel); - -/** - * @brief Set the ADC prescaler. - * - * This determines the ADC clock for all devices. - */ -extern void adc_set_prescaler(adc_prescaler pre); - -/** - * @brief Call a function on all ADC devices. - * @param fn Function to call on each ADC device. - */ -extern void adc_foreach(void (*fn)(const adc_dev*)); - -struct gpio_dev; -/** - * @brief Configure a GPIO pin for ADC conversion. - * @param dev ADC device to use for conversion (currently ignored on - * all targets). - * @param gdev GPIO device to configure. - * @param bit Bit on gdev to configure for ADC conversion. - */ -extern void adc_config_gpio(const struct adc_dev *dev, - struct gpio_dev *gdev, - uint8 bit); - -/** - * @brief Enable an ADC and configure it for single conversion mode. - * - * This function performs any initialization necessary to allow the - * ADC device to perform a single synchronous regular software - * triggered conversion, using adc_read(). - * - * @param dev Device to enable. - * @see adc_read() - */ -extern void adc_enable_single_swstart(const adc_dev* dev); - -/** - * @brief Set the regular channel sequence length. - * - * Defines the total number of conversions in the regular channel - * conversion sequence. - * - * @param dev ADC device. - * @param length Regular channel sequence length, from 1 to 16. - */ -extern void adc_set_reg_seqlen(const adc_dev *dev, uint8 length); - -/** - * @brief Enable an adc peripheral - * @param dev ADC device to enable - */ -extern void adc_enable(const adc_dev *dev); - -/** - * @brief Disable an ADC peripheral - * @param dev ADC device to disable - */ -extern void adc_disable(const adc_dev *dev); - -/** - * @brief Disable all ADC peripherals. - */ -static inline void adc_disable_all(void) { - adc_foreach(adc_disable); -} - -/* - * private - */ -extern void _adc_enable_dev_irq(const adc_dev *dev); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/bitband.h b/STM32F3/cores/maple/libmaple/include/libmaple/bitband.h deleted file mode 100644 index 6e77991bd..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/bitband.h +++ /dev/null @@ -1,128 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/bitband.h - * - * @brief Bit-banding utility functions - */ - -#ifndef _LIBMAPLE_BITBAND_H_ -#define _LIBMAPLE_BITBAND_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define BB_SRAM_REF 0x20000000 -#define BB_SRAM_BASE 0x22000000 -#define BB_PERI_REF 0x40000000 -#define BB_PERI_BASE 0x42000000 - -static inline volatile uint32* __bb_addr(volatile void*, - uint32, - uint32, - uint32); - -/** - * @brief Obtain a pointer to the bit-band address corresponding to a - * bit in a volatile SRAM address. - * @param address Address in the bit-banded SRAM region - * @param bit Bit in address to bit-band - */ -static inline volatile uint32* bb_sramp(volatile void *address, uint32 bit) { - return __bb_addr(address, bit, BB_SRAM_BASE, BB_SRAM_REF); -} - -/** - * @brief Get a bit from an address in the SRAM bit-band region. - * @param address Address in the SRAM bit-band region to read from - * @param bit Bit in address to read - * @return bit's value in address. - */ -static inline uint8 bb_sram_get_bit(volatile void *address, uint32 bit) { - return *bb_sramp(address, bit); -} - -/** - * @brief Set a bit in an address in the SRAM bit-band region. - * @param address Address in the SRAM bit-band region to write to - * @param bit Bit in address to write to - * @param val Value to write for bit, either 0 or 1. - */ -static inline void bb_sram_set_bit(volatile void *address, - uint32 bit, - uint8 val) { - *bb_sramp(address, bit) = val; -} - -/** - * @brief Obtain a pointer to the bit-band address corresponding to a - * bit in a peripheral address. - * @param address Address in the bit-banded peripheral region - * @param bit Bit in address to bit-band - */ -static inline volatile uint32* bb_perip(volatile void *address, uint32 bit) { - return __bb_addr(address, bit, BB_PERI_BASE, BB_PERI_REF); -} - -/** - * @brief Get a bit from an address in the peripheral bit-band region. - * @param address Address in the peripheral bit-band region to read from - * @param bit Bit in address to read - * @return bit's value in address. - */ -static inline uint8 bb_peri_get_bit(volatile void *address, uint32 bit) { - return *bb_perip(address, bit); -} - -/** - * @brief Set a bit in an address in the peripheral bit-band region. - * @param address Address in the peripheral bit-band region to write to - * @param bit Bit in address to write to - * @param val Value to write for bit, either 0 or 1. - */ -static inline void bb_peri_set_bit(volatile void *address, - uint32 bit, - uint8 val) { - *bb_perip(address, bit) = val; -} - -static inline volatile uint32* __bb_addr(volatile void *address, - uint32 bit, - uint32 bb_base, - uint32 bb_ref) { - return (volatile uint32*)(bb_base + ((uint32)address - bb_ref) * 32 + - bit * 4); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/bkp.h b/STM32F3/cores/maple/libmaple/include/libmaple/bkp.h deleted file mode 100644 index 9b0047029..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/bkp.h +++ /dev/null @@ -1,100 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/bkp.h - * @author F3-port by Hanspeter Portner - * @brief Backup register support (STM32F1 & STM32F3 only). - */ - -#ifndef _LIBMAPLE_BKP_H_ -#define _LIBMAPLE_BKP_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#include - -/** Backup peripheral device type. */ -typedef struct bkp_dev { - bkp_reg_map *regs; /**< Register map */ -} bkp_dev; - -extern const struct bkp_dev *BKP; - -/* - * this function needs to be implemented for each series separately - */ -extern inline __IO uint32* bkp_data_register(uint8 reg); - -/** - * @brief Initialize backup interface. - * - * Enables the power and backup interface clocks, and resets the - * backup device. - */ -void bkp_init(void); - -/** - * Enable write access to the backup registers. Backup interface must - * be initialized for subsequent register writes to work. - * @see bkp_init() - */ -void bkp_enable_writes(void); - -/** - * Disable write access to the backup registers. - */ -void bkp_disable_writes(void); - -/** - * Read a value from given backup data register. - * @param reg Data register to read, from 1 to BKP_NR_DATA_REGS (10 on - * medium-density devices, 42 on high-density devices). - */ -uint16 bkp_read(uint8 reg); - -/** - * @brief Write a value to given data register. - * - * Write access to backup registers must be enabled. - * - * @param reg Data register to write, from 1 to BKP_NR_DATA_REGS (10 - * on medium-density devices, 42 on high-density devices). - * @param val Value to write into the register. - * @see bkp_enable_writes() - */ -void bkp_write(uint8 reg, uint16 val); - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/comp.h b/STM32F3/cores/maple/libmaple/include/libmaple/comp.h deleted file mode 100644 index 508ba639c..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/comp.h +++ /dev/null @@ -1,46 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/include/libmaple/fpu.h - * @author F3-port by Hanspeter Portner - * @brief Floating Point Unit (COMP) interace. - */ - -#ifndef _LIBMAPLE_COMP_H_ -#define _LIBMAPLE_COMP_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/dac.h b/STM32F3/cores/maple/libmaple/include/libmaple/dac.h deleted file mode 100644 index 56bfdc480..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/dac.h +++ /dev/null @@ -1,158 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2010 Bryan Newbold. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/dac.h - * @brief Digital to analog converter support. - */ - -/* See notes/dac.txt for more info */ - -#ifndef _LIBMAPLE_DAC_H_ -#define _LIBMAPLE_DAC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include -#include -#include - -/* - * Register map base and device pointers. - * - * The DACs are the same on all supported targets, so it's not worth - * repeating these in the series headers. - */ - -#define DAC_BASE ((struct dac_reg_map*)0x40007400) - -/** DAC device type. */ -typedef struct dac_dev { - dac_reg_map *regs; /**< Register map */ -} dac_dev; - -#if STM32_HAVE_DAC -extern const dac_dev *DAC; -#endif - -/* - * Register bit definitions - */ - -/* Control register */ - -/* Channel 1 control */ -#define DAC_CR_EN1 (1U << 0) /* Enable */ -#define DAC_CR_BOFF1 (1U << 1) /* Output buffer disable */ -#define DAC_CR_TEN1 (1U << 2) /* Trigger enable */ -#define DAC_CR_TSEL1 (0x7 << 3) /* Trigger selection */ -#define DAC_CR_WAVE1 (0x3 << 6) /* Noise/triangle wave */ -#define DAC_CR_MAMP1 (0xF << 8) /* Mask/amplitude selector */ -#define DAC_CR_DMAEN1 (1U << 12) /* DMA enable */ -/* Channel 2 control */ -#define DAC_CR_EN2 (1U << 16) /* Enable */ -#define DAC_CR_BOFF2 (1U << 17) /* Output buffer disable */ -#define DAC_CR_TEN2 (1U << 18) /* Trigger enable */ -#define DAC_CR_TSEL2 (0x7 << 19) /* Trigger selection */ -#define DAC_CR_WAVE2 (0x3 << 22) /* Noise/triangle wave */ -#define DAC_CR_MAMP2 (0xF << 24) /* Mask/amplitude selector */ -#define DAC_CR_DMAEN2 (1U << 28) /* DMA enable */ - -/* Software trigger register */ - -#define DAC_SWTRIGR_SWTRIG1 (1U << 0) /* Channel 1 software trigger */ -#define DAC_SWTRIGR_SWTRIG2 (1U << 1) /* Channel 2 software trigger */ - -/* Channel 1 12-bit right-aligned data holding register */ - -#define DAC_DHR12R1_DACC1DHR 0x00000FFF - -/* Channel 1 12-bit left-aligned data holding register */ - -#define DAC_DHR12L1_DACC1DHR 0x0000FFF0 - -/* Channel 1 8-bit left-aligned data holding register */ - -#define DAC_DHR8R1_DACC1DHR 0x000000FF - -/* Channel 2 12-bit right-aligned data holding register */ - -#define DAC_DHR12R2_DACC2DHR 0x00000FFF - -/* Channel 2 12-bit left-aligned data holding register */ - -#define DAC_DHR12L2_DACC2DHR 0x0000FFF0 - -/* Channel 2 8-bit left-aligned data holding register */ - -#define DAC_DHR8R2_DACC2DHR 0x000000FF - -/* Dual DAC 12-bit right-aligned data holding register */ - -#define DAC_DHR12RD_DACC1DHR 0x00000FFF -#define DAC_DHR12RD_DACC2DHR 0x0FFF0000 - -/* Dual DAC 12-bit left-aligned data holding register */ - -#define DAC_DHR12LD_DACC1DHR 0x0000FFF0 -#define DAC_DHR12LD_DACC2DHR 0xFFF00000 - -/* Dual DAC 8-bit left-aligned data holding register */ - -#define DAC_DHR8RD_DACC1DHR 0x000000FF -#define DAC_DHR8RD_DACC2DHR 0x0000FF00 - -/* Channel 1 data output register */ - -#define DAC_DOR1_DACC1DOR 0x00000FFF - -/* Channel 1 data output register */ - -#define DAC_DOR2_DACC2DOR 0x00000FFF - -/* - * Routines - */ - -/* We take the dev argument in these for future-proofing */ - -#define DAC_CH1 0x1 -#define DAC_CH2 0x2 -void dac_init(const dac_dev *dev, uint32 flags); - -void dac_write_channel(const dac_dev *dev, uint8 channel, uint16 val); -void dac_enable_channel(const dac_dev *dev, uint8 channel); -void dac_disable_channel(const dac_dev *dev, uint8 channel); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/delay.h b/STM32F3/cores/maple/libmaple/include/libmaple/delay.h deleted file mode 100644 index 472a208aa..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/delay.h +++ /dev/null @@ -1,65 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/delay.h - * @brief Delay implementation - */ - -#ifndef _LIBMAPLE_DELAY_H_ -#define _LIBMAPLE_DELAY_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/** - * @brief Delay the given number of microseconds. - * - * @param us Number of microseconds to delay. - */ -static inline void delay_us(uint32 us) { - us *= STM32_DELAY_US_MULT; - - /* fudge for function call overhead */ - us--; - asm volatile(" mov r0, %[us] \n\t" - "1: subs r0, #1 \n\t" - " bhi 1b \n\t" - : - : [us] "r" (us) - : "r0"); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/dma.h b/STM32F3/cores/maple/libmaple/include/libmaple/dma.h deleted file mode 100644 index 329e90773..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/dma.h +++ /dev/null @@ -1,444 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Michael Hope. - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/dma.h - * - * @author Marti Bolivar ; - * Original implementation by Michael Hope - * - * @brief Direct Memory Access peripheral support - */ - -#ifndef _LIBMAPLE_DMA_H_ -#define _LIBMAPLE_DMA_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -/* provides: - * - * - An opaque dma_tube type, and predefined rvalues for each tube - * supported by the series. - * - * A "DMA tube" is a series-specific (hopefully integer) datatype - * that abstracts the conduit through which DMA-ed data flow. - * - * Examples: On STM32F1, dma_tube is just an alias for dma_channel, - * and the tube values are just DMA_CH1 (=1), DMA_CH2 (=2), etc. - * - * Note that a dma_tube doesn't have to be an enum, and its values - * don't have to be integral. They _do_ need to be cheap to pass as - * arguments, though. - * - * - struct dma_tube_reg_map (and typedef to dma_tube_reg_map). DMA - * register maps tend to be split into global registers and per-tube - * registers. It's convenient to pass around pointers to a tube's - * registers, since that makes it possible to configure or otherwise - * mess with a tube without knowing which one you're dealing with. - * - * - Base pointers to the various dma_tube_reg_maps. - * - * Examples: On STM32F1, these are DMAxCHy_BASE. You can access - * registers like DMAxCHy_BASE->CPAR, etc. - * - * - enum dma_request_src (and typedef to dma_request_src). This - * specifies the peripheral DMA request sources (e.g. USART TX DMA - * requests, etc.). - * - * - enum dma_mode_flags (and typedef to dma_mode_flags). Used in - * dma_tube_config. If two series both support the same mode flags, - * they must use the same enumerator names for those flags (the - * values of those enumerators are of course allowed to differ). - * - * - Normal stuff: dma_reg_map and base pointers, register bit - * definitions, dma_dev pointer declarations, and any other - * convenience functions useful for the series. */ -#include -/* buys us dma_dev and other necessities. */ -#include -#include - -/* - * Declarations/documentation for some of the series-provided types. - */ - -/** - * @brief (Series-dependent) DMA request sources. - * - * These specify the various pieces of peripheral functionality which - * may make DMA requests. Use them to set up a DMA transfer (see - * struct dma_tube_config, dma_tube_cfg()). - */ -enum dma_request_src; - -/** - * @brief (Series-dependent) DMA tube configuration flags. - * These specify miscellaneous bits of configuration for a DMA tube. - * @see struct dma_mode_config - */ -enum dma_cfg_flags; - -/** - * @brief (Series-dependent) DMA tube register map type. - * This allows you to access a tube's registers as a group. - * @see dma_tube_regs() - */ -struct dma_tube_reg_map; - -/* - * Convenience functions - */ - -/* Initialization */ - -void dma_init(dma_dev *dev); - -/* dma_tube configuration - * - * Use these types and functions to set up DMA transfers, handle - * interrupts, etc. The main function of interest is dma_tube_cfg(), - * which the various series implement separately. */ - -/** - * @brief Specifies a DMA tube configuration. - * - * Use one of these to set up a DMA transfer by passing it to - * dma_tube_cfg(). - * - * @see dma_tube_cfg() - * @see dma_xfer_size - */ -typedef struct dma_tube_config { - /** Source of data */ - __IO void *tube_src; - /** Source transfer size */ - dma_xfer_size tube_src_size; - - /** Destination of data */ - __IO void *tube_dst; - /** Destination transfer size */ - dma_xfer_size tube_dst_size; - - /** - * Number of data to transfer (0 to 65,535). - * - * Note that this is NOT measured in bytes; it's measured in - * number of data, which occur in multiples of tube_src_size. For - * example, if tube_src_size is DMA_SIZE_32BITS and tube_nr_xfers - * is 2, then 8 total bytes will be transferred. - */ - unsigned tube_nr_xfers; - - /** - * Target-specific configuration flags. - * - * These are an OR of series-specific enum dma_mode_flags values. - * Consult the documentation for your target for what flags you - * can use here. - * - * Typical flag examples: DMA_CFG_SRC_INC, DMA_CFG_DST_INC, - * DMA_CFG_CIRC, DMA_CFG_CMPLT_IE, etc. - */ - unsigned tube_flags; - - /** - * Currently unused. You must set this to 0 or something valid for - * your target. */ - void *target_data; - - /** - * Hardware DMA request source. - * - * This is ignored for memory-to-memory transfers. - */ - enum dma_request_src tube_req_src; -} dma_tube_config; - -#define DMA_TUBE_CFG_SUCCESS 0 -#define DMA_TUBE_CFG_EREQ 1 -#define DMA_TUBE_CFG_ENDATA 2 -#define DMA_TUBE_CFG_EDEV 3 -#define DMA_TUBE_CFG_ESRC 4 -#define DMA_TUBE_CFG_EDST 5 -#define DMA_TUBE_CFG_EDIR 6 -#define DMA_TUBE_CFG_ESIZE 7 -#define DMA_TUBE_CFG_ECFG 0xFF -/** - * @brief Configure a DMA tube. - * - * Use this function to set up a DMA transfer. The tube will be - * disabled before being reconfigured. The transfer will have low - * priority by default. You can choose another priority before the - * transfer begins using dma_set_priority(). You can manage your - * interrupt handlers for the tube using dma_attach_interrupt() and - * dma_detach_interrupt(). - * - * After calling dma_tube_cfg() and performing any other desired - * configuration, start the transfer using dma_enable(). - * - * @param dev DMA device. - * @param tube DMA tube to configure. - * @param cfg Configuration to apply to tube. - * - * @return DMA_TUBE_CFG_SUCCESS (0) on success, <0 on failure. On - * failure, returned value will be the opposite (-) of one of: - * - * - DMA_TUBE_CFG_EREQ: tube doesn't work with cfg->tube_req_src - * - DMA_TUBE_CFG_ENDATA: cfg->tube_[src,dst]_size are - * incompatible with cfg->tube_nr_xfers, or cfg->tube_nr_xfers - * is out of bounds. - * - DMA_TUBE_CFG_EDEV: dev does not support cfg - * - DMA_TUBE_CFG_ESRC: bad cfg->tube_src - * - DMA_TUBE_CFG_EDST: bad cfg->tube_dst - * - DMA_TUBE_CFG_EDIR: dev can't transfer from cfg->tube_src to - * cfg->tube_dst - * - DMA_TUBE_CFG_ESIZE: something ended up wrong due to MSIZE/PSIZE - * - DMA_TUBE_CFG_ECFG: generic "something's wrong" - * - * @sideeffect Disables tube. May alter tube's registers even when an - * error occurs. - * @see struct dma_tube_config - * @see dma_attach_interrupt() - * @see dma_detach_interrupt() - * @see dma_enable() - */ -extern int dma_tube_cfg(dma_dev *dev, dma_tube tube, dma_tube_config *cfg); - -/* Other tube configuration functions. You can use these if - * dma_tube_cfg() isn't enough, or to adjust parts of an existing tube - * configuration. */ - -/** DMA transfer priority. */ -typedef enum dma_priority { - DMA_PRIORITY_LOW = 0, /**< Low priority */ - DMA_PRIORITY_MEDIUM = 1, /**< Medium priority */ - DMA_PRIORITY_HIGH = 2, /**< High priority */ - DMA_PRIORITY_VERY_HIGH = 3, /**< Very high priority */ -} dma_priority; - -/** - * @brief Set the priority of a DMA transfer. - * - * You may not call this function while the tube is enabled. - * - * @param dev DMA device - * @param tube DMA tube - * @param priority priority to set. - */ -extern void dma_set_priority(dma_dev *dev, dma_tube tube, - dma_priority priority); - -/** - * @brief Set the number of data transfers on a DMA tube. - * - * You may not call this function while the tube is enabled. - * - * @param dev DMA device - * @param tube Tube through which the transfer will occur. - * @param num_transfers Number of DMA transactions to set. - */ -extern void dma_set_num_transfers(dma_dev *dev, dma_tube tube, - uint16 num_transfers); - -/** - * @brief Set the base memory address where data will be read from or - * written to. - * - * You must not call this function while the tube is enabled. - * - * If the DMA memory size is 16 bits, the address is automatically - * aligned to a half-word. If the DMA memory size is 32 bits, the - * address is aligned to a word. - * - * @param dev DMA Device - * @param tube Tube whose base memory address to set. - * @param address Memory base address to use. - */ -extern void dma_set_mem_addr(dma_dev *dev, dma_tube tube, __IO void *address); - -/** - * @brief Set the base peripheral address where data will be read from - * or written to. - * - * You must not call this function while the channel is enabled. - * - * If the DMA peripheral size is 16 bits, the address is automatically - * aligned to a half-word. If the DMA peripheral size is 32 bits, the - * address is aligned to a word. - * - * @param dev DMA Device - * @param tube Tube whose peripheral data register base address to set. - * @param address Peripheral memory base address to use. - */ -extern void dma_set_per_addr(dma_dev *dev, dma_tube tube, __IO void *address); - -/* Interrupt handling */ - -/** - * @brief Attach an interrupt to a DMA transfer. - * - * Interrupts are enabled using series-specific mode flags in - * dma_tube_cfg(). - * - * @param dev DMA device - * @param tube Tube to attach handler to - * @param handler Interrupt handler to call when tube interrupt fires. - * @see dma_tube_cfg() - * @see dma_get_irq_cause() - * @see dma_detach_interrupt() - */ -extern void dma_attach_interrupt(dma_dev *dev, dma_tube tube, - void (*handler)(void)); - - -/** - * @brief Detach a DMA transfer interrupt handler. - * - * After calling this function, the given tube's interrupts will be - * disabled. - * - * @param dev DMA device - * @param tube Tube whose handler to detach - * @sideeffect Clears the tube's interrupt enable bits. - * @see dma_attach_interrupt() - */ -extern void dma_detach_interrupt(dma_dev *dev, dma_tube tube); - -/* Tube enable/disable */ - -/** - * @brief Enable a DMA tube. - * - * If the tube has been properly configured, calling this function - * allows it to start serving DMA requests. - * - * @param dev DMA device - * @param tube Tube to enable - * @see dma_tube_cfg() - */ -extern void dma_enable(dma_dev *dev, dma_tube tube); - -/** - * @brief Disable a DMA channel. - * - * Calling this function makes the tube stop serving DMA requests. - * - * @param dev DMA device - * @param tube Tube to disable - */ -extern void dma_disable(dma_dev *dev, dma_tube tube); - -/** - * @brief Check if a DMA tube is enabled. - * @param dev DMA device. - * @param tube Tube to check. - * @return 0 if the tube is disabled, >0 if it is enabled. - */ -static inline uint8 dma_is_enabled(dma_dev *dev, dma_tube tube); - -/* Other conveniences */ - -/** - * @brief Obtain a pointer to an individual DMA tube's registers. - * - * Examples: - * - * - On STM32F1, dma_channel_regs(DMA1, DMA_CH1)->CCR is DMA1_BASE->CCR1. - * - * @param dev DMA device. - * @param tube DMA tube whose register map to obtain. - * @return (Series-specific) tube register map. - */ -static inline dma_tube_reg_map* dma_tube_regs(dma_dev *dev, dma_tube tube); - -/** - * Encodes the reason why a DMA interrupt was called. - * @see dma_get_irq_cause() - */ -typedef enum dma_irq_cause { - DMA_TRANSFER_COMPLETE, /**< Transfer is complete. */ - DMA_TRANSFER_HALF_COMPLETE, /**< Transfer is half complete. */ - DMA_TRANSFER_ERROR, /**< Error occurred during transfer. */ - DMA_TRANSFER_DME_ERROR, /**< - * @brief Direct mode error occurred during - * transfer. */ - DMA_TRANSFER_FIFO_ERROR, /**< FIFO error occurred during transfer. */ -} dma_irq_cause; - -/** - * @brief Discover the reason why a DMA interrupt was called. - * - * You may only call this function within an attached interrupt - * handler for the given channel. - * - * This function resets the internal DMA register state which encodes - * the cause of the interrupt; consequently, it can only be called - * once per interrupt handler invocation. - * - * @param dev DMA device - * @param tube Tube whose interrupt is being handled. - * @return Reason why the interrupt fired. - * @sideeffect Clears flags in dev's interrupt status registers. - * @see dma_attach_interrupt() - * @see dma_irq_cause - */ -extern dma_irq_cause dma_get_irq_cause(dma_dev *dev, dma_tube tube); - -/** - * @brief Get the ISR status bits for a DMA channel. - * - * The bits are returned right-aligned, in the order they appear in - * the corresponding ISR register. - * - * If you're trying to figure out why a DMA interrupt fired, you may - * find dma_get_irq_cause() more convenient. - * - * @param dev DMA device - * @param tube Tube whose ISR bits to return. - * @see dma_get_irq_cause(). - */ -static inline uint8 dma_get_isr_bits(dma_dev *dev, dma_tube tube); - -/** - * @brief Clear the ISR status bits for a given DMA tube. - * - * If you're trying to clean up after yourself in a DMA interrupt, you - * may find dma_get_irq_cause() more convenient. - * - * @param dev DMA device - * @param tube Tube whose ISR bits to clear. - * @see dma_get_irq_cause() - */ -static inline void dma_clear_isr_bits(dma_dev *dev, dma_tube tube); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/dma_common.h b/STM32F3/cores/maple/libmaple/include/libmaple/dma_common.h deleted file mode 100644 index 3765cd577..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/dma_common.h +++ /dev/null @@ -1,112 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/dma_common.h - * @author Marti Bolivar - * @brief Common DMA sub-header for and . - * - * CONTENTS UNSTABLE. The existence of this file is an implementation - * detail. Never include it directly. If you need something from - * here, include instead. - */ - -/* - * There's a fair amount of common DMA functionality needed by each - * and . This header exists in order - * to provide it to both, avoiding some hacks and circular - * dependencies. - */ - -#ifndef _LIBMAPLE_DMA_COMMON_H_ -#define _LIBMAPLE_DMA_COMMON_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include -#include - -/* - * Devices - */ - -struct dma_reg_map; - -/* Encapsulates state related to user interrupt handlers. You - * shouldn't touch these directly; use dma_attach_interrupt() and - * dma_detach_interupt() instead. */ -typedef struct dma_handler_config { - void (*handler)(void); /* User handler */ - nvic_irq_num irq_line; /* IRQ line for interrupt */ -} dma_handler_config; - -/** DMA device type */ -typedef struct dma_dev { - struct dma_reg_map *regs; /**< Register map */ - rcc_clk_id clk_id; /**< Clock ID */ - struct dma_handler_config handlers[]; /**< For internal use */ -} dma_dev; - -/** - * @brief DMA channels - * - * Notes: - * - This is also the dma_tube type for STM32F1. - * - Channel 0 is not available on all STM32 series. - * - * @see dma_tube - */ -typedef enum dma_channel { - DMA_CH0 = 0, /**< Channel 0 */ - DMA_CH1 = 1, /**< Channel 1 */ - DMA_CH2 = 2, /**< Channel 2 */ - DMA_CH3 = 3, /**< Channel 3 */ - DMA_CH4 = 4, /**< Channel 4 */ - DMA_CH5 = 5, /**< Channel 5 */ - DMA_CH6 = 6, /**< Channel 6 */ - DMA_CH7 = 7, /**< Channel 7 */ -} dma_channel; - -/** - * @brief Source and destination transfer sizes. - * Use these when initializing a struct dma_tube_config. - * @see struct dma_tube_config - * @see dma_tube_cfg - */ -typedef enum dma_xfer_size { - DMA_SIZE_8BITS = 0, /**< 8-bit transfers */ - DMA_SIZE_16BITS = 1, /**< 16-bit transfers */ - DMA_SIZE_32BITS = 2, /**< 32-bit transfers */ -} dma_xfer_size; - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/dsp.h b/STM32F3/cores/maple/libmaple/include/libmaple/dsp.h deleted file mode 100644 index 435c801ce..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/dsp.h +++ /dev/null @@ -1,131 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/include/libmaple/dsp.h - * @author F3-port by Hanspeter Portner - * @brief Convenience macros for the digital signal processing (DSP) - * instruction set of the ARM Cortex M4 microcontroller. - */ - -#ifndef _LIBMAPLE_DSP_H_ -#define _LIBMAPLE_DSP_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#define DSP3(ID, A, B, C) \ -({ \ - uint32_t X; \ - asm volatile (ID" %[res], %[val1], %[val2], %[val3]" \ - : [res]"=r" (X) \ - : [val1]"r" (A), [val2]"r" (B), [val3]"r" (C) \ - ); \ - (uint32_t)X; \ -}) - -#define DSP2(ID, A, B) \ -({ \ - uint32_t X; \ - asm volatile (ID" %[res], %[val1], %[val2]" \ - : [res]"=r" (X) \ - : [val1]"r" (A), [val2]"r" (B) \ - );\ - (uint32_t)X; \ -}) - -#define DSP1(ID, A) \ -({ \ - uint32_t X; \ - asm volatile (ID" %[res], %[val1]" \ - : [res]"=r" (X) \ - : [val1]"r" (A) \ - ); \ - (uint32_t)X; \ -}) - -/* General data processing instructions */ -#define __rev16(A) DSP1("REV16", A) -//TODO - -/* Multiply and divide instructions */ -//TODO - -/* Saturating instructions */ -//TODO - -/* Packing and unpacking instructions */ -//TODO - -/* Bitfield instructions */ -//TODO - -/* Floating-point instructions */ -//TODO - -/* Miscellaneous instructions */ -//TODO - -/* SIMD instructions (single instruction multiple data) */ -#define __sadd16(A, B) DSP2("SADD16", A, B) -#define __shadd16(A, B) DSP2("SHADD16", A, B) -#define __ssub16(A, B) DSP2("SSUB16", A, B) -#define __shsub16(A, B) DSP2("SHSUB16", A, B) -#define __uadd16(A, B) DSP2("UADD16", A, B) -#define __uhadd16(A, B) DSP2("UHADD16", A, B) -#define __usub16(A, B) DSP2("USUB16", A, B) -#define __uhsub16(A, B) DSP2("UHSUB16", A, B) - -#define __sadd8(A, B) DSP2("SADD8", A, B) -#define __shadd8(A, B) DSP2("SHADD8", A, B) -#define __ssub8(A, B) DSP2("SSUB8", A, B) -#define __shsub8(A, B) DSP2("SHSUB8", A, B) -#define __uadd8(A, B) DSP2("UADD8", A, B) -#define __uhadd8(A, B) DSP2("UHADD8", A, B) -#define __usub8(A, B) DSP2("USUB8", A, B) -#define __uhsub8(A, B) DSP2("UHSUB8", A, B) - -#define __sasx(A, B) DSP2("SASX", A, B) -#define __ssax(A, B) DSP2("SSAX", A, B) -#define __shasx(A, B) DSP2("SHASX", A, B) -#define __shsax(A, B) DSP2("SHSAX", A, B) -#define __uasx(A, B) DSP2("UASX", A, B) -#define __usax(A, B) DSP2("USAX", A, B) -#define __uhasx(A, B) DSP2("UHASX", A, B) -#define __uhsax(A, B) DSP2("UHSAX", A, B) - -#define __usad8(A, B) DSP2("USAD8", A, B) -#define __usada8(A, B, C) DSP3("USADA8", A, B, C) - -/* MAC instructions (multiply and accumulate) */ -/* TODO */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/exti.h b/STM32F3/cores/maple/libmaple/include/libmaple/exti.h deleted file mode 100644 index 525cdc795..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/exti.h +++ /dev/null @@ -1,143 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/exti.h - * @brief External interrupt control - */ - -/* See notes/exti.txt for more info */ - -#ifndef _LIBMAPLE_EXTI_H_ -#define _LIBMAPLE_EXTI_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include /* provides EXTI_BASE */ -#include - -/* - * Register map and base pointer. - */ - -/** EXTI register map type */ -typedef struct exti_reg_map { - __IO uint32 IMR; /**< Interrupt mask register */ - __IO uint32 EMR; /**< Event mask register */ - __IO uint32 RTSR; /**< Rising trigger selection register */ - __IO uint32 FTSR; /**< Falling trigger selection register */ - __IO uint32 SWIER; /**< Software interrupt event register */ - __IO uint32 PR; /**< Pending register */ -} exti_reg_map; - -/* - * Types: exti_num, exti_cfg, exti_trigger_mode. - * - * A combination of these three specifies an external interrupt - * configuration (see exti_attach_interrupt()). - */ - -/** EXTI line. */ -typedef enum exti_num { - EXTI0, /**< EXTI line 0 */ - EXTI1, /**< EXTI line 1 */ - EXTI2, /**< EXTI line 2 */ - EXTI3, /**< EXTI line 3 */ - EXTI4, /**< EXTI line 4 */ - EXTI5, /**< EXTI line 5 */ - EXTI6, /**< EXTI line 6 */ - EXTI7, /**< EXTI line 7 */ - EXTI8, /**< EXTI line 8 */ - EXTI9, /**< EXTI line 9 */ - EXTI10, /**< EXTI line 10 */ - EXTI11, /**< EXTI line 11 */ - EXTI12, /**< EXTI line 12 */ - EXTI13, /**< EXTI line 13 */ - EXTI14, /**< EXTI line 14 */ - EXTI15, /**< EXTI line 15 */ -} exti_num; - -/** - * @brief EXTI port configuration - * - * These specify which GPIO port an external interrupt line should be - * connected to. - */ -typedef enum exti_cfg { - EXTI_PA, /**< Use PAx pin */ - EXTI_PB, /**< Use PBx pin */ - EXTI_PC, /**< Use PCx pin */ - EXTI_PD, /**< Use PDx pin */ - EXTI_PE, /**< Use PEx pin */ - EXTI_PF, /**< Use PFx pin */ - EXTI_PG, /**< Use PGx pin */ - EXTI_PH, /**< Use PHx pin */ - EXTI_PI, /**< Use PIx pin */ -} exti_cfg; - -/** External interrupt trigger mode */ -typedef enum exti_trigger_mode { - EXTI_RISING, /**< Trigger on the rising edge */ - EXTI_FALLING, /**< Trigger on the falling edge */ - EXTI_RISING_FALLING /**< Trigger on both the rising and falling edges */ -} exti_trigger_mode; - -/* - * Routines - */ - -void exti_attach_interrupt(exti_num num, - exti_cfg port, - voidFuncPtr handler, - exti_trigger_mode mode); -void exti_attach_callback(exti_num num, - exti_cfg port, - voidArgumentFuncPtr handler, - void *arg, - exti_trigger_mode mode); -void exti_detach_interrupt(exti_num num); - -/** - * @brief Set the GPIO port for an EXTI line. - * - * This is a low-level routine that most users will not - * need. exti_attach_interrupt() handles calling this function - * appropriately. - * - * @param num EXTI line - * @param port EXTI configuration for GPIO port to connect to num. - * @see exti_num - * @see exti_cfg - */ -extern void exti_select(exti_num num, exti_cfg port); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/flash.h b/STM32F3/cores/maple/libmaple/include/libmaple/flash.h deleted file mode 100644 index 943e46641..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/flash.h +++ /dev/null @@ -1,106 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/flash.h - * @brief Flash support. - */ - -#ifndef _LIBMAPLE_FLASH_H_ -#define _LIBMAPLE_FLASH_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -#define FLASH_WAIT_STATE_0 0x0 -#define FLASH_WAIT_STATE_1 0x1 -#define FLASH_WAIT_STATE_2 0x2 -#define FLASH_WAIT_STATE_3 0x3 -#define FLASH_WAIT_STATE_4 0x4 -#define FLASH_WAIT_STATE_5 0x5 -#define FLASH_WAIT_STATE_6 0x6 -#define FLASH_WAIT_STATE_7 0x7 - -/* The series header must define: - * - * - FLASH_SAFE_WAIT_STATES, the smallest number of wait states that - * it is safe to use when SYSCLK is at its fastest documented rate - * and the MCU is powered at 3.3V (i.e. this doesn't consider - * overclocking or low voltage operation). - * - * - The following bit flags, for flash_enable_features(): - * - * -- FLASH_PREFETCH: prefetcher - * -- FLASH_ICACHE: instruction cache - * -- FLASH_DCACHE: data cache - * - * See that function's Doxygen for more restrictions. - */ -#include - -#ifdef __DOXYGEN__ -/** Flash register map base pointer. */ -#define FLASH_BASE -#endif - -/* - * Flash routines - */ - -void flash_set_latency(uint32 wait_states); - -/** - * @brief Enable Flash memory features - * - * If the target MCU doesn't provide a feature (e.g. instruction and - * data caches on the STM32F1), the flag will be ignored. This allows - * using these flags unconditionally, with the desired effect taking - * place on targets that support them. - * - * @param feature_flags Bitwise OR of the following: - * FLASH_PREFETCH (turns on prefetcher), - * FLASH_ICACHE (turns on instruction cache), - * FLASH_DCACHE (turns on data cache). - */ -static inline void flash_enable_features(uint32 feature_flags) { - FLASH_BASE->ACR |= feature_flags; -} - -/** - * @brief Deprecated. Use flash_enable_features(FLASH_PREFETCH) instead. - */ -static inline void flash_enable_prefetch(void) { - flash_enable_features(FLASH_PREFETCH); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/fpu.h b/STM32F3/cores/maple/libmaple/include/libmaple/fpu.h deleted file mode 100644 index f8e2037d5..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/fpu.h +++ /dev/null @@ -1,56 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/include/libmaple/fpu.h - * @author F3-port by Hanspeter Portner - * @brief Floating Point Unit (FPU) interace. - */ - -#ifndef _LIBMAPLE_FPU_H_ -#define _LIBMAPLE_FPU_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/** - * @brief Enable floating point unit. - */ -void fpu_enable(void); - -/** - * @brief Disable floating point unit. - */ -void fpu_disable(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h b/STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h deleted file mode 100644 index 9dd8a7255..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/fsmc.h +++ /dev/null @@ -1,340 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Bryan Newbold. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/fsmc.h - * @brief Flexible static memory controller support. - */ - -/* - * See ../notes/fsmc.txt for more info - */ - -#ifndef _LIBMAPLE_FSMC_H_ -#define _LIBMAPLE_FSMC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include - -#if !STM32_HAVE_FSMC -#error "FSMC is unavailable on your MCU" -#endif - -/* - * Register maps and devices - */ - -/** FSMC register map type */ -typedef struct fsmc_reg_map { - __IO uint32 BCR1; /**< SRAM/NOR-Flash chip-select control register 1 */ - __IO uint32 BTR1; /**< SRAM/NOR-Flash chip-select timing register 1 */ - __IO uint32 BCR2; /**< SRAM/NOR-Flash chip-select control register 2 */ - __IO uint32 BTR2; /**< SRAM/NOR-Flash chip-select timing register 2 */ - __IO uint32 BCR3; /**< SRAM/NOR-Flash chip-select control register 3 */ - __IO uint32 BTR3; /**< SRAM/NOR-Flash chip-select timing register 3 */ - __IO uint32 BCR4; /**< SRAM/NOR-Flash chip-select control register 4 */ - __IO uint32 BTR4; /**< SRAM/NOR-Flash chip-select timing register 4 */ - const uint8 RESERVED1[64]; /**< Reserved */ - __IO uint32 PCR2; /**< PC Card/NAND Flash control register 2 */ - __IO uint32 SR2; /**< FIFO status and interrupt register 2 */ - __IO uint32 PMEM2; /**< Common memory space timing register 2 */ - __IO uint32 PATT2; /**< Attribute memory space timing register 2 */ - const uint8 RESERVED2[4]; /**< Reserved */ - __IO uint32 ECCR2; /**< ECC result register 2 */ - const uint8 RESERVED3[2]; - __IO uint32 PCR3; /**< PC Card/NAND Flash control register 3 */ - __IO uint32 SR3; /**< FIFO status and interrupt register 3 */ - __IO uint32 PMEM3; /**< Common memory space timing register 3 */ - __IO uint32 PATT3; /**< Attribute memory space timing register 3 */ - const uint32 RESERVED4; /**< Reserved */ - __IO uint32 ECCR3; /**< ECC result register 3 */ - const uint8 RESERVED5[8]; /**< Reserved */ - __IO uint32 PCR4; /**< PC Card/NAND Flash control register 4 */ - __IO uint32 SR4; /**< FIFO status and interrupt register 4 */ - __IO uint32 PMEM4; /**< Common memory space timing register 4 */ - __IO uint32 PATT4; /**< Attribute memory space timing register 4 */ - __IO uint32 PIO4; /**< I/O space timing register 4 */ - const uint8 RESERVED6[80]; /**< Reserved */ - __IO uint32 BWTR1; /**< SRAM/NOR-Flash write timing register 1 */ - const uint32 RESERVED7; /**< Reserved */ - __IO uint32 BWTR2; /**< SRAM/NOR-Flash write timing register 2 */ - const uint32 RESERVED8; /**< Reserved */ - __IO uint32 BWTR3; /**< SRAM/NOR-Flash write timing register 3 */ - const uint32 RESERVED9; /**< Reserved */ - __IO uint32 BWTR4; /**< SRAM/NOR-Flash write timing register 4 */ -} __attribute__((packed)) fsmc_reg_map; - -#define __FSMCB 0xA0000000 - -/** FSMC register map base pointer */ -#define FSMC_BASE ((struct fsmc_reg_map*)__FSMCB) - -/** FSMC NOR/PSRAM register map type */ -typedef struct fsmc_nor_psram_reg_map { - __IO uint32 BCR; /**< Chip-select control register */ - __IO uint32 BTR; /**< Chip-select timing register */ - const uint8 RESERVED[252]; /**< Reserved */ - __IO uint32 BWTR; /**< Write timing register */ -} fsmc_nor_psram_reg_map; - -/** FSMC NOR/PSRAM base pointer 1 */ -#define FSMC_NOR_PSRAM1_BASE ((struct fsmc_nor_psram_reg_map*)__FSMCB) - -/** FSMC NOR/PSRAM base pointer 2 */ -#define FSMC_NOR_PSRAM2_BASE ((struct fsmc_nor_psram_reg_map*)(__FSMCB + 0x8)) - -/** FSMC NOR/PSRAM base pointer 3 */ -#define FSMC_NOR_PSRAM3_BASE ((struct fsmc_nor_psram_reg_map*)(__FSMCB + 0x10)) - -/** FSMC NOR/PSRAM base pointer 4 */ -#define FSMC_NOR_PSRAM4_BASE ((struct fsmc_nor_psram_reg_map*)(__FSMCB + 0x18)) - -/* - * Register bit definitions - */ - -/* NOR/PSRAM chip-select control registers */ - -#define FSMC_BCR_CBURSTRW_BIT 19 -#define FSMC_BCR_ASYNCWAIT_BIT 15 -#define FSMC_BCR_EXTMOD_BIT 14 -#define FSMC_BCR_WAITEN_BIT 13 -#define FSMC_BCR_WREN_BIT 12 -#define FSMC_BCR_WAITCFG_BIT 11 -#define FSMC_BCR_WRAPMOD_BIT 10 -#define FSMC_BCR_WAITPOL_BIT 9 -#define FSMC_BCR_BURSTEN_BIT 8 -#define FSMC_BCR_FACCEN_BIT 6 -#define FSMC_BCR_MUXEN_BIT 1 -#define FSMC_BCR_MBKEN_BIT 0 - -#define FSMC_BCR_CBURSTRW (1U << FSMC_BCR_CBURSTRW_BIT) -#define FSMC_BCR_ASYNCWAIT (1U << FSMC_BCR_ASYNCWAIT_BIT) -#define FSMC_BCR_EXTMOD (1U << FSMC_BCR_EXTMOD_BIT) -#define FSMC_BCR_WAITEN (1U << FSMC_BCR_WAITEN_BIT) -#define FSMC_BCR_WREN (1U << FSMC_BCR_WREN_BIT) -#define FSMC_BCR_WAITCFG (1U << FSMC_BCR_WAITCFG_BIT) -#define FSMC_BCR_WRAPMOD (1U << FSMC_BCR_WRAPMOD_BIT) -#define FSMC_BCR_WAITPOL (1U << FSMC_BCR_WAITPOL_BIT) -#define FSMC_BCR_BURSTEN (1U << FSMC_BCR_BURSTEN_BIT) -#define FSMC_BCR_FACCEN (1U << FSMC_BCR_FACCEN_BIT) -#define FSMC_BCR_MWID (0x3 << 4) -#define FSMC_BCR_MWID_8BITS (0x0 << 4) -#define FSMC_BCR_MWID_16BITS (0x1 << 4) -#define FSMC_BCR_MTYP (0x3 << 2) -#define FSMC_BCR_MTYP_SRAM (0x0 << 2) -#define FSMC_BCR_MTYP_PSRAM (0x1 << 2) -#define FSMC_BCR_MTYP_NOR_FLASH (0x2 << 2) -#define FSMC_BCR_MUXEN (1U << FSMC_BCR_MUXEN_BIT) -#define FSMC_BCR_MBKEN (1U << FSMC_BCR_MBKEN_BIT) - -/* SRAM/NOR-Flash chip-select timing registers */ - -#define FSMC_BTR_ACCMOD (0x3 << 28) -#define FSMC_BTR_ACCMOD_A (0x0 << 28) -#define FSMC_BTR_ACCMOD_B (0x1 << 28) -#define FSMC_BTR_ACCMOD_C (0x2 << 28) -#define FSMC_BTR_ACCMOD_D (0x3 << 28) -#define FSMC_BTR_DATLAT (0xF << 24) -#define FSMC_BTR_CLKDIV (0xF << 20) -#define FSMC_BTR_BUSTURN (0xF << 16) -#define FSMC_BTR_DATAST (0xFF << 8) -#define FSMC_BTR_ADDHLD (0xF << 4) -#define FSMC_BTR_ADDSET 0xF - -/* SRAM/NOR-Flash write timing registers */ - -#define FSMC_BWTR_ACCMOD (0x3 << 28) -#define FSMC_BWTR_ACCMOD_A (0x0 << 28) -#define FSMC_BWTR_ACCMOD_B (0x1 << 28) -#define FSMC_BWTR_ACCMOD_C (0x2 << 28) -#define FSMC_BWTR_ACCMOD_D (0x3 << 28) -#define FSMC_BWTR_DATLAT (0xF << 24) -#define FSMC_BWTR_CLKDIV (0xF << 20) -#define FSMC_BWTR_DATAST (0xFF << 8) -#define FSMC_BWTR_ADDHLD (0xF << 4) -#define FSMC_BWTR_ADDSET 0xF - -/* NAND Flash/PC Card controller registers */ - -#define FSMC_PCR_ECCEN_BIT 6 -#define FSMC_PCR_PTYP_BIT 3 -#define FSMC_PCR_PBKEN_BIT 2 -#define FSMC_PCR_PWAITEN_BIT 1 - -#define FSMC_PCR_ECCPS (0x7 << 17) -#define FSMC_PCR_ECCPS_256B (0x0 << 17) -#define FSMC_PCR_ECCPS_512B (0x1 << 17) -#define FSMC_PCR_ECCPS_1024B (0x2 << 17) -#define FSMC_PCR_ECCPS_2048B (0x3 << 17) -#define FSMC_PCR_ECCPS_4096B (0x4 << 17) -#define FSMC_PCR_ECCPS_8192B (0x5 << 17) -#define FSMC_PCR_TAR (0xF << 13) -#define FSMC_PCR_TCLR (0xF << 9) -#define FSMC_PCR_ECCEN (1U << FSMC_PCR_ECCEN_BIT) -#define FSMC_PCR_PWID (0x3 << 4) -#define FSMC_PCR_PWID_8BITS (0x0 << 4) -#define FSMC_PCR_PWID_16BITS (0x1 << 4) -#define FSMC_PCR_PTYP (1U << FSMC_PCR_PTYP_BIT) -#define FSMC_PCR_PTYP_PC_CF_PCMCIA (0x0 << FSMC_PCR_PTYP_BIT) -#define FSMC_PCR_PTYP_NAND (0x1 << FSMC_PCR_PTYP_BIT) -#define FSMC_PCR_PBKEN (1U << FSMC_PCR_PBKEN_BIT) -#define FSMC_PCR_PWAITEN (1U << FSMC_PCR_PWAITEN_BIT) - -/* FIFO status and interrupt registers */ - -#define FSMC_SR_FEMPT_BIT 6 -#define FSMC_SR_IFEN_BIT 5 -#define FSMC_SR_ILEN_BIT 4 -#define FSMC_SR_IREN_BIT 3 -#define FSMC_SR_IFS_BIT 2 -#define FSMC_SR_ILS_BIT 1 -#define FSMC_SR_IRS_BIT 0 - -#define FSMC_SR_FEMPT (1U << FSMC_SR_FEMPT_BIT) -#define FSMC_SR_IFEN (1U << FSMC_SR_IFEN_BIT) -#define FSMC_SR_ILEN (1U << FSMC_SR_ILEN_BIT) -#define FSMC_SR_IREN (1U << FSMC_SR_IREN_BIT) -#define FSMC_SR_IFS (1U << FSMC_SR_IFS_BIT) -#define FSMC_SR_ILS (1U << FSMC_SR_ILS_BIT) -#define FSMC_SR_IRS (1U << FSMC_SR_IRS_BIT) - -/* Common memory space timing registers */ - -#define FSMC_PMEM_MEMHIZ (0xFF << 24) -#define FSMC_PMEM_MEMHOLD (0xFF << 16) -#define FSMC_PMEM_MEMWAIT (0xFF << 8) -#define FSMC_PMEM_MEMSET 0xFF - -/* Attribute memory space timing registers */ - -#define FSMC_PATT_ATTHIZ (0xFF << 24) -#define FSMC_PATT_ATTHOLD (0xFF << 16) -#define FSMC_PATT_ATTWAIT (0xFF << 8) -#define FSMC_PATT_ATTSET 0xFF - -/* I/O space timing register 4 */ - -#define FSMC_PIO_IOHIZ (0xFF << 24) -#define FSMC_PIO_IOHOLD (0xFF << 16) -#define FSMC_PIO_IOWAIT (0xFF << 8) -#define FSMC_PIO_IOSET 0xFF - -/* - * Memory bank boundary addresses - */ - -/** - * @brief Void pointer to base address of FSMC memory bank 1 (NOR/PSRAM). - * - * This bank is split into 4 regions. Each region supports interfacing - * with 1 NOR Flash, SRAM, or PSRAM chip. The base addresses of these - * regions are FSMC_NOR_PSRAM_REGIONx, for x = 1, 2, 3, 4. - */ -#define FSMC_BANK1 ((void*)0x60000000) - -/** - * @brief Void pointer to base address of FSMC memory bank 1, region 1 - * (NOR/PSRAM). - */ -#define FSMC_NOR_PSRAM_REGION1 FSMC_BANK1 - -/** - * @brief Void pointer to base address of FSMC memory bank 1, region 2 - * (NOR/PSRAM). - */ -#define FSMC_NOR_PSRAM_REGION2 ((void*)0x64000000) - -/** - * @brief Void pointer to base address of FSMC memory bank 1, region 3 - * (NOR/PSRAM). - */ -#define FSMC_NOR_PSRAM_REGION3 ((void*)0x68000000) - -/** - * @brief Void pointer to base address of FSMC memory bank 1, region 4 - * (NOR/PSRAM). - */ -#define FSMC_NOR_PSRAM_REGION4 ((void*)0x6C000000) - -/** Void pointer to base address of FSMC memory bank 2 (NAND Flash). */ -#define FSMC_BANK2 ((void*)0x70000000) - -/** Void pointer to base address of FSMC memory bank 3 (NAND Flash). */ -#define FSMC_BANK3 ((void*)0x80000000) - -/** - * @brief Void pointer to base address of FSMC memory bank 4 (PC card - * devices). - */ -#define FSMC_BANK4 ((void*)0x90000000) - -/* - * SRAM/NOR Flash routines - */ - -/** - * @brief Configure FSMC GPIOs for use with SRAM. - */ -void fsmc_sram_init_gpios(void); - -/** - * Set the DATAST bits in the given NOR/PSRAM register map's - * chip-select timing register (FSMC_BTR). - * - * @param regs NOR Flash/PSRAM register map whose chip-select timing - * register to set. - * @param datast Value to use for DATAST bits. - */ -static inline void fsmc_nor_psram_set_datast(fsmc_nor_psram_reg_map *regs, - uint8 datast) { - regs->BTR &= ~FSMC_BTR_DATAST; - regs->BTR |= datast << 8; -} - -/** - * Set the ADDHLD bits in the given NOR/PSRAM register map's chip - * select timing register (FSMC_BTRx). - * - * @param regs NOR Flash/PSRAM register map whose chip-select timing - * register to set. - * @param addset Value to use for ADDSET bits. - */ -static inline void fsmc_nor_psram_set_addset(fsmc_nor_psram_reg_map *regs, - uint8 addset) { - regs->BTR &= ~FSMC_BTR_ADDSET; - regs->BTR |= addset & 0xF; -} - -#ifdef __cplusplus -} /* extern "C" */ -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/gpio.h b/STM32F3/cores/maple/libmaple/include/libmaple/gpio.h deleted file mode 100644 index 0cc374611..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/gpio.h +++ /dev/null @@ -1,121 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/include/libmaple/gpio.h - * @brief General Purpose I/O (GPIO) interace. - */ - -#ifndef _LIBMAPLE_GPIO_H_ -#define _LIBMAPLE_GPIO_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -/* - * Note: Series header must define: - * - enum gpio_pin_mode (TODO think harder about portability here) - */ -#include -#include -#include -#include - -/* - * Device type - */ - -/** GPIO device type */ -typedef struct gpio_dev { - gpio_reg_map *regs; /**< Register map */ - rcc_clk_id clk_id; /**< RCC clock information */ - /** - * @brief (Deprecated) External interrupt port. - * Instead of dev->exti_port, use gpio_exti_port(dev). - */ - exti_cfg exti_port; -} gpio_dev; - -/* - * Portable routines - */ - -void gpio_init(gpio_dev *dev); -void gpio_init_all(void); -/* TODO flags argument version? */ -void gpio_set_mode(gpio_dev *dev, uint8 pin, gpio_pin_mode mode); - -/** - * @brief Get a GPIO port's corresponding EXTI port configuration. - * @param dev GPIO port whose exti_cfg to return. - */ -static inline exti_cfg gpio_exti_port(gpio_dev *dev) { - return (exti_cfg)(EXTI_PA + (dev->clk_id - RCC_GPIOA)); -} - -/** - * Set or reset a GPIO pin. - * - * Pin must have previously been configured to output mode. - * - * @param dev GPIO device whose pin to set. - * @param pin Pin on to set or reset - * @param val If true, set the pin. If false, reset the pin. - */ -static inline void gpio_write_bit(gpio_dev *dev, uint8 pin, uint8 val) { - val = !val; /* "set" bits are lower than "reset" bits */ - dev->regs->BSRR = (1U << pin) << (16 * val); -} - -/** - * Determine whether or not a GPIO pin is set. - * - * Pin must have previously been configured to input mode. - * - * @param dev GPIO device whose pin to test. - * @param pin Pin on dev to test. - * @return True if the pin is set, false otherwise. - */ -static inline uint32 gpio_read_bit(gpio_dev *dev, uint8 pin) { - return dev->regs->IDR & (1U << pin); -} - -/** - * Toggle a pin configured as output push-pull. - * @param dev GPIO device. - * @param pin Pin on dev to toggle. - */ -static inline void gpio_toggle_bit(gpio_dev *dev, uint8 pin) { - dev->regs->ODR = dev->regs->ODR ^ (1U << pin); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/i2c.h b/STM32F3/cores/maple/libmaple/include/libmaple/i2c.h deleted file mode 100644 index 8452c2a27..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/i2c.h +++ /dev/null @@ -1,304 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/i2c.h - * @author F3-port by Hanspeter Portner - * @brief Inter-Integrated Circuit (I2C) peripheral support - * - * Currently master-only. Usage notes: - * - * - Enable an I2C device with i2c_master_enable(). - * - Initialize an array of struct i2c_msg to suit the bus - * transactions (reads/writes) you wish to perform. - * - Call i2c_master_xfer() to do the work. - */ - -#ifndef _LIBMAPLE_I2C_H_ -#define _LIBMAPLE_I2C_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Series header must provide: - * - * - uint32 _i2c_bus_clk(i2c_dev*): Clock frequency of dev's bus, in - * MHz. (This is for internal use only). - * - * - (optional) _I2C_HAVE_IRQ_FIXUP: Leave undefined, or define to 1. - * This is for internal use only. It's a hack to work around a - * silicon bug related to I2C IRQ pre-emption on some targets. If 1, - * the series header must also declare and implement a routine with - * this signature (it may also be provided as a macro): - * - * void _i2c_irq_priority_fixup(i2c_dev*) - * - * This will be called by i2c_enable_irq() before actually enabling - * I2C interrupts. - * - * - Reg. map base pointers, device pointer declarations. - */ - -#include -#include - -#include -#include -#include -#include - -/** - * @brief I2C message type - */ -typedef struct i2c_msg { - uint16 addr; /**< Address */ - -#define I2C_MSG_READ 0x1 -#define I2C_MSG_10BIT_ADDR 0x2 - /** - * Bitwise OR of: - * - I2C_MSG_READ (write is default) - * - I2C_MSG_10BIT_ADDR (7-bit is default) */ - uint16 flags; - - uint16 length; /**< Message length */ - uint16 xferred; /**< Messages transferred */ - uint8 *data; /**< Data */ -} i2c_msg; - -/* I2C enable options */ -#define I2C_FAST_MODE 0x1 // 400 khz -#define I2C_DUTY_16_9 0x2 // 16/9 duty ratio -/* Flag 0x4 is reserved; DO NOT USE. */ -#define I2C_BUS_RESET 0x8 // Perform a bus reset - -/* I2C error flags */ -#define I2C_ERROR_PROTOCOL (-1) -#define I2C_ERROR_TIMEOUT (-2) - -/* Main I2C API */ - -/** - * @brief Disable an I2C device - * - * This function disables the corresponding peripheral and marks dev's - * state as I2C_STATE_DISABLED. - * - * @param dev Device to disable. - */ -static inline void i2c_disable(i2c_dev *dev) { - dev->regs->CR1 &= ~I2C_CR1_PE; - dev->state = I2C_STATE_DISABLED; -} - -/** - * @brief Wait for an I2C event, or time out in case of error. - * @param dev I2C device - * @param state I2C_state state to wait for - * @param timeout Timeout, in milliseconds - * @return 0 if target state is reached, a negative value on error. - */ -extern int32 wait_for_state_change(i2c_dev *dev, - i2c_state state, - uint32 timeout); - -/** - * @brief Reset an I2C bus. - * - * Reset is accomplished by clocking out pulses until any hung slaves - * release SDA and SCL, then generating a START condition, then a STOP - * condition. - * - * @param dev I2C device - */ -extern void i2c_bus_reset(const i2c_dev *dev); - -/** - * @brief Initialize an I2C device as bus master - * @param dev Device to enable - * @param flags Bitwise or of the following I2C options: - * I2C_FAST_MODE: 400 khz operation, - * I2C_DUTY_16_9: 16/9 Tlow/Thigh duty cycle (only applicable for - * fast mode), - * I2C_BUS_RESET: Reset the bus and clock out any hung slaves on - * initialization, - * I2C_10BIT_ADDRESSING: Enable 10-bit addressing, - * I2C_REMAP: (deprecated, STM32F1 only) Remap I2C1 to SCL/PB8 - * SDA/PB9. - */ -extern void i2c_master_enable(i2c_dev *dev, uint32 flags); - -/** - * @brief Process an i2c transaction. - * - * Transactions are composed of one or more i2c_msg's, and may be read - * or write tranfers. Multiple i2c_msg's will generate a repeated - * start in between messages. - * - * @param dev I2C device - * @param msgs Messages to send/receive - * @param num Number of messages to send/receive - * @param timeout Bus idle timeout in milliseconds before aborting the - * transfer. 0 denotes no timeout. - * @return 0 on success, - * I2C_ERROR_PROTOCOL if there was a protocol error, - * I2C_ERROR_TIMEOUT if the transfer timed out. - */ -extern int32 i2c_master_xfer(i2c_dev *dev, - i2c_msg *msgs, - uint16 num, - uint32 timeout); - -/** - * @brief Fill data register with slave address - * @param dev I2C device - * @param addr Slave address - * @param rw Read/write bit - */ -extern void i2c_send_slave_addr(i2c_dev *dev, uint32 addr, uint32 rw); - -/* Start/stop conditions */ - -/** - * @brief Generate a start condition on the bus. - * @param dev I2C device - */ -extern void i2c_start_condition(i2c_dev *dev); - -/** - * @brief Generate a stop condition on the bus - * @param dev I2C device - */ -extern void i2c_stop_condition(i2c_dev *dev); - -/* IRQ enable/disable */ - -#ifndef _I2C_HAVE_IRQ_FIXUP -/* The series header provides this if _I2C_HAVE_IRQ_FIXUP is defined, - * but we need it either way. */ -#define _i2c_irq_priority_fixup(dev) ((void)0) -#endif - -/** - * @brief Enable one or more I2C interrupts - * @param dev I2C device - * @param irqs Bitwise or of: - * I2C_IRQ_ERROR (error interrupt), - * I2C_IRQ_EVENT (event interrupt), and - * I2C_IRQ_BUFFER (buffer interrupt). - */ -extern void i2c_enable_irq(i2c_dev *dev, uint32 irqs); - -/** - * @brief Disable one or more I2C interrupts - * @param dev I2C device - * @param irqs Bitwise or of: - * I2C_IRQ_ERROR (error interrupt), - * I2C_IRQ_EVENT (event interrupt), and - * I2C_IRQ_BUFFER (buffer interrupt). - */ -extern void i2c_disable_irq(i2c_dev *dev, uint32 irqs); - -/* ACK/NACK */ - -/** - * @brief Enable I2C acknowledgment - * @param dev I2C device - */ -extern void i2c_enable_ack(i2c_dev *dev); - -/** - * @brief Disable I2C acknowledgment - * @param dev I2C device - */ -extern void i2c_disable_ack(i2c_dev *dev); - -/* GPIO control */ - -/** - * @brief Configure device GPIOs. - * - * Configure GPIO bits dev->sda_pin and dev->scl_pin on GPIO device - * dev->gpio_port for use with I2C device dev. - * - * @param dev I2C Device - * @see i2c_release_gpios() - */ -extern void i2c_config_gpios(const i2c_dev *dev); - -/** - * @brief Release GPIOs controlling an I2C bus - * - * Releases the I2C bus controlled by dev as master, and disconnects - * GPIO bits dev->sda_pin and dev->scl_pin on GPIO device - * dev->gpio_port from I2C device dev. - * - * @param dev I2C device - * @see i2c_config_gpios() - */ -extern void i2c_master_release_bus(const i2c_dev *dev); - -/* Miscellaneous low-level routines */ - -/** - * @brief Initialize an I2C device and reset its registers to their - * default values. - * @param dev Device to initialize. - */ -void i2c_init(i2c_dev *dev); - -/** - * @brief Turn on an I2C peripheral - * @param dev Device to enable - */ -static inline void i2c_peripheral_enable(i2c_dev *dev) { - dev->regs->CR1 |= I2C_CR1_PE; -} - -/** - * @brief Turn off an I2C peripheral - * @param dev Device to turn off - */ -static inline void i2c_peripheral_disable(i2c_dev *dev) { - dev->regs->CR1 &= ~I2C_CR1_PE; -} - -/** - * @brief Fill transmit register - * @param dev I2C device - * @param byte Byte to write - */ -extern void i2c_write(i2c_dev *dev, uint8 byte); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/i2c_common.h b/STM32F3/cores/maple/libmaple/include/libmaple/i2c_common.h deleted file mode 100644 index 17cabe344..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/i2c_common.h +++ /dev/null @@ -1,93 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung (from ). - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/i2c_common.h - * @author Marti Bolivar - * @brief This file is an implementation detail - * - * CONTENTS UNSTABLE. The existence of this file is an implementation - * detail. Never include it directly. If you need something from - * here, include instead. - */ - -#ifndef _LIBMAPLE_I2C_COMMON_H_ -#define _LIBMAPLE_I2C_COMMON_H_ - -#include -#include -#include - -struct gpio_dev; -struct i2c_reg_map; -struct i2c_msg; - -/** I2C device states */ -typedef enum i2c_state { - I2C_STATE_DISABLED = 0, /**< Disabled */ - I2C_STATE_IDLE = 1, /**< Idle */ - I2C_STATE_XFER_DONE = 2, /**< Done with transfer */ - I2C_STATE_BUSY = 3, /**< Busy */ - I2C_STATE_ERROR = -1 /**< Error occurred */ -} i2c_state; - -/** - * @brief I2C device type. - */ -typedef struct i2c_dev { - struct i2c_reg_map *regs; /**< Register map */ - struct i2c_msg *msg; /**< Messages */ - uint32 error_flags; /**< Error flags, set on I2C error condition */ - volatile uint32 timestamp; /**< For internal use */ - - /** - * @brief Deprecated. Use .scl_port or .sda_port instead. - * If non-null, this will be used as SDA, SCL pins' GPIO port. If - * null, then .sda_port will be used for SDA, and .sda_port for - * SDA. */ - struct gpio_dev *gpio_port; - - /** - * @brief SDA GPIO device (but see .gpio_port). - */ - struct gpio_dev *sda_port; - - /** - * @brief SCL GPIO device (but see .gpio_port). - */ - struct gpio_dev *scl_port; - - uint16 msgs_left; /**< Messages left */ - uint8 sda_pin; /**< SDA bit on gpio_port */ - uint8 scl_pin; /**< SCL bit on gpio_port */ - rcc_clk_id clk_id; /**< RCC clock information */ - nvic_irq_num ev_nvic_line; /**< Event IRQ number */ - nvic_irq_num er_nvic_line; /**< Error IRQ number */ - volatile i2c_state state; /**< Device state */ -} i2c_dev; - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h b/STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h deleted file mode 100644 index f99943986..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/iwdg.h +++ /dev/null @@ -1,115 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Michael Hope. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/iwdg.h - * @author Michael Hope, Marti Bolivar - * @brief Independent watchdog support. - * - * To use the independent watchdog, first call iwdg_init() with the - * appropriate prescaler and IWDG counter reload values for your - * application. Afterwards, you must periodically call iwdg_feed() - * before the IWDG counter reaches 0 to reset the counter to its - * reload value. If you do not, the chip will reset. - * - * Once started, the independent watchdog cannot be turned off. - */ - -#ifndef _LIBMAPLE_IWDG_H_ -#define _LIBMAPLE_IWDG_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* - * Register map - */ - -/** Independent watchdog register map type. */ -typedef struct iwdg_reg_map { - __IO uint32 KR; /**< Key register. */ - __IO uint32 PR; /**< Prescaler register. */ - __IO uint32 RLR; /**< Reload register. */ - __IO uint32 SR; /**< Status register */ -} iwdg_reg_map; - -/** Independent watchdog base pointer */ -#define IWDG_BASE ((struct iwdg_reg_map*)0x40003000) - -/* - * Register bit definitions - */ - -/* Key register */ - -#define IWDG_KR_UNLOCK 0x5555 -#define IWDG_KR_FEED 0xAAAA -#define IWDG_KR_START 0xCCCC - -/* Prescaler register */ - -#define IWDG_PR_DIV_4 0x0 -#define IWDG_PR_DIV_8 0x1 -#define IWDG_PR_DIV_16 0x2 -#define IWDG_PR_DIV_32 0x3 -#define IWDG_PR_DIV_64 0x4 -#define IWDG_PR_DIV_128 0x5 -#define IWDG_PR_DIV_256 0x6 - -/* Status register */ - -#define IWDG_SR_RVU_BIT 1 -#define IWDG_SR_PVU_BIT 0 - -#define IWDG_SR_RVU (1U << IWDG_SR_RVU_BIT) -#define IWDG_SR_PVU (1U << IWDG_SR_PVU_BIT) - -/** - * @brief Independent watchdog prescalers. - * - * These divide the 40 kHz IWDG clock. - */ -typedef enum iwdg_prescaler { - IWDG_PRE_4 = IWDG_PR_DIV_4, /**< Divide by 4 */ - IWDG_PRE_8 = IWDG_PR_DIV_8, /**< Divide by 8 */ - IWDG_PRE_16 = IWDG_PR_DIV_16, /**< Divide by 16 */ - IWDG_PRE_32 = IWDG_PR_DIV_32, /**< Divide by 32 */ - IWDG_PRE_64 = IWDG_PR_DIV_64, /**< Divide by 64 */ - IWDG_PRE_128 = IWDG_PR_DIV_128, /**< Divide by 128 */ - IWDG_PRE_256 = IWDG_PR_DIV_256 /**< Divide by 256 */ -} iwdg_prescaler; - -void iwdg_init(iwdg_prescaler prescaler, uint16 reload); -void iwdg_feed(void); - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/libmaple.h b/STM32F3/cores/maple/libmaple/include/libmaple/libmaple.h deleted file mode 100644 index c9034d796..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/libmaple.h +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/libmaple.h - * @brief General include file for libmaple - */ - -#ifndef _LIBMAPLE_LIBMAPLE_H_ -#define _LIBMAPLE_LIBMAPLE_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h b/STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h deleted file mode 100644 index c0a989a40..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/libmaple_types.h +++ /dev/null @@ -1,73 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/libmaple_types.h - * - * @brief libmaple's types, and operations on types. - */ - -#ifndef _LIBMAPLE_LIBMAPLE_TYPES_H_ -#define _LIBMAPLE_LIBMAPLE_TYPES_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -typedef unsigned char uint8; -typedef unsigned short uint16; -typedef unsigned int uint32; -typedef unsigned long long uint64; - -typedef signed char int8; -typedef short int16; -typedef int int32; -typedef long long int64; - -typedef void (*voidFuncPtr)(void); -typedef void (*voidArgumentFuncPtr)(void *); - -#define __IO volatile -#define __attr_flash __attribute__((section (".USER_FLASH"))) -#define __packed __attribute__((__packed__)) -#define __deprecated __attribute__((__deprecated__)) -#define __weak __attribute__((weak)) -#define __always_inline inline __attribute__((always_inline)) -#define __unused __attribute__((unused)) - -#ifndef NULL -#define NULL 0 -#endif - -#ifndef offsetof -#define offsetof(type, member) __builtin_offsetof(type, member) -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/nvic.h b/STM32F3/cores/maple/libmaple/include/libmaple/nvic.h deleted file mode 100644 index 76996043d..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/nvic.h +++ /dev/null @@ -1,155 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/nvic.h - * @brief Nested vectored interrupt controller support. - * - * Basic usage: - * - * @code - * // Initialise the interrupt controller and point to the vector - * // table at the start of flash. - * nvic_init(0x08000000, 0); - * // Bind in a timer interrupt handler - * timer_attach_interrupt(TIMER_CC1_INTERRUPT, handler); - * // Optionally set the priority - * nvic_irq_set_priority(NVIC_TIMER1_CC, 5); - * // All done, enable all interrupts - * nvic_globalirq_enable(); - * @endcode - */ - -#ifndef _LIBMAPLE_NVIC_H_ -#define _LIBMAPLE_NVIC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include - -/** NVIC register map type. */ -typedef struct nvic_reg_map { - __IO uint32 ISER[8]; /**< Interrupt Set Enable Registers */ - /** Reserved */ - uint32 RESERVED0[24]; - - __IO uint32 ICER[8]; /**< Interrupt Clear Enable Registers */ - /** Reserved */ - uint32 RESERVED1[24]; - - __IO uint32 ISPR[8]; /**< Interrupt Set Pending Registers */ - /** Reserved */ - uint32 RESERVED2[24]; - - __IO uint32 ICPR[8]; /**< Interrupt Clear Pending Registers */ - /** Reserved */ - uint32 RESERVED3[24]; - - __IO uint32 IABR[8]; /**< Interrupt Active bit Registers */ - /** Reserved */ - uint32 RESERVED4[56]; - - __IO uint8 IP[240]; /**< Interrupt Priority Registers */ - /** Reserved */ - uint32 RESERVED5[644]; - - __IO uint32 STIR; /**< Software Trigger Interrupt Registers */ -} nvic_reg_map; - -/** NVIC register map base pointer. */ -#define NVIC_BASE ((struct nvic_reg_map*)0xE000E100) - -/* - * Note: The series header must define enum nvic_irq_num, which gives - * descriptive names to the interrupts and exceptions from NMI (-14) - * to the largest interrupt available in the series, where the value - * for nonnegative enumerators corresponds to its position in the - * vector table. - * - * It also must define a static inline nvic_irq_disable_all(), which - * writes 0xFFFFFFFF to all ICE registers available in the series. (We - * place the include here to give the series header access to - * NVIC_BASE, in order to let it do so). - */ -#include - -void nvic_init(uint32 address, uint32 offset); -void nvic_set_vector_table(uint32 address, uint32 offset); -void nvic_irq_set_priority(nvic_irq_num irqn, uint8 priority); -void nvic_sys_reset(); - -/** - * Enables interrupts and configurable fault handlers (clear PRIMASK). - */ -static __always_inline void nvic_globalirq_enable() { - asm volatile("cpsie i"); -} - -/** - * Disable interrupts and configurable fault handlers (set PRIMASK). - */ -static __always_inline void nvic_globalirq_disable() { - asm volatile("cpsid i"); -} - -/** - * @brief Enable interrupt irq_num - * @param irq_num Interrupt to enable - */ -static inline void nvic_irq_enable(nvic_irq_num irq_num) { - if (irq_num < 0) { - return; - } - NVIC_BASE->ISER[irq_num / 32] = BIT(irq_num % 32); -} - -/** - * @brief Disable interrupt irq_num - * @param irq_num Interrupt to disable - */ -static inline void nvic_irq_disable(nvic_irq_num irq_num) { - if (irq_num < 0) { - return; - } - NVIC_BASE->ICER[irq_num / 32] = BIT(irq_num % 32); -} - -/** - * @brief Quickly disable all interrupts. - * - * Calling this function is significantly faster than calling - * nvic_irq_disable() in a loop. - */ -static inline void nvic_irq_disable_all(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/opamp.h b/STM32F3/cores/maple/libmaple/include/libmaple/opamp.h deleted file mode 100644 index 2a0be62a4..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/opamp.h +++ /dev/null @@ -1,46 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/include/libmaple/fpu.h - * @author F3-port by Hanspeter Portner - * @brief Floating Point Unit (OPAMP) interace. - */ - -#ifndef _LIBMAPLE_OPAMP_H_ -#define _LIBMAPLE_OPAMP_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/pwr.h b/STM32F3/cores/maple/libmaple/include/libmaple/pwr.h deleted file mode 100644 index 6087c9b17..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/pwr.h +++ /dev/null @@ -1,115 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/pwr.h - * @brief Power control (PWR). - */ - -#ifndef _LIBMAPLE_PWR_H_ -#define _LIBMAPLE_PWR_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/** Power interface register map. */ -typedef struct pwr_reg_map { - __IO uint32 CR; /**< Control register */ - __IO uint32 CSR; /**< Control and status register */ -} pwr_reg_map; - -/** Power peripheral register map base pointer. */ -#define PWR_BASE ((struct pwr_reg_map*)0x40007000) - -/* - * Register bit definitions - */ - -/* Control register */ - -/** Disable backup domain write protection bit */ -#define PWR_CR_DBP_BIT 8 -/** Power voltage detector enable bit */ -#define PWR_CR_PVDE_BIT 4 -/** Clear standby flag bit */ -#define PWR_CR_CSBF_BIT 3 -/** Clear wakeup flag bit */ -#define PWR_CR_CWUF_BIT 2 -/** Power down deepsleep bit */ -#define PWR_CR_PDDS_BIT 1 -/** Low-power deepsleep bit */ -#define PWR_CR_LPDS_BIT 0 - -/** Disable backup domain write protection */ -#define PWR_CR_DBP (1U << PWR_CR_DBP_BIT) -/** Power voltage detector (PVD) level selection */ -#define PWR_CR_PLS (0x7 << 5) -/** Power voltage detector enable */ -#define PWR_CR_PVDE (1U << PWR_CR_PVDE_BIT) -/** Clear standby flag */ -#define PWR_CR_CSBF (1U << PWR_CR_CSBF_BIT) -/** Clear wakeup flag */ -#define PWR_CR_CWUF (1U << PWR_CR_CWUF_BIT) -/** Power down deepsleep */ -#define PWR_CR_PDDS (1U << PWR_CR_PDDS_BIT) -/** Low-power deepsleep */ -#define PWR_CR_LPDS (1U << PWR_CR_LPDS_BIT) - -/* Control and status register */ - -/** Enable wakeup pin bit */ -#define PWR_CSR_EWUP_BIT 8 -/** PVD output bit */ -#define PWR_CSR_PVDO_BIT 2 -/** Standby flag bit */ -#define PWR_CSR_SBF_BIT 1 -/** Wakeup flag bit */ -#define PWR_CSR_WUF_BIT 0 - -/** Enable wakeup pin */ -#define PWR_CSR_EWUP (1U << PWR_CSR_EWUP_BIT) -/** PVD output */ -#define PWR_CSR_PVDO (1U << PWR_CSR_PVDO_BIT) -/** Standby flag */ -#define PWR_CSR_SBF (1U << PWR_CSR_SBF_BIT) -/** Wakeup flag */ -#define PWR_CSR_WUF (1U << PWR_CSR_WUF_BIT) - -/* - * Convenience functions - */ - -void pwr_init(void); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/rcc.h b/STM32F3/cores/maple/libmaple/include/libmaple/rcc.h deleted file mode 100644 index ea16803e7..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/rcc.h +++ /dev/null @@ -1,175 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/rcc.h - * @brief Reset and Clock Control (RCC) interface. - */ - -#ifndef _LIBMAPLE_RCC_H_ -#define _LIBMAPLE_RCC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* Put the SYSCLK sources before the series header is included, as it - * might need them. */ -/** - * @brief SYSCLK sources - * @see rcc_switch_sysclk() - */ -typedef enum rcc_sysclk_src { - RCC_CLKSRC_HSI = 0x0, - RCC_CLKSRC_HSE = 0x1, - RCC_CLKSRC_PLL = 0x2, -} rcc_sysclk_src; - -#include - -/* Note: Beyond the usual (registers, etc.), it's up to the series - * header to define the following types: - * - * - enum rcc_clk: Available system and secondary clock sources, - * e.g. RCC_CLK_HSE, RCC_CLK_PLL, RCC_CLK_LSE. - * - * Note that the inclusion of secondary clock sources (like LSI and - * LSE) makes enum rcc_clk different from the SYSCLK sources, which - * are defined in this header as enum rcc_sysclk_src. - * - * IMPORTANT NOTE TO IMPLEMENTORS: If you are adding support for a - * new STM32 series, see the comment near rcc_clk_reg() in - * libmaple/rcc.c for information on how to choose these values so - * that rcc_turn_on_clk() etc. will work on your series. - * - * - enum rcc_clk_id: For each available peripheral. These are widely used - * as unique IDs (TODO extricate from RCC?). Peripherals which are - * common across STM32 series should use the same token for their - * rcc_clk_id in each series header. - * - * - enum rcc_clk_domain: For each clock domain. This is returned by - * rcc_dev_clk(). For instance, each AHB and APB is a clock domain. - * - * - enum rcc_prescaler: And a suitable set of dividers for - * rcc_set_prescaler(). - * - * - enum rcc_pllsrc: For each PLL source. Same source, same token. - * - * - A target-dependent type to be pointed to by the data field in a - * struct rcc_pll_cfg. - */ - -#ifdef __DOXYGEN__ -/** RCC register map base pointer */ -#define RCC_BASE -#endif - -/* Clock prescaler management. */ - -/** - * @brief Set the divider on a peripheral prescaler - * @param prescaler prescaler to set - * @param divider prescaler divider - */ -extern void rcc_set_prescaler(rcc_prescaler prescaler, uint32 divider); - -/* SYSCLK. */ - -void rcc_switch_sysclk(rcc_sysclk_src sysclk_src); - -/* PLL configuration */ - -/** - * @brief Specifies a configuration for the main PLL. - */ -typedef struct rcc_pll_cfg { - rcc_pllsrc pllsrc; /**< PLL source */ - - /** Series-specific configuration data. */ - void *data; -} rcc_pll_cfg; - -/** - * @brief Configure the main PLL. - * - * You may only call this function while the PLL is disabled. - * - * @param pll_cfg Desired PLL configuration. The contents of this - * struct depend entirely on the target. - */ -extern void rcc_configure_pll(rcc_pll_cfg *pll_cfg); - -/* System and secondary clock sources. */ - -void rcc_turn_on_clk(rcc_clk clock); -void rcc_turn_off_clk(rcc_clk clock); -int rcc_is_clk_on(rcc_clk clock); -int rcc_is_clk_ready(rcc_clk clock); - -/* Peripheral clock lines and clock domains. */ - -/** - * @brief Turn on the clock line on a peripheral - * @param id Clock ID of the peripheral to turn on. - */ -extern void rcc_clk_enable(rcc_clk_id id); - -/** - * @brief Reset a peripheral. - * - * Caution: not all rcc_clk_id values refer to a peripheral which can - * be reset. (Only rcc_clk_ids for peripherals with bits in an RCC - * reset register can be used here.) - * - * @param id Clock ID of the peripheral to reset. - */ -extern void rcc_reset_dev(rcc_clk_id id); - -rcc_clk_domain rcc_dev_clk(rcc_clk_id id); - -/* Clock security system */ - -/** - * @brief Enable the clock security system (CSS). - */ -static inline void rcc_enable_css() { - RCC_BASE->CR |= RCC_CR_CSSON; -} - -/** - * @brief Disable the clock security system (CSS). - */ -static inline void rcc_disable_css() { - RCC_BASE->CR &= ~RCC_CR_CSSON; -} - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h b/STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h deleted file mode 100644 index 633c29ad3..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/ring_buffer.h +++ /dev/null @@ -1,188 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/ring_buffer.h - * @brief Simple circular buffer - * - * This implementation is not thread-safe. In particular, none of - * these functions is guaranteed re-entrant. - */ - -#ifndef _LIBMAPLE_RING_BUFFER_H_ -#define _LIBMAPLE_RING_BUFFER_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/** - * Ring buffer type. - * - * The buffer is empty when head == tail. - * - * The buffer is full when the head is one byte in front of the tail, - * modulo buffer length. - * - * One byte is left free to distinguish empty from full. */ -typedef struct ring_buffer { - volatile uint8 *buf; /**< Buffer items are stored into */ - uint16 head; /**< Index of the next item to remove */ - uint16 tail; /**< Index where the next item will get inserted */ - uint16 size; /**< Buffer capacity minus one */ -} ring_buffer; - -/** - * Initialise a ring buffer. - * - * @param rb Instance to initialise - * - * @param size Number of items in buf. The ring buffer will always - * leave one element unoccupied, so the maximum number of - * elements it can store will be size - 1. Thus, size - * must be at least 2. - * - * @param buf Buffer to store items into - */ -static inline void rb_init(ring_buffer *rb, uint16 size, uint8 *buf) { - rb->head = 0; - rb->tail = 0; - rb->size = size - 1; - rb->buf = buf; -} - -/** - * @brief Return the number of elements stored in the ring buffer. - * @param rb Buffer whose elements to count. - */ -static inline uint16 rb_full_count(ring_buffer *rb) { - __IO ring_buffer *arb = rb; - int32 size = arb->tail - arb->head; - if (arb->tail < arb->head) { - size += arb->size + 1; - } - return (uint16)size; -} - -/** - * @brief Returns true if and only if the ring buffer is full. - * @param rb Buffer to test. - */ -static inline int rb_is_full(ring_buffer *rb) { - return (rb->tail + 1 == rb->head) || - (rb->tail == rb->size && rb->head == 0); -} - -/** - * @brief Returns true if and only if the ring buffer is empty. - * @param rb Buffer to test. - */ -static inline int rb_is_empty(ring_buffer *rb) { - return rb->head == rb->tail; -} - -/** - * Append element onto the end of a ring buffer. - * @param rb Buffer to append onto. - * @param element Value to append. - */ -static inline void rb_insert(ring_buffer *rb, uint8 element) { - rb->buf[rb->tail] = element; - rb->tail = (rb->tail == rb->size) ? 0 : rb->tail + 1; -} - -/** - * @brief Remove and return the first item from a ring buffer. - * @param rb Buffer to remove from, must contain at least one element. - */ -static inline uint8 rb_remove(ring_buffer *rb) { - uint8 ch = rb->buf[rb->head]; - rb->head = (rb->head == rb->size) ? 0 : rb->head + 1; - return ch; -} - -/** - * @brief Attempt to remove the first item from a ring buffer. - * - * If the ring buffer is nonempty, removes and returns its first item. - * If it is empty, does nothing and returns a negative value. - * - * @param rb Buffer to attempt to remove from. - */ -static inline int16 rb_safe_remove(ring_buffer *rb) { - return rb_is_empty(rb) ? -1 : rb_remove(rb); -} - -/** - * @brief Attempt to insert an element into a ring buffer. - * - * @param rb Buffer to insert into. - * @param element Value to insert into rb. - * @sideeffect If rb is not full, appends element onto buffer. - * @return If element was appended, then true; otherwise, false. */ -static inline int rb_safe_insert(ring_buffer *rb, uint8 element) { - if (rb_is_full(rb)) { - return 0; - } - rb_insert(rb, element); - return 1; -} - -/** - * @brief Append an item onto the end of a non-full ring buffer. - * - * If the buffer is full, removes its first item, then inserts the new - * element at the end. - * - * @param rb Ring buffer to insert into. - * @param element Value to insert into ring buffer. - * @return On success, returns -1. If an element was popped, returns - * the popped value. - */ -static inline int rb_push_insert(ring_buffer *rb, uint8 element) { - int ret = -1; - if (rb_is_full(rb)) { - ret = rb_remove(rb); - } - rb_insert(rb, element); - return ret; -} - -/** - * @brief Discard all items from a ring buffer. - * @param rb Ring buffer to discard all items from. - */ -static inline void rb_reset(ring_buffer *rb) { - rb->tail = rb->head; -} - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/scb.h b/STM32F3/cores/maple/libmaple/include/libmaple/scb.h deleted file mode 100644 index 0b01480bf..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/scb.h +++ /dev/null @@ -1,214 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011-2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/scb.h - * @brief System control block header - */ - -/* - * FIXME: STM32F2? - */ - -#ifndef _LIBMAPLE_SCB_H_ -#define _LIBMAPLE_SCB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * Register map and base pointer - */ - -/** System control block register map type */ -typedef struct scb_reg_map { - __IO uint32 CPUID; /**< CPU ID Base Register */ - __IO uint32 ICSR; /**< Interrupt Control State Register */ - __IO uint32 VTOR; /**< Vector Table Offset Register */ - __IO uint32 AIRCR; /**< Application Interrupt / Reset Control Register */ - __IO uint32 SCR; /**< System Control Register */ - __IO uint32 CCR; /**< Configuration and Control Register */ - __IO uint8 SHP[12]; /**< System Handler Priority Registers - (4-7, 8-11, 12-15) */ - __IO uint32 SHCSR; /**< System Handler Control and State Register */ - __IO uint32 CFSR; /**< Configurable Fault Status Register */ - __IO uint32 HFSR; /**< Hard Fault Status Register */ - /* DFSR is not documented by ST in PM0056 (as of Revision 4), but - * there's a 4 byte hole in the SCB register map docs right where - * it belongs. Since it's specified as "always implemented" in - * the ARM v7-M ARM, I'm assuming its absence is a bug in the ST - * doc, but I haven't proven it. [mbolivar] */ - __IO uint32 DFSR; /**< Debug Fault Status Register */ - __IO uint32 MMFAR; /**< Mem Manage Address Register */ - __IO uint32 BFAR; /**< Bus Fault Address Register */ -#if 0 - /* The following registers are implementation-defined according to - * ARM v7-M, and I can't find evidence of their existence in ST's - * docs. I'm removing them. Feel free to yell at me if they do - * exist. [mbolivar] - */ - __IO uint32 AFSR; /**< Auxiliary Fault Status Register */ - __IO uint32 PFR[2]; /**< Processor Feature Register */ - __IO uint32 DFR; /**< Debug Feature Register */ - __IO uint32 AFR; /**< Auxiliary Feature Register */ - __IO uint32 MMFR[4]; /**< Memory Model Feature Register */ - __IO uint32 ISAR[5]; /**< ISA Feature Register */ -#endif -} scb_reg_map; - -/** System control block register map base pointer */ -#define SCB_BASE ((struct scb_reg_map*)0xE000ED00) - -/* - * Register bit definitions - */ - -/* No SCB_REG_FIELD_BIT macros as the relevant addresses are not in a - * bit-band region. */ - -/* CPUID base register (SCB_CPUID) */ - -#define SCB_CPUID_IMPLEMENTER (0xFF << 24) -#define SCB_CPUID_VARIANT (0xF << 20) -#define SCB_CPUID_CONSTANT (0xF << 16) -#define SCB_CPUID_PARTNO (0xFFF << 4) -#define SCB_CPUID_REVISION 0xF - -/* Interrupt control state register (SCB_ICSR) */ - -#define SCB_ICSR_NMIPENDSET (1U << 31) -#define SCB_ICSR_PENDSVSET (1U << 28) -#define SCB_ICSR_PENDSVCLR (1U << 27) -#define SCB_ICSR_PENDSTSET (1U << 26) -#define SCB_ICSR_PENDSTCLR (1U << 25) -#define SCB_ICSR_ISRPENDING (1U << 22) -#define SCB_ICSR_VECTPENDING (0x3FF << 12) -#define SCB_ICSR_RETOBASE (1U << 11) -#define SCB_ICSR_VECTACTIVE 0xFF - -/* Vector table offset register (SCB_VTOR) */ - -#define SCB_VTOR_TBLOFF (0x1FFFFF << 9) - -/* Application interrupt and reset control register (SCB_AIRCR) */ - -#define SCB_AIRCR_VECTKEYSTAT (0x5FA << 16) -#define SCB_AIRCR_VECTKEY (0x5FA << 16) -#define SCB_AIRCR_ENDIANNESS (1U << 15) -#define SCB_AIRCR_PRIGROUP (0x3 << 8) -#define SCB_AIRCR_SYSRESETREQ (1U << 2) -#define SCB_AIRCR_VECTCLRACTIVE (1U << 1) -#define SCB_AIRCR_VECTRESET (1U << 0) - -/* System control register (SCB_SCR) */ - -#define SCB_SCR_SEVONPEND (1U << 4) -#define SCB_SCR_SLEEPDEEP (1U << 2) -#define SCB_SCR_SLEEPONEXIT (1U << 1) - -/* Configuration and Control Register (SCB_CCR) */ - -#define SCB_CCR_STKALIGN (1U << 9) -#define SCB_CCR_BFHFNMIGN (1U << 8) -#define SCB_CCR_DIV_0_TRP (1U << 4) -#define SCB_CCR_UNALIGN_TRP (1U << 3) -#define SCB_CCR_USERSETMPEND (1U << 1) -#define SCB_CCR_NONBASETHRDENA (1U << 0) - -/* System handler priority registers (SCB_SHPRx) */ - -#define SCB_SHPR1_PRI6 (0xFF << 16) -#define SCB_SHPR1_PRI5 (0xFF << 8) -#define SCB_SHPR1_PRI4 0xFF - -#define SCB_SHPR2_PRI11 (0xFF << 24) - -#define SCB_SHPR3_PRI15 (0xFF << 24) -#define SCB_SHPR3_PRI14 (0xFF << 16) - -/* System Handler Control and state register (SCB_SHCSR) */ - -#define SCB_SHCSR_USGFAULTENA (1U << 18) -#define SCB_SHCSR_BUSFAULTENA (1U << 17) -#define SCB_SHCSR_MEMFAULTENA (1U << 16) -#define SCB_SHCSR_SVCALLPENDED (1U << 15) -#define SCB_SHCSR_BUSFAULTPENDED (1U << 14) -#define SCB_SHCSR_MEMFAULTPENDED (1U << 13) -#define SCB_SHCSR_USGFAULTPENDED (1U << 12) -#define SCB_SHCSR_SYSTICKACT (1U << 11) -#define SCB_SHCSR_PENDSVACT (1U << 10) -#define SCB_SHCSR_MONITORACT (1U << 8) -#define SCB_SHCSR_SVCALLACT (1U << 7) -#define SCB_SHCSR_USGFAULTACT (1U << 3) -#define SCB_SHCSR_BUSFAULTACT (1U << 1) -#define SCB_SHCSR_MEMFAULTACT (1U << 0) - -/* Configurable fault status register (SCB_CFSR) */ - -#define SCB_CFSR_DIVBYZERO (1U << 25) -#define SCB_CFSR_UNALIGNED (1U << 24) -#define SCB_CFSR_NOCP (1U << 19) -#define SCB_CFSR_INVPC (1U << 18) -#define SCB_CFSR_INVSTATE (1U << 17) -#define SCB_CFSR_UNDEFINSTR (1U << 16) -#define SCB_CFSR_BFARVALID (1U << 15) -#define SCB_CFSR_STKERR (1U << 12) -#define SCB_CFSR_UNSTKERR (1U << 11) -#define SCB_CFSR_IMPRECISERR (1U << 10) -#define SCB_CFSR_PRECISERR (1U << 9) -#define SCB_CFSR_IBUSERR (1U << 8) -#define SCB_CFSR_MMARVALID (1U << 7) -#define SCB_CFSR_MSTKERR (1U << 4) -#define SCB_CFSR_MUNSTKERR (1U << 3) -#define SCB_CFSR_DACCVIOL (1U << 1) -#define SCB_CFSR_IACCVIOL (1U << 0) - -/* Hard Fault Status Register (SCB_HFSR) */ - -#define SCB_HFSR_DEBUG_VT (1U << 31) -#define SCB_CFSR_FORCED (1U << 30) -#define SCB_CFSR_VECTTBL (1U << 1) - -/* Debug Fault Status Register */ - -/* Not specified by PM0056, but required by ARM. The bit definitions - * here are based on the names given in the ARM v7-M ARM. */ - -#define SCB_DFSR_EXTERNAL (1U << 4) -#define SCB_DFSR_VCATCH (1U << 3) -#define SCB_DFSR_DWTTRAP (1U << 2) -#define SCB_DFSR_BKPT (1U << 1) -#define SCB_DFSR_HALTED (1U << 0) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/spi.h b/STM32F3/cores/maple/libmaple/include/libmaple/spi.h deleted file mode 100644 index 5c0917029..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/spi.h +++ /dev/null @@ -1,487 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/spi.h - * @author Marti Bolivar , - * F3-port by Hanspeter Portner - * @brief Serial Peripheral Interface (SPI) and Integrated - * Interchip Sound (I2S) peripheral support. - * - * I2S support is currently limited to register maps and bit definitions. - */ - -#ifndef _LIBMAPLE_SPI_H_ -#define _LIBMAPLE_SPI_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include -#include -#include - -/* - * Register maps - */ - -/** SPI register map type. */ -typedef struct spi_reg_map { - __IO uint32 CR1; /**< Control register 1 */ - __IO uint32 CR2; /**< Control register 2 */ - __IO uint32 SR; /**< Status register */ - __IO uint32 DR; /**< Data register */ - __IO uint32 CRCPR; /**< CRC polynomial register */ - __IO uint32 RXCRCR; /**< RX CRC register */ - __IO uint32 TXCRCR; /**< TX CRC register */ - __IO uint32 I2SCFGR; /**< I2S configuration register */ - __IO uint32 I2SPR; /**< I2S prescaler register */ -} spi_reg_map; - -/* - * Register bit definitions - */ - -/* Control register 1 */ - -#define SPI_CR1_BIDIMODE_BIT 15 -#define SPI_CR1_BIDIOE_BIT 14 -#define SPI_CR1_CRCEN_BIT 13 -#define SPI_CR1_CRCNEXT_BIT 12 -#define SPI_CR1_DFF_BIT 11 /* FIXME F3 incompatibility */ -#define SPI_CR1_RXONLY_BIT 10 -#define SPI_CR1_SSM_BIT 9 -#define SPI_CR1_SSI_BIT 8 -#define SPI_CR1_LSBFIRST_BIT 7 -#define SPI_CR1_SPE_BIT 6 -#define SPI_CR1_MSTR_BIT 2 -#define SPI_CR1_CPOL_BIT 1 -#define SPI_CR1_CPHA_BIT 0 - -#define SPI_CR1_BIDIMODE (1U << SPI_CR1_BIDIMODE_BIT) -#define SPI_CR1_BIDIMODE_2_LINE (0x0 << SPI_CR1_BIDIMODE_BIT) -#define SPI_CR1_BIDIMODE_1_LINE (0x1 << SPI_CR1_BIDIMODE_BIT) -#define SPI_CR1_BIDIOE (1U << SPI_CR1_BIDIOE_BIT) -#define SPI_CR1_CRCEN (1U << SPI_CR1_CRCEN_BIT) -#define SPI_CR1_CRCNEXT (1U << SPI_CR1_CRCNEXT_BIT) -#define SPI_CR1_DFF (1U << SPI_CR1_DFF_BIT) -#define SPI_CR1_DFF_8_BIT (0x0 << SPI_CR1_DFF_BIT) -#define SPI_CR1_DFF_16_BIT (0x1 << SPI_CR1_DFF_BIT) -#define SPI_CR1_RXONLY (1U << SPI_CR1_RXONLY_BIT) -#define SPI_CR1_SSM (1U << SPI_CR1_SSM_BIT) -#define SPI_CR1_SSI (1U << SPI_CR1_SSI_BIT) -#define SPI_CR1_LSBFIRST (1U << SPI_CR1_LSBFIRST_BIT) -#define SPI_CR1_SPE (1U << SPI_CR1_SPE_BIT) -#define SPI_CR1_BR (0x7 << 3) -#define SPI_CR1_BR_PCLK_DIV_2 (0x0 << 3) -#define SPI_CR1_BR_PCLK_DIV_4 (0x1 << 3) -#define SPI_CR1_BR_PCLK_DIV_8 (0x2 << 3) -#define SPI_CR1_BR_PCLK_DIV_16 (0x3 << 3) -#define SPI_CR1_BR_PCLK_DIV_32 (0x4 << 3) -#define SPI_CR1_BR_PCLK_DIV_64 (0x5 << 3) -#define SPI_CR1_BR_PCLK_DIV_128 (0x6 << 3) -#define SPI_CR1_BR_PCLK_DIV_256 (0x7 << 3) -#define SPI_CR1_MSTR (1U << SPI_CR1_MSTR_BIT) -#define SPI_CR1_CPOL (1U << SPI_CR1_CPOL_BIT) -#define SPI_CR1_CPOL_LOW (0x0 << SPI_CR1_CPOL_BIT) -#define SPI_CR1_CPOL_HIGH (0x1 << SPI_CR1_CPOL_BIT) -#define SPI_CR1_CPHA (1U << SPI_CR1_CPHA_BIT) - -/* Control register 2 */ - -#define SPI_CR2_TXEIE_BIT 7 -#define SPI_CR2_RXNEIE_BIT 6 -#define SPI_CR2_ERRIE_BIT 5 -#define SPI_CR2_SSOE_BIT 2 -#define SPI_CR2_TXDMAEN_BIT 1 -#define SPI_CR2_RXDMAEN_BIT 0 - -#define SPI_CR2_TXEIE (1U << SPI_CR2_TXEIE_BIT) -#define SPI_CR2_RXNEIE (1U << SPI_CR2_RXNEIE_BIT) -#define SPI_CR2_ERRIE (1U << SPI_CR2_ERRIE_BIT) -#define SPI_CR2_SSOE (1U << SPI_CR2_SSOE_BIT) -#define SPI_CR2_TXDMAEN (1U << SPI_CR2_TXDMAEN_BIT) -#define SPI_CR2_RXDMAEN (1U << SPI_CR2_RXDMAEN_BIT) - -/* Status register */ - -#define SPI_SR_BSY_BIT 7 -#define SPI_SR_OVR_BIT 6 -#define SPI_SR_MODF_BIT 5 -#define SPI_SR_CRCERR_BIT 4 -#define SPI_SR_UDR_BIT 3 -#define SPI_SR_CHSIDE_BIT 2 -#define SPI_SR_TXE_BIT 1 -#define SPI_SR_RXNE_BIT 0 - -#define SPI_SR_BSY (1U << SPI_SR_BSY_BIT) -#define SPI_SR_OVR (1U << SPI_SR_OVR_BIT) -#define SPI_SR_MODF (1U << SPI_SR_MODF_BIT) -#define SPI_SR_CRCERR (1U << SPI_SR_CRCERR_BIT) -#define SPI_SR_UDR (1U << SPI_SR_UDR_BIT) -#define SPI_SR_CHSIDE (1U << SPI_SR_CHSIDE_BIT) -#define SPI_SR_CHSIDE_LEFT (0x0 << SPI_SR_CHSIDE_BIT) -#define SPI_SR_CHSIDE_RIGHT (0x1 << SPI_SR_CHSIDE_BIT) -#define SPI_SR_TXE (1U << SPI_SR_TXE_BIT) -#define SPI_SR_RXNE (1U << SPI_SR_RXNE_BIT) - -/* I2S configuration register */ - -#define SPI_I2SCFGR_I2SMOD_BIT 11 -#define SPI_I2SCFGR_I2SE_BIT 10 -#define SPI_I2SCFGR_PCMSYNC_BIT 7 -#define SPI_I2SCFGR_CKPOL_BIT 3 -#define SPI_I2SCFGR_CHLEN_BIT 0 - -#define SPI_I2SCFGR_I2SMOD (1U << SPI_I2SCFGR_I2SMOD_BIT) -#define SPI_I2SCFGR_I2SMOD_SPI (0x0 << SPI_I2SCFGR_I2SMOD_BIT) -#define SPI_I2SCFGR_I2SMOD_I2S (0x1 << SPI_I2SCFGR_I2SMOD_BIT) -#define SPI_I2SCFGR_I2SE (1U << SPI_I2SCFGR_I2SE_BIT) -#define SPI_I2SCFGR_I2SCFG (0x3 << 8) -#define SPI_I2SCFGR_I2SCFG_SLAVE_TX (0x0 << 8) -#define SPI_I2SCFGR_I2SCFG_SLAVE_RX (0x1 << 8) -#define SPI_I2SCFGR_I2SCFG_MASTER_TX (0x2 << 8) -#define SPI_I2SCFGR_I2SCFG_MASTER_RX (0x3 << 8) -#define SPI_I2SCFGR_PCMSYNC (1U << SPI_I2SCFGR_PCMSYNC_BIT) -#define SPI_I2SCFGR_PCMSYNC_SHORT (0x0 << SPI_I2SCFGR_PCMSYNC_BIT) -#define SPI_I2SCFGR_PCMSYNC_LONG (0x1 << SPI_I2SCFGR_PCMSYNC_BIT) -#define SPI_I2SCFGR_I2SSTD (0x3 << 4) -#define SPI_I2SCFGR_I2SSTD_PHILLIPS (0x0 << 4) -#define SPI_I2SCFGR_I2SSTD_MSB (0x1 << 4) -#define SPI_I2SCFGR_I2SSTD_LSB (0x2 << 4) -#define SPI_I2SCFGR_I2SSTD_PCM (0x3 << 4) -#define SPI_I2SCFGR_CKPOL (1U << SPI_I2SCFGR_CKPOL_BIT) -#define SPI_I2SCFGR_CKPOL_LOW (0x0 << SPI_I2SCFGR_CKPOL_BIT) -#define SPI_I2SCFGR_CKPOL_HIGH (0x1 << SPI_I2SCFGR_CKPOL_BIT) -#define SPI_I2SCFGR_DATLEN (0x3 << 1) -#define SPI_I2SCFGR_DATLEN_16_BIT (0x0 << 1) -#define SPI_I2SCFGR_DATLEN_24_BIT (0x1 << 1) -#define SPI_I2SCFGR_DATLEN_32_BIT (0x2 << 1) -#define SPI_I2SCFGR_CHLEN (1U << SPI_I2SCFGR_CHLEN_BIT) -#define SPI_I2SCFGR_CHLEN_16_BIT (0x0 << SPI_I2SCFGR_CHLEN_BIT) -#define SPI_I2SCFGR_CHLEN_32_BIT (0x1 << SPI_I2SCFGR_CHLEN_BIT) - -/* I2S prescaler register */ - -#define SPI_I2SPR_MCKOE_BIT 9 -#define SPI_I2SPR_ODD_BIT 8 - -#define SPI_I2SPR_MCKOE (1U << SPI_I2SPR_MCKOE_BIT) -#define SPI_I2SPR_ODD (1U << SPI_I2SPR_ODD_BIT) -#define SPI_I2SPR_I2SDIV 0xFF - -/* - * Devices - */ - -/** SPI device type */ -typedef struct spi_dev { - spi_reg_map *regs; /**< Register map */ - rcc_clk_id clk_id; /**< RCC clock information */ - nvic_irq_num irq_num; /**< NVIC interrupt number */ -} spi_dev; - -/* - * SPI Convenience functions - */ - -void spi_init(spi_dev *dev); - -struct gpio_dev; -/** - * @brief Configure GPIO bit modes for use as a SPI port's pins. - * - * @param dev SPI device - * @param as_master If true, configure as bus master; otherwise, as slave. - * @param nss_dev NSS pin's GPIO device - * @param nss_bit NSS pin's GPIO bit on nss_dev - * @param comm_dev SCK, MISO, MOSI pins' GPIO device - * @param sck_bit SCK pin's GPIO bit on comm_dev - * @param miso_bit MISO pin's GPIO bit on comm_dev - * @param mosi_bit MOSI pin's GPIO bit on comm_dev - */ -extern void spi_config_gpios(spi_dev *dev, - uint8 as_master, - struct gpio_dev *nss_dev, - uint8 nss_bit, - struct gpio_dev *comm_dev, - uint8 sck_bit, - uint8 miso_bit, - uint8 mosi_bit); - -/** - * @brief SPI mode configuration. - * - * A SPI mode determines a combination of the idle state of the clock - * line (the clock polarity, or "CPOL"), and which clock edge triggers - * data capture (the clock phase, or "CPHA"). - */ -typedef enum spi_mode { - /** Clock idles low, data captured on rising edge (first transition) */ - SPI_MODE_LOW_RISING = 0, - /** Clock idles low, data captured on falling edge (second transition) */ - SPI_MODE_LOW_FALLING = 1, - /** Clock idles high, data captured on falling edge (first transition) */ - SPI_MODE_HIGH_FALLING = 2, - /** Clock idles high, data captured on rising edge (second transition) */ - SPI_MODE_HIGH_RISING = 3, - - SPI_MODE_0 = SPI_MODE_LOW_RISING, /**< Same as SPI_MODE_LOW_RISING */ - SPI_MODE_1 = SPI_MODE_LOW_FALLING, /**< Same as SPI_MODE_LOW_FALLING */ - SPI_MODE_2 = SPI_MODE_HIGH_FALLING, /**< Same as SPI_MODE_HIGH_FALLING */ - SPI_MODE_3 = SPI_MODE_HIGH_RISING, /**< Same as SPI_MODE_HIGH_RISING */ -} spi_mode; - -/** - * @brief SPI baud rate configuration, as a divisor of f_PCLK, the - * PCLK clock frequency. - */ -typedef enum spi_baud_rate { - SPI_BAUD_PCLK_DIV_2 = SPI_CR1_BR_PCLK_DIV_2, /**< f_PCLK/2 */ - SPI_BAUD_PCLK_DIV_4 = SPI_CR1_BR_PCLK_DIV_4, /**< f_PCLK/4 */ - SPI_BAUD_PCLK_DIV_8 = SPI_CR1_BR_PCLK_DIV_8, /**< f_PCLK/8 */ - SPI_BAUD_PCLK_DIV_16 = SPI_CR1_BR_PCLK_DIV_16, /**< f_PCLK/16 */ - SPI_BAUD_PCLK_DIV_32 = SPI_CR1_BR_PCLK_DIV_32, /**< f_PCLK/32 */ - SPI_BAUD_PCLK_DIV_64 = SPI_CR1_BR_PCLK_DIV_64, /**< f_PCLK/64 */ - SPI_BAUD_PCLK_DIV_128 = SPI_CR1_BR_PCLK_DIV_128, /**< f_PCLK/128 */ - SPI_BAUD_PCLK_DIV_256 = SPI_CR1_BR_PCLK_DIV_256, /**< f_PCLK/256 */ -} spi_baud_rate; - -/** - * @brief SPI initialization flags. - * @see spi_master_enable() - * @see spi_slave_enable() - */ -typedef enum spi_cfg_flag { - SPI_BIDIMODE = SPI_CR1_BIDIMODE, /**< Bidirectional mode enable */ - SPI_BIDIOE = SPI_CR1_BIDIOE, /**< Output enable in bidirectional - mode */ - SPI_CRCEN = SPI_CR1_CRCEN, /**< Cyclic redundancy check (CRC) - enable */ - SPI_DFF_8_BIT = SPI_CR1_DFF_8_BIT, /**< 8-bit data frame format (this is - the default) */ - SPI_DFF_16_BIT = SPI_CR1_DFF_16_BIT, /**< 16-bit data frame format */ - SPI_RX_ONLY = SPI_CR1_RXONLY, /**< Receive only */ - SPI_SW_SLAVE = SPI_CR1_SSM, /**< Software slave management */ - SPI_SOFT_SS = SPI_CR1_SSI, /**< Software (internal) slave - select. This flag only has an - effect when used in combination - with SPI_SW_SLAVE. */ - SPI_FRAME_LSB = SPI_CR1_LSBFIRST, /**< LSB-first (little-endian) frame - format */ - SPI_FRAME_MSB = 0, /**< MSB-first (big-endian) frame - format (this is the default) */ -} spi_cfg_flag; - -void spi_master_enable(spi_dev *dev, - spi_baud_rate baud, - spi_mode mode, - uint32 flags); - -void spi_slave_enable(spi_dev *dev, - spi_mode mode, - uint32 flags); - -uint32 spi_tx(spi_dev *dev, const void *buf, uint32 len); - -/** - * @brief Call a function on each SPI port - * @param fn Function to call. - */ -extern void spi_foreach(void (*fn)(spi_dev*)); - -void spi_peripheral_enable(spi_dev *dev); -void spi_peripheral_disable(spi_dev *dev); - -void spi_tx_dma_enable(spi_dev *dev); -void spi_tx_dma_disable(spi_dev *dev); - -void spi_rx_dma_enable(spi_dev *dev); -void spi_rx_dma_disable(spi_dev *dev); - -/** - * @brief Determine if a SPI peripheral is enabled. - * @param dev SPI device - * @return True, if and only if dev's peripheral is enabled. - */ -static inline uint8 spi_is_enabled(spi_dev *dev) { - return dev->regs->CR1 & SPI_CR1_SPE_BIT; -} - -/** - * @brief Disable all SPI peripherals - */ -static inline void spi_peripheral_disable_all(void) { - spi_foreach(spi_peripheral_disable); -} - -/** Available SPI interrupts */ -typedef enum spi_interrupt { - SPI_TXE_INTERRUPT = SPI_CR2_TXEIE, /**< TX buffer empty interrupt */ - SPI_RXNE_INTERRUPT = SPI_CR2_RXNEIE, /**< RX buffer not empty interrupt */ - SPI_ERR_INTERRUPT = SPI_CR2_ERRIE /**< - * Error interrupt (CRC, overrun, - * and mode fault errors for SPI; - * underrun, overrun errors for I2S) - */ -} spi_interrupt; - -/** - * @brief Mask for all spi_interrupt values - * @see spi_interrupt - */ -#define SPI_INTERRUPTS_ALL (SPI_TXE_INTERRUPT | \ - SPI_RXNE_INTERRUPT | \ - SPI_ERR_INTERRUPT) - -/** - * @brief Enable SPI interrupt requests - * @param dev SPI device - * @param interrupt_flags Bitwise OR of spi_interrupt values to enable - * @see spi_interrupt - */ -static inline void spi_irq_enable(spi_dev *dev, uint32 interrupt_flags) { - dev->regs->CR2 |= interrupt_flags; - nvic_irq_enable(dev->irq_num); -} - -/** - * @brief Disable SPI interrupt requests - * @param dev SPI device - * @param interrupt_flags Bitwise OR of spi_interrupt values to disable - * @see spi_interrupt - */ -static inline void spi_irq_disable(spi_dev *dev, uint32 interrupt_flags) { - dev->regs->CR2 &= ~interrupt_flags; -} - -/** - * @brief Get the data frame format flags with which a SPI port is - * configured. - * @param dev SPI device whose data frame format to get. - * @return SPI_DFF_8_BIT, if dev has an 8-bit data frame format. - * Otherwise, SPI_DFF_16_BIT. - */ -static inline spi_cfg_flag spi_dff(spi_dev *dev) { - return ((dev->regs->CR1 & SPI_CR1_DFF) == SPI_CR1_DFF_8_BIT ? - SPI_DFF_8_BIT : - SPI_DFF_16_BIT); -} - -/** - * @brief Determine whether the device's peripheral receive (RX) - * register is empty. - * @param dev SPI device - * @return true, iff dev's RX register is empty. - */ -static inline uint8 spi_is_rx_nonempty(spi_dev *dev) { - return dev->regs->SR & SPI_SR_RXNE; -} - -/** - * @brief Retrieve the contents of the device's peripheral receive - * (RX) register. - * - * You may only call this function when the RX register is nonempty. - * Calling this function clears the contents of the RX register. - * - * @param dev SPI device - * @return Contents of dev's peripheral RX register - * @see spi_is_rx_reg_nonempty() - */ -extern uint16 spi_rx_reg(spi_dev *dev); - -/** - * @brief Determine whether the device's peripheral transmit (TX) - * register is empty. - * @param dev SPI device - * @return true, iff dev's TX register is empty. - */ -static inline uint8 spi_is_tx_empty(spi_dev *dev) { - return dev->regs->SR & SPI_SR_TXE; -} - -/** - * @brief Nonblocking SPI transmit. - * @param dev SPI port to use for transmission - * @param buf Buffer to transmit. The sizeof buf's elements are - * inferred from dev's data frame format (i.e., are - * correctly treated as 8-bit or 16-bit quantities). - * @param len Maximum number of elements to transmit. - * @return Number of elements transmitted. - */ -extern uint32 spi_tx(spi_dev *dev, const void *buf, uint32 len); - -/** - * @brief Load a value into the device's peripheral transmit (TX) register. - * - * You may only call this function when the TX register is empty. - * Calling this function loads val into the peripheral's TX register. - * If the device is properly configured, this will initiate a - * transmission, the completion of which will cause the TX register to - * be empty again. - * - * @param dev SPI device - * @param val Value to load into the TX register. If the SPI data - * frame format is 8 bit, the value must be right-aligned. - * @see spi_is_tx_reg_empty() - * @see spi_init() - * @see spi_master_enable() - * @see spi_slave_enable() - */ -static inline void spi_tx_reg(spi_dev *dev, uint16 val) { - dev->regs->DR = val; /* FIXME F3 incompatibility */ -} - -/** - * @brief Determine whether the device's peripheral busy (SPI_SR_BSY) - * flag is set. - * @param dev SPI device - * @return true, iff dev's BSY flag is set. - */ -static inline uint8 spi_is_busy(spi_dev *dev) { - return dev->regs->SR & SPI_SR_BSY; -} - -/* - * SPI auxiliary routines - */ - -extern void spi_reconfigure(spi_dev *dev, uint32 cr1_config); - -/* - * I2S convenience functions (TODO) - */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/stm32.h b/STM32F3/cores/maple/libmaple/include/libmaple/stm32.h deleted file mode 100644 index f7ced236b..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/stm32.h +++ /dev/null @@ -1,239 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010, 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/stm32.h - * @brief STM32 chip header - * - * This header supplies various chip-specific values for the current - * build target. It's useful both to abstract away hardware details - * (e.g. through use of STM32_NR_INTERRUPTS) and to decide what to do - * when you want something nonportable (e.g. by checking - * STM32_MCU_SERIES). - */ - -#ifndef _LIBMAPLE_STM32_H_ -#define _LIBMAPLE_STM32_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * STM32 series identifiers. - * - * Don't make these into an enum; the preprocessor needs them. - */ - -/** STM32F1 series. */ -#define STM32_SERIES_F1 0 -/** STM32F2 series. */ -#define STM32_SERIES_F2 1 -/** STM32L1 series. */ -#define STM32_SERIES_L1 2 -/** STM32F3 series. */ -#define STM32_SERIES_F3 3 -/** STM32F4 series. */ -#define STM32_SERIES_F4 4 - -/* The series header is responsible for defining: - * - * - Everything in the following __DOXYGEN__ conditional block. - * - * - STM32_HAVE_FSMC: 1 if the MCU has the FSMC peripheral, and 0 - * otherwise. - * - * - STM32_HAVE_USB: 1 if the MCU has a USB peripheral, and 0 - * otherwise. - */ -#include - -/* Ensure the series header isn't broken. */ -#if (!defined(STM32_PCLK1) || \ - !defined(STM32_PCLK2) || \ - !defined(STM32_MCU_SERIES) || \ - !defined(STM32_NR_INTERRUPTS) || \ - !defined(STM32_NR_GPIO_PORTS) || \ - !defined(STM32_TIMER_MASK) || \ - !defined(STM32_DELAY_US_MULT) || \ - !defined(STM32_SRAM_END) || \ - !defined(STM32_HAVE_DAC) || \ - !defined(STM32_HAVE_FSMC) || \ - !defined(STM32_HAVE_USB)) -#error "Bad STM32F1 configuration. Check header for your MCU." -#endif - -/* - * Derived macros - */ - -/* FIXME [0.0.13] add this to ReST API page */ -/** - * @brief Statically determine whether a timer is present. - * - * Given a constant timer number n (starting from 1), this macro has a - * nonzero value exactly when TIMERn is available. - */ -#define STM32_HAVE_TIMER(n) (STM32_TIMER_MASK & (1 << (n))) - -/* - * Doxygen for functionality provided by series header. - */ - -#ifdef __DOXYGEN__ - -/* - * Clock configuration. - * - * These defines depend upon how the MCU is configured. Because of - * the potential for a mismatch between them and the actual clock - * configuration, keep their number to a minimum. - */ - -/** - * @brief APB1 clock speed, in Hz. - */ -#define STM32_PCLK1 - -/** - * @brief APB2 clock speed, in Hz. - */ -#define STM32_PCLK2 - -/** @brief Deprecated. Use STM32_PCLK1 instead. */ -#define PCLK1 -/** @brief Deprecated. Use STM32_PCLK2 instead. */ -#define PCLK2 - -/* - * Series- and MCU-specific values. - */ - -/** - * @brief STM32 series value for the MCU being targeted. - * - * At time of writing, allowed values are: STM32_SERIES_F1, - * STM32_SERIES_F2. This set of values will expand as libmaple adds - * support for more STM32 series MCUs. - */ -#define STM32_MCU_SERIES - -/** - * @brief Number of interrupts in the vector table. - * - * This does not include Cortex-M interrupts (NMI, HardFault, etc.). - */ -#define STM32_NR_INTERRUPTS - -/** - * Number of GPIO ports. - */ -#define STM32_NR_GPIO_PORTS - -/* FIXME [0.0.13] add this to ReST API page */ -/** - * @brief Bitmask of timers available on the MCU. - * - * That is, if TIMERn is available, then STM32_TIMER_MASK & (1 << n) - * will be nonzero. For example, a nonzero value of "STM32_TIMER_MASK - * & 0x2" means TIMER1 is available. - * - * A bitmask is necessary as some STM32 MCUs have "holes" in the range - * of available timers. - */ -#define STM32_TIMER_MASK - -/** - * @brief Multiplier to convert microseconds into loop iterations - * in delay_us(). - * - * @see delay_us() - */ -#define STM32_DELAY_US_MULT - -/** - * @brief Pointer to end of built-in SRAM. - * - * Points to the address which is 1 byte past the last valid - * SRAM address. - */ -#define STM32_SRAM_END - -/** - * @brief 1 if the target MCU has a DAC, and 0 otherwise. - */ -#define STM32_HAVE_DAC - -/** - * @brief 1 if the target MCU has the FSMC peripheral, and 0 otherwise. - * - * Note that the feature set of the FSMC peripheral is restricted on - * some MCUs. - */ -#define STM32_HAVE_FSMC - -/** - * @brief 1 if the target MCU has a USB peripheral, and 0 otherwise. - * - * Note that a variety of USB peripherals are available across the - * different series, with widely varying feature sets and programming - * interfaces. This macro will be 1 if any such peripheral is present. - */ -#define STM32_HAVE_USB - -#endif /* __DOXYGEN__ */ - -/* - * The following are for backwards compatibility only. - */ - -/* PCLK1 and PCLK2 are for backwards compatibility only; don't use in - * new code. */ -#ifndef PCLK1 -#define PCLK1 STM32_PCLK1 -#endif -#if PCLK1 != STM32_PCLK1 -#error "PCLK1 (which is deprecated) differs from STM32_PCLK1." -#endif -#ifndef PCLK2 -#define PCLK2 STM32_PCLK2 -#endif -#if PCLK2 != STM32_PCLK2 -#error "PCLK2 (which is deprecated) differs from STM32_PCLK2." -#endif - -/** @brief Deprecated. Use STM32_NR_INTERRUPTS instead. */ -#define NR_INTERRUPTS STM32_NR_INTERRUPTS -/** @brief Deprecated. Use STM32_NR_GPIO_PORTS instead. */ -#define NR_GPIO_PORTS STM32_NR_GPIO_PORTS -/** @brief Deprecated. Use STM32_DELAY_US_MULT instead. */ -#define DELAY_US_MULT STM32_DELAY_US_MULT - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/syscfg.h b/STM32F3/cores/maple/libmaple/include/libmaple/syscfg.h deleted file mode 100644 index b8c901f85..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/syscfg.h +++ /dev/null @@ -1,116 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/syscfg.h - * @author F3-port by Hanspeter Portner - * @brief System configuration controller (SYSCFG) - * - * Availability: STM32F2, STM32F3, STM32F4. - */ - -#ifndef _LIBMAPLE_SYSCFG_H_ -#define _LIBMAPLE_SYSCFG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* External interrupt configuration register 1 */ - -#define SYSCFG_EXTICR1_EXTI0 0xF -#define SYSCFG_EXTICR1_EXTI1 0xF0 -#define SYSCFG_EXTICR1_EXTI2 0xF00 -#define SYSCFG_EXTICR1_EXTI3 0xF000 - -/* External interrupt configuration register 2 */ - -#define SYSCFG_EXTICR2_EXTI4 0xF -#define SYSCFG_EXTICR2_EXTI5 0xF0 -#define SYSCFG_EXTICR2_EXTI6 0xF00 -#define SYSCFG_EXTICR2_EXTI7 0xF000 - -/* External interrupt configuration register 3 */ - -#define SYSCFG_EXTICR3_EXTI8 0xF -#define SYSCFG_EXTICR3_EXTI9 0xF0 -#define SYSCFG_EXTICR3_EXTI10 0xF00 -#define SYSCFG_EXTICR3_EXTI11 0xF000 - -/* External interrupt configuration register 4 */ - -#define SYSCFG_EXTICR4_EXTI12 0xF -#define SYSCFG_EXTICR4_EXTI13 0xF0 -#define SYSCFG_EXTICR4_EXTI14 0xF00 -#define SYSCFG_EXTICR4_EXTI15 0xF000 - -/* - * Routines - */ - -/** - * @brief Initialize the SYSCFG peripheral. - */ -void syscfg_init(void); - -/** - * @brief System memory mode - * These values specify what memory to map to address 0x00000000. - * @see syscfg_set_mem_mode - */ -typedef enum syscfg_mem_mode { - /** Main flash memory is mapped at 0x0. */ - SYSCFG_MEM_MODE_FLASH = 0x0, - /** System flash (i.e. ST's baked-in bootloader) is mapped at 0x0. */ - SYSCFG_MEM_MODE_SYSTEM_FLASH = 0x1, - /** FSMC bank 1 (NOR/PSRAM 1 and 2) is mapped at 0x0. */ - SYSCFG_MEM_MODE_FSMC_BANK_1 = 0x2, - /** Embedded SRAM (i.e., not backup SRAM) is mapped at 0x0. */ - SYSCFG_MEM_MODE_SRAM = 0x3, -} syscfg_mem_mode; - - -/** - * @brief Set the memory to be mapped at address 0x00000000. - * - * This function can be used to override the BOOT pin - * configuration. Some restrictions apply; see your chip's reference - * manual for the details. - * - * @param mode Mode to set - * @see syscfg_mem_mode - */ -void syscfg_set_mem_mode(syscfg_mem_mode); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/systick.h b/STM32F3/cores/maple/libmaple/include/libmaple/systick.h deleted file mode 100644 index 815a1c3d6..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/systick.h +++ /dev/null @@ -1,115 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/systick.h - * @brief System timer definitions - */ - -#ifndef _LIBMAPLE_SYSTICK_H_ -#define _LIBMAPLE_SYSTICK_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include - -/** SysTick register map type */ -typedef struct systick_reg_map { - __IO uint32 CSR; /**< Control and status register */ - __IO uint32 RVR; /**< Reload value register */ - __IO uint32 CNT; /**< Current value register ("count") */ - __IO uint32 CVR; /**< Calibration value register */ -} systick_reg_map; - -/** SysTick register map base pointer */ -#define SYSTICK_BASE ((struct systick_reg_map*)0xE000E010) - -/* - * Register bit definitions. - */ - -/* Control and status register */ - -#define SYSTICK_CSR_COUNTFLAG BIT(16) -#define SYSTICK_CSR_CLKSOURCE BIT(2) -#define SYSTICK_CSR_CLKSOURCE_EXTERNAL 0 -#define SYSTICK_CSR_CLKSOURCE_CORE BIT(2) -#define SYSTICK_CSR_TICKINT BIT(1) -#define SYSTICK_CSR_TICKINT_PEND BIT(1) -#define SYSTICK_CSR_TICKINT_NO_PEND 0 -#define SYSTICK_CSR_ENABLE BIT(0) -#define SYSTICK_CSR_ENABLE_MULTISHOT BIT(0) -#define SYSTICK_CSR_ENABLE_DISABLED 0 - -/* Calibration value register */ - -#define SYSTICK_CVR_NOREF BIT(31) -#define SYSTICK_CVR_SKEW BIT(30) -#define SYSTICK_CVR_TENMS 0xFFFFFF - -/** System elapsed time, in milliseconds */ -extern volatile uint32 systick_uptime_millis; - -/** - * @brief Returns the system uptime, in milliseconds. - */ -static inline uint32 systick_uptime(void) { - return systick_uptime_millis; -} - - -void systick_init(uint32 reload_val); -void systick_disable(); -void systick_enable(); - -/** - * @brief Returns the current value of the SysTick counter. - */ -static inline uint32 systick_get_count(void) { - return SYSTICK_BASE->CNT; -} - -/** - * @brief Check for underflow. - * - * This function returns 1 if the SysTick timer has counted to 0 since - * the last time it was called. However, any reads of any part of the - * SysTick Control and Status Register SYSTICK_BASE->CSR will - * interfere with this functionality. See the ARM Cortex M3 Technical - * Reference Manual for more details (e.g. Table 8-3 in revision r1p1). - */ -static inline uint32 systick_check_underflow(void) { - return SYSTICK_BASE->CSR & SYSTICK_CSR_COUNTFLAG; -} - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/timer.h b/STM32F3/cores/maple/libmaple/include/libmaple/timer.h deleted file mode 100644 index 51a56239c..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/timer.h +++ /dev/null @@ -1,1119 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/timer.h - * @author Marti Bolivar - * @brief Timer interface. - */ - -#ifndef _LIBMAPLE_TIMER_H_ -#define _LIBMAPLE_TIMER_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include -#include -#include -#include - -/* - * Register maps - */ - -/** Advanced control timer register map type */ -typedef struct timer_adv_reg_map { - __IO uint32 CR1; /**< Control register 1 */ - __IO uint32 CR2; /**< Control register 2 */ - __IO uint32 SMCR; /**< Slave mode control register */ - __IO uint32 DIER; /**< DMA/interrupt enable register */ - __IO uint32 SR; /**< Status register */ - __IO uint32 EGR; /**< Event generation register */ - __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ - __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ - __IO uint32 CCER; /**< Capture/compare enable register */ - __IO uint32 CNT; /**< Counter */ - __IO uint32 PSC; /**< Prescaler */ - __IO uint32 ARR; /**< Auto-reload register */ - __IO uint32 RCR; /**< Repetition counter register */ - __IO uint32 CCR1; /**< Capture/compare register 1 */ - __IO uint32 CCR2; /**< Capture/compare register 2 */ - __IO uint32 CCR3; /**< Capture/compare register 3 */ - __IO uint32 CCR4; /**< Capture/compare register 4 */ - __IO uint32 BDTR; /**< Break and dead-time register */ - __IO uint32 DCR; /**< DMA control register */ - __IO uint32 DMAR; /**< DMA address for full transfer */ -} timer_adv_reg_map; - -/* General purpose timer register map type: intentionally omitted. - * - * General purpose timers differ slightly across series, so leave it - * up to the series header to define struct timer_gen_reg_map. */ - -/** Basic timer register map type */ -typedef struct timer_bas_reg_map { - __IO uint32 CR1; /**< Control register 1 */ - __IO uint32 CR2; /**< Control register 2 */ - const uint32 RESERVED1; /**< Reserved */ - __IO uint32 DIER; /**< DMA/interrupt enable register */ - __IO uint32 SR; /**< Status register */ - __IO uint32 EGR; /**< Event generation register */ - const uint32 RESERVED2; /**< Reserved */ - const uint32 RESERVED3; /**< Reserved */ - const uint32 RESERVED4; /**< Reserved */ - __IO uint32 CNT; /**< Counter */ - __IO uint32 PSC; /**< Prescaler */ - __IO uint32 ARR; /**< Auto-reload register */ -} timer_bas_reg_map; - -/* - * Timer devices - */ - -/** - * @brief Timer register map type. - * - * Just holds a pointer to the correct type of register map, based on - * the timer's type. - */ -typedef union timer_reg_map { - timer_adv_reg_map *adv; /**< Advanced register map */ - timer_gen_reg_map *gen; /**< General purpose register map */ - timer_bas_reg_map *bas; /**< Basic register map */ -} timer_reg_map; - -/** - * @brief Timer type - * - * Type marker for timer_dev. - * - * @see timer_dev - */ -typedef enum timer_type { - TIMER_ADVANCED, /**< Advanced type */ - TIMER_GENERAL, /**< General purpose type */ - TIMER_BASIC, /**< Basic type */ -} timer_type; - -/** Timer device type */ -typedef struct timer_dev { - timer_reg_map regs; /**< Register map */ - rcc_clk_id clk_id; /**< RCC clock information */ - timer_type type; /**< Timer's type */ - voidFuncPtr handlers[]; /**< - * Don't touch these. Use these instead: - * @see timer_attach_interrupt() - * @see timer_detach_interrupt() */ -} timer_dev; - -#if STM32_HAVE_TIMER(1) -extern timer_dev *TIMER1; -#endif -#if STM32_HAVE_TIMER(2) -extern timer_dev *TIMER2; -#endif -#if STM32_HAVE_TIMER(3) -extern timer_dev *TIMER3; -#endif -#if STM32_HAVE_TIMER(4) -extern timer_dev *TIMER4; -#endif -#if STM32_HAVE_TIMER(5) -extern timer_dev *TIMER5; -#endif -#if STM32_HAVE_TIMER(6) -extern timer_dev *TIMER6; -#endif -#if STM32_HAVE_TIMER(7) -extern timer_dev *TIMER7; -#endif -#if STM32_HAVE_TIMER(8) -extern timer_dev *TIMER8; -#endif -#if STM32_HAVE_TIMER(9) -extern timer_dev *TIMER9; -#endif -#if STM32_HAVE_TIMER(10) -extern timer_dev *TIMER10; -#endif -#if STM32_HAVE_TIMER(11) -extern timer_dev *TIMER11; -#endif -#if STM32_HAVE_TIMER(12) -extern timer_dev *TIMER12; -#endif -#if STM32_HAVE_TIMER(13) -extern timer_dev *TIMER13; -#endif -#if STM32_HAVE_TIMER(14) -extern timer_dev *TIMER14; -#endif -#if STM32_HAVE_TIMER(15) -extern timer_dev *TIMER15; -#endif -#if STM32_HAVE_TIMER(16) -extern timer_dev *TIMER16; -#endif -#if STM32_HAVE_TIMER(17) -extern timer_dev *TIMER17; -#endif - -/* - * Register bit definitions - */ - -/* Control register 1 (CR1) */ - -#define TIMER_CR1_ARPE_BIT 7 -#define TIMER_CR1_DIR_BIT 4 -#define TIMER_CR1_OPM_BIT 3 -#define TIMER_CR1_URS_BIT 2 -#define TIMER_CR1_UDIS_BIT 1 -#define TIMER_CR1_CEN_BIT 0 - -#define TIMER_CR1_CKD (0x3 << 8) -#define TIMER_CR1_CKD_1TCKINT (0x0 << 8) -#define TIMER_CR1_CKD_2TCKINT (0x1 << 8) -#define TIMER_CR1_CKD_4TICKINT (0x2 << 8) -#define TIMER_CR1_ARPE (1U << TIMER_CR1_ARPE_BIT) -#define TIMER_CR1_CKD_CMS (0x3 << 5) -#define TIMER_CR1_CKD_CMS_EDGE (0x0 << 5) -#define TIMER_CR1_CKD_CMS_CENTER1 (0x1 << 5) -#define TIMER_CR1_CKD_CMS_CENTER2 (0x2 << 5) -#define TIMER_CR1_CKD_CMS_CENTER3 (0x3 << 5) -#define TIMER_CR1_DIR (1U << TIMER_CR1_DIR_BIT) -#define TIMER_CR1_OPM (1U << TIMER_CR1_OPM_BIT) -#define TIMER_CR1_URS (1U << TIMER_CR1_URS_BIT) -#define TIMER_CR1_UDIS (1U << TIMER_CR1_UDIS_BIT) -#define TIMER_CR1_CEN (1U << TIMER_CR1_CEN_BIT) - -/* Control register 2 (CR2) */ - -#define TIMER_CR2_OIS4_BIT 14 -#define TIMER_CR2_OIS3N_BIT 13 -#define TIMER_CR2_OIS3_BIT 12 -#define TIMER_CR2_OIS2N_BIT 11 -#define TIMER_CR2_OIS2_BIT 10 -#define TIMER_CR2_OIS1N_BIT 9 -#define TIMER_CR2_OIS1_BIT 8 -#define TIMER_CR2_TI1S_BIT 7 -#define TIMER_CR2_CCDS_BIT 3 -#define TIMER_CR2_CCUS_BIT 2 -#define TIMER_CR2_CCPC_BIT 0 - -#define TIMER_CR2_OIS4 (1U << TIMER_CR2_OIS4_BIT) -#define TIMER_CR2_OIS3N (1U << TIMER_CR2_OIS3N_BIT) -#define TIMER_CR2_OIS3 (1U << TIMER_CR2_OIS3_BIT) -#define TIMER_CR2_OIS2N (1U << TIMER_CR2_OIS2N_BIT) -#define TIMER_CR2_OIS2 (1U << TIMER_CR2_OIS2_BIT) -#define TIMER_CR2_OIS1N (1U << TIMER_CR2_OIS1N_BIT) -#define TIMER_CR2_OIS1 (1U << TIMER_CR2_OIS1_BIT) -#define TIMER_CR2_TI1S (1U << TIMER_CR2_TI1S_BIT) -#define TIMER_CR2_MMS (0x7 << 4) -#define TIMER_CR2_MMS_RESET (0x0 << 4) -#define TIMER_CR2_MMS_ENABLE (0x1 << 4) -#define TIMER_CR2_MMS_UPDATE (0x2 << 4) -#define TIMER_CR2_MMS_COMPARE_PULSE (0x3 << 4) -#define TIMER_CR2_MMS_COMPARE_OC1REF (0x4 << 4) -#define TIMER_CR2_MMS_COMPARE_OC2REF (0x5 << 4) -#define TIMER_CR2_MMS_COMPARE_OC3REF (0x6 << 4) -#define TIMER_CR2_MMS_COMPARE_OC4REF (0x7 << 4) -#define TIMER_CR2_CCDS (1U << TIMER_CR2_CCDS_BIT) -#define TIMER_CR2_CCUS (1U << TIMER_CR2_CCUS_BIT) -#define TIMER_CR2_CCPC (1U << TIMER_CR2_CCPC_BIT) - -/* Slave mode control register (SMCR) */ - -#define TIMER_SMCR_ETP_BIT 15 -#define TIMER_SMCR_ECE_BIT 14 -#define TIMER_SMCR_MSM_BIT 7 - -#define TIMER_SMCR_ETP (1U << TIMER_SMCR_ETP_BIT) -#define TIMER_SMCR_ECE (1U << TIMER_SMCR_ECE_BIT) -#define TIMER_SMCR_ETPS (0x3 << 12) -#define TIMER_SMCR_ETPS_OFF (0x0 << 12) -#define TIMER_SMCR_ETPS_DIV2 (0x1 << 12) -#define TIMER_SMCR_ETPS_DIV4 (0x2 << 12) -#define TIMER_SMCR_ETPS_DIV8 (0x3 << 12) -#define TIMER_SMCR_ETF (0xF << 12) -#define TIMER_SMCR_MSM (1U << TIMER_SMCR_MSM_BIT) -#define TIMER_SMCR_TS (0x3 << 4) -#define TIMER_SMCR_TS_ITR0 (0x0 << 4) -#define TIMER_SMCR_TS_ITR1 (0x1 << 4) -#define TIMER_SMCR_TS_ITR2 (0x2 << 4) -#define TIMER_SMCR_TS_ITR3 (0x3 << 4) -#define TIMER_SMCR_TS_TI1F_ED (0x4 << 4) -#define TIMER_SMCR_TS_TI1FP1 (0x5 << 4) -#define TIMER_SMCR_TS_TI2FP2 (0x6 << 4) -#define TIMER_SMCR_TS_ETRF (0x7 << 4) -#define TIMER_SMCR_SMS 0x3 -#define TIMER_SMCR_SMS_DISABLED 0x0 -#define TIMER_SMCR_SMS_ENCODER1 0x1 -#define TIMER_SMCR_SMS_ENCODER2 0x2 -#define TIMER_SMCR_SMS_ENCODER3 0x3 -#define TIMER_SMCR_SMS_RESET 0x4 -#define TIMER_SMCR_SMS_GATED 0x5 -#define TIMER_SMCR_SMS_TRIGGER 0x6 -#define TIMER_SMCR_SMS_EXTERNAL 0x7 - -/* DMA/Interrupt enable register (DIER) */ - -#define TIMER_DIER_TDE_BIT 14 -#define TIMER_DIER_COMDE_BIT 13 -#define TIMER_DIER_CC4DE_BIT 12 -#define TIMER_DIER_CC3DE_BIT 11 -#define TIMER_DIER_CC2DE_BIT 10 -#define TIMER_DIER_CC1DE_BIT 9 -#define TIMER_DIER_UDE_BIT 8 -#define TIMER_DIER_BIE_BIT 7 -#define TIMER_DIER_TIE_BIT 6 -#define TIMER_DIER_COMIE_BIT 5 -#define TIMER_DIER_CC4IE_BIT 4 -#define TIMER_DIER_CC3IE_BIT 3 -#define TIMER_DIER_CC2IE_BIT 2 -#define TIMER_DIER_CC1IE_BIT 1 -#define TIMER_DIER_UIE_BIT 0 - -#define TIMER_DIER_TDE (1U << TIMER_DIER_TDE_BIT) -#define TIMER_DIER_COMDE (1U << TIMER_DIER_COMDE_BIT) -#define TIMER_DIER_CC4DE (1U << TIMER_DIER_CC4DE_BIT) -#define TIMER_DIER_CC3DE (1U << TIMER_DIER_CC3DE_BIT) -#define TIMER_DIER_CC2DE (1U << TIMER_DIER_CC2DE_BIT) -#define TIMER_DIER_CC1DE (1U << TIMER_DIER_CC1DE_BIT) -#define TIMER_DIER_UDE (1U << TIMER_DIER_UDE_BIT) -#define TIMER_DIER_BIE (1U << TIMER_DIER_BIE_BIT) -#define TIMER_DIER_TIE (1U << TIMER_DIER_TIE_BIT) -#define TIMER_DIER_COMIE (1U << TIMER_DIER_COMIE_BIT) -#define TIMER_DIER_CC4IE (1U << TIMER_DIER_CC4IE_BIT) -#define TIMER_DIER_CC3IE (1U << TIMER_DIER_CC3IE_BIT) -#define TIMER_DIER_CC2IE (1U << TIMER_DIER_CC2IE_BIT) -#define TIMER_DIER_CC1IE (1U << TIMER_DIER_CC1IE_BIT) -#define TIMER_DIER_UIE (1U << TIMER_DIER_UIE_BIT) - -/* Status register (SR) */ - -#define TIMER_SR_CC4OF_BIT 12 -#define TIMER_SR_CC3OF_BIT 11 -#define TIMER_SR_CC2OF_BIT 10 -#define TIMER_SR_CC1OF_BIT 9 -#define TIMER_SR_BIF_BIT 7 -#define TIMER_SR_TIF_BIT 6 -#define TIMER_SR_COMIF_BIT 5 -#define TIMER_SR_CC4IF_BIT 4 -#define TIMER_SR_CC3IF_BIT 3 -#define TIMER_SR_CC2IF_BIT 2 -#define TIMER_SR_CC1IF_BIT 1 -#define TIMER_SR_UIF_BIT 0 - -#define TIMER_SR_CC4OF (1U << TIMER_SR_CC4OF_BIT) -#define TIMER_SR_CC3OF (1U << TIMER_SR_CC3OF_BIT) -#define TIMER_SR_CC2OF (1U << TIMER_SR_CC2OF_BIT) -#define TIMER_SR_CC1OF (1U << TIMER_SR_CC1OF_BIT) -#define TIMER_SR_BIF (1U << TIMER_SR_BIF_BIT) -#define TIMER_SR_TIF (1U << TIMER_SR_TIF_BIT) -#define TIMER_SR_COMIF (1U << TIMER_SR_COMIF_BIT) -#define TIMER_SR_CC4IF (1U << TIMER_SR_CC4IF_BIT) -#define TIMER_SR_CC3IF (1U << TIMER_SR_CC3IF_BIT) -#define TIMER_SR_CC2IF (1U << TIMER_SR_CC2IF_BIT) -#define TIMER_SR_CC1IF (1U << TIMER_SR_CC1IF_BIT) -#define TIMER_SR_UIF (1U << TIMER_SR_UIF_BIT) - -/* Event generation register (EGR) */ - -#define TIMER_EGR_BG_BIT 7 -#define TIMER_EGR_TG_BIT 6 -#define TIMER_EGR_COMG_BIT 5 -#define TIMER_EGR_CC4G_BIT 4 -#define TIMER_EGR_CC3G_BIT 3 -#define TIMER_EGR_CC2G_BIT 2 -#define TIMER_EGR_CC1G_BIT 1 -#define TIMER_EGR_UG_BIT 0 - -#define TIMER_EGR_BG (1U << TIMER_EGR_BG_BIT) -#define TIMER_EGR_TG (1U << TIMER_EGR_TG_BIT) -#define TIMER_EGR_COMG (1U << TIMER_EGR_COMG_BIT) -#define TIMER_EGR_CC4G (1U << TIMER_EGR_CC4G_BIT) -#define TIMER_EGR_CC3G (1U << TIMER_EGR_CC3G_BIT) -#define TIMER_EGR_CC2G (1U << TIMER_EGR_CC2G_BIT) -#define TIMER_EGR_CC1G (1U << TIMER_EGR_CC1G_BIT) -#define TIMER_EGR_UG (1U << TIMER_EGR_UG_BIT) - -/* Capture/compare mode registers, common values */ - -#define TIMER_CCMR_CCS_OUTPUT 0x0 -#define TIMER_CCMR_CCS_INPUT_TI1 0x1 -#define TIMER_CCMR_CCS_INPUT_TI2 0x2 -#define TIMER_CCMR_CCS_INPUT_TRC 0x3 - -/* Capture/compare mode register 1 (CCMR1) */ - -#define TIMER_CCMR1_OC2CE_BIT 15 -#define TIMER_CCMR1_OC2PE_BIT 11 -#define TIMER_CCMR1_OC2FE_BIT 10 -#define TIMER_CCMR1_OC1CE_BIT 7 -#define TIMER_CCMR1_OC1PE_BIT 3 -#define TIMER_CCMR1_OC1FE_BIT 2 - -#define TIMER_CCMR1_OC2CE (1U << TIMER_CCMR1_OC2CE_BIT) -#define TIMER_CCMR1_OC2M (0x3 << 12) -#define TIMER_CCMR1_IC2F (0xF << 12) -#define TIMER_CCMR1_OC2PE (1U << TIMER_CCMR1_OC2PE_BIT) -#define TIMER_CCMR1_OC2FE (1U << TIMER_CCMR1_OC2FE_BIT) -#define TIMER_CCMR1_IC2PSC (0x3 << 10) -#define TIMER_CCMR1_CC2S (0x3 << 8) -#define TIMER_CCMR1_CC2S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) -#define TIMER_CCMR1_CC2S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) -#define TIMER_CCMR1_CC2S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) -#define TIMER_CCMR1_CC2S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) -#define TIMER_CCMR1_OC1CE (1U << TIMER_CCMR1_OC1CE_BIT) -#define TIMER_CCMR1_OC1M (0x3 << 4) -#define TIMER_CCMR1_IC1F (0xF << 4) -#define TIMER_CCMR1_OC1PE (1U << TIMER_CCMR1_OC1PE_BIT) -#define TIMER_CCMR1_OC1FE (1U << TIMER_CCMR1_OC1FE_BIT) -#define TIMER_CCMR1_IC1PSC (0x3 << 2) -#define TIMER_CCMR1_CC1S 0x3 -#define TIMER_CCMR1_CC1S_OUTPUT TIMER_CCMR_CCS_OUTPUT -#define TIMER_CCMR1_CC1S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 -#define TIMER_CCMR1_CC1S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 -#define TIMER_CCMR1_CC1S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC - -/* Capture/compare mode register 2 (CCMR2) */ - -#define TIMER_CCMR2_OC4CE_BIT 15 -#define TIMER_CCMR2_OC4PE_BIT 11 -#define TIMER_CCMR2_OC4FE_BIT 10 -#define TIMER_CCMR2_OC3CE_BIT 7 -#define TIMER_CCMR2_OC3PE_BIT 3 -#define TIMER_CCMR2_OC3FE_BIT 2 - -#define TIMER_CCMR2_OC4CE (1U << TIMER_CCMR2_OC4CE_BIT) -#define TIMER_CCMR2_OC4M (0x3 << 12) -#define TIMER_CCMR2_IC4F (0xF << 12) -#define TIMER_CCMR2_OC4PE (1U << TIMER_CCMR2_OC4PE_BIT) -#define TIMER_CCMR2_OC4FE (1U << TIMER_CCMR2_OC4FE_BIT) -#define TIMER_CCMR2_IC4PSC (0x3 << 10) -#define TIMER_CCMR2_CC4S (0x3 << 8) -#define TIMER_CCMR2_CC4S_OUTPUT (TIMER_CCMR_CCS_OUTPUT << 8) -#define TIMER_CCMR2_CC4S_INPUT_TI1 (TIMER_CCMR_CCS_INPUT_TI1 << 8) -#define TIMER_CCMR2_CC4S_INPUT_TI2 (TIMER_CCMR_CCS_INPUT_TI2 << 8) -#define TIMER_CCMR2_CC4S_INPUT_TRC (TIMER_CCMR_CCS_INPUT_TRC << 8) -#define TIMER_CCMR2_OC3CE (1U << TIMER_CCMR2_OC3CE_BIT) -#define TIMER_CCMR2_OC3M (0x3 << 4) -#define TIMER_CCMR2_IC3F (0xF << 4) -#define TIMER_CCMR2_OC3PE (1U << TIMER_CCMR2_OC3PE_BIT) -#define TIMER_CCMR2_OC3FE (1U << TIMER_CCMR2_OC3FE_BIT) -#define TIMER_CCMR2_IC3PSC (0x3 << 2) -#define TIMER_CCMR2_CC3S 0x3 -#define TIMER_CCMR2_CC3S_OUTPUT TIMER_CCMR_CCS_OUTPUT -#define TIMER_CCMR2_CC3S_INPUT_TI1 TIMER_CCMR_CCS_INPUT_TI1 -#define TIMER_CCMR2_CC3S_INPUT_TI2 TIMER_CCMR_CCS_INPUT_TI2 -#define TIMER_CCMR2_CC3S_INPUT_TRC TIMER_CCMR_CCS_INPUT_TRC - -/* Capture/compare enable register (CCER) */ - -#define TIMER_CCER_CC4P_BIT 13 -#define TIMER_CCER_CC4E_BIT 12 -#define TIMER_CCER_CC3NP_BIT 11 -#define TIMER_CCER_CC3NE_BIT 10 -#define TIMER_CCER_CC3P_BIT 9 -#define TIMER_CCER_CC3E_BIT 8 -#define TIMER_CCER_CC2NP_BIT 7 -#define TIMER_CCER_CC2NE_BIT 6 -#define TIMER_CCER_CC2P_BIT 5 -#define TIMER_CCER_CC2E_BIT 4 -#define TIMER_CCER_CC1NP_BIT 3 -#define TIMER_CCER_CC1NE_BIT 2 -#define TIMER_CCER_CC1P_BIT 1 -#define TIMER_CCER_CC1E_BIT 0 - -#define TIMER_CCER_CC4P (1U << TIMER_CCER_CC4P_BIT) -#define TIMER_CCER_CC4E (1U << TIMER_CCER_CC4E_BIT) -#define TIMER_CCER_CC3NP (1U << TIMER_CCER_CC3NP_BIT) -#define TIMER_CCER_CC3NE (1U << TIMER_CCER_CC3NE_BIT) -#define TIMER_CCER_CC3P (1U << TIMER_CCER_CC3P_BIT) -#define TIMER_CCER_CC3E (1U << TIMER_CCER_CC3E_BIT) -#define TIMER_CCER_CC2NP (1U << TIMER_CCER_CC2NP_BIT) -#define TIMER_CCER_CC2NE (1U << TIMER_CCER_CC2NE_BIT) -#define TIMER_CCER_CC2P (1U << TIMER_CCER_CC2P_BIT) -#define TIMER_CCER_CC2E (1U << TIMER_CCER_CC2E_BIT) -#define TIMER_CCER_CC1NP (1U << TIMER_CCER_CC1NP_BIT) -#define TIMER_CCER_CC1NE (1U << TIMER_CCER_CC1NE_BIT) -#define TIMER_CCER_CC1P (1U << TIMER_CCER_CC1P_BIT) -#define TIMER_CCER_CC1E (1U << TIMER_CCER_CC1E_BIT) - -/* Break and dead-time register (BDTR) */ - -#define TIMER_BDTR_MOE_BIT 15 -#define TIMER_BDTR_AOE_BIT 14 -#define TIMER_BDTR_BKP_BIT 13 -#define TIMER_BDTR_BKE_BIT 12 -#define TIMER_BDTR_OSSR_BIT 11 -#define TIMER_BDTR_OSSI_BIT 10 - -#define TIMER_BDTR_MOE (1U << TIMER_BDTR_MOE_BIT) -#define TIMER_BDTR_AOE (1U << TIMER_BDTR_AOE_BIT) -#define TIMER_BDTR_BKP (1U << TIMER_BDTR_BKP_BIT) -#define TIMER_BDTR_BKE (1U << TIMER_BDTR_BKE_BIT) -#define TIMER_BDTR_OSSR (1U << TIMER_BDTR_OSSR_BIT) -#define TIMER_BDTR_OSSI (1U << TIMER_BDTR_OSSI_BIT) -#define TIMER_BDTR_LOCK (0x3 << 8) -#define TIMER_BDTR_LOCK_OFF (0x0 << 8) -#define TIMER_BDTR_LOCK_LEVEL1 (0x1 << 8) -#define TIMER_BDTR_LOCK_LEVEL2 (0x2 << 8) -#define TIMER_BDTR_LOCK_LEVEL3 (0x3 << 8) -#define TIMER_BDTR_DTG 0xFF - -/* DMA control register (DCR) */ - -#define TIMER_DCR_DBL (0x1F << 8) -#define TIMER_DCR_DBL_1_XFER (0x0 << 8) -#define TIMER_DCR_DBL_2_XFER (0x1 << 8) -#define TIMER_DCR_DBL_3_XFER (0x2 << 8) -#define TIMER_DCR_DBL_4_XFER (0x3 << 8) -#define TIMER_DCR_DBL_5_XFER (0x4 << 8) -#define TIMER_DCR_DBL_6_XFER (0x5 << 8) -#define TIMER_DCR_DBL_7_XFER (0x6 << 8) -#define TIMER_DCR_DBL_8_XFER (0x7 << 8) -#define TIMER_DCR_DBL_9_XFER (0x8 << 8) -#define TIMER_DCR_DBL_10_XFER (0x9 << 8) -#define TIMER_DCR_DBL_11_XFER (0xA << 8) -#define TIMER_DCR_DBL_12_XFER (0xB << 8) -#define TIMER_DCR_DBL_13_XFER (0xC << 8) -#define TIMER_DCR_DBL_14_XFER (0xD << 8) -#define TIMER_DCR_DBL_15_XFER (0xE << 8) -#define TIMER_DCR_DBL_16_XFER (0xF << 8) -#define TIMER_DCR_DBL_17_XFER (0x10 << 8) -#define TIMER_DCR_DBL_18_XFER (0x11 << 8) -#define TIMER_DCR_DBA 0x1F -#define TIMER_DCR_DBA_CR1 0x0 -#define TIMER_DCR_DBA_CR2 0x1 -#define TIMER_DCR_DBA_SMCR 0x2 -#define TIMER_DCR_DBA_DIER 0x3 -#define TIMER_DCR_DBA_SR 0x4 -#define TIMER_DCR_DBA_EGR 0x5 -#define TIMER_DCR_DBA_CCMR1 0x6 -#define TIMER_DCR_DBA_CCMR2 0x7 -#define TIMER_DCR_DBA_CCER 0x8 -#define TIMER_DCR_DBA_CNT 0x9 -#define TIMER_DCR_DBA_PSC 0xA -#define TIMER_DCR_DBA_ARR 0xB -#define TIMER_DCR_DBA_RCR 0xC -#define TIMER_DCR_DBA_CCR1 0xD -#define TIMER_DCR_DBA_CCR2 0xE -#define TIMER_DCR_DBA_CCR3 0xF -#define TIMER_DCR_DBA_CCR4 0x10 -#define TIMER_DCR_DBA_BDTR 0x11 -#define TIMER_DCR_DBA_DCR 0x12 -#define TIMER_DCR_DBA_DMAR 0x13 - -/* - * Convenience routines - */ - -/** - * @brief Used to configure the behavior of a timer channel. - * - * Be careful: not all timers can be configured in every mode. - */ -typedef enum timer_mode { - /** - * The timer stops counting, channel interrupts are detached, and - * no state changes are output. */ - TIMER_DISABLED, - - /** PWM output. */ - TIMER_PWM, - - /* TIMER_PWM_CENTER_ALIGNED, TODO: Center-aligned PWM output mode. */ - - /** - * The timer counts from 0 to its reload value repeatedly; every - * time the counter value reaches one of the channel compare - * values, the corresponding interrupt is fired. */ - TIMER_OUTPUT_COMPARE, - - /* TIMER_INPUT_CAPTURE, TODO: In this mode, the timer can measure the - * pulse lengths of input signals */ - /* TIMER_ONE_PULSE, TODO: In this mode, the timer can generate a single - * pulse on a GPIO pin for a specified amount of - * time. */ -} timer_mode; - -/** Timer channel numbers */ -typedef enum timer_channel { - TIMER_CH1 = 1, /**< Channel 1 */ - TIMER_CH2 = 2, /**< Channel 2 */ - TIMER_CH3 = 3, /**< Channel 3 */ - TIMER_CH4 = 4 /**< Channel 4 */ -} timer_channel; - -/* - * Note: Don't require timer_channel arguments! We want to be able to say - * - * for (int channel = 1; channel <= 4; channel++) { - * ... - * } - * - * without the compiler yelling at us. - */ - -void timer_init(timer_dev *dev); -void timer_disable(timer_dev *dev); -void timer_set_mode(timer_dev *dev, uint8 channel, timer_mode mode); -void timer_foreach(void (*fn)(timer_dev*)); -int timer_has_cc_channel(timer_dev *dev, uint8 channel); - -/** - * @brief Timer interrupt number. - * - * Not all timers support all of these values. All timers support - * TIMER_UPDATE_INTERRUPT. "General purpose" timers can be a special - * nuisance in this regard, as they individually support different - * subsets of the available interupts. Consult your target's reference - * manual for the details. - */ -typedef enum timer_interrupt_id { - TIMER_UPDATE_INTERRUPT, /**< Update interrupt. */ - TIMER_CC1_INTERRUPT, /**< Capture/compare 1 interrupt. */ - TIMER_CC2_INTERRUPT, /**< Capture/compare 2 interrupt. */ - TIMER_CC3_INTERRUPT, /**< Capture/compare 3 interrupt. */ - TIMER_CC4_INTERRUPT, /**< Capture/compare 4 interrupt. */ - TIMER_COM_INTERRUPT, /**< COM interrupt. */ - TIMER_TRG_INTERRUPT, /**< Trigger interrupt. */ - TIMER_BREAK_INTERRUPT, /**< Break interrupt. */ -} timer_interrupt_id; - -void timer_attach_interrupt(timer_dev *dev, - uint8 interrupt, - voidFuncPtr handler); -void timer_detach_interrupt(timer_dev *dev, uint8 interrupt); - -/** - * Initialize all timer devices on the chip. - */ -static inline void timer_init_all(void) { - timer_foreach(timer_init); -} - -/** - * Disables all timers on the device. - */ -static inline void timer_disable_all(void) { - timer_foreach(timer_disable); -} - -/** - * @brief Stop a timer's counter from changing. - * - * Does not affect the timer's mode or other settings. - * - * @param dev Device whose counter to pause. - */ -static inline void timer_pause(timer_dev *dev) { - *bb_perip(&(dev->regs).bas->CR1, TIMER_CR1_CEN_BIT) = 0; -} - -/** - * @brief Start a timer's counter. - * - * Does not affect the timer's mode or other settings. - * - * @param dev Device whose counter to resume - */ -static inline void timer_resume(timer_dev *dev) { - *bb_perip(&(dev->regs).bas->CR1, TIMER_CR1_CEN_BIT) = 1; -} - -/** - * @brief Returns the timer's counter value. - * - * This value is likely to be inaccurate if the counter is running - * with a low prescaler. - * - * @param dev Timer whose counter to return - */ -static inline uint16 timer_get_count(timer_dev *dev) { - return (uint16)(dev->regs).bas->CNT; -} - -/** - * @brief Sets the counter value for the given timer. - * @param dev Timer whose counter to set - * @param value New counter value - */ -static inline void timer_set_count(timer_dev *dev, uint16 value) { - (dev->regs).bas->CNT = value; -} - -/** - * @brief Returns the given timer's prescaler. - * - * Note that if the timer's prescaler is set (e.g. via - * timer_set_prescaler() or accessing a TIMx_PSC register), the value - * returned by this function will reflect the new setting, but the - * timer's counter will only reflect the new prescaler at the next - * update event. - * - * @param dev Timer whose prescaler to return - * @see timer_generate_update() - */ -static inline uint16 timer_get_prescaler(timer_dev *dev) { - return (uint16)(dev->regs).bas->PSC; -} - -/** - * @brief Set a timer's prescale value. - * - * Divides the input clock by (PSC+1). The new value will not take - * effect until the next update event. - * - * @param dev Timer whose prescaler to set - * @param psc New prescaler value - * @see timer_generate_update() - */ -static inline void timer_set_prescaler(timer_dev *dev, uint16 psc) { - (dev->regs).bas->PSC = psc; -} - -/** - * @brief Returns a timer's reload value. - * @param dev Timer whose reload value to return - */ -static inline uint16 timer_get_reload(timer_dev *dev) { - return (uint16)(dev->regs).bas->ARR; -} - -/** - * @brief Set a timer's reload value. - * @param dev Timer whose reload value to set - * @param arr New reload value to use. Takes effect at next update event. - * @see timer_generate_update() - */ -static inline void timer_set_reload(timer_dev *dev, uint16 arr) { - (dev->regs).bas->ARR = arr; -} - -/** - * @brief Get the compare value for the given timer channel. - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel whose compare value to get. - */ -static inline uint16 timer_get_compare(timer_dev *dev, uint8 channel) { - __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); - return *ccr; -} - -/** - * @brief Set the compare value for the given timer channel. - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel whose compare value to set. - * @param value New compare value. - */ -static inline void timer_set_compare(timer_dev *dev, - uint8 channel, - uint16 value) { - __IO uint32 *ccr = &(dev->regs).gen->CCR1 + (channel - 1); - *ccr = value; -} - -/** - * @brief Generate an update event for the given timer. - * - * Normally, this will cause the prescaler and auto-reload values in - * the PSC and ARR registers to take immediate effect. However, this - * function will do nothing if the UDIS bit is set in the timer's CR1 - * register (UDIS is cleared by default). - * - * @param dev Timer device to generate an update for. - */ -static inline void timer_generate_update(timer_dev *dev) { - *bb_perip(&(dev->regs).bas->EGR, TIMER_EGR_UG_BIT) = 1; -} - -/** - * @brief Enable a timer's trigger DMA request - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL - */ -static inline void timer_dma_enable_trg_req(timer_dev *dev) { - *bb_perip(&(dev->regs).gen->DIER, TIMER_DIER_TDE_BIT) = 1; -} - -/** - * @brief Disable a timer's trigger DMA request - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL - */ -static inline void timer_dma_disable_trg_req(timer_dev *dev) { - *bb_perip(&(dev->regs).gen->DIER, TIMER_DIER_TDE_BIT) = 0; -} - -/** - * @brief Enable a timer channel's DMA request. - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL - * @param channel Channel whose DMA request to enable. - */ -static inline void timer_dma_enable_req(timer_dev *dev, uint8 channel) { - *bb_perip(&(dev->regs).gen->DIER, channel + 8) = 1; -} - -/** - * @brief Disable a timer channel's DMA request. - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel whose DMA request to disable. - */ -static inline void timer_dma_disable_req(timer_dev *dev, uint8 channel) { - *bb_perip(&(dev->regs).gen->DIER, channel + 8) = 0; -} - -/** - * @brief Enable a timer interrupt. - * @param dev Timer device. - * @param interrupt Interrupt number to enable; this may be any - * timer_interrupt_id value appropriate for the timer. - * @see timer_interrupt_id - * @see timer_channel - */ -static inline void timer_enable_irq(timer_dev *dev, uint8 interrupt) { - *bb_perip(&(dev->regs).adv->DIER, interrupt) = 1; -} - -/** - * @brief Disable a timer interrupt. - * @param dev Timer device. - * @param interrupt Interrupt number to disable; this may be any - * timer_interrupt_id value appropriate for the timer. - * @see timer_interrupt_id - * @see timer_channel - */ -static inline void timer_disable_irq(timer_dev *dev, uint8 interrupt) { - *bb_perip(&(dev->regs).adv->DIER, interrupt) = 0; -} - -/** - * @brief Enable a timer channel's capture/compare signal. - * - * If the channel is configured as output, the corresponding output - * compare signal will be output on the corresponding output pin. If - * the channel is configured as input, enables capture of the counter - * value into the input capture/compare register. - * - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel to enable, from 1 to 4. - */ -static inline void timer_cc_enable(timer_dev *dev, uint8 channel) { - *bb_perip(&(dev->regs).gen->CCER, 4 * (channel - 1)) = 1; -} - -/** - * @brief Disable a timer channel's output compare or input capture signal. - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel to disable, from 1 to 4. - * @see timer_cc_enable() - */ -static inline void timer_cc_disable(timer_dev *dev, uint8 channel) { - *bb_perip(&(dev->regs).gen->CCER, 4 * (channel - 1)) = 0; -} - -/** - * @brief Get a channel's capture/compare output polarity - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel whose capture/compare output polarity to get. - * @return Polarity, either 0 or 1. - * @see timer_cc_set_polarity() - */ -static inline uint8 timer_cc_get_pol(timer_dev *dev, uint8 channel) { - return *bb_perip(&(dev->regs).gen->CCER, 4 * (channel - 1) + 1); -} - -/** - * @brief Set a timer channel's capture/compare output polarity. - * - * If the timer channel is configured as output: polarity == 0 means - * the output channel will be active high; polarity == 1 means active - * low. - * - * If the timer channel is configured as input: polarity == 0 means - * capture is done on the rising edge of ICn; when used as an external - * trigger, ICn is non-inverted. polarity == 1 means capture is done - * on the falling edge of ICn; when used as an external trigger, ICn - * is inverted. - * - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel whose capture/compare output polarity to set. - * @param pol New polarity, 0 or 1. - */ -static inline void timer_cc_set_pol(timer_dev *dev, uint8 channel, uint8 pol) { - *bb_perip(&(dev->regs).gen->CCER, 4 * (channel - 1) + 1) = pol; -} - -/** - * @brief Get a timer's DMA burst length. - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @return Number of transfers per read or write to timer DMA register, - * from 1 to 18. - */ -static inline uint8 timer_dma_get_burst_len(timer_dev *dev) { - uint32 dbl = ((dev->regs).gen->DCR & TIMER_DCR_DBL) >> 8; - return dbl + 1; /* 0 means 1 transfer, etc. */ -} - -/** - * @brief Set a timer's DMA burst length. - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param length DMA burst length; i.e., number of DMA transfers per - * read/write to timer DMA register, from 1 to 18. - */ -static inline void timer_dma_set_burst_len(timer_dev *dev, uint8 length) { - uint32 tmp = (dev->regs).gen->DCR; - tmp &= ~TIMER_DCR_DBL; - tmp |= (length - 1) << 8; - (dev->regs).gen->DCR = tmp; -} - -/** - * @brief Timer DMA base address. - * - * Defines the base address for DMA transfers. - */ -typedef enum timer_dma_base_addr { - /** Base is control register 1 */ - TIMER_DMA_BASE_CR1 = TIMER_DCR_DBA_CR1, - /** Base is control register 2 */ - TIMER_DMA_BASE_CR2 = TIMER_DCR_DBA_CR2, - /** Base is slave mode control register */ - TIMER_DMA_BASE_SMCR = TIMER_DCR_DBA_SMCR, - /** Base is DMA interrupt enable register */ - TIMER_DMA_BASE_DIER = TIMER_DCR_DBA_DIER, - /** Base is status register */ - TIMER_DMA_BASE_SR = TIMER_DCR_DBA_SR, - /** Base is event generation register */ - TIMER_DMA_BASE_EGR = TIMER_DCR_DBA_EGR, - /** Base is capture/compare mode register 1 */ - TIMER_DMA_BASE_CCMR1 = TIMER_DCR_DBA_CCMR1, - /** Base is capture/compare mode register 2 */ - TIMER_DMA_BASE_CCMR2 = TIMER_DCR_DBA_CCMR2, - /** Base is capture/compare enable register */ - TIMER_DMA_BASE_CCER = TIMER_DCR_DBA_CCER, - /** Base is counter */ - TIMER_DMA_BASE_CNT = TIMER_DCR_DBA_CNT, - /** Base is prescaler */ - TIMER_DMA_BASE_PSC = TIMER_DCR_DBA_PSC, - /** Base is auto-reload register */ - TIMER_DMA_BASE_ARR = TIMER_DCR_DBA_ARR, - /** Base is repetition counter register */ - TIMER_DMA_BASE_RCR = TIMER_DCR_DBA_RCR, - /** Base is capture/compare register 1 */ - TIMER_DMA_BASE_CCR1 = TIMER_DCR_DBA_CCR1, - /** Base is capture/compare register 2 */ - TIMER_DMA_BASE_CCR2 = TIMER_DCR_DBA_CCR2, - /** Base is capture/compare register 3 */ - TIMER_DMA_BASE_CCR3 = TIMER_DCR_DBA_CCR3, - /** Base is capture/compare register 4 */ - TIMER_DMA_BASE_CCR4 = TIMER_DCR_DBA_CCR4, - /** Base is break and dead-time register */ - TIMER_DMA_BASE_BDTR = TIMER_DCR_DBA_BDTR, - /** Base is DMA control register */ - TIMER_DMA_BASE_DCR = TIMER_DCR_DBA_DCR, - /** Base is DMA address for full transfer */ - TIMER_DMA_BASE_DMAR = TIMER_DCR_DBA_DMAR, -} timer_dma_base_addr; - -/** - * @brief Get the timer's DMA base address. - * - * Some restrictions apply; see the reference manual for your chip. - * - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @return DMA base address - */ -static inline timer_dma_base_addr timer_dma_get_base_addr(timer_dev *dev) { - uint32 dcr = (dev->regs).gen->DCR; - return (timer_dma_base_addr)(dcr & TIMER_DCR_DBA); -} - -/** - * @brief Set the timer's DMA base address. - * - * Some restrictions apply; see the reference manual for your chip. - * - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param dma_base DMA base address. - */ -static inline void timer_dma_set_base_addr(timer_dev *dev, - timer_dma_base_addr dma_base) { - uint32 tmp = (dev->regs).gen->DCR; - tmp &= ~TIMER_DCR_DBA; - tmp |= dma_base; - (dev->regs).gen->DCR = tmp; -} - -/** - * Timer output compare modes. - */ -typedef enum timer_oc_mode { - /** - * Frozen: comparison between output compare register and counter - * has no effect on the outputs. */ - TIMER_OC_MODE_FROZEN = 0 << 4, - /** - * OCxREF signal is forced high when the count matches the channel - * capture/compare register. */ - TIMER_OC_MODE_ACTIVE_ON_MATCH = 1 << 4, - /** - * OCxREF signal is forced low when the counter matches the - * channel capture/compare register. */ - TIMER_OC_MODE_INACTIVE_ON_MATCH = 2 << 4, - /** - * OCxREF toggles when counter matches the channel capture/compare - * register. */ - TIMER_OC_MODE_TOGGLE = 3 << 4, - /** OCxREF is forced low. */ - TIMER_OC_MODE_FORCE_INACTIVE = 4 << 4, - /** OCxREF is forced high. */ - TIMER_OC_MODE_FORCE_ACTIVE = 5 << 4, - /** - * PWM mode 1. In upcounting, channel is active as long as count - * is less than channel capture/compare register, else inactive. - * In downcounting, channel is inactive as long as count exceeds - * capture/compare register, else active. */ - TIMER_OC_MODE_PWM_1 = 6 << 4, - /** - * PWM mode 2. In upcounting, channel is inactive as long as count - * is less than capture/compare register, else active. In - * downcounting, channel is active as long as count exceeds - * capture/compare register, else inactive. */ - TIMER_OC_MODE_PWM_2 = 7 << 4, -} timer_oc_mode; - -/** - * Timer output compare mode flags. - * @see timer_oc_set_mode() - */ -typedef enum timer_oc_mode_flags { - TIMER_OC_CE = 1U << 7, /**< Output compare clear enable. */ - TIMER_OC_PE = 1U << 3, /**< Output compare preload enable. */ - TIMER_OC_FE = 1U << 2, /**< Output compare fast enable. */ -} timer_oc_mode_flags; - -/** - * @brief Configure a channel's output compare mode. - * - * @param dev Timer device, must have type TIMER_ADVANCED or TIMER_GENERAL. - * @param channel Channel to configure in output compare mode. - * @param mode Timer mode to set. - * @param flags OR of timer_oc_mode_flags. - * @see timer_oc_mode - * @see timer_oc_mode_flags - */ -static inline void timer_oc_set_mode(timer_dev *dev, - uint8 channel, - timer_oc_mode mode, - uint8 flags) { - /* channel == 1,2 -> CCMR1; channel == 3,4 -> CCMR2 */ - __IO uint32 *ccmr = &(dev->regs).gen->CCMR1 + (((channel - 1) >> 1) & 1); - /* channel == 1,3 -> shift = 0, channel == 2,4 -> shift = 8 */ - uint8 shift = 8 * (1 - (channel & 1)); - - uint32 tmp = *ccmr; - tmp &= ~(0xFF << shift); - tmp |= (mode | flags | TIMER_CCMR_CCS_OUTPUT) << shift; - *ccmr = tmp; -} - -/* - * Old, erroneous bit definitions from previous releases, kept for - * backwards compatibility: - */ - -/** Deprecated. Use TIMER_CCMR1_CC4S_OUTPUT instead. */ -#define TIMER_CCMR1_CC4S_OUTPUT TIMER_CCMR2_CC4S_OUTPUT -/** Deprecated. Use TIMER_CCMR1_CC4S_INPUT_TI1 instead. */ -#define TIMER_CCMR1_CC4S_INPUT_TI1 TIMER_CCMR2_CC4S_INPUT_TI1 -/** Deprecated. Use TIMER_CCMR1_CC4S_INPUT_TI2 instead. */ -#define TIMER_CCMR1_CC4S_INPUT_TI2 TIMER_CCMR2_CC4S_INPUT_TI2 -/** Deprecated. Use TIMER_CCMR1_CC4S_INPUT_TRC instead. */ -#define TIMER_CCMR1_CC4S_INPUT_TRC TIMER_CCMR2_CC4S_INPUT_TRC -/** Deprecated. Use TIMER_CCMR2_IC4F instead. */ -#define TIMER_CCMR2_IC2F TIMER_CCMR2_IC4F -/** Deprecated. Use TIMER_CCMR2_IC4PSC instead. */ -#define TIMER_CCMR2_IC2PSC TIMER_CCMR2_IC4PSC -/** Deprecated. Use TIMER_CCMR2_IC3F instead. */ -#define TIMER_CCMR2_IC1F TIMER_CCMR2_IC3F -/** Deprecated. Use TIMER_CCMR2_IC3PSC instead. */ -#define TIMER_CCMR2_IC1PSC TIMER_CCMR2_IC3PSC -/** Deprecated. Use TIMER_CCMR1_CC3S_OUTPUT instead. */ -#define TIMER_CCMR1_CC3S_OUTPUT TIMER_CCMR2_CC3S_OUTPUT -/** Deprecated. Use TIMER_CCMR1_CC3S_INPUT_TI1 instead. */ -#define TIMER_CCMR1_CC3S_INPUT_TI1 TIMER_CCMR2_CC3S_INPUT_TI1 -/** Deprecated. Use TIMER_CCMR1_CC3S_INPUT_TI2 instead. */ -#define TIMER_CCMR1_CC3S_INPUT_TI2 TIMER_CCMR2_CC3S_INPUT_TI2 -/** Deprecated. Use TIMER_CCMR1_CC3S_INPUT_TRC instead. */ -#define TIMER_CCMR1_CC3S_INPUT_TRC TIMER_CCMR2_CC3S_INPUT_TRC - -/** Deprecated. Use TIMER_DCR_DBL_1_XFER instead. */ -#define TIMER_DCR_DBL_1BYTE TIMER_DCR_DBL_1_XFER -/** Deprecated. Use TIMER_DCR_DBL_2_XFER instead. */ -#define TIMER_DCR_DBL_2BYTE TIMER_DCR_DBL_2_XFER -/** Deprecated. Use TIMER_DCR_DBL_3_XFER instead. */ -#define TIMER_DCR_DBL_3BYTE TIMER_DCR_DBL_3_XFER -/** Deprecated. Use TIMER_DCR_DBL_4_XFER instead. */ -#define TIMER_DCR_DBL_4BYTE TIMER_DCR_DBL_4_XFER -/** Deprecated. Use TIMER_DCR_DBL_5_XFER instead. */ -#define TIMER_DCR_DBL_5BYTE TIMER_DCR_DBL_5_XFER -/** Deprecated. Use TIMER_DCR_DBL_6_XFER instead. */ -#define TIMER_DCR_DBL_6BYTE TIMER_DCR_DBL_6_XFER -/** Deprecated. Use TIMER_DCR_DBL_7_XFER instead. */ -#define TIMER_DCR_DBL_7BYTE TIMER_DCR_DBL_7_XFER -/** Deprecated. Use TIMER_DCR_DBL_8_XFER instead. */ -#define TIMER_DCR_DBL_8BYTE TIMER_DCR_DBL_8_XFER -/** Deprecated. Use TIMER_DCR_DBL_9_XFER instead. */ -#define TIMER_DCR_DBL_9BYTE TIMER_DCR_DBL_9_XFER -/** Deprecated. Use TIMER_DCR_DBL_10_XFER instead. */ -#define TIMER_DCR_DBL_10BYTE TIMER_DCR_DBL_10_XFER -/** Deprecated. Use TIMER_DCR_DBL_11_XFER instead. */ -#define TIMER_DCR_DBL_11BYTE TIMER_DCR_DBL_11_XFER -/** Deprecated. Use TIMER_DCR_DBL_12_XFER instead. */ -#define TIMER_DCR_DBL_12BYTE TIMER_DCR_DBL_12_XFER -/** Deprecated. Use TIMER_DCR_DBL_13_XFER instead. */ -#define TIMER_DCR_DBL_13BYTE TIMER_DCR_DBL_13_XFER -/** Deprecated. Use TIMER_DCR_DBL_14_XFER instead. */ -#define TIMER_DCR_DBL_14BYTE TIMER_DCR_DBL_14_XFER -/** Deprecated. Use TIMER_DCR_DBL_15_XFER instead. */ -#define TIMER_DCR_DBL_15BYTE TIMER_DCR_DBL_15_XFER -/** Deprecated. Use TIMER_DCR_DBL_16_XFER instead. */ -#define TIMER_DCR_DBL_16BYTE TIMER_DCR_DBL_16_XFER -/** Deprecated. Use TIMER_DCR_DBL_17_XFER instead. */ -#define TIMER_DCR_DBL_17BYTE TIMER_DCR_DBL_17_XFER -/** Deprecated. Use TIMER_DCR_DBL_18_XFER instead. */ -#define TIMER_DCR_DBL_18BYTE TIMER_DCR_DBL_18_XFER - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/usart.h b/STM32F3/cores/maple/libmaple/include/libmaple/usart.h deleted file mode 100644 index 82b1b7df0..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/usart.h +++ /dev/null @@ -1,464 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/usart.h - * @author Marti Bolivar , - * Perry Hung , - * F3-port by Hanspeter Portner - * @brief USART definitions and prototypes - */ - -#ifndef _LIBMAPLE_USART_H_ -#define _LIBMAPLE_USART_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include -#include -#include -#include -#include - -/* - * Register bit definitions - */ - -/* Status register */ - -/** Line break detection bit */ -#define USART_SR_LBD_BIT 8 -/** Transmit data register empty bit */ -#define USART_SR_TXE_BIT 7 -/** Transmission complete bit */ -#define USART_SR_TC_BIT 6 -/** Read data register not empty bit */ -#define USART_SR_RXNE_BIT 5 -/** IDLE line detected bit */ -#define USART_SR_IDLE_BIT 4 -/** Overrun error bit */ -#define USART_SR_ORE_BIT 3 -/** Noise error bit */ -#define USART_SR_NE_BIT 2 -/** - * @brief Synonym for USART_SR_NE_BIT. - * - * Some series (e.g. STM32F2) use "NF" for "noise flag" instead of the - * original "NE" for "noise error". The meaning of the bit is - * unchanged, but the NF flag can be disabled when the line is - * noise-free. - * - * @see USART_SR_NE_BIT - */ -#define USART_SR_NF_BIT USART_SR_NE_BIT -/** Framing error bit */ -#define USART_SR_FE_BIT 1 -/** Parity error bit */ -#define USART_SR_PE_BIT 0 - -/** Line break detected mask */ -#define USART_SR_LBD BIT(USART_SR_LBD_BIT) -/** Transmit data register empty mask */ -#define USART_SR_TXE BIT(USART_SR_TXE_BIT) -/** Transmission complete mask */ -#define USART_SR_TC BIT(USART_SR_TC_BIT) -/** Read data register not empty mask */ -#define USART_SR_RXNE BIT(USART_SR_RXNE_BIT) -/** IDLE line detected mask */ -#define USART_SR_IDLE BIT(USART_SR_IDLE_BIT) -/** Overrun error mask */ -#define USART_SR_ORE BIT(USART_SR_ORE_BIT) -/** Noise error mask */ -#define USART_SR_NE BIT(USART_SR_NE_BIT) -/** - * @brief Synonym for USART_SR_NE. - * @see USART_SR_NF_BIT - */ -#define USART_SR_NF USART_SR_NE -/** Framing error mask */ -#define USART_SR_FE BIT(USART_SR_FE_BIT) -/** Parity error mask */ -#define USART_SR_PE BIT(USART_SR_PE_BIT) - -/* Data register */ - -/** Data register data value mask */ -#define USART_DR_DR 0xFF - -/* Baud rate register */ - -/** Mantissa of USARTDIV mask */ -#define USART_BRR_DIV_MANTISSA (0xFFF << 4) -/** Fraction of USARTDIV mask */ -#define USART_BRR_DIV_FRACTION 0xF - -/* Control register 1 */ - -/** Word length bit */ -#define USART_CR1_M_BIT 12 -/** Wakeup method bit */ -#define USART_CR1_WAKE_BIT 11 -/** Parity control enable bit */ -#define USART_CR1_PCE_BIT 10 -/** Parity selection bit */ -#define USART_CR1_PS_BIT 9 -/** Parity error interrupt enable bit */ -#define USART_CR1_PEIE_BIT 8 -/** Transmit data regsiter not empty interrupt enable bit */ -#define USART_CR1_TXEIE_BIT 7 -/** Transmission complete interrupt enable bit */ -#define USART_CR1_TCIE_BIT 6 -/** RXNE interrupt enable bit */ -#define USART_CR1_RXNEIE_BIT 5 -/** IDLE interrupt enable bit */ -#define USART_CR1_IDLEIE_BIT 4 -/** Transmitter enable bit */ -#define USART_CR1_TE_BIT 3 -/** Receiver enable bit */ -#define USART_CR1_RE_BIT 2 - -/** Word length mask */ -#define USART_CR1_M BIT(USART_CR1_M_BIT) -/** Word length: 1 start bit, 8 data bits, n stop bit */ -#define USART_CR1_M_8N1 (0 << USART_CR1_M_BIT) -/** Word length: 1 start bit, 9 data bits, n stop bit */ -#define USART_CR1_M_9N1 (1 << USART_CR1_M_BIT) -/** Wakeup method mask */ -#define USART_CR1_WAKE BIT(USART_CR1_WAKE_BIT) -/** Wakeup on idle line */ -#define USART_CR1_WAKE_IDLE (0 << USART_CR1_WAKE_BIT) -/** Wakeup on address mark */ -#define USART_CR1_WAKE_ADDR (1 << USART_CR1_WAKE_BIT) -/** Parity control enable mask */ -#define USART_CR1_PCE BIT(USART_CR1_PCE_BIT) -/** Parity selection mask */ -#define USART_CR1_PS BIT(USART_CR1_PS_BIT) -/** Parity selection: even parity */ -#define USART_CR1_PS_EVEN (0 << USART_CR1_PS_BIT) -/** Parity selection: odd parity */ -#define USART_CR1_PS_ODD (1 << USART_CR1_PS_BIT) -/** Parity error interrupt enable mask */ -#define USART_CR1_PEIE BIT(USART_CR1_PEIE_BIT) -/** Transmit data register empty interrupt enable mask */ -#define USART_CR1_TXEIE BIT(USART_CR1_TXEIE_BIT) -/** Transmission complete interrupt enable mask */ -#define USART_CR1_TCIE BIT(USART_CR1_TCIE_BIT) -/** RXNE interrupt enable mask */ -#define USART_CR1_RXNEIE BIT(USART_CR1_RXNEIE_BIT) -/** IDLE line interrupt enable mask */ -#define USART_CR1_IDLEIE BIT(USART_CR1_IDLEIE_BIT) -/** Transmitter enable mask */ -#define USART_CR1_TE BIT(USART_CR1_TE_BIT) -/** Receiver enable mask */ -#define USART_CR1_RE BIT(USART_CR1_RE_BIT) - -/* Control register 2 */ - -/** LIN mode enable bit */ -#define USART_CR2_LINEN_BIT 14 -/** Clock enable bit */ -#define USART_CR2_CLKEN_BIT 11 -/** Clock polarity bit */ -#define USART_CR2_CPOL_BIT 10 -/** Clock phase bit */ -#define USART_CR2_CPHA_BIT 9 -/** Last bit clock pulse bit */ -#define USART_CR2_LBCL_BIT 8 -/** LIN break detection interrupt enable bit */ -#define USART_CR2_LBDIE_BIT 6 -/** LIN break detection length bit */ -#define USART_CR2_LBDL_BIT 5 - -/** LIN mode enable mask */ -#define USART_CR2_LINEN BIT(USART_CR2_LINEN_BIT) -/** STOP bits mask */ -#define USART_CR2_STOP (0x3 << 12) -/** STOP bits: 1 stop bit */ -#define USART_CR2_STOP_BITS_1 (0x0 << 12) -/** - * @brief STOP bits: 0.5 stop bits - * Not available on UART4, UART5. */ -#define USART_CR2_STOP_BITS_POINT_5 (0x1 << 12) -/** STOP bits: 2 stop bits */ -#define USART_CR2_STOP_BITS_2 (0x2 << 12) -/** - * @brief STOP bits: 1.5 stop bits - * Not available on UART4, UART5. */ -#define USART_CR2_STOP_BITS_1_POINT_5 (0x3 << 12) -/** - * @brief Clock enable. - * Not available on UART4, UART5 */ -#define USART_CR2_CLKEN BIT(USART_CR2_CLKEN_BIT) -/** - * @brief Clock polarity mask. - * Not available on UART4, UART5 */ -#define USART_CR2_CPOL BIT(USART_CR2_CPOL_BIT) -/** Clock polarity: low */ -#define USART_CR2_CPOL_LOW (0x0 << USART_CR2_CLKEN_BIT) -/** Clock polarity: high */ -#define USART_CR2_CPOL_HIGH (0x1 << USART_CR2_CLKEN_BIT) -/** - * @brief Clock phase mask. - * Not available on UART4, UART5 */ -#define USART_CR2_CPHA BIT(USART_CR2_CPHA_BIT) -/** - * @brief Clock phase: first - * First clock transition is the first data capture edge. */ -#define USART_CR2_CPHA_FIRST (0x0 << USART_CR2_CPHA_BIT) -/** - * @brief Clock phase: second - * Second clock transition is the first data capture edge. */ -#define USART_CR2_CPHA_SECOND (0x1 << USART_CR2_CPHA_BIT) -/** - * @brief Last bit clock pulse mask. - * - * When set, the last bit transmitted causes a clock pulse in - * synchronous mode. - * - * Not available on UART4, UART5 */ -#define USART_CR2_LBCL BIT(USART_CR2_LBCL_BIT) -/** LIN break detection interrupt enable mask. */ -#define USART_CR2_LBDIE BIT(USART_CR2_LBDIE_BIT) -/** LIN break detection length. */ -#define USART_CR2_LBDL BIT(USART_CR2_LBDL_BIT) -/** LIN break detection length: 10 bits */ -#define USART_CR2_LBDL_10_BIT (0 << USART_CR2_LBDL_BIT) -/** LIN break detection length: 11 bits */ -#define USART_CR2_LBDL_11_BIT (1 << USART_CR2_LBDL_BIT) - -/* Control register 3 */ - -/** Clear to send interrupt enable bit */ -#define USART_CR3_CTSIE_BIT 10 -/** Clear to send enable bit */ -#define USART_CR3_CTSE_BIT 9 -/** Ready to send enable bit */ -#define USART_CR3_RTSE_BIT 8 -/** DMA enable transmitter bit */ -#define USART_CR3_DMAT_BIT 7 -/** DMA enable receiver bit */ -#define USART_CR3_DMAR_BIT 6 -/** Smartcard mode enable bit */ -#define USART_CR3_SCEN_BIT 5 -/** Smartcard NACK enable bit */ -#define USART_CR3_NACK_BIT 4 -/** Half-duplex selection bit */ -#define USART_CR3_HDSEL_BIT 3 -/** IrDA low power bit */ -#define USART_CR3_IRLP_BIT 2 -/** IrDA mode enable bit */ -#define USART_CR3_IREN_BIT 1 -/** Error interrupt enable bit */ -#define USART_CR3_EIE_BIT 0 - -/** - * @brief Clear to send interrupt enable - * Not available on UART4, UART5. */ -#define USART_CR3_CTSIE BIT(USART_CR3_CTSIE_BIT) -/** - * @brief Clear to send enable - * Not available on UART4, UART5. */ -#define USART_CR3_CTSE BIT(USART_CR3_CTSE_BIT) -/** - * @brief Ready to send enable - * Not available on UART4, UART5. */ -#define USART_CR3_RTSE BIT(USART_CR3_RTSE_BIT) -/** - * @brief DMA enable transmitter - * Not available on UART5. */ -#define USART_CR3_DMAT BIT(USART_CR3_DMAT_BIT) -/** - * @brief DMA enable receiver - * Not available on UART5. */ -#define USART_CR3_DMAR BIT(USART_CR3_DMAR_BIT) -/** - * @brief Smartcard mode enable - * Not available on UART4, UART5. */ -#define USART_CR3_SCEN BIT(USART_CR3_SCEN_BIT) -/** - * @brief Smartcard NACK enable - * Not available on UART4, UART5. */ -#define USART_CR3_NACK BIT(USART_CR3_NACK_BIT) -/** - * @brief Half-duplex selection - * When set, single-wire half duplex mode is selected. - */ -#define USART_CR3_HDSEL BIT(USART_CR3_HDSEL_BIT) -/** IrDA low power mode */ -#define USART_CR3_IRLP BIT(USART_CR3_IRLP_BIT) -/** IrDA mode: normal */ -#define USART_CR3_IRLP_NORMAL (0U << USART_CR3_IRLP_BIT) -/** IrDA mode: low power */ -#define USART_CR3_IRLP_LOW_POWER (1U << USART_CR3_IRLP_BIT) -/** IrDA mode enable */ -#define USART_CR3_IREN BIT(USART_CR3_IREN_BIT) -/** Error interrupt enable */ -#define USART_CR3_EIE BIT(USART_CR3_EIE_BIT) - -/* Guard time and prescaler register */ - -/** - * @brief Guard time value mask - * Used in Smartcard mode. Not available on UART4, UART5. */ -#define USART_GTPR_GT (0xFF << 8) -/** - * @brief Prescaler value mask - * Restrictions on this value apply, depending on the USART mode. Not - * available on UART4, UART5. */ -#define USART_GTPR_PSC 0xFF - -/* - * Devices - */ - -#ifndef USART_RX_BUF_SIZE -#define USART_RX_BUF_SIZE 64 -#endif - -/** USART device type */ -typedef struct usart_dev { - usart_reg_map *regs; /**< Register map */ - ring_buffer *rb; /**< RX ring buffer */ - uint32 max_baud; /**< @brief Deprecated. - * Maximum baud rate. */ - uint8 rx_buf[USART_RX_BUF_SIZE]; /**< @brief Deprecated. - * Actual RX buffer used by rb. - * This field will be removed in - * a future release. */ - rcc_clk_id clk_id; /**< RCC clock information */ - nvic_irq_num irq_num; /**< USART NVIC interrupt */ -} usart_dev; - -void usart_init(usart_dev *dev); - -struct gpio_dev; /* forward declaration */ -/* FIXME [PRE 0.0.13] decide if flags are necessary */ -/** - * @brief Configure GPIOs for use as USART TX/RX. - * @param udev USART device to use - * @param rx_dev RX pin gpio_dev - * @param rx RX pin bit on rx_dev - * @param tx_dev TX pin gpio_dev - * @param tx TX pin bit on tx_dev - * @param flags Currently ignored - */ -extern void usart_config_gpios_async(usart_dev *udev, - struct gpio_dev *rx_dev, uint8 rx, - struct gpio_dev *tx_dev, uint8 tx, - unsigned flags); - -#define USART_USE_PCLK 0 -void usart_set_baud_rate(usart_dev *dev, uint32 clock_speed, uint32 baud); - -void usart_enable(usart_dev *dev); -void usart_disable(usart_dev *dev); -void usart_foreach(void (*fn)(usart_dev *dev)); -/** - * @brief Nonblocking USART transmit - * @param dev Serial port to transmit over - * @param buf Buffer to transmit - * @param len Maximum number of bytes to transmit - * @return Number of bytes transmitted - */ -uint32 usart_tx(usart_dev *dev, const uint8 *buf, uint32 len); -uint32 usart_rx(usart_dev *dev, uint8 *buf, uint32 len); -void usart_putudec(usart_dev *dev, uint32 val); - -/** - * @brief Disable all serial ports. - */ -static inline void usart_disable_all(void) { - usart_foreach(usart_disable); -} - -/** - * @brief Transmit one character on a serial port. - * - * This function blocks until the character has been successfully - * transmitted. - * - * @param dev Serial port to send on. - * @param byte Byte to transmit. - */ -static inline void usart_putc(usart_dev* dev, uint8 byte) { - while (!usart_tx(dev, &byte, 1)) - ; -} - -/** - * @brief Transmit a character string on a serial port. - * - * This function blocks until str is completely transmitted. - * - * @param dev Serial port to send on - * @param str String to send - */ -static inline void usart_putstr(usart_dev *dev, const char* str) { - uint32 i = 0; - while (str[i] != '\0') { - usart_putc(dev, str[i++]); - } -} - -/** - * @brief Read one character from a serial port. - * - * It's not safe to call this function if the serial port has no data - * available. - * - * @param dev Serial port to read from - * @return byte read - * @see usart_data_available() - */ -static inline uint8 usart_getc(usart_dev *dev) { - return rb_remove(dev->rb); -} - -/** - * @brief Return the amount of data available in a serial port's RX buffer. - * @param dev Serial port to check - * @return Number of bytes in dev's RX buffer. - */ -static inline uint32 usart_data_available(usart_dev *dev) { - return rb_full_count(dev->rb); -} - -/** - * @brief Discard the contents of a serial port's RX buffer. - * @param dev Serial port whose buffer to empty. - */ -static inline void usart_reset_rx(usart_dev *dev) { - rb_reset(dev->rb); -} - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/usb.h b/STM32F3/cores/maple/libmaple/include/libmaple/usb.h deleted file mode 100644 index ea24030d4..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/usb.h +++ /dev/null @@ -1,176 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010, 2011, 2012 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* - * NOTE: This API is _unstable_ and will change drastically over time. - */ - -#ifndef _LIBMAPLE_USB_H_ -#define _LIBMAPLE_USB_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -/* - * Descriptors and other paraphernalia - */ - -/* Descriptor types */ - -#define USB_DESCRIPTOR_TYPE_DEVICE 0x01 -#define USB_DESCRIPTOR_TYPE_CONFIGURATION 0x02 -#define USB_DESCRIPTOR_TYPE_STRING 0x03 -#define USB_DESCRIPTOR_TYPE_INTERFACE 0x04 -#define USB_DESCRIPTOR_TYPE_ENDPOINT 0x05 - -/* Descriptor structs and declaration helpers */ - -#define USB_DESCRIPTOR_STRING_LEN(x) (2 + (x << 1)) - -#define USB_DESCRIPTOR_STRING(len) \ - struct { \ - uint8 bLength; \ - uint8 bDescriptorType; \ - uint16 bString[len]; \ - } __packed - -typedef struct usb_descriptor_device { - uint8 bLength; - uint8 bDescriptorType; - uint16 bcdUSB; - uint8 bDeviceClass; - uint8 bDeviceSubClass; - uint8 bDeviceProtocol; - uint8 bMaxPacketSize0; - uint16 idVendor; - uint16 idProduct; - uint16 bcdDevice; - uint8 iManufacturer; - uint8 iProduct; - uint8 iSerialNumber; - uint8 bNumConfigurations; -} __packed usb_descriptor_device; - -typedef struct usb_descriptor_config_header { - uint8 bLength; - uint8 bDescriptorType; - uint16 wTotalLength; - uint8 bNumInterfaces; - uint8 bConfigurationValue; - uint8 iConfiguration; - uint8 bmAttributes; - uint8 bMaxPower; -} __packed usb_descriptor_config_header; - -typedef struct usb_descriptor_interface { - uint8 bLength; - uint8 bDescriptorType; - uint8 bInterfaceNumber; - uint8 bAlternateSetting; - uint8 bNumEndpoints; - uint8 bInterfaceClass; - uint8 bInterfaceSubClass; - uint8 bInterfaceProtocol; - uint8 iInterface; -} __packed usb_descriptor_interface; - -typedef struct usb_descriptor_endpoint { - uint8 bLength; - uint8 bDescriptorType; - uint8 bEndpointAddress; - uint8 bmAttributes; - uint16 wMaxPacketSize; - uint8 bInterval; -} __packed usb_descriptor_endpoint; - -typedef struct usb_descriptor_string { - uint8 bLength; - uint8 bDescriptorType; - uint8 bString[]; -} usb_descriptor_string; - -/* Common values that go inside descriptors */ - -#define USB_CONFIG_ATTR_BUSPOWERED 0b10000000 -#define USB_CONFIG_ATTR_SELF_POWERED 0b11000000 - -#define USB_EP_TYPE_INTERRUPT 0x03 -#define USB_EP_TYPE_BULK 0x02 - -#define USB_DESCRIPTOR_ENDPOINT_IN 0x80 -#define USB_DESCRIPTOR_ENDPOINT_OUT 0x00 - -/* - * USB module core - */ - -#ifndef USB_ISR_MSK -/* Handle CTRM, WKUPM, SUSPM, ERRM, SOFM, ESOFM, RESETM */ -#define USB_ISR_MSK 0xBF00 -#endif - -typedef enum usb_dev_state { - USB_UNCONNECTED, - USB_ATTACHED, - USB_POWERED, - USB_SUSPENDED, - USB_ADDRESSED, - USB_CONFIGURED -} usb_dev_state; - -/* Encapsulates global state formerly handled by usb_lib/ */ -typedef struct usblib_dev { - uint32 irq_mask; - void (**ep_int_in)(void); - void (**ep_int_out)(void); - usb_dev_state state; - usb_dev_state prevState; - rcc_clk_id clk_id; -} usblib_dev; - -extern usblib_dev *USBLIB; - -void usb_init_usblib(usblib_dev *dev, - void (**ep_int_in)(void), - void (**ep_int_out)(void)); - -static inline uint8 usb_is_connected(usblib_dev *dev) { - return dev->state != USB_UNCONNECTED; -} - -static inline uint8 usb_is_configured(usblib_dev *dev) { - return dev->state == USB_CONFIGURED; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/usb_cdcacm.h b/STM32F3/cores/maple/libmaple/include/libmaple/usb_cdcacm.h deleted file mode 100644 index 5fe832cfb..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/usb_cdcacm.h +++ /dev/null @@ -1,179 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/usb_cdcacm.h - * @brief USB CDC ACM (virtual serial terminal) support - * - * IMPORTANT: this API is unstable, and may change without notice. - */ - -#ifndef _LIBMAPLE_USB_CDCACM_H_ -#define _LIBMAPLE_USB_CDCACM_H_ - -#include -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * CDC ACM Requests - */ - -#define USB_CDCACM_SET_LINE_CODING 0x20 -#define USB_CDCACM_GET_LINE_CODING 0x21 -#define USB_CDCACM_SET_COMM_FEATURE 0x02 -#define USB_CDCACM_SET_CONTROL_LINE_STATE 0x22 -#define USB_CDCACM_CONTROL_LINE_DTR (0x01) -#define USB_CDCACM_CONTROL_LINE_RTS (0x02) - -/* - * Descriptors, etc. - */ - -#define CDC_FUNCTIONAL_DESCRIPTOR_SIZE(DataSize) (3 + DataSize) -#define CDC_FUNCTIONAL_DESCRIPTOR(DataSize) \ - struct { \ - uint8 bLength; \ - uint8 bDescriptorType; \ - uint8 SubType; \ - uint8 Data[DataSize]; \ - } __packed - -#define USB_DEVICE_CLASS_CDC 0x02 -#define USB_DEVICE_SUBCLASS_CDC 0x00 -#define USB_INTERFACE_CLASS_CDC 0x02 -#define USB_INTERFACE_SUBCLASS_CDC_ACM 0x02 -#define USB_INTERFACE_CLASS_DIC 0x0A - -/* - * Endpoint configuration - */ - -#define USB_CDCACM_CTRL_ENDP 0 -#define USB_CDCACM_CTRL_RX_ADDR 0x40 -#define USB_CDCACM_CTRL_TX_ADDR 0x80 -#define USB_CDCACM_CTRL_EPSIZE 0x40 - -#define USB_CDCACM_TX_ENDP 1 -#define USB_CDCACM_TX_ADDR 0xC0 -#define USB_CDCACM_TX_EPSIZE 0x40 - -#define USB_CDCACM_MANAGEMENT_ENDP 2 -#define USB_CDCACM_MANAGEMENT_ADDR 0x100 -#define USB_CDCACM_MANAGEMENT_EPSIZE 0x40 - -#define USB_CDCACM_RX_ENDP 3 -#define USB_CDCACM_RX_ADDR 0x110 -#define USB_CDCACM_RX_EPSIZE 0x40 - -#ifndef __cplusplus -#define USB_CDCACM_DECLARE_DEV_DESC(vid, pid) \ - { \ - .bLength = sizeof(usb_descriptor_device), \ - .bDescriptorType = USB_DESCRIPTOR_TYPE_DEVICE, \ - .bcdUSB = 0x0200, \ - .bDeviceClass = USB_DEVICE_CLASS_CDC, \ - .bDeviceSubClass = USB_DEVICE_SUBCLASS_CDC, \ - .bDeviceProtocol = 0x00, \ - .bMaxPacketSize0 = 0x40, \ - .idVendor = vid, \ - .idProduct = pid, \ - .bcdDevice = 0x0200, \ - .iManufacturer = 0x01, \ - .iProduct = 0x02, \ - .iSerialNumber = 0x00, \ - .bNumConfigurations = 0x01, \ - } -#endif - -/* - * CDC ACM interface - */ - -void usb_cdcacm_enable(gpio_dev*, uint8); -void usb_cdcacm_disable(gpio_dev*, uint8); - -void usb_cdcacm_putc(char ch); -uint32 usb_cdcacm_tx(const uint8* buf, uint32 len); -uint32 usb_cdcacm_rx(uint8* buf, uint32 len); -uint32 usb_cdcacm_peek(uint8* buf, uint32 len); - -uint32 usb_cdcacm_data_available(void); /* in RX buffer */ -uint16 usb_cdcacm_get_pending(void); -uint8 usb_cdcacm_is_transmitting(void); - -uint8 usb_cdcacm_get_dtr(void); -uint8 usb_cdcacm_get_rts(void); - -typedef struct usb_cdcacm_line_coding { - uint32 dwDTERate; /* Baud rate */ - -#define USB_CDCACM_STOP_BITS_1 0 -#define USB_CDCACM_STOP_BITS_1_5 1 -#define USB_CDCACM_STOP_BITS_2 2 - uint8 bCharFormat; /* Stop bits */ - -#define USB_CDCACM_PARITY_NONE 0 -#define USB_CDCACM_PARITY_ODD 1 -#define USB_CDCACM_PARITY_EVEN 2 -#define USB_CDCACM_PARITY_MARK 3 -#define USB_CDCACM_PARITY_SPACE 4 - uint8 bParityType; /* Parity type */ - - uint8 bDataBits; /* Data bits: 5, 6, 7, 8, or 16 */ -} __packed usb_cdcacm_line_coding; - -/* Retrieve a copy of the current line coding structure. */ -void usb_cdcacm_get_line_coding(usb_cdcacm_line_coding*); - -/* Line coding conveniences. */ -int usb_cdcacm_get_baud(void); /* dwDTERate */ -int usb_cdcacm_get_stop_bits(void); /* bCharFormat */ -int usb_cdcacm_get_parity(void); /* bParityType */ -int usb_cdcacm_get_n_data_bits(void); /* bDataBits */ - -/* - * Hack: hooks for bootloader reset signalling - */ - -#define USB_CDCACM_HOOK_RX 0x1 -#define USB_CDCACM_HOOK_IFACE_SETUP 0x2 - -void usb_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*)); - -static __always_inline void usb_cdcacm_remove_hooks(unsigned hook_flags) { - usb_cdcacm_set_hooks(hook_flags, 0); -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/include/libmaple/util.h b/STM32F3/cores/maple/libmaple/include/libmaple/util.h deleted file mode 100644 index 5a7034803..000000000 --- a/STM32F3/cores/maple/libmaple/include/libmaple/util.h +++ /dev/null @@ -1,111 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/include/libmaple/util.h - * @brief Miscellaneous utility macros and procedures. - */ - -#ifndef _LIBMAPLE_UTIL_H_ -#define _LIBMAPLE_UTIL_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* - * Bit manipulation - */ - -/** 1UL shifted left by 'shift' */ -#define BIT(shift) (1UL << (shift)) -/** 'Mask' shifted left by 'shift' */ -#define BIT_MASK_SHIFT(mask, shift) ((mask) << (shift)) -/** Bits m to n of x */ -#define GET_BITS(x, m, n) ((((uint32)x) << (31 - (n))) >> ((31 - (n)) + (m))) -/** True iff v is a power of two (1, 2, 4, 8, ...) */ -#define IS_POWER_OF_TWO(v) ((v) && !((v) & ((v) - 1))) - -/* - * Failure routines - */ - -void __error(void); -void _fail(const char*, int, const char*); -void throb(void); - -/* - * Asserts and debug levels - */ - -#define DEBUG_NONE 0 -#define DEBUG_FAULT 1 -#define DEBUG_ALL 2 - -/** - * \def DEBUG_LEVEL - * - * Controls the level of assertion checking. - * - * The higher the debug level, the more assertions will be compiled - * in. This increases the amount of debugging information, but slows - * down (and increases the size of) the binary. - * - * The debug levels, from lowest to highest, are DEBUG_NONE, - * DEBUG_FAULT, and DEBUG_ALL. The default level is DEBUG_ALL. - */ - -#ifndef DEBUG_LEVEL -#define DEBUG_LEVEL DEBUG_ALL -#endif - -#if DEBUG_LEVEL >= DEBUG_ALL -#define ASSERT(exp) \ - if (exp) { \ - } else { \ - _fail(__FILE__, __LINE__, #exp); \ - } -#else -#define ASSERT(exp) (void)((0)) -#endif - -#if DEBUG_LEVEL >= DEBUG_FAULT -#define ASSERT_FAULT(exp) \ - if (exp) { \ - } else { \ - _fail(__FILE__, __LINE__, #exp); \ - } -#else -#define ASSERT_FAULT(exp) (void)((0)) -#endif - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/iwdg.c b/STM32F3/cores/maple/libmaple/iwdg.c deleted file mode 100644 index 24562353f..000000000 --- a/STM32F3/cores/maple/libmaple/iwdg.c +++ /dev/null @@ -1,62 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Michael Hope. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/iwdg.c - * @brief Independent watchdog (IWDG) support - */ - -#include - -/** - * @brief Initialise and start the watchdog - * - * The prescaler and reload set the timeout. For example, a prescaler - * of IWDG_PRE_32 divides the 40 kHz clock by 32 and gives roughly 1 - * ms per reload. - * - * @param prescaler Prescaler for the 40 kHz IWDG clock. - * @param reload Independent watchdog counter reload value. - */ -void iwdg_init(iwdg_prescaler prescaler, uint16 reload) { - IWDG_BASE->KR = IWDG_KR_UNLOCK; - IWDG_BASE->PR = prescaler; - IWDG_BASE->RLR = reload; - - /* Start things off */ - IWDG_BASE->KR = IWDG_KR_START; - iwdg_feed(); -} - -/** - * @brief Reset the IWDG counter. - * - * Calling this function will cause the IWDG counter to be reset to - * its reload value. - */ -void iwdg_feed(void) { - IWDG_BASE->KR = IWDG_KR_FEED; -} diff --git a/STM32F3/cores/maple/libmaple/nvic.c b/STM32F3/cores/maple/libmaple/nvic.c deleted file mode 100644 index 149e7804c..000000000 --- a/STM32F3/cores/maple/libmaple/nvic.c +++ /dev/null @@ -1,103 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/nvic.c - * @brief Nested vector interrupt controller support. - */ - -#include -#include -#include - -/** - * @brief Set interrupt priority for an interrupt line - * - * Note: The STM32 only implements 4 bits of priority, ignoring the - * lower 4 bits. This means there are only 16 levels of priority. - * Bits[3:0] read as zero and ignore writes. - * - * @param irqn device to set - * @param priority Priority to set, 0 being highest priority and 15 - * being lowest. - */ -void nvic_irq_set_priority(nvic_irq_num irqn, uint8 priority) { - if (irqn < 0) { - /* This interrupt is in the system handler block */ - SCB_BASE->SHP[((uint32)irqn & 0xF) - 4] = (priority & 0xF) << 4; - } else { - NVIC_BASE->IP[irqn] = (priority & 0xF) << 4; - } -} - -/** - * @brief Initialize the NVIC, setting interrupts to a default priority. - */ -void nvic_init(uint32 address, uint32 offset) { - uint32 i; - - nvic_set_vector_table(address, offset); - - /* - * Lower priority level for all peripheral interrupts to lowest - * possible. - */ - for (i = 0; i < STM32_NR_INTERRUPTS; i++) { - nvic_irq_set_priority((nvic_irq_num)i, 0xF); - } - - /* Lower systick interrupt priority to lowest level */ - nvic_irq_set_priority(NVIC_SYSTICK, 0xF); -} - -/** - * @brief Set the vector table base address. - * - * For stand-alone products, the vector table base address is normally - * the start of Flash (0x08000000). - * - * @param address Vector table base address. - * @param offset Offset from address. Some restrictions apply to the - * use of nonzero offsets; see the ARM Cortex M3 - * Technical Reference Manual. - */ -void nvic_set_vector_table(uint32 address, uint32 offset) { - SCB_BASE->VTOR = address | (offset & 0x1FFFFF80); -} - -/** - * @brief Force a system reset. - * - * Resets all major system components, excluding debug. - */ -void nvic_sys_reset() { - uint32 prigroup = SCB_BASE->AIRCR & SCB_AIRCR_PRIGROUP; - SCB_BASE->AIRCR = SCB_AIRCR_VECTKEY | SCB_AIRCR_SYSRESETREQ | prigroup; - asm volatile("dsb"); - while (1) - ; -} diff --git a/STM32F3/cores/maple/libmaple/pwr.c b/STM32F3/cores/maple/libmaple/pwr.c deleted file mode 100644 index 3cf170f37..000000000 --- a/STM32F3/cores/maple/libmaple/pwr.c +++ /dev/null @@ -1,41 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/pwr.c - * @brief Power control (PWR) support. - */ - -#include -#include - -/** - * Enables the power interface clock, and resets the power device. - */ -void pwr_init(void) { - rcc_clk_enable(RCC_PWR); - rcc_reset_dev(RCC_PWR); -} diff --git a/STM32F3/cores/maple/libmaple/rcc.c b/STM32F3/cores/maple/libmaple/rcc.c deleted file mode 100644 index aba87c006..000000000 --- a/STM32F3/cores/maple/libmaple/rcc.c +++ /dev/null @@ -1,169 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/rcc.c - * @brief Portable RCC routines. - */ - -#include - -#include "rcc_private.h" - -/** - * @brief Get a peripheral's clock domain - * @param id Clock ID of the peripheral whose clock domain to return - * @return Clock source for the given clock ID - */ -rcc_clk_domain rcc_dev_clk(rcc_clk_id id) { - return rcc_dev_table[id].clk_domain; -} - -/** - * @brief Switch the clock used as the source of the system clock. - * - * After switching the source, this function blocks until the new - * clock source is in use. - * - * @param sysclk_src New system clock source. - * @see rcc_sysclk_src - */ -void rcc_switch_sysclk(rcc_sysclk_src sysclk_src) { - uint32 cfgr = RCC_BASE->CFGR; - cfgr &= ~RCC_CFGR_SW; - cfgr |= sysclk_src; - - /* Switch SYSCLK source. */ - RCC_BASE->CFGR = cfgr; - - /* Wait for new source to come into use. */ - while ((RCC_BASE->CFGR & RCC_CFGR_SWS) != (sysclk_src << 2)) - ; -} - -/* - * Turning clocks off and on, querying their status. - */ - -/* IMPORTANT NOTE FOR IMPLEMENTORS: - * - * libmaple assumes that enum rcc_clk enumerators are two-byte - * values, stored in a uint16, in the following way: - * - * - The high-order byte is the byte offset (from RCC_BASE) of the register - * to touch when turning on or off the given clock. - * - * - The low-order byte is the bit in that register that turns the - * clock on or off. - * - * Example for STM32F1: Turning on the high-speed external clock (HSE) - * involves setting HSEON, bit 16, of RCC_CR. The high-order byte is - * then offsetof(struct rcc_reg_map, CR) = 0, and the low-order byte - * is 16. - * - * The corresponding value of RCC_CLK_HSE is thus (0 << 8) | 16 = 16. - * - * On all known STM32 series, this encoding has the property that - * adding one to the low byte also gives the bit to check to determine - * if the clock is ready. For example, on STM32F1, RCC_CR_HSERDY is - * bit 17. If that's not the case on your series, rcc_is_clk_ready() - * won't work for you. */ - -/* Returns the RCC register which controls the clock source. */ -static inline __IO uint32* rcc_clk_reg(rcc_clk clock) { - return (__IO uint32*)((__IO uint8*)RCC_BASE + (clock >> 8)); -} - -/* Returns a mask in rcc_clk_reg(clock) to be used for turning the - * clock on and off */ -static inline uint32 rcc_clk_on_mask(rcc_clk clock) { - return 1 << (clock & 0xFF); -} - -/* Returns a mask in rcc_clk_reg(clock) to be used when checking the - * readiness of the clock. */ -static inline uint32 rcc_clk_ready_mask(rcc_clk clock) { - return rcc_clk_on_mask(clock) << 1; -} - -/** - * @brief Turn on a clock source. - * - * After this routine exits, callers should ensure that the clock - * source is ready by waiting until rcc_is_clk_ready(clock) returns - * true. - * - * @param clock Clock to turn on. - * @see rcc_turn_off_clk() - * @see rcc_is_clk_ready() - */ -void rcc_turn_on_clk(rcc_clk clock) { - *rcc_clk_reg(clock) |= rcc_clk_on_mask(clock); -} - -/** - * @brief Turn off a clock source. - * - * In certain configurations, certain clock sources cannot be safely - * turned off. (For example, the main PLL on STM32F1 devices cannot be - * turned off if it has been selected as the SYSCLK source). Consult - * the reference material for your MCU to ensure it is safe to call - * this function. - * - * @param clock Clock to turn off. - * @see rcc_turn_on_clk() - * @see rcc_is_clk_ready() - */ -void rcc_turn_off_clk(rcc_clk clock) { - *rcc_clk_reg(clock) &= ~rcc_clk_on_mask(clock); -} - -/** - * @brief Check if a clock is on. - * @param clock Clock to check. - * @return 1 if the clock is on, 0 if the clock is off. - */ -int rcc_is_clk_on(rcc_clk clock) { - return !!(*rcc_clk_reg(clock) & rcc_clk_on_mask(clock)); -} - -/** - * @brief Check if a clock source is ready. - * - * In general, it is not safe to rely on a clock source unless this - * function returns nonzero. Also note that this function may return - * nonzero for a short period of time after a clock has been turned - * off. Consult the reference material for your MCU for more details. - * - * @param clock Clock whose readiness to check for. - * @return Nonzero if the clock is ready, zero otherwise. - * @see rcc_turn_on_clk() - * @see rcc_turn_off_clk() - */ -int rcc_is_clk_ready(rcc_clk clock) { - return (int)(*rcc_clk_reg(clock) & rcc_clk_ready_mask(clock)); -} diff --git a/STM32F3/cores/maple/libmaple/rcc_private.h b/STM32F3/cores/maple/libmaple/rcc_private.h deleted file mode 100644 index b20a2c5d2..000000000 --- a/STM32F3/cores/maple/libmaple/rcc_private.h +++ /dev/null @@ -1,67 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* - * RCC private header. - */ - -#ifndef _LIBMAPLE_PRIVATE_RCC_H_ -#define _LIBMAPLE_PRIVATE_RCC_H_ - -#include - -struct rcc_dev_info { - const rcc_clk_domain clk_domain; - const uint8 line_num; -}; - -extern const struct rcc_dev_info rcc_dev_table[]; - -static inline void rcc_do_clk_enable(__IO uint32** enable_regs, - rcc_clk_id id) { - __IO uint32 *enable_reg = enable_regs[rcc_dev_clk(id)]; - uint8 line_num = rcc_dev_table[id].line_num; - bb_peri_set_bit(enable_reg, line_num, 1); -} - -static inline void rcc_do_reset_dev(__IO uint32** reset_regs, - rcc_clk_id id) { - __IO uint32 *reset_reg = reset_regs[rcc_dev_clk(id)]; - uint8 line_num = rcc_dev_table[id].line_num; - bb_peri_set_bit(reset_reg, line_num, 1); - bb_peri_set_bit(reset_reg, line_num, 0); -} - -static inline void rcc_do_set_prescaler(const uint32 *masks, - rcc_prescaler prescaler, - uint32 divider) { - uint32 cfgr = RCC_BASE->CFGR; - cfgr &= ~masks[prescaler]; - cfgr |= divider; - RCC_BASE->CFGR = cfgr; -} - -#endif diff --git a/STM32F3/cores/maple/libmaple/rules.mk b/STM32F3/cores/maple/libmaple/rules.mk deleted file mode 100644 index 0b541edc9..000000000 --- a/STM32F3/cores/maple/libmaple/rules.mk +++ /dev/null @@ -1,53 +0,0 @@ -# Standard things -sp := $(sp).x -dirstack_$(sp) := $(d) -d := $(dir) -BUILDDIRS += $(BUILD_PATH)/$(d) - -LIBMAPLE_INCLUDES := -I$(LIBMAPLE_PATH)/include -I$(LIBMAPLE_MODULE_SERIES)/include -LIBMAPLE_PRIVATE_INCLUDES := -I$(LIBMAPLE_PATH) - -# Local flags -CFLAGS_$(d) = $(LIBMAPLE_PRIVATE_INCLUDES) $(LIBMAPLE_INCLUDES) -Wall -Werror - -# Local rules and targets -cSRCS_$(d) := adc.c -cSRCS_$(d) += dac.c -cSRCS_$(d) += dma.c -cSRCS_$(d) += exti.c -cSRCS_$(d) += flash.c -cSRCS_$(d) += gpio.c -cSRCS_$(d) += iwdg.c -cSRCS_$(d) += nvic.c -cSRCS_$(d) += pwr.c -cSRCS_$(d) += rcc.c -cSRCS_$(d) += spi.c -cSRCS_$(d) += systick.c -ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),stm32f2 stm32f3)) # SYSCFG peripheral available only on F2, F3 -cSRCS_$(d) += syscfg.c -endif -cSRCS_$(d) += timer.c -cSRCS_$(d) += usart.c -cSRCS_$(d) += usart_private.c -cSRCS_$(d) += util.c -sSRCS_$(d) := exc.S -ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),stm32f1 stm32f3)) # TODO port I2C to F2 -cSRCS_$(d) += i2c.c -cSRCS_$(d) += bkp.c -endif - -cFILES_$(d) := $(cSRCS_$(d):%=$(d)/%) -sFILES_$(d) := $(sSRCS_$(d):%=$(d)/%) - -OBJS_$(d) := $(cFILES_$(d):%.c=$(BUILD_PATH)/%.o) $(sFILES_$(d):%.S=$(BUILD_PATH)/%.o) -DEPS_$(d) := $(OBJS_$(d):%.o=%.d) - -$(OBJS_$(d)): TGT_CFLAGS := $(CFLAGS_$(d)) -$(OBJS_$(d)): TGT_ASFLAGS := - -TGT_BIN += $(OBJS_$(d)) - -# Standard things --include $(DEPS_$(d)) -d := $(dirstack_$(sp)) -sp := $(basename $(sp)) diff --git a/STM32F3/cores/maple/libmaple/spi.c b/STM32F3/cores/maple/libmaple/spi.c deleted file mode 100644 index ec008d40c..000000000 --- a/STM32F3/cores/maple/libmaple/spi.c +++ /dev/null @@ -1,129 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/spi.c - * @author Marti Bolivar - * @brief Serial Peripheral Interface (SPI) support. - * Currently, there is no Integrated Interchip Sound (I2S) support. - */ - -#include -#include - -/* - * SPI convenience routines - */ - -/** - * @brief Initialize and reset a SPI device. - * @param dev Device to initialize and reset. - */ -void spi_init(spi_dev *dev) { - rcc_clk_enable(dev->clk_id); - rcc_reset_dev(dev->clk_id); -} - -/** - * @brief Configure and enable a SPI device as bus master. - * - * The device's peripheral will be disabled before being reconfigured. - * - * @param dev Device to configure as bus master - * @param baud Bus baud rate - * @param mode SPI mode - * @param flags Logical OR of spi_cfg_flag values. - * @see spi_cfg_flag - */ -void spi_master_enable(spi_dev *dev, - spi_baud_rate baud, - spi_mode mode, - uint32 flags) { - spi_reconfigure(dev, baud | flags | SPI_CR1_MSTR | mode); -} - -/** - * @brief Configure and enable a SPI device as a bus slave. - * - * The device's peripheral will be disabled before being reconfigured. - * - * @param dev Device to configure as a bus slave - * @param mode SPI mode - * @param flags Logical OR of spi_cfg_flag values. - * @see spi_cfg_flag - */ -void spi_slave_enable(spi_dev *dev, spi_mode mode, uint32 flags) { - spi_reconfigure(dev, flags | mode); -} - -/** - * @brief Enable a SPI peripheral - * @param dev Device to enable - */ -void spi_peripheral_enable(spi_dev *dev) { - bb_peri_set_bit(&dev->regs->CR1, SPI_CR1_SPE_BIT, 1); -} - -/** - * @brief Disable a SPI peripheral - * @param dev Device to disable - */ -void spi_peripheral_disable(spi_dev *dev) { - bb_peri_set_bit(&dev->regs->CR1, SPI_CR1_SPE_BIT, 0); -} - -/** - * @brief Enable DMA requests whenever the transmit buffer is empty - * @param dev SPI device on which to enable TX DMA requests - */ -void spi_tx_dma_enable(spi_dev *dev) { - bb_peri_set_bit(&dev->regs->CR2, SPI_CR2_TXDMAEN_BIT, 1); -} - -/** - * @brief Disable DMA requests whenever the transmit buffer is empty - * @param dev SPI device on which to disable TX DMA requests - */ -void spi_tx_dma_disable(spi_dev *dev) { - bb_peri_set_bit(&dev->regs->CR2, SPI_CR2_TXDMAEN_BIT, 0); -} - -/** - * @brief Enable DMA requests whenever the receive buffer is empty - * @param dev SPI device on which to enable RX DMA requests - */ -void spi_rx_dma_enable(spi_dev *dev) { - bb_peri_set_bit(&dev->regs->CR2, SPI_CR2_RXDMAEN_BIT, 1); -} - -/** - * @brief Disable DMA requests whenever the receive buffer is empty - * @param dev SPI device on which to disable RX DMA requests - */ -void spi_rx_dma_disable(spi_dev *dev) { - bb_peri_set_bit(&dev->regs->CR2, SPI_CR2_RXDMAEN_BIT, 0); -} diff --git a/STM32F3/cores/maple/libmaple/spi_private.h b/STM32F3/cores/maple/libmaple/spi_private.h deleted file mode 100644 index f0e0bd10f..000000000 --- a/STM32F3/cores/maple/libmaple/spi_private.h +++ /dev/null @@ -1,37 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#ifndef _LIBMAPLE_SPI_PRIVATE_H_ -#define _LIBMAPLE_SPI_PRIVATE_H_ - -#define SPI_DEV(num) \ - { \ - .regs = SPI##num##_BASE, \ - .clk_id = RCC_SPI##num, \ - .irq_num = NVIC_SPI##num, \ - } - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32_private.h b/STM32F3/cores/maple/libmaple/stm32_private.h deleted file mode 100644 index 427417a31..000000000 --- a/STM32F3/cores/maple/libmaple/stm32_private.h +++ /dev/null @@ -1,45 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -#ifndef _LIBMAPLE_STM32_PRIVATE_H_ -#define _LIBMAPLE_STM32_PRIVATE_H_ - -typedef enum stm32_mem_block_purpose { - STM32_BLOCK_CODE, - STM32_BLOCK_SRAM, - STM32_BLOCK_PERIPH, - STM32_BLOCK_FSMC_1_2, - STM32_BLOCK_FSMC_3_4, - STM32_BLOCK_FSMC_REG, - STM32_BLOCK_UNUSED, - STM32_BLOCK_CORTEX_INTERNAL, -} stm32_mem_block_purpose; - -static inline stm32_mem_block_purpose stm32_block_purpose(void *addr) { - return (stm32_mem_block_purpose)((unsigned)addr >> 29); -} - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c deleted file mode 100644 index 23a3b9603..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_adc.c +++ /dev/null @@ -1,412 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/adc.c - * @author Marti Bolivar , - * Perry Hung , - * F3-port by Hanspeter Portner - * @brief STM32F3 ADC support. - */ - -#include -#include -#include - -/* - * Devices - */ - -static adc_private_data adc1_priv; -static adc_dev adc1 = { - .regs = ADC1_BASE, - .clk_id = RCC_ADC12, - .priv = &adc1_priv -}; -/** ADC1 device. */ -const adc_dev *ADC1 = &adc1; - -static adc_private_data adc2_priv; -static adc_dev adc2 = { - .regs = ADC2_BASE, - .clk_id = RCC_ADC12, - .priv = &adc2_priv -}; -/** ADC2 device. */ -const adc_dev *ADC2 = &adc2; - -#if STM32_F3_LINE == STM32_F3_LINE_303 -static adc_private_data adc3_priv; -static adc_dev adc3 = { - .regs = ADC3_BASE, - .clk_id = RCC_ADC34, - .priv = &adc3_priv -}; -/** ADC3 device. */ -const adc_dev *ADC3 = &adc3; - -static adc_private_data adc4_priv; -static adc_dev adc4 = { - .regs = ADC4_BASE, - .clk_id = RCC_ADC34, - .priv = &adc4_priv -}; -/** ADC4 device. */ -const adc_dev *ADC4 = &adc4; -#endif - -/* - * STM32F3 routines - */ - -static inline void adc_check_regular_notongoing(const adc_dev *dev) { - adc_reg_map *regs = dev->regs; - if(regs->CR & ADC_CR_ADSTART) /* check for ongoing regular channel conversion */ - { - regs->CR |= ADC_CR_ADSTP; /* stop regular channel conversion */ - while(regs->CR & ADC_CR_ADSTP) - ; /* wait for conversion to stop */ - } -} - -static inline void adc_check_injected_notongoing(const adc_dev *dev) { - adc_reg_map *regs = dev->regs; - if(regs->CR & ADC_CR_JADSTART) /* check for ongoing injected channel conversion */ - { - regs->CR |= ADC_CR_JADSTP; /* stop injected channel conversion */ - while(regs->CR & ADC_CR_JADSTP) - ; /* wait for conversion to stop */ - } -} - -void adc_set_extsel(const adc_dev *dev, adc_extsel_event event) { - adc_check_regular_notongoing(dev); - - uint32 cfgr = dev->regs->CFGR; - cfgr &= ~ADC_CFGR_EXTSEL; - cfgr |= event; - dev->regs->CFGR = cfgr; -} - -void adc_set_resolution(const adc_dev *dev, adc_resolution res) { - adc_check_regular_notongoing(dev); - adc_check_injected_notongoing(dev); - - uint32 cfgr = dev->regs->CFGR; - cfgr &= ~ADC_CFGR_RES; - cfgr |= res; - dev->regs->CFGR = cfgr; -} - -void adc_set_sample_rate(const adc_dev *dev, adc_smp_rate smp_rate) { - adc_check_regular_notongoing(dev); - adc_check_injected_notongoing(dev); - - uint32 adc_smpr1_val = 0, adc_smpr2_val = 0; - int i; - - for(i = 0; i < 9; i++) { - /* ADC_SMPR1 determines sample time for channels [1,9] */ - adc_smpr1_val |= smp_rate << (i * 3 + 3); - /* ADC_SMPR2 determines sample time for channels [10,18] */ - adc_smpr2_val |= smp_rate << (i * 3); - } - - dev->regs->SMPR1 = adc_smpr1_val; - dev->regs->SMPR2 = adc_smpr2_val; -} - -void adc_enable_scan(const adc_dev *dev) { - /* FIXME nonexistent in F3 series */ -} - -void adc_disable_scan(const adc_dev *dev) { - /* FIXME nonexistent in F3 series*/ -} - -void adc_enable_continuous(const adc_dev *dev) { - bb_peri_set_bit(&dev->regs->CFGR, ADC_CFGR_CONT_BIT, 1); -} - -void adc_disable_continuous(const adc_dev *dev) { - bb_peri_set_bit(&dev->regs->CFGR, ADC_CFGR_CONT_BIT, 0); -} - -#define BITS_PER_SQ 6 -#define SQs_PER_SQR 5 -void adc_set_conv_seq(const adc_dev *dev, const uint8 *channels, uint8 len) { - ASSERT( (0 < len) && (len <= 16) ); - uint8 i; - uint32 val = 0; - uint8 lshift; - __IO uint32 *sqr = &dev->regs->SQR1; - - for (i=0; iregs; - - adc_set_conv_seq(dev, &channel, 1); - - regs->CR |= ADC_CR_ADSTART; /* start conversion */ - while (!(regs->ISR & ADC_ISR_EOC)) - ; /* wait until done */ - - return (uint16)(regs->DR & ADC_DR_RDATA); -} - -void adc_attach_interrupt(const adc_dev *dev, uint32 interrupt_flags, - void (*handler)(adc_callback_data*), void *arg) { - adc_private_data *priv = dev->priv; - priv->handler = handler; - priv->handler_flags = interrupt_flags; - priv->cb_data.arg = arg; - adc_enable_interrupts(dev, interrupt_flags); -} - -void adc_detach_interrupt(const adc_dev *dev) { - adc_private_data *priv; - adc_disable_interrupts(dev, ADC_ALL_INTERRUPTS); - priv = dev->priv; - priv->handler = NULL; - priv->handler_flags = 0; -} - -void adc_enable_interrupts(const adc_dev *dev, uint32 interrupt_flags) { - uint32 ier = dev->regs->IER; - ier |= interrupt_flags; - dev->regs->IER = ier; - _adc_enable_dev_irq(dev); -} - -void adc_disable_interrupts(const adc_dev *dev, uint32 interrupt_flags) { - /* Don't use nvic_irq_disable()! IRQs are shared among ADCs. */ - uint32 ier = dev->regs->IER; - ier &= ~interrupt_flags; - dev->regs->IER = ier; -} - -void adc_calibrate(const adc_dev *dev) { - adc_reg_map *regs = dev->regs; - - if( (regs->CR & ADC_CR_ADVREGEN) != ADC_CR_ADVREGEN_ENABLE) - adc_regulator_enable(dev); /* ensure that voltage regulator is enabled */ - - if(regs->CR & ADC_CR_ADEN) - adc_disable(dev); /* ensure that ADC is disabled */ - - regs->CR &= ~ADC_CR_ADCALDIF; /* calibrate in single-ended mode */ - regs->CR |= ADC_CR_ADCAL; /* start calibration */ - while (regs->CR & ADC_CR_ADCAL) - ; /* wait until done */ - - regs->CR |= ADC_CR_ADCALDIF; /* calibrate in differential mode */ - regs->CR |= ADC_CR_ADCAL; /* start calibration */ - while (regs->CR & ADC_CR_ADCAL) - ; /* wait until done */ -} - -void adc_set_exttrig(const adc_dev *dev, adc_exttrig_mode mode) { - adc_reg_map *regs = dev->regs; - regs->CFGR &= ~ADC_CFGR_EXTEN; - regs->CFGR |= mode; -} - -void adc_set_prescaler(adc_prescaler pre) { - if (pre & 0x10) { /* PLL is used as clock source */ - ADC12_BASE->CCR &= ~ADC_CCR_CKMODE; -#if STM32_F3_LINE == STM32_F3_LINE_303 - ADC34_BASE->CCR &= ~ADC_CCR_CKMODE; -#endif - - uint32 cfgr2 = RCC_BASE->CFGR2; - - cfgr2 &= ~RCC_CFGR2_ADC12PRES; // clear register - cfgr2 |= (uint32)pre << RCC_CFGR2_ADC12PRES_SHIFT; // set register - -#if STM32_F3_LINE == STM32_F3_LINE_303 - cfgr2 &= ~RCC_CFGR2_ADC34PRES; // clear register - cfgr2 |= (uint32)pre << RCC_CFGR2_ADC34PRES_SHIFT; // set register -#endif - - RCC_BASE->CFGR2 = cfgr2; - } else { /* AHB bus is used as clock source */ - /* FIXME does not work with current wirish booting routine */ - uint32 tmp; - - tmp = ADC12_BASE->CCR; - tmp &= ~ADC_CCR_CKMODE; - tmp |= pre << ADC_CCR_CKMODE_SHIFT; - ADC12_BASE->CCR = tmp; - -#if STM32_F3_LINE == STM32_F3_LINE_303 - tmp = ADC34_BASE->CCR; - tmp &= ~ADC_CCR_CKMODE; - tmp |= pre << ADC_CCR_CKMODE_SHIFT; - ADC34_BASE->CCR = tmp; -#endif - } -} - -void adc_foreach(void (*fn)(const adc_dev*)) { - fn(ADC1); - fn(ADC2); -#if STM32_F3_LINE == STM32_F3_LINE_303 - fn(ADC3); - fn(ADC4); -#endif -} - -void adc_config_gpio(const adc_dev *ignored, gpio_dev *gdev, uint8 bit) { - gpio_set_modef(gdev, bit, GPIO_MODE_ANALOG, GPIO_MODEF_PUPD_NONE); -} - -void adc_enable_single_swstart(const adc_dev *dev) { - int check_dev_adc = dev == ADC1; -#if STM32_F3_LINE == STM32_F3_LINE_303 - check_dev_adc = (check_dev_adc || dev == ADC3); -#endif - if (check_dev_adc) - adc_init(dev); /* FIXME hack needed for wirish, as master and slave ADC share the same reset register */ - adc_set_exttrig(dev, ADC_EXTTRIG_MODE_SOFTWARE); - adc_regulator_enable(dev); - adc_calibrate(dev); - adc_enable(dev); -} - -void adc_set_reg_seqlen(const adc_dev *dev, uint8 length) { - adc_check_regular_notongoing(dev); - - uint32 tmp = dev->regs->SQR1; - tmp &= ~ADC_SQR1_L; - tmp |= (length - 1) & ADC_SQR1_L; - dev->regs->SQR1 = tmp; -} - -void adc_enable(const adc_dev *dev) { - adc_reg_map *regs = dev->regs; - - while( (regs->CR & ADC_CR_ADVREGEN) != ADC_CR_ADVREGEN_ENABLE) - adc_regulator_enable(dev); /* ensure that voltage regulator is enabled */ - - regs->CR |= ADC_CR_ADEN; /* enable ADC */ - while (!(regs->ISR & ADC_ISR_ADRDY)) - ; /* wait until ADC is ready */ -} - -void adc_disable(const adc_dev *dev) { - adc_reg_map *regs = dev->regs; - - adc_check_regular_notongoing(dev); - adc_check_injected_notongoing(dev); - - regs->CR |= ADC_CR_ADDIS; /* disable ADC */ - while(regs->CR & ADC_CR_ADEN) - ; /* wait until ADC is effectively disabled */ -} - -void adc_regulator_enable(const adc_dev *dev) { - adc_reg_map *regs = dev->regs; - - regs->CR &= ~ADC_CR_ADVREGEN; - regs->CR |= ADC_CR_ADVREGEN_ENABLE; - - delay_us(10); /* 10us are worst case */ -} - -void adc_regulator_disable(const adc_dev *dev) { - adc_reg_map *regs = dev->regs; - - regs->CR &= ~ADC_CR_ADVREGEN; - regs->CR |= ADC_CR_ADVREGEN_DISABLE; -} - -/* - * Private API - */ - -void _adc_enable_dev_irq(const adc_dev *dev) { - if ( (dev == ADC1) || (dev == ADC2) ) - nvic_irq_enable(NVIC_ADC1_2); -#if STM32_F3_LINE == STM32_F3_LINE_303 - else { - if (dev == ADC3) - nvic_irq_enable(NVIC_ADC3); - else // dev == ADC4 - nvic_irq_enable(NVIC_ADC4); - } -#endif -} - -/* IRQ handler for adc_attach_interrupt() */ -static __always_inline void adc_irq(const adc_dev *dev) { - adc_private_data *priv = dev->priv; - uint32 irq_flags = dev->regs->ISR & priv->handler_flags; - - if (!irq_flags) { - /* The user isn't interested in this IRQ. */ - return; - } else if (priv->handler) { - priv->cb_data.irq_flags = irq_flags; - priv->handler(&priv->cb_data); - } -} - -/* - * IRQ handlers for adc_attach_interrupt() - */ -/* -void __irq_adc1_2(void) { - adc_irq(ADC1); - adc_irq(ADC2); -} - -#if STM32_F3_LINE == STM32_F3_LINE_303 -void __irq_adc3(void) { - adc_irq(ADC3); -} - -void __irq_adc4(void) { - adc_irq(ADC4); -} -#endif -*/ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_bkp.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_bkp.c deleted file mode 100644 index 5ce70ae68..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_bkp.c +++ /dev/null @@ -1,49 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/bkp.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 backup register support. - */ - -#include -#include -#include - -void bkp_init(void) { - /* Don't call pwr_init(), or you'll reset the device. We just - * need the clock. */ - rcc_clk_enable(RCC_PWR); -} - -inline __IO uint32* bkp_data_register(uint8 reg) { - if (reg < 1 || reg > BKP_NR_DATA_REGS) - return NULL; - else - return (uint32*)BKP_BASE + (reg-1); // regs are accessed from 1-16 -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_comp.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_comp.c deleted file mode 100644 index 527be71d7..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_comp.c +++ /dev/null @@ -1,61 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/comp.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 Comparator support. - */ - -#include - -/* - * Devices - */ - -static comp_dev comp1 = { .regs = COMP1_BASE }; const comp_dev *COMP1 = &comp1; -static comp_dev comp2 = { .regs = COMP2_BASE }; const comp_dev *COMP2 = &comp2; -static comp_dev comp3 = { .regs = COMP3_BASE }; const comp_dev *COMP3 = &comp3; -static comp_dev comp4 = { .regs = COMP4_BASE }; const comp_dev *COMP4 = &comp4; -static comp_dev comp5 = { .regs = COMP5_BASE }; const comp_dev *COMP5 = &comp5; -static comp_dev comp6 = { .regs = COMP6_BASE }; const comp_dev *COMP6 = &comp6; -static comp_dev comp7 = { .regs = COMP7_BASE }; const comp_dev *COMP7 = &comp7; - -void __irq_comp123(void) { - //TODO -} - -void __irq_com456(void) { - //TODO -} - -void __irq_comp7(void) { - //TODO -} - -/* TODO - * actually implement me ;-) - */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c deleted file mode 100644 index 10ba37f9c..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_dma.c +++ /dev/null @@ -1,364 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Michael Hope. - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/dma.c - * @author Marti Bolivar , - * Original implementation by Michael Hope, - * F3-port by Hanspeter Portner - * @brief STM32F3 DMA support. - */ - -#include -#include - -/* Hack to ensure inlining in dma_irq_handler() */ -#define DMA_GET_HANDLER(dev, tube) (dev->handlers[tube - 1].handler) -#include "dma_private.h" - -/* - * Devices - */ - -static dma_dev dma1 = { - .regs = DMA1_BASE, - .clk_id = RCC_DMA1, - .handlers = {{ .handler = NULL, .irq_line = NVIC_DMA_CH1 }, - { .handler = NULL, .irq_line = NVIC_DMA_CH2 }, - { .handler = NULL, .irq_line = NVIC_DMA_CH3 }, - { .handler = NULL, .irq_line = NVIC_DMA_CH4 }, - { .handler = NULL, .irq_line = NVIC_DMA_CH5 }, - { .handler = NULL, .irq_line = NVIC_DMA_CH6 }, - { .handler = NULL, .irq_line = NVIC_DMA_CH7 }}, -}; -/** STM32F3 DMA1 device */ -dma_dev *DMA1 = &dma1; - -static dma_dev dma2 = { - .regs = DMA2_BASE, - .clk_id = RCC_DMA2, - .handlers = {{ .handler = NULL, .irq_line = NVIC_DMA2_CH1 }, - { .handler = NULL, .irq_line = NVIC_DMA2_CH2 }, - { .handler = NULL, .irq_line = NVIC_DMA2_CH3 }, - { .handler = NULL, .irq_line = NVIC_DMA2_CH4 }, - { .handler = NULL, .irq_line = NVIC_DMA2_CH5 }}, -}; -/** STM32F3 DMA2 device */ -dma_dev *DMA2 = &dma2; - -/* - * Auxiliary routines - */ - -/* Can channel serve cfg->tube_req_src? */ -static int cfg_req_ok(dma_channel channel, dma_tube_config *cfg) { - return (cfg->tube_req_src & 0x7) == channel; -} - -/* Can dev serve cfg->tube_req_src? */ -static int cfg_dev_ok(dma_dev *dev, dma_tube_config *cfg) { - return (rcc_clk_id)(cfg->tube_req_src >> 3) == dev->clk_id; -} - -/* Is addr acceptable for use as DMA src/dst? */ -static int cfg_mem_ok(__IO void *addr) { - enum dma_atype atype = _dma_addr_type(addr); - return atype == DMA_ATYPE_MEM || atype == DMA_ATYPE_PER; -} - -/* Is the direction implied by src->dst supported? */ -static int cfg_dir_ok(dma_tube_config *cfg) { - /* We can't do peripheral->peripheral transfers. */ - return ((_dma_addr_type(cfg->tube_src) == DMA_ATYPE_MEM) || - (_dma_addr_type(cfg->tube_dst) == DMA_ATYPE_MEM)); -} - -static int preconfig_check(dma_dev *dev, dma_channel channel, - dma_tube_config *cfg) { - if (!cfg_req_ok(channel, cfg)) { - return -DMA_TUBE_CFG_EREQ; - } - if (cfg->tube_nr_xfers > 65535) { - return -DMA_TUBE_CFG_ENDATA; - } - if (!cfg_dev_ok(dev, cfg)) { - return -DMA_TUBE_CFG_EDEV; - } - if (!cfg_mem_ok(cfg->tube_src)) { - return -DMA_TUBE_CFG_ESRC; - } - if (!cfg_mem_ok(cfg->tube_dst)) { - return -DMA_TUBE_CFG_EDST; - } - if (!cfg_dir_ok(cfg)) { - return -DMA_TUBE_CFG_EDIR; - } - return DMA_TUBE_CFG_SUCCESS; -} - -static inline void set_ccr(dma_tube_reg_map *chregs, - dma_xfer_size msize, int minc, - dma_xfer_size psize, int pinc, - uint32 other_flags) { - chregs->CCR = ((msize << 10) | (psize << 8) | - (minc ? DMA_CCR_MINC : 0) | (pinc ? DMA_CCR_PINC : 0) | - other_flags); -} - -static inline uint32 cfg_ccr_flags(unsigned tube_flags) { - /* DMA_CFG_SRC_INC and DMA_CFG_DST_INC are special */ - return tube_flags & ~(DMA_CFG_SRC_INC | DMA_CFG_DST_INC); -} - -/* Configure chregs according to cfg, where cfg->tube_dst is peripheral. */ -static int config_to_per(dma_tube_reg_map *chregs, dma_tube_config *cfg) { - /* Check that ->tube_src is memory (if it's anything else, we - * shouldn't have been called). */ - ASSERT(_dma_addr_type(cfg->tube_src) == DMA_ATYPE_MEM); - - set_ccr(chregs, - cfg->tube_src_size, cfg->tube_flags & DMA_CFG_SRC_INC, - cfg->tube_dst_size, cfg->tube_flags & DMA_CFG_DST_INC, - (cfg_ccr_flags(cfg->tube_flags) | DMA_CCR_DIR_FROM_MEM)); - chregs->CNDTR = cfg->tube_nr_xfers; - chregs->CMAR = (uint32)cfg->tube_src; - chregs->CPAR = (uint32)cfg->tube_dst; - return DMA_TUBE_CFG_SUCCESS; -} - -/* Configure chregs according to cfg, where cfg->tube_dst is memory. */ -static int config_to_mem(dma_tube_reg_map *chregs, dma_tube_config *cfg) { - uint32 mem2mem; - - if ((_dma_addr_type(cfg->tube_src) == DMA_ATYPE_MEM) && - (cfg->tube_flags & DMA_CFG_CIRC)) { - /* Can't do mem-to-mem and circular mode */ - return -DMA_TUBE_CFG_ECFG; - } - - mem2mem = (_dma_addr_type(cfg->tube_src) == DMA_ATYPE_MEM ? - DMA_CCR_MEM2MEM : 0); - set_ccr(chregs, - cfg->tube_dst_size, cfg->tube_flags & DMA_CFG_DST_INC, - cfg->tube_src_size, cfg->tube_flags & DMA_CFG_SRC_INC, - (cfg_ccr_flags(cfg->tube_flags) | - DMA_CCR_DIR_FROM_PER | - mem2mem)); - chregs->CNDTR = cfg->tube_nr_xfers; - chregs->CMAR = (uint32)cfg->tube_dst; - chregs->CPAR = (uint32)cfg->tube_src; - return DMA_TUBE_CFG_SUCCESS; -} - -/* - * Routines - */ - -int dma_tube_cfg(dma_dev *dev, dma_channel channel, dma_tube_config *cfg) { - dma_tube_reg_map *chregs; - int ret = preconfig_check(dev, channel, cfg); - - if (ret < 0) { - return ret; - } - - dma_disable(dev, channel); /* Must disable before reconfiguring */ - dma_clear_isr_bits(dev, channel); /* For sanity and consistency - * with STM32F2. */ - - chregs = dma_tube_regs(dev, channel); - switch (_dma_addr_type(cfg->tube_dst)) { - case DMA_ATYPE_PER: - ret = config_to_per(chregs, cfg); - break; - case DMA_ATYPE_MEM: - ret = config_to_mem(chregs, cfg); - break; - default: - /* Can't happen */ - ASSERT(0); - return -DMA_TUBE_CFG_ECFG; - } - if (ret < 0) { - return ret; - } - chregs->CNDTR = cfg->tube_nr_xfers; - return DMA_TUBE_CFG_SUCCESS; -} - -void dma_set_priority(dma_dev *dev, - dma_channel channel, - dma_priority priority) { - dma_channel_reg_map *channel_regs; - uint32 ccr; - - ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); - - channel_regs = dma_channel_regs(dev, channel); - ccr = channel_regs->CCR; - ccr &= ~DMA_CCR_PL; - ccr |= (priority << 12); - channel_regs->CCR = ccr; -} - -void dma_set_num_transfers(dma_dev *dev, - dma_channel channel, - uint16 num_transfers) { - dma_channel_reg_map *channel_regs; - - ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); - - channel_regs = dma_channel_regs(dev, channel); - channel_regs->CNDTR = num_transfers; -} - -void dma_attach_interrupt(dma_dev *dev, dma_channel channel, - void (*handler)(void)) { - DMA_GET_HANDLER(dev, channel) = handler; - nvic_irq_enable(dev->handlers[channel - 1].irq_line); -} - -void dma_detach_interrupt(dma_dev *dev, dma_channel channel) { - /* Don't use nvic_irq_disable()! Think about DMA2 channels 4 and 5. */ - dma_channel_regs(dev, channel)->CCR &= ~0xF; - DMA_GET_HANDLER(dev, channel) = NULL; -} - -void dma_enable(dma_dev *dev, dma_channel channel) { - dma_channel_reg_map *chan_regs = dma_channel_regs(dev, channel); - bb_peri_set_bit(&chan_regs->CCR, DMA_CCR_EN_BIT, 1); -} - -void dma_disable(dma_dev *dev, dma_channel channel) { - dma_channel_reg_map *chan_regs = dma_channel_regs(dev, channel); - bb_peri_set_bit(&chan_regs->CCR, DMA_CCR_EN_BIT, 0); -} - -dma_irq_cause dma_get_irq_cause(dma_dev *dev, dma_channel channel) { - /* Grab and clear the ISR bits. */ - uint8 status_bits = dma_get_isr_bits(dev, channel); - dma_clear_isr_bits(dev, channel); - - /* If the channel global interrupt flag is cleared, then - * something's very wrong. */ - ASSERT(status_bits & 0x1); - /* If GIF is set, then some other flag should be set, barring - * something unexpected (e.g. the user making an unforeseen IFCR - * write). */ - ASSERT(status_bits != 0x1); - - /* ISR flags get set even if the corresponding interrupt enable - * bits in the channel's configuration register are cleared, so we - * can't use a switch here. - * - * Don't change the order of these if statements. */ - if (status_bits & 0x8) { - return DMA_TRANSFER_ERROR; - } else if (status_bits & 0x2) { - return DMA_TRANSFER_COMPLETE; - } else if (status_bits & 0x4) { - return DMA_TRANSFER_HALF_COMPLETE; - } - - /* If we get here, one of our assumptions has been violated, but - * the debug level is too low for the above ASSERTs() to have had - * any effect. In order to fail fast, mimic the DMA controller's - * behavior when an error occurs. */ - dma_disable(dev, channel); - return DMA_TRANSFER_ERROR; -} - -void dma_set_mem_addr(dma_dev *dev, dma_channel channel, __IO void *addr) { - dma_channel_reg_map *chan_regs; - - ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); - - chan_regs = dma_channel_regs(dev, channel); - chan_regs->CMAR = (uint32)addr; -} - -void dma_set_per_addr(dma_dev *dev, dma_channel channel, __IO void *addr) { - dma_channel_reg_map *chan_regs; - - ASSERT_FAULT(!dma_is_channel_enabled(dev, channel)); - - chan_regs = dma_channel_regs(dev, channel); - chan_regs->CPAR = (uint32)addr; -} - -/* - * IRQ handlers - */ - -void __irq_dma1_ch1(void) { - dma_irq_handler(DMA1, DMA_CH1); -} - -void __irq_dma1_ch2(void) { - dma_irq_handler(DMA1, DMA_CH2); -} - -void __irq_dma1_ch3(void) { - dma_irq_handler(DMA1, DMA_CH3); -} - -void __irq_dma1_ch4(void) { - dma_irq_handler(DMA1, DMA_CH4); -} - -void __irq_dma1_ch5(void) { - dma_irq_handler(DMA1, DMA_CH5); -} - -void __irq_dma1_ch6(void) { - dma_irq_handler(DMA1, DMA_CH6); -} - -void __irq_dma1_ch7(void) { - dma_irq_handler(DMA1, DMA_CH7); -} - -void __irq_dma2_ch1(void) { - dma_irq_handler(DMA2, DMA_CH1); -} - -void __irq_dma2_ch2(void) { - dma_irq_handler(DMA2, DMA_CH2); -} - -void __irq_dma2_ch3(void) { - dma_irq_handler(DMA2, DMA_CH3); -} - -void __irq_dma2_ch4(void) { - dma_irq_handler(DMA2, DMA_CH4); -} - -void __irq_dma2_ch5(void) { - dma_irq_handler(DMA2, DMA_CH5); -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_exti.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_exti.c deleted file mode 100644 index 44f0057f4..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_exti.c +++ /dev/null @@ -1,40 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/stm32f3/exti.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 EXTI. - */ - -#include -#include -#include "exti_private.h" - -void exti_select(exti_num num, exti_cfg cfg) { - exti_do_select(&SYSCFG_BASE->EXTICR[num / 4], num, cfg); -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_fpu.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_fpu.c deleted file mode 100644 index 7ea5277dc..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_fpu.c +++ /dev/null @@ -1,57 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/fpu.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 FPU. - */ - -#include - -void fpu_enable(void) { - /* - * set coprocessor access control registers - */ - asm("\tLDR.W R0, =0xE000ED88\n" - "\tLDR R1, [R0]\n" - "\tORR R1, R1, #(0xF << 20)\n" - "\tSTR R1, [R0]\n" - "\tDSB\n" - "\tISB"); -} - -void fpu_disable(void) { - /* - * clear coprocessor access control registers - */ - asm("\tLDR.W R0, =0xE000ED88\n" - "\tLDR R1, [R0]\n" - "\tORR R1, R1, #(0x0 << 20)\n" - "\tSTR R1, [R0]\n" - "\tDSB\n" - "\tISB"); -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c deleted file mode 100644 index 7ca982a9f..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_gpio.c +++ /dev/null @@ -1,169 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/gpio.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 GPIO. - */ - -#include -#include -#include - -/* - * GPIO devices - */ - -gpio_dev gpioa = { - .regs = GPIOA_BASE, - .clk_id = RCC_GPIOA, - .exti_port = EXTI_PA, -}; -/** GPIO port A device. */ -gpio_dev* const GPIOA = &gpioa; - -gpio_dev gpiob = { - .regs = GPIOB_BASE, - .clk_id = RCC_GPIOB, - .exti_port = EXTI_PB, -}; -/** GPIO port B device. */ -gpio_dev* const GPIOB = &gpiob; - -gpio_dev gpioc = { - .regs = GPIOC_BASE, - .clk_id = RCC_GPIOC, - .exti_port = EXTI_PC, -}; -/** GPIO port C device. */ -gpio_dev* const GPIOC = &gpioc; - -gpio_dev gpiod = { - .regs = GPIOD_BASE, - .clk_id = RCC_GPIOD, - .exti_port = EXTI_PD, -}; -/** GPIO port D device. */ -gpio_dev* const GPIOD = &gpiod; - -gpio_dev gpioe = { - .regs = GPIOE_BASE, - .clk_id = RCC_GPIOE, - .exti_port = EXTI_PE, -}; -/** GPIO port E device. */ -gpio_dev* const GPIOE = &gpioe; - -gpio_dev gpiof = { - .regs = GPIOF_BASE, - .clk_id = RCC_GPIOF, - .exti_port = EXTI_PF, -}; -/** GPIO port F device. */ -gpio_dev* const GPIOF = &gpiof; - -/* - * GPIO routines - */ - -/** - * Initialize and reset all available GPIO devices. - */ -void gpio_init_all(void) { - gpio_init(GPIOA); - gpio_init(GPIOB); - gpio_init(GPIOC); - gpio_init(GPIOD); - gpio_init(GPIOE); - gpio_init(GPIOF); -} - -/** - * @brief Set the mode of a GPIO pin. - * @param dev GPIO device. - * @param bit Bit on dev whose mode to set, 0--15. - * @param mode Mode to set the pin to. - * @param flags Flags to modify basic mode configuration - */ -void gpio_set_modef(gpio_dev *dev, - uint8 bit, - gpio_pin_mode mode, - unsigned flags) { - gpio_reg_map *regs = dev->regs; - unsigned shift = bit * 2; - uint32 tmp; - - /* Mode */ - tmp = regs->MODER; - tmp &= ~(0x3 << shift); - tmp |= mode << shift; - regs->MODER = tmp; - - /* Output type */ - bb_peri_set_bit(®s->OTYPER, bit, flags & 0x1); - - /* Speed */ - tmp = regs->OSPEEDR; - tmp &= ~(0x3 << shift); - tmp |= ((flags >> 1) & 0x3) << shift; - regs->OSPEEDR = tmp; - - /* Pull-up/pull-down */ - tmp = regs->PUPDR; - tmp &= ~(0x3 << shift); - tmp |= ((flags >> 3) & 0x3) << shift; - regs->PUPDR = tmp; -} - -/** - * @brief Set a pin's alternate function. - * - * The pin must have its mode set to GPIO_MODE_AF for this to take - * effect. - * - * @param dev Device whose pin to configure. - * @param bit Pin whose alternate function to set. - * @param af Alternate function to use for pin. - * @see gpio_set_modef() - */ -void gpio_set_af(gpio_dev *dev, uint8 bit, gpio_af af) { - __IO uint32 *afr; - unsigned shift; - uint32 tmp; - if (bit >= 8) { - afr = &dev->regs->AFRH; - shift = 4 * (bit - 8); - } else{ - afr = &dev->regs->AFRL; - shift = 4 * bit; - } - tmp = *afr; - tmp &= ~(0xF << shift); - tmp |= (af << shift); - *afr = tmp; -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_i2c.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_i2c.c deleted file mode 100644 index 241298734..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_i2c.c +++ /dev/null @@ -1,319 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/i2c.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 I2C support - */ - -#include "i2c_private.h" -#include -#include - -/* - * Devices - */ - -/* on GPIO_AF_4 (PA14,PA15) (PB7,PB6) (PB9,PB8)*/ -static i2c_dev i2c1 = I2C_DEV_OLD(1, &gpiob, 7, 6); -/** STM32F3 I2C device 1 */ -i2c_dev* const I2C1 = &i2c1; - -/* on GPIO_AF_4 (PA10,PA9) (PF0,PF1) (PF0,PF6)*/ -static i2c_dev i2c2 = I2C_DEV_OLD(2, &gpioa, 10, 9); -/** STM32F3 I2C device 2 */ -i2c_dev* const I2C2 = &i2c2; - -/* - * Routines - */ - -void i2c_config_gpios(const i2c_dev *dev) { - gpio_set_modef(sda_port(dev), dev->sda_pin, GPIO_MODE_AF, GPIO_MODEF_TYPE_OD); - gpio_set_modef(scl_port(dev), dev->scl_pin, GPIO_MODE_AF, GPIO_MODEF_TYPE_OD); - - gpio_set_af(sda_port(dev), dev->sda_pin, GPIO_AF_4); - gpio_set_af(scl_port(dev), dev->scl_pin, GPIO_AF_4); -} - -void i2c_master_release_bus(const i2c_dev *dev) { - gpio_write_bit(scl_port(dev), dev->scl_pin, 1); /* TODO check this */ - gpio_write_bit(sda_port(dev), dev->sda_pin, 1); - - i2c_config_gpios(dev); -} - -int32 wait_for_state_change(i2c_dev *dev, - i2c_state state, - uint32 timeout) { - //FIXME not yet used on F3 - return 1; -} - -void i2c_bus_reset(const i2c_dev *dev) { - //FIXME not yet used on F3 -} - -void _i2c_software_reset(i2c_dev *dev) { - dev->regs->CR1 &= ~I2C_CR1_PE; - while(dev->regs->CR1 & I2C_CR1_PE) - ; - dev->regs->CR1 |= I2C_CR1_PE; -} - -void i2c_master_enable(i2c_dev *dev, uint32 flags) { - /* Bring the peripheral down for configuration */ - i2c_peripheral_disable(dev); - - /* Reset the bus when requested so */ - if (flags & I2C_BUS_RESET) - i2c_bus_reset(dev); - - /* Turn on the clock and set GPIO modes */ - i2c_init(dev); - i2c_config_gpios(dev); - - /* Configure analog and digital filters */ - /* TODO ANFOFF, DNF */ - - /* Configure the clock and rise time */ - dev->regs->TIMINGR = I2C_TIMING_10_kHz; - - /* Configure NOSTRETCH behaviour */ - /* TODO NOSTRETCH */ - - /* Enable all interrupts */ /* FIXME not yet used on F3 */ - //nvic_irq_enable(dev->ev_nvic_line); - //nvic_irq_enable(dev->er_nvic_line); - //i2c_enable_irq(dev, 0xFE); /* All interrupts */ - - /* Make it go! */ - i2c_peripheral_enable(dev); - - dev->state = I2C_STATE_IDLE; -} - -static void _i2c_master_xmit(i2c_dev *dev, i2c_msg *msg) { - uint32 cr2; - uint32 isr; - uint16 remaining = msg->length; - msg->xferred = 0; - uint8 *ptr = msg->data; /* pointer to data buffer */ - - while (remaining > 0) { - uint32 reload = remaining > 0xFF ? I2C_CR2_RELOAD : 0U; - uint16 size = remaining >= 0xFF ? 0xFF : remaining & 0xFF; - uint32 nbytes = size << I2C_CR2_NBYTES_SHIFT; - - cr2 = dev->regs->CR2; - cr2 &= ~(I2C_CR2_RELOAD | I2C_CR2_NBYTES | I2C_CR2_RD_WRN); - cr2 |= reload | nbytes; - dev->regs->CR2 = cr2; - - if (msg->xferred == 0) /* first loop iteration? */ - dev->regs->CR2 |= I2C_CR2_START; /* generate START condition */ - - while (ptr < msg->data + msg->xferred + size) { - while ( !( (isr = dev->regs->ISR) & (I2C_ISR_NACKF | I2C_ISR_TXIS) ) ) - ; /* wait until ready for the next byte or NACK*/ - - if (isr & I2C_ISR_TXIS) - dev->regs->TXDR = *ptr++; /* byte to send */ - else { /* NACKF */ - dev->regs->ICR |= I2C_ICR_NACKCF; /* clear NACK flag */ - dev->regs->CR2 |= I2C_CR2_STOP; /* generate STOP condition */ - return; /* STOP condition is automatically generated */ - } - } - - if (reload) - while ( !(dev->regs->ISR & I2C_ISR_TCR) ) - ; /* wait for transmission reload complete */ - - remaining -= size; - msg->xferred += size; - } - - while ( !(dev->regs->ISR & I2C_ISR_TC) ) - ; /* wait for transmission complete */ - - dev->regs->CR2 |= I2C_CR2_STOP; /* generate STOP condition */ - - while ( !(dev->regs->ISR & I2C_ISR_STOPF) ) - ; /* wait for STOP flag */ - - dev->regs->ICR |= I2C_ICR_STOPCF; /* clear STOP flag */ -} - -static void _i2c_master_recv(i2c_dev *dev, i2c_msg *msg) { - uint32 cr2; - uint16 remaining = msg->length; - msg->xferred = 0; - uint8 *ptr = msg->data; /* pointer to data buffer */ - - while (remaining > 0) { - uint32 reload = remaining > 0xFF ? I2C_CR2_RELOAD : 0U; - uint16 size = remaining >= 0xFF ? 0xFF : remaining & 0xFF; - uint32 nbytes = size << I2C_CR2_NBYTES_SHIFT; - - cr2 = dev->regs->CR2; - cr2 &= ~(I2C_CR2_RELOAD | I2C_CR2_NBYTES | I2C_CR2_RD_WRN); - cr2 |= reload | nbytes | I2C_CR2_RD_WRN; - dev->regs->CR2 = cr2; - - if (msg->xferred == 0) /* first loop iteration? */ - dev->regs->CR2 |= I2C_CR2_START; /* generate START condition */ - - while (ptr < msg->data + msg->xferred + size) { - while ( !(dev->regs->ISR & I2C_ISR_RXNE) ) - ; /* wait for next byte */ - - *ptr++ = dev->regs->RXDR & I2C_RXDR_RXDATA; /* read byte */ - } - - if (reload) - while ( !(dev->regs->ISR & I2C_ISR_TCR) ) - ; /* wait for transmission reload complete */ - - remaining -= size; - msg->xferred += size; - } - - while ( !(dev->regs->ISR & I2C_ISR_TC)) - ; /* wait for transmission complete */ - - dev->regs->CR2 |= I2C_CR2_STOP; /* generate STOP condition */ - - while ( !(dev->regs->ISR & I2C_ISR_STOPF) ) - ; /* wait for STOP flag */ - - dev->regs->ICR |= I2C_ICR_STOPCF; /* clear STOP flag */ -} - -int32 i2c_master_xfer(i2c_dev *dev, - i2c_msg *msgs, - uint16 num, - uint32 timeout) { - i2c_msg *msg; - - ASSERT(dev->state == I2C_STATE_IDLE); - - dev->msg = msgs; - dev->msgs_left = num; - dev->timestamp = systick_uptime(); /* FIXME implement handling of timeout */ - dev->state = I2C_STATE_BUSY; - - /* loop over messages */ - for (msg = dev->msg; dev->msgs_left; dev->msgs_left--, msg++) { - /* set slave address and direction*/ - uint32 addr = msg->flags & I2C_MSG_10BIT_ADDR - ? I2C_CR2_ADD10 | (msg->addr << I2C_CR2_SADD_10_BIT_SHIFT) - : msg->addr << I2C_CR2_SADD_7_BIT_SHIFT; - uint32 rd = msg->flags & I2C_MSG_READ ? I2C_CR2_RD_WRN : 0U; - uint32 cr2 = dev->regs->CR2; - cr2 &= ~(I2C_CR2_HEAD10R | I2C_CR2_ADD10 | I2C_CR2_SADD_10_BIT | I2C_CR2_RD_WRN); - cr2 |= rd | addr; - dev->regs->CR2 = cr2; - - if (rd) - _i2c_master_recv(dev, msg); - else - _i2c_master_xmit(dev, msg); - } - - dev->state = I2C_STATE_IDLE; - - return 0; /* FIXME implement error handling*/ -} - -void i2c_start_condition(i2c_dev *dev) { - dev->regs->CR2 |= I2C_CR2_START; /* generate START condition */ -} - -void i2c_stop_condition(i2c_dev *dev) { - dev->regs->CR2 |= I2C_CR2_STOP; /* generate STOP condition */ - - while ( !(dev->regs->ISR & I2C_ISR_STOPF) ) - ; /* wait for STOP flag */ - - dev->regs->ICR |= I2C_ICR_STOPCF; /* clear STOP flag */ -} - -void i2c_enable_irq(i2c_dev *dev, uint32 irqs) { - dev->regs->CR1 |= irqs; -} - -void i2c_disable_irq(i2c_dev *dev, uint32 irqs) { - dev->regs->CR1 &= ~irqs; -} - -/* ACK/NACK */ -void i2c_enable_ack(i2c_dev *dev) { - //FIXME nonexistant on F3 -} - -void i2c_disable_ack(i2c_dev *dev) { - //FIXME nonexistant on F3 -} - -void i2c_write(i2c_dev *dev, uint8 byte) { - //FIXME proper handling of ISR - dev->regs->TXDR = byte; -} - -uint8 i2c_read(i2c_dev *dev) { - //FIXME proper handling of ISR - return dev->regs->RXDR & I2C_RXDR_RXDATA; -} - -void _i2c_irq_handler(i2c_dev *dev) { - //FIXME not yet used on F3 -} - -void _i2c_irq_error_handler(i2c_dev *dev) { - //FIXME not yet used on F3 -} - -/* - * IRQ handlers - */ - -void __irq_i2c1_ev(void) { - _i2c_irq_handler(I2C1); -} - -void __irq_i2c2_ev(void) { - _i2c_irq_handler(I2C2); -} - -void __irq_i2c1_er(void) { - _i2c_irq_error_handler(I2C1); -} - -void __irq_i2c2_er(void) { - _i2c_irq_error_handler(I2C2); -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_opamp.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_opamp.c deleted file mode 100644 index c6ec0d5cb..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_opamp.c +++ /dev/null @@ -1,46 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/opamp.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 OpAmp support. - */ - -#include - -/* - * Devices - */ - -static opamp_dev opamp1 = { .regs = OPAMP1_BASE }; const opamp_dev *OPAMP1 = &opamp1; -static opamp_dev opamp2 = { .regs = OPAMP2_BASE }; const opamp_dev *OPAMP2 = &opamp2; -static opamp_dev opamp3 = { .regs = OPAMP3_BASE }; const opamp_dev *OPAMP3 = &opamp3; -static opamp_dev opamp4 = { .regs = OPAMP4_BASE }; const opamp_dev *OPAMP4 = &opamp4; - -/* TODO - * actually implement me ;-) - */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c deleted file mode 100644 index 5ebe2ad34..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_rcc.c +++ /dev/null @@ -1,149 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/rcc.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 RCC. - */ - -#include -#include -#include - -#include "rcc_private.h" - -#define APB1 RCC_APB1 -#define APB2 RCC_APB2 -#define AHB RCC_AHB - -/* Device descriptor table, maps rcc_clk_id onto bus and enable/reset - * register bit numbers. */ -const struct rcc_dev_info rcc_dev_table[] = { - [RCC_GPIOA] = { .clk_domain = AHB, .line_num = RCC_AHBENR_IOPAEN_BIT }, - [RCC_GPIOB] = { .clk_domain = AHB, .line_num = RCC_AHBENR_IOPBEN_BIT }, - [RCC_GPIOC] = { .clk_domain = AHB, .line_num = RCC_AHBENR_IOPCEN_BIT }, - [RCC_GPIOD] = { .clk_domain = AHB, .line_num = RCC_AHBENR_IOPDEN_BIT }, - [RCC_GPIOE] = { .clk_domain = AHB, .line_num = RCC_AHBENR_IOPEEN_BIT }, - [RCC_GPIOF] = { .clk_domain = AHB, .line_num = RCC_AHBENR_IOPFEN_BIT }, - - [RCC_ADC12] = { .clk_domain = AHB, .line_num = RCC_AHBENR_ADC12EN_BIT}, -#if STM32_F3_LINE == STM32_F3_LINE_303 - [RCC_ADC34] = { .clk_domain = AHB, .line_num = RCC_AHBENR_ADC34EN_BIT }, -#endif - - [RCC_DAC] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_DACEN_BIT }, - - [RCC_DMA1] = { .clk_domain = AHB, .line_num = RCC_AHBENR_DMA1EN_BIT }, - [RCC_DMA2] = { .clk_domain = AHB, .line_num = RCC_AHBENR_DMA2EN_BIT }, - - [RCC_I2C1] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_I2C1EN_BIT }, - [RCC_I2C2] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_I2C2EN_BIT }, - - [RCC_SPI1] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_SPI1EN_BIT }, - [RCC_SPI2] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_SPI2EN_BIT }, - [RCC_SPI3] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_SPI3EN_BIT }, - - [RCC_USART1] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_USART1EN_BIT }, - [RCC_USART2] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_USART2EN_BIT }, - [RCC_USART3] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_USART3EN_BIT }, -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) - [RCC_UART4] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_UART4EN_BIT }, - [RCC_UART5] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_UART5EN_BIT }, -#endif - - [RCC_TIMER1] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_TIM1EN_BIT }, - [RCC_TIMER2] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_TIM2EN_BIT }, - [RCC_TIMER3] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_TIM3EN_BIT }, - [RCC_TIMER4] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_TIM4EN_BIT }, - [RCC_TIMER6] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_TIM6EN_BIT }, -#if STM32_F3_LINE == STM32_F3_LINE_303 - [RCC_TIMER7] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_TIM7EN_BIT }, - [RCC_TIMER8] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_TIM8EN_BIT }, -#endif - [RCC_TIMER15] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_TIM15EN_BIT }, - [RCC_TIMER16] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_TIM16EN_BIT }, - [RCC_TIMER17] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_TIM17EN_BIT }, - - [RCC_SYSCFG] = { .clk_domain = APB2, .line_num = RCC_APB2ENR_SYSCFGEN_BIT }, - [RCC_PWR] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_PWREN_BIT }, - [RCC_CRC] = { .clk_domain = AHB, .line_num = RCC_AHBENR_CRCEN_BIT }, - [RCC_FLITF] = { .clk_domain = AHB, .line_num = RCC_AHBENR_FLITFEN_BIT }, - [RCC_SRAM] = { .clk_domain = AHB, .line_num = RCC_AHBENR_SRAMEN_BIT }, - [RCC_USB] = { .clk_domain = APB1, .line_num = RCC_APB1ENR_USBEN_BIT }, -}; - -/* pll_cfg->data must point to a valid struct stm32f3_rcc_pll_data. */ -void rcc_configure_pll(rcc_pll_cfg *pll_cfg) { - stm32f3_rcc_pll_data *data = pll_cfg->data; - rcc_pll_multiplier pll_mul = data->pll_mul; - rcc_prediv_divider pclk_prediv = data->pclk_prediv; //TODO use this!!! - uint32 cfgr; - uint32 cfgr2; - - /* Check that the PLL is disabled. */ - ASSERT_FAULT(!rcc_is_clk_on(RCC_CLK_PLL)); - - cfgr2 = RCC_BASE->CFGR2; - cfgr2 &= ~(RCC_CFGR2_PREDIV); - cfgr2 |= pclk_prediv; - RCC_BASE->CFGR2 = cfgr2; - - cfgr = RCC_BASE->CFGR; - cfgr &= ~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMUL); - cfgr |= pll_cfg->pllsrc | pll_mul; - RCC_BASE->CFGR = cfgr; -} - -void rcc_clk_enable(rcc_clk_id id) { - static __IO uint32* enable_regs[] = { - [APB1] = &RCC_BASE->APB1ENR, - [APB2] = &RCC_BASE->APB2ENR, - [AHB] = &RCC_BASE->AHBENR, - }; - rcc_do_clk_enable(enable_regs, id); -} - -void rcc_reset_dev(rcc_clk_id id) { - static __IO uint32* reset_regs[] = { - [APB1] = &RCC_BASE->APB1RSTR, - [APB2] = &RCC_BASE->APB2RSTR, - [AHB] = &RCC_BASE->AHBRSTR, - }; - rcc_do_reset_dev(reset_regs, id); -} - -void rcc_set_prescaler(rcc_prescaler prescaler, uint32 divider) { - static const uint32 masks[] = { - [RCC_PRESCALER_AHB] = RCC_CFGR_HPRE, - [RCC_PRESCALER_APB1] = RCC_CFGR_PPRE1, - [RCC_PRESCALER_APB2] = RCC_CFGR_PPRE2, - [RCC_PRESCALER_USB] = RCC_CFGR_USBPRE, - }; - rcc_do_set_prescaler(masks, prescaler, divider); -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c deleted file mode 100644 index d5c38a0a9..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_spi.c +++ /dev/null @@ -1,143 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/spi.c - * @author Marti Bolivar , - * F3-port by Hanspeter Portner - * @brief STM32F3 SPI/I2S. - */ - -#include -#include -#include "spi_private.h" - -/* - * Devices - */ - -static spi_dev spi1 = SPI_DEV(1); -static spi_dev spi2 = SPI_DEV(2); -static spi_dev spi3 = SPI_DEV(3); - -spi_dev *SPI1 = &spi1; -spi_dev *SPI2 = &spi2; -spi_dev *SPI3 = &spi3; - -/* - * Routines - */ - -void spi_config_gpios(spi_dev *dev, - uint8 as_master, - gpio_dev *nss_dev, - uint8 nss_bit, - gpio_dev *comm_dev, - uint8 sck_bit, - uint8 miso_bit, - uint8 mosi_bit) { - gpio_set_modef(nss_dev, nss_bit, GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(comm_dev, sck_bit, GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(comm_dev, miso_bit, GPIO_MODE_AF, GPIO_MODEF_PUPD_NONE); - gpio_set_modef(comm_dev, mosi_bit, GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - - if ( (dev == SPI1) || (dev == SPI2) ) - { - gpio_set_af(nss_dev, nss_bit, GPIO_AF_5); - gpio_set_af(comm_dev, sck_bit, GPIO_AF_5); - gpio_set_af(comm_dev, miso_bit, GPIO_AF_5); - gpio_set_af(comm_dev, mosi_bit, GPIO_AF_5); - } - else if (dev == SPI3) - { - gpio_set_af(nss_dev, nss_bit, GPIO_AF_6); - gpio_set_af(comm_dev, sck_bit, GPIO_AF_6); - gpio_set_af(comm_dev, miso_bit, GPIO_AF_6); - gpio_set_af(comm_dev, mosi_bit, GPIO_AF_6); - } -} - -void spi_foreach(void (*fn)(spi_dev*)) { - fn(SPI1); - fn(SPI2); - fn(SPI3); -} - -void spi_data_size(struct spi_dev *dev, spi_ds ds) { - uint8 byte_frame = ds <= SPI_DATA_SIZE_8_BIT; - uint32 cr2 = dev->regs->CR2; - cr2 &= ~(SPI_CR2_DS | SPI_CR2_FRXTH); - cr2 |= ds; - if (byte_frame) - cr2 |= SPI_CR2_FRXTH; - dev->regs->CR2 = cr2; -} - -/* - * SPI auxiliary routines - */ -void spi_reconfigure(spi_dev *dev, uint32 cr1_config) { - spi_irq_disable(dev, SPI_INTERRUPTS_ALL); - spi_peripheral_disable(dev); - - uint8 byte_frame = (dev->regs->CR2 & SPI_CR2_DS) <= SPI_DATA_SIZE_8_BIT; - uint32 cr2 = dev->regs->CR2; - cr2 &= ~SPI_CR2_FRXTH; - if (byte_frame) - cr2 |= SPI_CR2_FRXTH; - dev->regs->CR2 = cr2; - - dev->regs->CR1 = cr1_config; - spi_peripheral_enable(dev); -} - -uint16 spi_rx_reg(spi_dev *dev) { - uint8 byte_frame = (dev->regs->CR2 & SPI_CR2_DS) <= SPI_DATA_SIZE_8_BIT; - if (byte_frame) { - __IO uint8 *dr8 = (__IO uint8 *)&dev->regs->DR; /* we need to access as byte */ - return (uint16)*dr8; - } else { - __IO uint16 *dr16 = (__IO uint16 *)&dev->regs->DR; /* we need to access as half-word */ - return (uint16)*dr16; - } -} - -uint32 spi_tx(spi_dev *dev, const void *buf, uint32 len) { - uint32 txed = 0; - uint8 byte_frame = (dev->regs->CR2 & SPI_CR2_DS) <= SPI_DATA_SIZE_8_BIT; - while (spi_is_tx_empty(dev) && (txed < len)) { - if (byte_frame) { - __IO uint8 *dr8 = (__IO uint8 *)&dev->regs->DR; /* we need to access as byte */ - *dr8 = ((const uint8 *)buf)[txed++]; - } else { - __IO uint16 *dr16 = (__IO uint16 *)&dev->regs->DR; /* we need to access as half-word */ - *dr16 = ((const uint16 *)buf)[txed++]; - } - } - return txed; -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_syscfg.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_syscfg.c deleted file mode 100644 index 9421b2dcb..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_syscfg.c +++ /dev/null @@ -1,43 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/syscfg.c - * @author F3-port by Hanspeter Portner - * @brief SYSCFG routines. - */ - -#include -#include -#include - -void syscfg_set_mem_mode(syscfg_mem_mode mode) { - uint32 memrmp = SYSCFG_BASE->CFGR1; - memrmp &= ~SYSCFG_CFGR1_MEM_MODE; - memrmp |= (uint32)mode; - SYSCFG_BASE->CFGR1 = memrmp; -} diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_timer.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_timer.c deleted file mode 100644 index 08b906323..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_timer.c +++ /dev/null @@ -1,147 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/timer.c - * @author Marti Bolivar , - * F3-port by Hanspeter Portner - * @brief STM32F3 timer. - */ - -#include -#include -#include -#include "timer_private.h" - -/** - * @brief Get the GPIO alternate function corresponding to a timer. - * - * For example, if dev is TIMER1, this function returns - * GPIO_AF_TIM_1_2. This is useful for e.g. using gpio_set_af() to set - * a pin's alternate function to a timer. - * - * @param dev Timer device, must not be TIMER6 or TIMER7. - * @return gpio_af corresponding to dev - * @see gpio_set_af - * @see gpio_af - */ - /* FIXME this has to be inline with the PIN_MAP, but some timers are accessible on different alternate function lanes based on the used pin... */ -gpio_af timer_get_af(timer_dev *dev) { - rcc_clk_id clk_id = dev->clk_id; - /* Timers 6 and 7 don't have any capture/compare, so they can't do - * PWM (and in fact have no AF values). */ - ASSERT(clk_id != RCC_TIMER6 && clk_id != RCC_TIMER7); - switch(dev->clk_id) { - case RCC_TIMER1: - return GPIO_AF_6; - case RCC_TIMER2: // fall-through - case RCC_TIMER3: // fall-through - case RCC_TIMER4: - return GPIO_AF_2; - case RCC_TIMER8: - return GPIO_AF_4; - case RCC_TIMER15: - return GPIO_AF_3; - case RCC_TIMER16: // fall-through - case RCC_TIMER17: - return GPIO_AF_1; - default: - ASSERT(0); // Can't happen - return (gpio_af)-1; - } -} - -/* - * IRQ handlers - * - * Defer to the timer_private dispatch API. - * - * FIXME: The names of these handlers are inaccurate since XL-density - * devices came out. Update these to match the STM32F3 names, maybe - * using some weak symbol magic to preserve backwards compatibility if - * possible. Once that's done, we can just move the IRQ handlers into - * the top-level libmaple/timer.c, and there will be no need for this - * file. - */ - -void __irq_tim1_brk_tim15(void) { - dispatch_adv_brk(TIMER1); - dispatch_tim_9_12(TIMER15); -} - -void __irq_tim1_up_tim16(void) { - dispatch_adv_up(TIMER1); - dispatch_tim_10_11_13_14(TIMER16); -} - -void __irq_tim1_trg_com_tim17(void) { - dispatch_adv_trg_com(TIMER1); - dispatch_tim_10_11_13_14(TIMER17); -} - -void __irq_tim1_cc(void) { - dispatch_adv_cc(TIMER1); -} - -void __irq_tim2(void) { - dispatch_general(TIMER2); -} - -void __irq_tim3(void) { - dispatch_general(TIMER3); -} - -void __irq_tim4(void) { - dispatch_general(TIMER4); -} - -void __irq_tim6_dacunder(void) { - dispatch_basic(TIMER6); - /* FIXME handle DAC12 underrun */ -} - -#if STM32_F3_LINE == STM32_F3_LINE_303 -void __irq_tim7(void) { - dispatch_basic(TIMER7); -} - -void __irq_tim8_brk(void) { - dispatch_adv_brk(TIMER8); -} - -void __irq_tim8_up(void) { - dispatch_adv_up(TIMER8); -} - -void __irq_tim8_trg_com(void) { - dispatch_adv_trg_com(TIMER8); -} - -void __irq_tim8_cc(void) { - dispatch_adv_cc(TIMER8); -} -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/f3_usart.c b/STM32F3/cores/maple/libmaple/stm32f3/f3_usart.c deleted file mode 100644 index 4d466b338..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/f3_usart.c +++ /dev/null @@ -1,210 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/usart.c - * @author F3-port by Hanspeter Portner - * @brief STM32F3 USART. - */ - -#include -#include -#include -#include "usart_private.h" - -/* - * Devices - */ - -static ring_buffer usart1_rb; -static usart_dev usart1 = { - .regs = USART1_BASE, - .rb = &usart1_rb, - .max_baud = 4500000UL, - .clk_id = RCC_USART1, - .irq_num = NVIC_USART1, -}; -/** USART1 device */ -usart_dev *USART1 = &usart1; - -static ring_buffer usart2_rb; -static usart_dev usart2 = { - .regs = USART2_BASE, - .rb = &usart2_rb, - .max_baud = 2250000UL, - .clk_id = RCC_USART2, - .irq_num = NVIC_USART2, -}; -/** USART2 device */ -usart_dev *USART2 = &usart2; - -static ring_buffer usart3_rb; -static usart_dev usart3 = { - .regs = USART3_BASE, - .rb = &usart3_rb, - .max_baud = 2250000UL, - .clk_id = RCC_USART3, - .irq_num = NVIC_USART3, -}; -/** USART3 device */ -usart_dev *USART3 = &usart3; - -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) -static ring_buffer uart4_rb; -static usart_dev uart4 = { - .regs = UART4_BASE, - .rb = &uart4_rb, - .max_baud = 2250000UL, - .clk_id = RCC_UART4, - .irq_num = NVIC_UART4, -}; -/** UART4 device */ -usart_dev *UART4 = &uart4; - -static ring_buffer uart5_rb; -static usart_dev uart5 = { - .regs = UART5_BASE, - .rb = &uart5_rb, - .max_baud = 2250000UL, - .clk_id = RCC_UART5, - .irq_num = NVIC_UART5, -}; -/** UART5 device */ -usart_dev *UART5 = &uart5; -#endif - -/* - * Routines - */ - -void usart_config_gpios_async(usart_dev *udev, - gpio_dev *rx_dev, uint8 rx, - gpio_dev *tx_dev, uint8 tx, - unsigned flags) { - gpio_af af = usart_get_af(udev); - gpio_set_modef(rx_dev, rx, GPIO_MODE_AF, GPIO_MODEF_PUPD_NONE); - //gpio_set_modef(tx_dev, tx, GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(tx_dev, tx, GPIO_MODE_AF, GPIO_MODEF_TYPE_OD); - gpio_set_af(rx_dev, rx, af); - gpio_set_af(tx_dev, tx, af); -} - -void usart_set_baud_rate(usart_dev *dev, uint32 clock_speed, uint32 baud) { - /* Figure out the clock speed, if the user doesn't give one. */ - if (clock_speed == 0) { - clock_speed = _usart_clock_freq(dev); - } - ASSERT(clock_speed); - - uint32 divider = clock_speed / baud; - uint32 tmpreg = clock_speed % baud; - /* round divider : if fractional part i greater than 0.5 increment divider */ - if (tmpreg >= baud / 2) - divider++; - dev->regs->BRR = (uint16)divider; -} - -uint32 usart_tx(usart_dev *dev, const uint8 *buf, uint32 len) { - usart_reg_map *regs = dev->regs; - uint32 txed = 0; - while ((regs->SR & USART_SR_TXE) && (txed < len)) { - regs->TDR = buf[txed++] & USART_TDR_TDR; - } - return txed; -} - -/** - * @brief Call a function on each USART. - * @param fn Function to call. - */ -void usart_foreach(void (*fn)(usart_dev*)) { - fn(USART1); - fn(USART2); - fn(USART3); -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) - fn(UART4); - fn(UART5); -#endif -} - -/** - * @brief Get GPIO alternate function mode for a USART. - * @param dev USART whose gpio_af to get. - * @return gpio_af corresponding to dev. - */ -gpio_af usart_get_af(usart_dev *dev) { - switch (dev->clk_id) { - case RCC_USART1: - case RCC_USART2: - case RCC_USART3: - return GPIO_AF_7; -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) - case RCC_UART4: - case RCC_UART5: - return GPIO_AF_5; -#endif - default: - ASSERT(0); /* Can't happen */ - return (gpio_af)-1; - } -} - -/* - * Interrupt handlers. - */ - -static __always_inline void usart_irq(ring_buffer *rb, usart_reg_map *regs) { -#ifdef USART_SAFE_INSERT - /* If the buffer is full and the user defines USART_SAFE_INSERT, - * ignore new bytes. */ - rb_safe_insert(rb, regs->RDR & USART_RDR_RDR); -#else - /* By default, push bytes around in the ring buffer. */ - rb_push_insert(rb, regs->RDR & USART_RDR_RDR); -#endif -} - -void __irq_usart1(void) { - usart_irq(&usart1_rb, USART1_BASE); -} - -void __irq_usart2(void) { - usart_irq(&usart2_rb, USART2_BASE); -} - -void __irq_usart3(void) { - usart_irq(&usart3_rb, USART3_BASE); -} - -#ifdef STM32_HIGH_DENSITY -void __irq_uart4(void) { - usart_irq(&uart4_rb, UART4_BASE); -} - -void __irq_uart5(void) { - usart_irq(&uart5_rb, UART5_BASE); -} -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h deleted file mode 100644 index 8f4edde54..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/adc.h +++ /dev/null @@ -1,696 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/adc.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 ADC support. - */ - -#ifndef _LIBMAPLE_STM32F3_ADC_H_ -#define _LIBMAPLE_STM32F3_ADC_H_ - -#include -#include -#include /* For the prescalers */ - -/* - * Register map - */ - -/* - * ADC individual register map type. - */ -typedef struct adc_reg_map { - __IO uint32 ISR; /**< */ - __IO uint32 IER; /**< */ - __IO uint32 CR; /**< */ - __IO uint32 CFGR; /**< */ - uint32 reserved1; - __IO uint32 SMPR1; /**< */ - __IO uint32 SMPR2; /**< */ - uint32 reserved2; - __IO uint32 TR1; /**< */ - __IO uint32 TR2; /**< */ - __IO uint32 TR3; /**< */ - uint32 reserved3; - __IO uint32 SQR1; /**< */ - __IO uint32 SQR2; /**< */ - __IO uint32 SQR3; /**< */ - __IO uint32 SQR4; /**< */ - __IO uint32 DR; /**< */ - uint32 reserved4 [2]; - __IO uint32 JSQR; /**< */ - uint32 reserved5 [4]; - __IO uint32 OFR1; /**< */ - __IO uint32 OFR2; /**< */ - __IO uint32 OFR3; /**< */ - __IO uint32 OFR4; /**< */ - uint32 reserved6 [4]; - __IO uint32 JDR1; /**< */ - __IO uint32 JDR2; /**< */ - __IO uint32 JDR3; /**< */ - __IO uint32 JDR4; /**< */ - uint32 reserved7 [4]; - __IO uint32 AWD2CR; /**< */ - __IO uint32 AWD3CR; /**< */ - uint32 reserved8 [2]; - __IO uint32 DIFSEL; /**< */ - __IO uint32 CALFACT; /**< */ -} adc_reg_map; - -/* - * ADC master and slave common register map type. - */ -typedef struct adc_common_reg_map { - __IO uint32 CSR; /**< */ - uint32 reserved; - __IO uint32 CCR; /**< */ - __IO uint32 CDR; /**< */ -} adc_common_reg_map; - -/** ADC device type. */ -typedef struct adc_dev { - adc_reg_map *regs; /**< Register map */ - rcc_clk_id clk_id; /**< RCC clock information */ - adc_private_data *priv; /**< ADC private data */ -} adc_dev; - -/* - * Devices - */ - -extern const struct adc_dev *ADC1; /* master */ -extern const struct adc_dev *ADC2; /* slave */ -#if STM32_F3_LINE == STM32_F3_LINE_303 -extern const struct adc_dev *ADC3; /* master */ -extern const struct adc_dev *ADC4; /* slave */ -#endif - -/* - * Register map base pointers - */ - -/** STM32F3 ADC1 individual register map base pointer. */ -#define ADC1_BASE ((struct adc_reg_map*)0x50000000) -/** STM32F3 ADC2 individual register map base pointer. */ -#define ADC2_BASE ((struct adc_reg_map*)0x50000100) -/** STM32F3 ADC1/ADC2 common register map base pointer. */ -#define ADC12_BASE ((struct adc_common_reg_map*)0x50000300) -#if STM32_F3_LINE == STM32_F3_LINE_303 -/** STM32F3 ADC3 individual register map base pointer. */ -#define ADC3_BASE ((struct adc_reg_map*)0x50000400) -/** STM32F3 ADC4 individual register map base pointer. */ -#define ADC4_BASE ((struct adc_reg_map*)0x50000500) -/** STM32F3 ADC3/ADC4 common register map base pointer. */ -#define ADC34_BASE ((struct adc_common_reg_map*)0x50000700) -#endif - -/* - * Register bit definitions - */ - -/* Interrupt and status register */ -#define ADC_ISR_JQOVF_BIT 10 -#define ADC_ISR_AWD3_BIT 9 -#define ADC_ISR_AWD2_BIT 8 -#define ADC_ISR_AWD1_BIT 7 -#define ADC_ISR_JEOS_BIT 6 -#define ADC_ISR_JEOC_BIT 5 -#define ADC_ISR_OVR_BIT 4 -#define ADC_ISR_EOS_BIT 3 -#define ADC_ISR_EOC_BIT 2 -#define ADC_ISR_EOSMP_BIT 1 -#define ADC_ISR_ADRDY_BIT 0 - -#define ADC_ISR_JQOVF (1U << ADC_ISR_JQOVF_BIT) -#define ADC_ISR_AWD3 (1U << ADC_ISR_AWD3_BIT) -#define ADC_ISR_AWD2 (1U << ADC_ISR_AWD2_BIT) -#define ADC_ISR_AWD1 (1U << ADC_ISR_AWD1_BIT) -#define ADC_ISR_JEOS (1U << ADC_ISR_JEOS_BIT) -#define ADC_ISR_JEOC (1U << ADC_ISR_JEOC_BIT) -#define ADC_ISR_OVR (1U << ADC_ISR_OVR_BIT) -#define ADC_ISR_EOS (1U << ADC_ISR_EOS_BIT) -#define ADC_ISR_EOC (1U << ADC_ISR_EOC_BIT) -#define ADC_ISR_EOSMP (1U << ADC_ISR_EOSMP_BIT) -#define ADC_ISR_ADRDY (1U << ADC_ISR_ADRDY_BIT) - -/* FIXME make an enum out of this */ -#define ADC_WATCHDOG_1_INTERRUPT ADC_ISR_AWD1 -#define ADC_WATCHDOG_2_INTERRUPT ADC_ISR_AWD2 -#define ADC_WATCHDOG_3_INTERRUPT ADC_ISR_AWD3 -#define ADC_CONV_INTERRUPT ADC_ISR_EOC -#define ADC_INJ_CONV_INTERRUPT ADC_ISR_JEOC -#define ADC_OVERRUN_INTERRUPT ADC_ISR_OVR -#define ADC_ALL_INTERRUPTS (ADC_CONV_INTERRUPT | ADC_WATCHDOG_1_INTERRUPT | ADC_WATCHDOG_2_INTERRUPT | ADC_WATCHDOG_3_INTERRUPT | ADC_INJ_CONV_INTERRUPT | ADC_OVERRUN_INTERRUPT) - -/* Interrupt enable register */ -#define ADC_IER_JQOVF_BIT 10 -#define ADC_IER_AWD3_BIT 9 -#define ADC_IER_AWD2_BIT 8 -#define ADC_IER_AWD1_BIT 7 -#define ADC_IER_JEOS_BIT 6 -#define ADC_IER_JEOC_BIT 5 -#define ADC_IER_OVR_BIT 4 -#define ADC_IER_EOS_BIT 3 -#define ADC_IER_EOC_BIT 2 -#define ADC_IER_EOSMP_BIT 1 -#define ADC_IER_ADRDY_BIT 0 - -#define ADC_IER_JQOVF (1U << ADC_IER_JQOVF_BIT) -#define ADC_IER_AWD3 (1U << ADC_IER_AWD3_BIT) -#define ADC_IER_AWD2 (1U << ADC_IER_AWD2_BIT) -#define ADC_IER_AWD1 (1U << ADC_IER_AWD1_BIT) -#define ADC_IER_JEOS (1U << ADC_IER_JEOS_BIT) -#define ADC_IER_JEOC (1U << ADC_IER_JEOC_BIT) -#define ADC_IER_OVR (1U << ADC_IER_OVR_BIT) -#define ADC_IER_EOS (1U << ADC_IER_EOS_BIT) -#define ADC_IER_EOC (1U << ADC_IER_EOC_BIT) -#define ADC_IER_EOSMP (1U << ADC_IER_EOSMP_BIT) -#define ADC_IER_ADRDY (1U << ADC_IER_ADRDY_BIT) - -/* Control register */ -#define ADC_CR_ADCAL_BIT 31 -#define ADC_CR_ADCALDIF_BIT 30 -#define ADC_CR_ADVREGEN_SHIFT 28 -#define ADC_CR_JADSTP_BIT 5 -#define ADC_CR_ADSTP_BIT 4 -#define ADC_CR_JADSTART_BIT 3 -#define ADC_CR_ADSTART_BIT 2 -#define ADC_CR_ADDIS_BIT 1 -#define ADC_CR_ADEN_BIT 0 - -#define ADC_CR_ADCAL (1U << ADC_CR_ADCAL_BIT) -#define ADC_CR_ADCALDIF (1U << ADC_CR_ADCALDIF_BIT) -#define ADC_CR_ADVREGEN (0x3 << ADC_CR_ADVREGEN_SHIFT) -#define ADC_CR_ADVREGEN_ENABLE (0x1 << ADC_CR_ADVREGEN_SHIFT) -#define ADC_CR_ADVREGEN_DISABLE (0x2 << ADC_CR_ADVREGEN_SHIFT) -#define ADC_CR_JADSTP (1U << ADC_CR_JADSTP_BIT) -#define ADC_CR_ADSTP (1U << ADC_CR_ADSTP_BIT) -#define ADC_CR_JADSTART (1U << ADC_CR_JADSTART_BIT) -#define ADC_CR_ADSTART (1U << ADC_CR_ADSTART_BIT) -#define ADC_CR_ADDIS (1U << ADC_CR_ADDIS_BIT) -#define ADC_CR_ADEN (1U << ADC_CR_ADEN_BIT) - -/* Configuration register */ -#define ADC_CFGR_AWD1CH_SHIFT 26 -#define ADC_CFGR_JAUTO_BIT 25 -#define ADC_CFGR_JAWD1EN_BIT 24 -#define ADC_CFGR_AWD1EN_BIT 23 -#define ADC_CFGR_AWD1SGL_BIT 22 -#define ADC_CFGR_JQM_BIT 21 -#define ADC_CFGR_JDISCEN_BIT 20 -#define ADC_CFGR_JDISCNUM_SHIFT 17 -#define ADC_CFGR_DISCEN_BIT 16 -#define ADC_CFGR_AUTDLY_BIT 14 -#define ADC_CFGR_CONT_BIT 13 -#define ADC_CFGR_OVRMOD_BIT 12 -#define ADC_CFGR_EXTEN_SHIFT 10 -#define ADC_CFGR_EXTSEL_SHIFT 6 -#define ADC_CFGR_ALIGN_BIT 5 -#define ADC_CFGR_RES_SHIFT 3 -#define ADC_CFGR_DMACFG_BIT 1 -#define ADC_CFGR_DMAEN_BIT 0 - -#define ADC_CFGR_AWD1CH (0x1F << ADC_CFGR_AWD1CH_SHIFT) -#define ADC_CFGR_JAUTO (1U << ADC_CFGR_JAUTO_BIT) -#define ADC_CFGR_JAWD1EN (1U << ADC_CFGR_JAWD1EN_BIT) -#define ADC_CFGR_AWD1EN (1U << ADC_CFGR_AWD1EN_BIT) -#define ADC_CFGR_AWD1SGL (1U << ADC_CFGR_AWD1SGL_BIT) -#define ADC_CFGR_JQM (1U << ADC_CFGR_JQM_BIT) -#define ADC_CFGR_JDISCEN (1U << ADC_CFGR_JDISCEN_BIT) -#define ADC_CFGR_JDISCNUM (0x7 << ADC_CFGR_JDISCNUM_SHIFT) -#define ADC_CFGR_DISCEN (1U << ADC_CFGR_DISCEN_BIT) -#define ADC_CFGR_AUTODLY (1U << ADC_CFGR_AUTODLY_BIT) -#define ADC_CFGR_CONT (1U << ADC_CFGR_CONT_BIT) -#define ADC_CFGR_OVRMOD (1U << ADC_CFGR_OVRMOD_BIT) -#define ADC_CFGR_EXTEN (0x3 << ADC_CFGR_EXTEN_SHIFT) -#define ADC_CFGR_EXTSEL (0xF << ADC_CFGR_EXTSEL_SHIFT) -#define ADC_CFGR_ALIGN (1U << ADC_CFGR_ALIGN_BIT) -#define ADC_CFGR_RES (0x3 << ADC_CFGR_RES_SHIFT) -#define ADC_CFGR_DMACFG (1U << ADC_CFGR_DMACFG_BIT) -#define ADC_CFGR_DMAEN (1U << ADC_CFGR_DMAEN_BIT) - -/* Sample time register 1 */ -#define ADC_SMPR1_SMP9 (0x7 << 27) -#define ADC_SMPR1_SMP8 (0x7 << 24) -#define ADC_SMPR1_SMP7 (0x7 << 21) -#define ADC_SMPR1_SMP6 (0x7 << 18) -#define ADC_SMPR1_SMP5 (0x7 << 15) -#define ADC_SMPR1_SMP4 (0x7 << 12) -#define ADC_SMPR1_SMP3 (0x7 << 9) -#define ADC_SMPR1_SMP2 (0x7 << 6) -#define ADC_SMPR1_SMP1 (0x7 << 3) - -/* Sample time register 2 */ -#define ADC_SMPR2_SMP18 (0x7 << 24) -#define ADC_SMPR2_SMP17 (0x7 << 21) -#define ADC_SMPR2_SMP16 (0x7 << 18) -#define ADC_SMPR2_SMP15 (0x7 << 15) -#define ADC_SMPR2_SMP14 (0x7 << 12) -#define ADC_SMPR2_SMP13 (0x7 << 9) -#define ADC_SMPR2_SMP12 (0x7 << 6) -#define ADC_SMPR2_SMP11 (0x7 << 3) -#define ADC_SMPR2_SMP10 0x7 - -/* Analog watchdog 1 threshold register */ -#define ADC_TR1_HT1 (0xFFF << 16) /* 12bit watchdog */ -#define ADC_TR1_LT1 0xFFF - -/* Analog watchdog 2 threshold register */ -#define ADC_TR2_HT2 (0xFF << 16) /* 8bit watchdog */ -#define ADC_TR2_LT2 0xFF - -/* Analog watchdog 3 threshold register */ -#define ADC_TR3_HT3 (0xFF << 16) /* 8bit watchdog */ -#define ADC_TR3_LT3 0xFF - -/* Regular sequence register 1 */ -#define ADC_SQR1_SQ4 (0x1F << 24) -#define ADC_SQR1_SQ3 (0x1F << 18) -#define ADC_SQR1_SQ2 (0x1F << 12) -#define ADC_SQR1_SQ1 (0x1F << 6) -#define ADC_SQR1_L 0xF - -/* Regular sequence register 2 */ -#define ADC_SQR2_SQ9 (0x1F << 24) -#define ADC_SQR2_SQ8 (0x1F << 18) -#define ADC_SQR2_SQ7 (0x1F << 12) -#define ADC_SQR2_SQ6 (0x1F << 6) -#define ADC_SQR2_SQ5 0x1F - -/* Regular sequence register 3 */ -#define ADC_SQR3_SQ14 (0x1F << 24) -#define ADC_SQR3_SQ13 (0x1F << 18) -#define ADC_SQR3_SQ12 (0x1F << 12) -#define ADC_SQR3_SQ11 (0x1F << 6) -#define ADC_SQR3_SQ10 0x1F - -/* Regular sequence register 4 */ -#define ADC_SQR4_SQ16 (0x1F << 6) -#define ADC_SQR4_SQ15 0x1F - -/* Regular data register */ -#define ADC_DR_RDATA 0xFFFF - -/* Injected sequence register */ -#define ADC_JSQR_JEXTEN_SHIFT 6 -#define ADC_JSQR_JEXTSEL_SHIFT 2 - -#define ADC_JSQR_SQ4 (0x1F << 26) -#define ADC_JSQR_SQ3 (0x1F << 20) -#define ADC_JSQR_SQ2 (0x1F << 14) -#define ADC_JSQR_SQ1 (0x1F << 8) -#define ADC_JSQR_JEXTEN (0x3 << ADC_JSQR_JEXTEN_SHIFT) -#define ADC_JSQR_JEXTSEL (0xF << ADC_JSQR_JEXTSEL_SHIFT) -#define ADC_JSQR_JL 0x3 - -/* Offset register 1 */ -#define ADC_OFR1_OFFSET1EN_BIT 31 - -#define ADC_OFR1_OFFSET1ENT (1U << ADC_OFR1_OFFSET1EN_BIT) -#define ADC_OFR1_OFFSET1_CH (0x1F << 26) -#define ADC_OFR1_OFFSET1 0xFFF - -/* Offset register 2 */ -#define ADC_OFR2_OFFSET2EN_BIT 31 - -#define ADC_OFR2_OFFSET2EN (1U << ADC_OFR2_OFFSET2EN_BIT) -#define ADC_OFR2_OFFSET2_CH (0x1F << 26) -#define ADC_OFR2_OFFSET2 0xFFF - -/* Offset register 3 */ -#define ADC_OFR3_OFFSET3EN_BIT 31 - -#define ADC_OFR3_OFFSET3EN (1U << ADC_OFR3_OFFSET3EN_BIT) -#define ADC_OFR3_OFFSET3_CH (0x1F << 26) -#define ADC_OFR3_OFFSET3 0xFFF - -/* Offset register 4 */ -#define ADC_OFR4_OFFSET4EN_BIT 31 - -#define ADC_OFR4_OFFSET4EN (1U << ADC_OFR4_OFFSET4EN_BIT) -#define ADC_OFR4_OFFSET4_CH (0x1F << 26) -#define ADC_OFR4_OFFSET4 0xFFF - -/* Injected data register 1 */ -#define ADC_JDR1_JDATA1 0xFFFF - -/* Injected data register 2 */ -#define ADC_JDR2_JDATA2 0xFFFF - -/* Injected data register 3 */ -#define ADC_JDR3_JDATA3 0xFFFF - -/* Injected data register 4 */ -#define ADC_JDR4_JDATA4 0xFFFF - -/* Analog watchdog 2 configuration register */ -#define ADC_AWD2CR_AWD2CH (0x1FFFF << 1) - -/* Analog watchdog 3 configuration register */ -#define ADC_AWD3CR_AWD3CH (0x1FFFF << 1) - -/* Differential mode selection register */ -#define ADC_DIFSEL_DIFSEL (0x1FFFF << 1) - -/* Calibration factors */ -#define ADC_CALFACT_CALFACT_D (0x7F << 16) -#define ADC_CALFACT_CALFACT_S 0x7F - -/* Common status register */ -#define ADC_CSR_JQOVF_SLV_BIT 26 -#define ADC_CSR_AWD3_SLV_BIT 25 -#define ADC_CSR_AWD2_SLV_BIT 24 -#define ADC_CSR_AWD1_SLV_BIT 23 -#define ADC_CSR_JEOS_SLV_BIT 22 -#define ADC_CSR_JEOC_SLV_BIT 21 -#define ADC_CSR_OVR_SLV_BIT 20 -#define ADC_CSR_EOS_SLV_BIT 19 -#define ADC_CSR_EOC_SLV_BIT 18 -#define ADC_CSR_EOSMP_SLV_BIT 17 -#define ADC_CSR_ADRDY_SLV_BIT 16 - -#define ADC_CSR_JQOVF_MST_BIT 10 -#define ADC_CSR_AWD3_MST_BIT 9 -#define ADC_CSR_AWD2_MST_BIT 8 -#define ADC_CSR_AWD1_MST_BIT 7 -#define ADC_CSR_JEOS_MST_BIT 6 -#define ADC_CSR_JEOC_MST_BIT 5 -#define ADC_CSR_OVR_MST_BIT 4 -#define ADC_CSR_EOS_MST_BIT 3 -#define ADC_CSR_EOC_MST_BIT 2 -#define ADC_CSR_EOSMP_MST_BIT 1 -#define ADC_CSR_ADRDY_MST_BIT 0 - -#define ADC_CSR_JQOVF_SLV (1U << ADC_CSR_JQOVF_SLV_BIT) -#define ADC_CSR_AWD3_SLV (1U << ADC_CSR_AWD3_SLV_BIT) -#define ADC_CSR_AWD2_SLV (1U << ADC_CSR_AWD2_SLV_BIT) -#define ADC_CSR_AWD1_SLV (1U << ADC_CSR_AWD1_SLV_BIT) -#define ADC_CSR_JEOS_SLV (1U << ADC_CSR_JEOS_SLV_BIT) -#define ADC_CSR_JEOC_SLV (1U << ADC_CSR_JEOC_SLV_BIT) -#define ADC_CSR_OVR_SLV (1U << ADC_CSR_OVR_SLV_BIT) -#define ADC_CSR_EOS_SLV (1U << ADC_CSR_EOS_SLV_BIT) -#define ADC_CSR_EOC_SLV (1U << ADC_CSR_EOC_SLV_BIT) -#define ADC_CSR_EOSMP_SLV (1U << ADC_CSR_EOS_MP_SLV_BIT) -#define ADC_CSR_ADRDY_SLV (1U << ADC_CSR_ADRDY_SLV_BIT) - -#define ADC_CSR_JQOVF_MST (1U << ADC_CSR_JQOVF_MST_BIT) -#define ADC_CSR_AWD3_MST (1U << ADC_CSR_AWD3_MST_BIT) -#define ADC_CSR_AWD2_MST (1U << ADC_CSR_AWD2_MST_BIT) -#define ADC_CSR_AWD1_MST (1U << ADC_CSR_AWD1_MST_BIT) -#define ADC_CSR_JEOS_MST (1U << ADC_CSR_JEOS_MST_BIT) -#define ADC_CSR_JEOC_MST (1U << ADC_CSR_JEOC_MST_BIT) -#define ADC_CSR_OVR_MST (1U << ADC_CSR_OVR_MST_BIT) -#define ADC_CSR_EOS_MST (1U << ADC_CSR_EOS_MST_BIT) -#define ADC_CSR_EOC_MST (1U << ADC_CSR_EOC_MST_BIT) -#define ADC_CSR_EOSMP_MST (1U << ADC_CSR_EOS_MP_MST_BIT) -#define ADC_CSR_ADRDY_MST (1U << ADC_CSR_ADRDY_MST_BIT) - -/* Common control register */ -#define ADC_CCR_VBATEN_BIT 24 -#define ADC_CCR_TSEN_BIT 23 -#define ADC_CCR_VREFEN_BIT 22 -#define ADC_CCR_CKMODE_SHIFT 16 -#define ADC_CCR_MDMA_SHIFT 14 -#define ADC_CCR_DMACFG_BIT 13 -#define ADC_CCR_DELAY_SHIFT 8 -#define ADC_CCR_DUAL_SHIFT 0 - -#define ADC_CCR_VBATEN (1U << ADC_CCR_VBATEN_BIT) -#define ADC_CCR_TSEN (1U << ADC_CCR_TSEN_BIT) -#define ADC_CCR_VREFEN (1U << ADC_CCR_VREFEN_BIT) -#define ADC_CCR_CKMODE (0x3 << ADC_CCR_CKMODE_SHIFT) -#define ADC_CCR_MDMA (0x3 << ADC_CCR_MDMA_SHIFT) -#define ADC_CCR_DMACFG (1U << ADC_CCR_DMACFG_BIT) -#define ADC_CCR_DELAY (0xF << ADC_CCR_DELAY_SHIFT) -#define ADC_CCR_DUAL 0X1F - -/* Common regular data register for dual mode */ -#define ADC_CDR_RDATA_SLV (0xFFFF << 16) -#define ADC_CDR_RDATA_MST 0xFFFF - -/* - * Other types - */ - -/** - * @brief STM32F3 external event selectors for regular group - * conversion. - * - * For ease of use, each event selector is given along with the ADCs - * it's available on, along with any other availability restrictions. - * - * @see adc_set_extsel() - */ -typedef enum adc_extsel_event { - /* ADC1 (master) and ADC2 (slave) regular channels */ - ADC12_EXT_EV_TIM1_CC1 = 0x0 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM1_CC2 = 0x1 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM1_CC3 = 0x2 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM2_CC2 = 0x3 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM3_TRGO = 0x4 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM4_CC4 = 0x5 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_EXTI_11 = 0x6 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM8_TRGO = 0x7 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM8_TRGO2 = 0x8 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM1_TRGO = 0x9 << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM1_TRGO2 = 0xA << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM2_TRGO = 0xB << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM4_TRGO = 0xC << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM6_TRGO = 0xD << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM15_TRGO = 0xE << ADC_CFGR_EXTSEL_SHIFT, - ADC12_EXT_EV_TIM3_CC4 = 0xF << ADC_CFGR_EXTSEL_SHIFT, - - /* ADC1 (master) and ADC2 (slave) injected channels */ - ADC12_JEXT_EV_TIM1_TRGO = 0x0 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM1_CC4 = 0x1 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM2_TRGO = 0x2 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM2_CC1 = 0x3 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM3_CC4 = 0x4 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM4_TRGO = 0x5 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_EXTI_15 = 0x6 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM8_CC4 = 0x7 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM1_TRGO2 = 0x8 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM8_TRGO = 0x9 << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM8_TRGO2 = 0xA << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM3_CC3 = 0xB << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM3_TRGO = 0xC << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM3_CC1 = 0xD << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM6_TRGO = 0xE << ADC_JSQR_JEXTSEL_SHIFT, - ADC12_JEXT_EV_TIM15_TRGO = 0xF << ADC_JSQR_JEXTSEL_SHIFT, - - /* ADC3 (master) and ADC4 (slave) injected channels */ - ADC34_EXT_EV_TIM3_CC1 = 0x0 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM3_CC3 = 0x1 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM1_cc3 = 0x2 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM8_CC1 = 0x3 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM8_TRGO = 0x4 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_EXTI_2 = 0x5 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM4_CC1 = 0x6 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM2_TRGO = 0x7 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM8_TRGO2 = 0x8 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM1_TRGO = 0x9 << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM1_TRGO2 = 0xA << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM3_TRGO = 0xB << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM4_TRGO = 0xC << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM7_TRGO = 0xD << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM15_TRGO = 0xE << ADC_CFGR_EXTSEL_SHIFT, - ADC34_EXT_EV_TIM2_CC1 = 0xF << ADC_CFGR_EXTSEL_SHIFT, - - /* ADC3 (master) and ADC4 (slave) injected channels */ - ADC34_JEXT_EV_TIM1_TRGO = 0x0 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM1_CC4 = 0x1 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM4_CC3 = 0x2 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM8_CC2 = 0x3 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM8_CC4 = 0x4 << ADC_JSQR_JEXTSEL_SHIFT, - /* ADC34_JEXT_EV_TIM4_CC3 = 0x5 << ADC_JSQR_JEXTSEL_SHIFT, */ /* FIXME duplicate or typo in manual? */ - ADC34_JEXT_EV_TIM4_CC4 = 0x6 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM4_TRGO = 0x7 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM1_TRGO2 = 0x8 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM8_TRGO = 0x9 << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM8_TRGO2 = 0xA << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM1_CC3 = 0xB << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM3_TRGO = 0xC << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM2_TRGO = 0xD << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM7_TRGO = 0xE << ADC_JSQR_JEXTSEL_SHIFT, - ADC34_JEXT_EV_TIM15_TRGO = 0xF << ADC_JSQR_JEXTSEL_SHIFT, -} adc_extsel_event; - -/** - * @brief STM32F3 ADC trigger mode. - * - * These control the trigger mode of the ADC, which can be set to: - * Software trigger, hardware trigger on rising, falling or both edges. - */ -typedef enum adc_exttrig_mode { - ADC_EXTTRIG_MODE_SOFTWARE = 0x0 << ADC_CFGR_EXTEN_SHIFT, /**< .. */ - ADC_EXTTRIG_MODE_HARDWARE_RISING = 0x1 << ADC_CFGR_EXTEN_SHIFT, /**< .. */ - ADC_EXTTRIG_MODE_HARDWARE_FALLING = 0x2 << ADC_CFGR_EXTEN_SHIFT, /**< .. */ - ADC_EXTTRIG_MODE_HARDWARE_BOTH = 0x3 << ADC_CFGR_EXTEN_SHIFT, /**< .. */ -} adc_exttrig_mode; - -/** - * @brief STM32F3 ADC resolution. - * - * These control the ADC resolution, which can be set to: - * 6, 8, 10 or 12 bit. - */ -typedef enum adc_resolution { - ADC_RESOLUTION_12_BIT = 0x0 << ADC_CFGR_RES_SHIFT, /**< .. */ - ADC_RESOLUTION_10_BIT = 0x1 << ADC_CFGR_RES_SHIFT, /**< .. */ - ADC_RESOLUTION_8_BIT = 0x2 << ADC_CFGR_RES_SHIFT, /**< .. */ - ADC_RESOLUTION_6_BIT = 0x3 << ADC_CFGR_RES_SHIFT, /**< .. */ -} adc_resolution; - -/** - * @brief STM32F3 sample times, in ADC clock cycles. - * - * These control the amount of time spent sampling the input voltage. - */ -typedef enum adc_smp_rate { - ADC_SMPR_1_5 = 0x0, /**< 1.5 ADC cycles */ - ADC_SMPR_2_5 = 0x1, /**< 2.5 ADC cycles */ - ADC_SMPR_4_5 = 0x2, /**< 4.5 ADC cycles */ - ADC_SMPR_7_5 = 0x3, /**< 7.5 ADC cycles */ - ADC_SMPR_19_5 = 0x4, /**< 19.5 ADC cycles */ - ADC_SMPR_61_5 = 0x5, /**< 61.5 ADC cycles */ - ADC_SMPR_181_5 = 0x6, /**< 181.5 ADC cycles */ - ADC_SMPR_601_5 = 0x7, /**< 601.5 ADC cycles */ -} adc_smp_rate; - -/* - * FIXME SHIFT - */ - -/** - * @brief STM32F3 ADC clock mode. - */ -typedef enum adc_clock_mode { - ADC_CLOCK_MODE_ASYNCHRONOUS = 0x0, /**< . */ - ADC_CLOCK_MODE_SYNCHRONOUS_DIV_1 = 0x1, /**< . */ - ADC_CLOCK_MODE_SYNCHRONOUS_DIV_2 = 0x2, /**< . */ - ADC_CLOCK_MODE_SYNCHRONOUS_DIV_4 = 0x3, /**< . */ -} adc_clock_mode; - -/** - * @brief STM32F3 ADC DMA mode. - */ -typedef enum adc_dma_mode { - ADC_MDMA_MODE_DISABLE = (0x0 << ADC_CCR_MDMA_SHIFT), /**< . */ - ADC_MDMA_MODE_ENABLE_12_10_BIT = (0x2 << ADC_CCR_MDMA_SHIFT), /**< . */ - ADC_MDMA_MODE_ENABLE_8_6_BIT = (0x3 << ADC_CCR_MDMA_SHIFT), /**< . */ -} adc_dma_mode; - -/** - * @brief STM32F3 ADC mode. - */ -typedef enum adc_mode { - ADC_MODE_INDEPENDENT = 0x0, /**< . */ - ADC_MODE_DUAL_REGULAR_INJECTED = 0x1, /**< . */ - ADC_MODE_DUAL_REGULAR_ALTERNATE_TRIGGER = 0x2, /**< . */ - ADC_MODE_DUAL_INJECTED_ONLY = 0x5, /**< . */ - ADC_MODE_DUAL_REGULAR_ONLY = 0x6, /**< . */ - ADC_MODE_DUAL_INTERLEAVED_ONLY = 0x7, /**< . */ - ADC_MODE_DUAL_ALTERNATE_TRIGGER_ONLY = 0x9, /**< . */ -} adc_mode; - -/** - * @brief STM32F3 ADC prescalers, as divisors of PCLK2. - */ -typedef enum adc_prescaler { - /** ADC clock disabled, AHB clock enabled */ - ADC_PRE_AHBCLK_DIV_1 = ADC_CLOCK_MODE_SYNCHRONOUS_DIV_1, - ADC_PRE_AHBCLK_DIV_2 = ADC_CLOCK_MODE_SYNCHRONOUS_DIV_2, - ADC_PRE_AHBCLK_DIV_4 = ADC_CLOCK_MODE_SYNCHRONOUS_DIV_4, - - /** ADC clock enabled, AHB clock disabled */ - ADC_PRE_PCLK_DIV_1 = RCC_ADCPRE_PCLK_DIV_1, /** PCLK divided by 1 */ - ADC_PRE_PCLK_DIV_2 = RCC_ADCPRE_PCLK_DIV_2, /** PCLK divided by 2 */ - ADC_PRE_PCLK_DIV_4 = RCC_ADCPRE_PCLK_DIV_4, /** PCLK divided by 4 */ - ADC_PRE_PCLK_DIV_6 = RCC_ADCPRE_PCLK_DIV_6, /** PCLK divided by 6 */ - ADC_PRE_PCLK_DIV_8 = RCC_ADCPRE_PCLK_DIV_8, /** PCLK divided by 8 */ - ADC_PRE_PCLK_DIV_10 = RCC_ADCPRE_PCLK_DIV_10, /** PCLK divided by 10 */ - ADC_PRE_PCLK_DIV_12 = RCC_ADCPRE_PCLK_DIV_12, /** PCLK divided by 12 */ - ADC_PRE_PCLK_DIV_16 = RCC_ADCPRE_PCLK_DIV_16, /** PCLK divided by 16 */ - ADC_PRE_PCLK_DIV_32 = RCC_ADCPRE_PCLK_DIV_32, /** PCLK divided by 32 */ - ADC_PRE_PCLK_DIV_64 = RCC_ADCPRE_PCLK_DIV_64, /** PCLK divided by 64 */ - ADC_PRE_PCLK_DIV_128 = RCC_ADCPRE_PCLK_DIV_128, /** PCLK divided by 128 */ - ADC_PRE_PCLK_DIV_256 = RCC_ADCPRE_PCLK_DIV_256, /** PCLK divided by 256 */ -} adc_prescaler; - -/* - * Routines - */ - -/** - * @brief Calibrate an ADC peripheral - * - * Availability: STM32F1, STM32F3. - * - * @param dev adc device - */ -void adc_calibrate(const adc_dev *dev); - -/** - * @brief Set external trigger conversion mode event for regular channels - * - * Availability: STM32F1, STM32F3. - * - * @param dev ADC device - * @param mode external trigger disabled, on rising edge, on falling edge or on both - */ -void adc_set_exttrig(const adc_dev *dev, adc_exttrig_mode mode); - -/** - * @brief Set ADC resolution of an ADC peripheral - * - * Availability: STM32F3. - * - * @param dev adc device - * @param resolution ADC resolution (6, 8, 10 or 12 bit) - */ -void adc_set_resolution(const adc_dev *dev, adc_resolution res); - -/** - * @brief Enable the voltage regulatr of an ADC peripheral - * - * Availability: STM32F3. - * - * @param dev adc device - */ -void adc_regulator_enable(const adc_dev *dev); - -/** - * @brief Disable the voltage regulatr of an ADC peripheral - * - * Availability: STM32F3. - * - * @param dev adc device - */ -void adc_regulator_disable(const adc_dev *dev); - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h deleted file mode 100644 index 21ab1c162..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/bkp.h +++ /dev/null @@ -1,62 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/bkp.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 backup register support. - */ - -#ifndef _LIBMAPLE_STM32F3_BKP_H_ -#define _LIBMAPLE_STM32F3_BKP_H_ - -#define BKP_NR_DATA_REGS 16 - -/** Backup peripheral register map type. */ -typedef struct bkp_reg_map { - __IO uint32 DR0; ///< Data register 0 - __IO uint32 DR1; ///< Data register 1 - __IO uint32 DR2; ///< Data register 2 - __IO uint32 DR3; ///< Data register 3 - __IO uint32 DR4; ///< Data register 4 - __IO uint32 DR5; ///< Data register 5 - __IO uint32 DR6; ///< Data register 6 - __IO uint32 DR7; ///< Data register 7 - __IO uint32 DR8; ///< Data register 8 - __IO uint32 DR9; ///< Data register 9 - __IO uint32 DR10; ///< Data register 10 - __IO uint32 DR11; ///< Data register 11 - __IO uint32 DR12; ///< Data register 12 - __IO uint32 DR13; ///< Data register 13 - __IO uint32 DR14; ///< Data register 14 - __IO uint32 DR15; ///< Data register 15 -} bkp_reg_map; - -/** Backup peripheral register map base pointer. */ -#define BKP_BASE ((struct bkp_reg_map*)0x40002850) //is part of RTC memory map - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h deleted file mode 100644 index 161f43969..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/comp.h +++ /dev/null @@ -1,119 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/comp.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 Comparator support. - */ - -#ifndef _LIBMAPLE_STM32F3_COMP_H_ -#define _LIBMAPLE_STM32F3_COMP_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* - * Register map - */ - -/* - * COMP individual register map type. - */ -typedef struct comp_reg_map { - __IO uint32 CSR; /**< */ -} comp_reg_map; - -/** COMP device type. */ -typedef struct comp_dev { - comp_reg_map *regs; /**< Register map */ -} comp_dev; - -/* - * Devices - */ - -extern const struct comp_dev *COMP1; /* comparator 1 */ -extern const struct comp_dev *COMP2; /* comparator 2 */ -extern const struct comp_dev *COMP3; /* comparator 3 */ -extern const struct comp_dev *COMP4; /* comparator 4 */ -extern const struct comp_dev *COMP5; /* comparator 5 */ -extern const struct comp_dev *COMP6; /* comparator 6 */ -extern const struct comp_dev *COMP7; /* comparator 7 */ - -/* - * Register map base pointers - */ - -#define COMP1_BASE ((struct comp_reg_map*)0x4001001C) -#define COMP2_BASE ((struct comp_reg_map*)0x40010020) -#define COMP3_BASE ((struct comp_reg_map*)0x40010024) -#define COMP4_BASE ((struct comp_reg_map*)0x40010028) -#define COMP5_BASE ((struct comp_reg_map*)0x4001002C) -#define COMP6_BASE ((struct comp_reg_map*)0x40010030) -#define COMP7_BASE ((struct comp_reg_map*)0x40010034) - -/* - * Register bit definitions - */ - -/* Control and status register */ -#define COMP_CSR_LOCK_BIT 31 -#define COMP_CSR_OUT_BIT 30 -#define COMP_CSR_BLANKING_SHIFT 18 -#define COMP_CSR_HIST_SHIFT 16 -#define COMP_CSR_POL_BIT 15 -#define COMP_CSR_OUTSEL_SHIFT 10 -#define COMP_CSR_WINMODE_BIT 9 -#define COMP_CSR_INPSEL_BIT 7 -#define COMP_CSR_INMSEL_SHIFT 4 -#define COMP_CSR_MODE_SHIFT 2 -#define COMP_CSR_EN_BIT 0 - -#define COMP_CSR_LOCK (1U << COMP_CSR_LOCK_BIT) -#define COMP_CSR_OUT (1U << COMP_CSR_OUT_BIT) -#define COMP_CSR_BLANKING (0x7 << COMP_CSR_BLANKING_SHIFT) -#define COMP_CSR_HIST (0x3 << COMP_CSR_HIST_SHIFT) -#define COMP_CSR_POL (1U << COMP_CSR_POL_BIT) -#define COMP_CSR_OUTSEL (0xF << COMP_CSR_OUTSEL_SHIFT) -#define COMP_CSR_WINMODE (0xF << COMP_CSR_WINMODE_SHIFT) -#define COMP_CSR_INPSEL (1U << COMP_CSR_INPSEL_BIT) -#define COMP_CSR_INMSEL (0x7 << COMP_CSR_INMSEL_SHIFT) -#define COMP_CSR_MODE (0x3 << COMP_CSR_MODE_SHIFT) -#define COMP_CSR_EN (1U << COMP_CSR_EN_BIT) - -/* TODO - * actually implement me ;-) - */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h deleted file mode 100644 index fa10aa4e4..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/crc.h +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/crc.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 Cylic Redundancy Check (CRC) support. - */ - -#ifndef _LIBMAPLE_STM32F3_CRC_H_ -#define _LIBMAPLE_STM32F3_CRC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -/* - * Register maps - */ - -/** CRC register map type */ -typedef struct crc_reg_map { - __IO uint32 DR; /**< Data register */ - __IO uint32 IDR; /**< Independent data register */ - __IO uint32 CR; /**< Control register */ - uint32 reserved; - __IO uint32 INIT; /**< Initial data register */ - __IO uint32 POL; /**< Polynomial register */ -} crc_reg_map; - -/* - * Register map base pointers - */ - -/** CRC register map base pointer */ -#define CRC_BASE ((struct crc_reg_map*)0x40013800) //TODO - -/* - * Register bit definitions - */ - -/* Data register */ -#define CRC_DR_DATA 0xFFFFFFFF - -/* Independent data register */ -#define CRC_IDR_DATA 0xFF - -/* Control register */ -#define CRC_CR_REV_OUT_BIT 7 -#define CRC_CR_REV_IN_SHIFT 5 -#define CRC_CR_POLYSIZE_SHIFT 3 -#define CRC_CR_RESET_BIT 0 - -#define CRC_CR_REV_OUT (1U << CRC_CR_REV_OUT_BIT) -#define CRC_CR_REV_IN (0x3 << CRC_CR_REV_IN_SHIFT) -#define CRC_CR_POLYSIZE (0x3 << CRC_CR_POLYSIZE_SHIFT) -#define CRC_CR_RESET (1U << CRC_CR_RESET_BIT) - -/* Initial data register */ -#define CRC_INIT_DATA 0xFFFFFFFF - -/* Polynomial register */ -#define CRC_POL_DATA 0xFFFFFFFF - -/* TODO add some routines */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h deleted file mode 100644 index 890e34c22..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dac.h +++ /dev/null @@ -1,74 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/dac.h - * @brief STM32F3 DAC support - */ - -#ifndef _LIBMAPLE_STM32F3_DAC_H_ -#define _LIBMAPLE_STM32F3_DAC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/** STM32F3 DAC register map type. */ -typedef struct dac_reg_map { - __IO uint32 CR; /**< Control register */ - __IO uint32 SWTRIGR; /**< Software trigger register */ - __IO uint32 DHR12R1; /**< Channel 1 12-bit right-aligned data - holding register */ - __IO uint32 DHR12L1; /**< Channel 1 12-bit left-aligned data - holding register */ - __IO uint32 DHR8R1; /**< Channel 1 8-bit left-aligned data - holding register */ - __IO uint32 DHR12R2; /**< Channel 2 12-bit right-aligned data - holding register */ - __IO uint32 DHR12L2; /**< Channel 2 12-bit left-aligned data - holding register */ - __IO uint32 DHR8R2; /**< Channel 2 8-bit left-aligned data - holding register */ - __IO uint32 DHR12RD; /**< Dual DAC 12-bit right-aligned data - holding register */ - __IO uint32 DHR12LD; /**< Dual DAC 12-bit left-aligned data - holding register */ - __IO uint32 DHR8RD; /**< Dual DAC 8-bit right-aligned data holding - register */ - __IO uint32 DOR1; /**< Channel 1 data output register */ - __IO uint32 DOR2; /**< Channel 2 data output register */ -} dac_reg_map; - -//#define DAC1_BASE ((struct dac_reg_map*)0x40007400) -//#define DAC2_BASE ((struct dac_reg_map*)0x40009800) //TODO STM32F37/38xx - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h deleted file mode 100644 index 1c7374855..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/dma.h +++ /dev/null @@ -1,557 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Michael Hope. - * Copyright (c) 2012 LeafLabs, LLC - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/dma.h - * @author Marti Bolivar , - * Original implementation by Michael Hope, - * F3-port by Hanspeter Portner - * @brief STM32F3 DMA series header. - */ - -#ifndef _LIBMAPLE_STM32F3_DMA_H_ -#define _LIBMAPLE_STM32F3_DMA_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include - -/* - * Register maps and base pointers - */ - -/** - * @brief STM32F3 DMA register map type. - * - * Note that DMA controller 2 (register map base pointer DMA2_BASE) - * only supports channels 1--5. - */ -typedef struct dma_reg_map { - __IO uint32 ISR; /**< Interrupt status register */ - __IO uint32 IFCR; /**< Interrupt flag clear register */ - __IO uint32 CCR1; /**< Channel 1 configuration register */ - __IO uint32 CNDTR1; /**< Channel 1 number of data register */ - __IO uint32 CPAR1; /**< Channel 1 peripheral address register */ - __IO uint32 CMAR1; /**< Channel 1 memory address register */ - const uint32 RESERVED1; /**< Reserved. */ - __IO uint32 CCR2; /**< Channel 2 configuration register */ - __IO uint32 CNDTR2; /**< Channel 2 number of data register */ - __IO uint32 CPAR2; /**< Channel 2 peripheral address register */ - __IO uint32 CMAR2; /**< Channel 2 memory address register */ - const uint32 RESERVED2; /**< Reserved. */ - __IO uint32 CCR3; /**< Channel 3 configuration register */ - __IO uint32 CNDTR3; /**< Channel 3 number of data register */ - __IO uint32 CPAR3; /**< Channel 3 peripheral address register */ - __IO uint32 CMAR3; /**< Channel 3 memory address register */ - const uint32 RESERVED3; /**< Reserved. */ - __IO uint32 CCR4; /**< Channel 4 configuration register */ - __IO uint32 CNDTR4; /**< Channel 4 number of data register */ - __IO uint32 CPAR4; /**< Channel 4 peripheral address register */ - __IO uint32 CMAR4; /**< Channel 4 memory address register */ - const uint32 RESERVED4; /**< Reserved. */ - __IO uint32 CCR5; /**< Channel 5 configuration register */ - __IO uint32 CNDTR5; /**< Channel 5 number of data register */ - __IO uint32 CPAR5; /**< Channel 5 peripheral address register */ - __IO uint32 CMAR5; /**< Channel 5 memory address register */ - const uint32 RESERVED5; /**< Reserved. */ - __IO uint32 CCR6; /**< Channel 6 configuration register */ - __IO uint32 CNDTR6; /**< Channel 6 number of data register */ - __IO uint32 CPAR6; /**< Channel 6 peripheral address register */ - __IO uint32 CMAR6; /**< Channel 6 memory address register */ - const uint32 RESERVED6; /**< Reserved. */ - __IO uint32 CCR7; /**< Channel 7 configuration register */ - __IO uint32 CNDTR7; /**< Channel 7 number of data register */ - __IO uint32 CPAR7; /**< Channel 7 peripheral address register */ - __IO uint32 CMAR7; /**< Channel 7 memory address register */ - const uint32 RESERVED7; /**< Reserved. */ -} dma_reg_map; - -/** DMA controller 1 register map base pointer */ -#define DMA1_BASE ((struct dma_reg_map*)0x40020000) -/** DMA controller 2 register map base pointer */ -#define DMA2_BASE ((struct dma_reg_map*)0x40020400) - -/** - * @brief STM32F3 DMA channel (i.e. tube) register map type. - * Provides access to an individual channel's registers. - * @see dma_tube_regs() - */ -typedef struct dma_tube_reg_map { - __IO uint32 CCR; /**< Channel configuration register */ - __IO uint32 CNDTR; /**< Channel number of data register */ - __IO uint32 CPAR; /**< Channel peripheral address register */ - __IO uint32 CMAR; /**< Channel memory address register */ -} dma_tube_reg_map; - -/** DMA1 channel 1 register map base pointer */ -#define DMA1CH1_BASE ((struct dma_tube_reg_map*)0x40020008) -/** DMA1 channel 2 register map base pointer */ -#define DMA1CH2_BASE ((struct dma_tube_reg_map*)0x4002001C) -/** DMA1 channel 3 register map base pointer */ -#define DMA1CH3_BASE ((struct dma_tube_reg_map*)0x40020030) -/** DMA1 channel 4 register map base pointer */ -#define DMA1CH4_BASE ((struct dma_tube_reg_map*)0x40020044) -/** DMA1 channel 5 register map base pointer */ -#define DMA1CH5_BASE ((struct dma_tube_reg_map*)0x40020058) -/** DMA1 channel 6 register map base pointer */ -#define DMA1CH6_BASE ((struct dma_tube_reg_map*)0x4002006C) -/** DMA1 channel 7 register map base pointer */ -#define DMA1CH7_BASE ((struct dma_tube_reg_map*)0x40020080) - -/** DMA2 channel 1 register map base pointer */ -#define DMA2CH1_BASE ((struct dma_tube_reg_map*)0x40020408) -/** DMA2 channel 2 register map base pointer */ -#define DMA2CH2_BASE ((struct dma_tube_reg_map*)0x4002041C) -/** DMA2 channel 3 register map base pointer */ -#define DMA2CH3_BASE ((struct dma_tube_reg_map*)0x40020430) -/** DMA2 channel 4 register map base pointer */ -#define DMA2CH4_BASE ((struct dma_tube_reg_map*)0x40020444) -/** DMA2 channel 5 register map base pointer */ -#define DMA2CH5_BASE ((struct dma_tube_reg_map*)0x40020458) - -/* - * Register bit definitions - */ - -/* Interrupt status register */ - -#define DMA_ISR_TEIF_BIT 3 -#define DMA_ISR_HTIF_BIT 2 -#define DMA_ISR_TCIF_BIT 1 -#define DMA_ISR_GIF_BIT 0 - -#define DMA_ISR_TEIF (1 << DMA_ISR_TEIF_BIT) -#define DMA_ISR_HTIF (1 << DMA_ISR_HTIF_BIT) -#define DMA_ISR_TCIF (1 << DMA_ISR_TCIF_BIT) -#define DMA_ISR_GIF (1 << DMA_ISR_GIF_BIT) - -#define DMA_ISR_TEIF7_BIT 27 -#define DMA_ISR_HTIF7_BIT 26 -#define DMA_ISR_TCIF7_BIT 25 -#define DMA_ISR_GIF7_BIT 24 -#define DMA_ISR_TEIF6_BIT 23 -#define DMA_ISR_HTIF6_BIT 22 -#define DMA_ISR_TCIF6_BIT 21 -#define DMA_ISR_GIF6_BIT 20 -#define DMA_ISR_TEIF5_BIT 19 -#define DMA_ISR_HTIF5_BIT 18 -#define DMA_ISR_TCIF5_BIT 17 -#define DMA_ISR_GIF5_BIT 16 -#define DMA_ISR_TEIF4_BIT 15 -#define DMA_ISR_HTIF4_BIT 14 -#define DMA_ISR_TCIF4_BIT 13 -#define DMA_ISR_GIF4_BIT 12 -#define DMA_ISR_TEIF3_BIT 11 -#define DMA_ISR_HTIF3_BIT 10 -#define DMA_ISR_TCIF3_BIT 9 -#define DMA_ISR_GIF3_BIT 8 -#define DMA_ISR_TEIF2_BIT 7 -#define DMA_ISR_HTIF2_BIT 6 -#define DMA_ISR_TCIF2_BIT 5 -#define DMA_ISR_GIF2_BIT 4 -#define DMA_ISR_TEIF1_BIT 3 -#define DMA_ISR_HTIF1_BIT 2 -#define DMA_ISR_TCIF1_BIT 1 -#define DMA_ISR_GIF1_BIT 0 - -#define DMA_ISR_TEIF7 (1U << DMA_ISR_TEIF7_BIT) -#define DMA_ISR_HTIF7 (1U << DMA_ISR_HTIF7_BIT) -#define DMA_ISR_TCIF7 (1U << DMA_ISR_TCIF7_BIT) -#define DMA_ISR_GIF7 (1U << DMA_ISR_GIF7_BIT) -#define DMA_ISR_TEIF6 (1U << DMA_ISR_TEIF6_BIT) -#define DMA_ISR_HTIF6 (1U << DMA_ISR_HTIF6_BIT) -#define DMA_ISR_TCIF6 (1U << DMA_ISR_TCIF6_BIT) -#define DMA_ISR_GIF6 (1U << DMA_ISR_GIF6_BIT) -#define DMA_ISR_TEIF5 (1U << DMA_ISR_TEIF5_BIT) -#define DMA_ISR_HTIF5 (1U << DMA_ISR_HTIF5_BIT) -#define DMA_ISR_TCIF5 (1U << DMA_ISR_TCIF5_BIT) -#define DMA_ISR_GIF5 (1U << DMA_ISR_GIF5_BIT) -#define DMA_ISR_TEIF4 (1U << DMA_ISR_TEIF4_BIT) -#define DMA_ISR_HTIF4 (1U << DMA_ISR_HTIF4_BIT) -#define DMA_ISR_TCIF4 (1U << DMA_ISR_TCIF4_BIT) -#define DMA_ISR_GIF4 (1U << DMA_ISR_GIF4_BIT) -#define DMA_ISR_TEIF3 (1U << DMA_ISR_TEIF3_BIT) -#define DMA_ISR_HTIF3 (1U << DMA_ISR_HTIF3_BIT) -#define DMA_ISR_TCIF3 (1U << DMA_ISR_TCIF3_BIT) -#define DMA_ISR_GIF3 (1U << DMA_ISR_GIF3_BIT) -#define DMA_ISR_TEIF2 (1U << DMA_ISR_TEIF2_BIT) -#define DMA_ISR_HTIF2 (1U << DMA_ISR_HTIF2_BIT) -#define DMA_ISR_TCIF2 (1U << DMA_ISR_TCIF2_BIT) -#define DMA_ISR_GIF2 (1U << DMA_ISR_GIF2_BIT) -#define DMA_ISR_TEIF1 (1U << DMA_ISR_TEIF1_BIT) -#define DMA_ISR_HTIF1 (1U << DMA_ISR_HTIF1_BIT) -#define DMA_ISR_TCIF1 (1U << DMA_ISR_TCIF1_BIT) -#define DMA_ISR_GIF1 (1U << DMA_ISR_GIF1_BIT) - -/* Interrupt flag clear register */ - -#define DMA_IFCR_CTEIF7_BIT 27 -#define DMA_IFCR_CHTIF7_BIT 26 -#define DMA_IFCR_CTCIF7_BIT 25 -#define DMA_IFCR_CGIF7_BIT 24 -#define DMA_IFCR_CTEIF6_BIT 23 -#define DMA_IFCR_CHTIF6_BIT 22 -#define DMA_IFCR_CTCIF6_BIT 21 -#define DMA_IFCR_CGIF6_BIT 20 -#define DMA_IFCR_CTEIF5_BIT 19 -#define DMA_IFCR_CHTIF5_BIT 18 -#define DMA_IFCR_CTCIF5_BIT 17 -#define DMA_IFCR_CGIF5_BIT 16 -#define DMA_IFCR_CTEIF4_BIT 15 -#define DMA_IFCR_CHTIF4_BIT 14 -#define DMA_IFCR_CTCIF4_BIT 13 -#define DMA_IFCR_CGIF4_BIT 12 -#define DMA_IFCR_CTEIF3_BIT 11 -#define DMA_IFCR_CHTIF3_BIT 10 -#define DMA_IFCR_CTCIF3_BIT 9 -#define DMA_IFCR_CGIF3_BIT 8 -#define DMA_IFCR_CTEIF2_BIT 7 -#define DMA_IFCR_CHTIF2_BIT 6 -#define DMA_IFCR_CTCIF2_BIT 5 -#define DMA_IFCR_CGIF2_BIT 4 -#define DMA_IFCR_CTEIF1_BIT 3 -#define DMA_IFCR_CHTIF1_BIT 2 -#define DMA_IFCR_CTCIF1_BIT 1 -#define DMA_IFCR_CGIF1_BIT 0 - -#define DMA_IFCR_CTEIF7 (1U << DMA_IFCR_CTEIF7_BIT) -#define DMA_IFCR_CHTIF7 (1U << DMA_IFCR_CHTIF7_BIT) -#define DMA_IFCR_CTCIF7 (1U << DMA_IFCR_CTCIF7_BIT) -#define DMA_IFCR_CGIF7 (1U << DMA_IFCR_CGIF7_BIT) -#define DMA_IFCR_CTEIF6 (1U << DMA_IFCR_CTEIF6_BIT) -#define DMA_IFCR_CHTIF6 (1U << DMA_IFCR_CHTIF6_BIT) -#define DMA_IFCR_CTCIF6 (1U << DMA_IFCR_CTCIF6_BIT) -#define DMA_IFCR_CGIF6 (1U << DMA_IFCR_CGIF6_BIT) -#define DMA_IFCR_CTEIF5 (1U << DMA_IFCR_CTEIF5_BIT) -#define DMA_IFCR_CHTIF5 (1U << DMA_IFCR_CHTIF5_BIT) -#define DMA_IFCR_CTCIF5 (1U << DMA_IFCR_CTCIF5_BIT) -#define DMA_IFCR_CGIF5 (1U << DMA_IFCR_CGIF5_BIT) -#define DMA_IFCR_CTEIF4 (1U << DMA_IFCR_CTEIF4_BIT) -#define DMA_IFCR_CHTIF4 (1U << DMA_IFCR_CHTIF4_BIT) -#define DMA_IFCR_CTCIF4 (1U << DMA_IFCR_CTCIF4_BIT) -#define DMA_IFCR_CGIF4 (1U << DMA_IFCR_CGIF4_BIT) -#define DMA_IFCR_CTEIF3 (1U << DMA_IFCR_CTEIF3_BIT) -#define DMA_IFCR_CHTIF3 (1U << DMA_IFCR_CHTIF3_BIT) -#define DMA_IFCR_CTCIF3 (1U << DMA_IFCR_CTCIF3_BIT) -#define DMA_IFCR_CGIF3 (1U << DMA_IFCR_CGIF3_BIT) -#define DMA_IFCR_CTEIF2 (1U << DMA_IFCR_CTEIF2_BIT) -#define DMA_IFCR_CHTIF2 (1U << DMA_IFCR_CHTIF2_BIT) -#define DMA_IFCR_CTCIF2 (1U << DMA_IFCR_CTCIF2_BIT) -#define DMA_IFCR_CGIF2 (1U << DMA_IFCR_CGIF2_BIT) -#define DMA_IFCR_CTEIF1 (1U << DMA_IFCR_CTEIF1_BIT) -#define DMA_IFCR_CHTIF1 (1U << DMA_IFCR_CHTIF1_BIT) -#define DMA_IFCR_CTCIF1 (1U << DMA_IFCR_CTCIF1_BIT) -#define DMA_IFCR_CGIF1 (1U << DMA_IFCR_CGIF1_BIT) - -/* Channel configuration register */ - -#define DMA_CCR_MEM2MEM_BIT 14 -#define DMA_CCR_MINC_BIT 7 -#define DMA_CCR_PINC_BIT 6 -#define DMA_CCR_CIRC_BIT 5 -#define DMA_CCR_DIR_BIT 4 -#define DMA_CCR_TEIE_BIT 3 -#define DMA_CCR_HTIE_BIT 2 -#define DMA_CCR_TCIE_BIT 1 -#define DMA_CCR_EN_BIT 0 - -#define DMA_CCR_MEM2MEM (1U << DMA_CCR_MEM2MEM_BIT) -#define DMA_CCR_PL (0x3 << 12) -#define DMA_CCR_PL_LOW (0x0 << 12) -#define DMA_CCR_PL_MEDIUM (0x1 << 12) -#define DMA_CCR_PL_HIGH (0x2 << 12) -#define DMA_CCR_PL_VERY_HIGH (0x3 << 12) -#define DMA_CCR_MSIZE (0x3 << 10) -#define DMA_CCR_MSIZE_8BITS (0x0 << 10) -#define DMA_CCR_MSIZE_16BITS (0x1 << 10) -#define DMA_CCR_MSIZE_32BITS (0x2 << 10) -#define DMA_CCR_PSIZE (0x3 << 8) -#define DMA_CCR_PSIZE_8BITS (0x0 << 8) -#define DMA_CCR_PSIZE_16BITS (0x1 << 8) -#define DMA_CCR_PSIZE_32BITS (0x2 << 8) -#define DMA_CCR_MINC (1U << DMA_CCR_MINC_BIT) -#define DMA_CCR_PINC (1U << DMA_CCR_PINC_BIT) -#define DMA_CCR_CIRC (1U << DMA_CCR_CIRC_BIT) -#define DMA_CCR_DIR (1U << DMA_CCR_DIR_BIT) -#define DMA_CCR_DIR_FROM_PER (0U << DMA_CCR_DIR_BIT) -#define DMA_CCR_DIR_FROM_MEM (1U << DMA_CCR_DIR_BIT) -#define DMA_CCR_TEIE (1U << DMA_CCR_TEIE_BIT) -#define DMA_CCR_HTIE (1U << DMA_CCR_HTIE_BIT) -#define DMA_CCR_TCIE (1U << DMA_CCR_TCIE_BIT) -#define DMA_CCR_EN (1U << DMA_CCR_EN_BIT) - -/* - * Devices - */ - -extern dma_dev *DMA1; -extern dma_dev *DMA2; - -/* - * Other types needed by, or useful for, . - */ - -/** - * @brief STM32F3 dma_tube. - * On STM32F3, DMA tubes are just channels. - */ -#define dma_tube dma_channel - -/** - * @brief On STM32F3, dma_channel_reg_map is an alias for dma_tube_reg_map. - * This is for backwards compatibility. */ -#define dma_channel_reg_map dma_tube_reg_map - -/** - * @brief STM32F3 configuration flags for dma_tube_config - * @see struct dma_tube_config - */ -typedef enum dma_cfg_flags { - /** - * Source address increment mode - * - * If this flag is set, the source address is incremented (by the - * source size) after each DMA transfer. - */ - DMA_CFG_SRC_INC = 1U << 31, - - /** - * Destination address increment mode - * - * If this flag is set, the destination address is incremented (by - * the destination size) after each DMA transfer. - */ - DMA_CFG_DST_INC = 1U << 30, - - /** - * Circular mode - * - * This mode is not available for memory-to-memory transfers. - */ - DMA_CFG_CIRC = DMA_CCR_CIRC, - - /** Transfer complete interrupt enable */ - DMA_CFG_CMPLT_IE = DMA_CCR_TCIE, - /** Transfer half-complete interrupt enable */ - DMA_CFG_HALF_CMPLT_IE = DMA_CCR_HTIE, - /** Transfer error interrupt enable */ - DMA_CFG_ERR_IE = DMA_CCR_TEIE, -} dma_cfg_flags; - -/** - * @brief STM32F3 DMA request sources. - * - * IMPORTANT: - * - * 1. On STM32F3, each dma_request_src can only be used by a - * particular tube on a particular DMA controller. For example, - * DMA_REQ_SRC_ADC1 belongs to DMA1, tube 1. DMA2 cannot serve - * requests from ADC1, nor can DMA1 tube 2, etc. If you try to use a - * request source with the wrong DMA controller or tube on STM32F3, - * dma_tube_cfg() will fail. - * - * 2. In general, a DMA tube can only serve a single request source at - * a time, and on STM32F3, Terrible Super-Bad Things will happen if - * two request sources are active for a single tube. - * - * To make all this easier to sort out, these dma_request_src - * enumerators are grouped by DMA controller and tube. - * - * @see struct dma_tube_config - * @see dma_tube_cfg() - */ -typedef enum dma_request_src { - /* Each request source encodes the DMA controller and channel it - * belongs to, for error checking in dma_tube_cfg(). */ - - /* DMA1 request sources */ - - /**@{*/ - /** (DMA1, tube 1) */ - DMA_REQ_SRC_ADC1 = (RCC_DMA1 << 3) | 1, - DMA_REQ_SRC_TIM2_CH3 = (RCC_DMA1 << 3) | 1, - DMA_REQ_SRC_TIM4_CH1 = (RCC_DMA1 << 3) | 1, - DMA_REQ_SRC_TIM17_CH1 = (RCC_DMA1 << 3) | 1, - DMA_REQ_SRC_TIM17_UP = (RCC_DMA1 << 3) | 1, - /**@}*/ - - /**@{*/ - /** (DMA1, tube 2)*/ - DMA_REQ_SRC_SPI1_RX = (RCC_DMA1 << 3) | 2, - DMA_REQ_SRC_USART3_TX = (RCC_DMA1 << 3) | 2, - DMA_REQ_SRC_TIM1_CH1 = (RCC_DMA1 << 3) | 2, - DMA_REQ_SRC_TIM2_UP = (RCC_DMA1 << 3) | 2, - DMA_REQ_SRC_TIM3_CH3 = (RCC_DMA1 << 3) | 2, - /**@}*/ - - /**@{*/ - /** (DMA1, tube 3)*/ - DMA_REQ_SRC_SPI1_TX = (RCC_DMA1 << 3) | 3, - DMA_REQ_SRC_USART3_RX = (RCC_DMA1 << 3) | 3, - DMA_REQ_SRC_TIM1_CH2 = (RCC_DMA1 << 3) | 3, - DMA_REQ_SRC_TIM3_CH4 = (RCC_DMA1 << 3) | 3, - DMA_REQ_SRC_TIM3_UP = (RCC_DMA1 << 3) | 3, - /*DMA_REQ_SRC_TIM6_UP = (RCC_DMA1 << 3) | 3,*/ /* remap in SYSCFGR */ - /*DMA_REQ_SRC_DAC_CH1 = (RCC_DMA1 << 3) | 3,*/ /* remap in SYSCFGR */ - DMA_REQ_SRC_TIM16_CH1 = (RCC_DMA1 << 3) | 3, - DMA_REQ_SRC_TIM16_UP = (RCC_DMA1 << 3) | 3, - /**@}*/ - - /**@{*/ - /** (DMA1, tube 4)*/ - DMA_REQ_SRC_SPI2_RX = (RCC_DMA1 << 3) | 4, - DMA_REQ_SRC_USART1_TX = (RCC_DMA1 << 3) | 4, - DMA_REQ_SRC_I2C2_TX = (RCC_DMA1 << 3) | 4, - DMA_REQ_SRC_TIM1_CH4 = (RCC_DMA1 << 3) | 4, - DMA_REQ_SRC_TIM1_TRIG = (RCC_DMA1 << 3) | 4, - DMA_REQ_SRC_TIM1_COM = (RCC_DMA1 << 3) | 4, - DMA_REQ_SRC_TIM4_CH2 = (RCC_DMA1 << 3) | 4, - /*DMA_REQ_SRC_TIM7_UP = (RCC_DMA1 << 3) | 4,*/ /* remap in SYSCFGR */ - /*DMA_REQ_SRC_DAC_CH2 = (RCC_DMA1 << 3) | 4,*/ /* remap in SYSCFGR */ - /**@}*/ - - /**@{*/ - /** (DMA1, tube 5)*/ - DMA_REQ_SRC_SPI2_TX = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_USART1_RX = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_I2C2_RX = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_TIM1_UP = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_TIM2_CH1 = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_TIM4_CH3 = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_TIM15_CH1 = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_TIM15_UP = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_TIM15_TRIG = (RCC_DMA1 << 3) | 5, - DMA_REQ_SRC_TIM15_COM = (RCC_DMA1 << 3) | 5, - /**@}*/ - - /**@{*/ - /** (DMA1, tube 6)*/ - DMA_REQ_SRC_USART2_RX = (RCC_DMA1 << 3) | 6, - DMA_REQ_SRC_I2C1_TX = (RCC_DMA1 << 3) | 6, - DMA_REQ_SRC_TIM1_CH3 = (RCC_DMA1 << 3) | 6, - DMA_REQ_SRC_TIM3_CH1 = (RCC_DMA1 << 3) | 6, - DMA_REQ_SRC_TIM3_TRIG = (RCC_DMA1 << 3) | 6, - /*DMA_REQ_SRC_TIM16_CH1 = (RCC_DMA1 << 3) | 6,*/ /* remap in SYSCFGR */ - /*DMA_REQ_SRC_TIM16_UP = (RCC_DMA1 << 3) | 6,*/ /* remap in SYSCFGR */ - /**@}*/ - - /**@{*/ - /* Tube 7 */ - DMA_REQ_SRC_USART2_TX = (RCC_DMA1 << 3) | 7, - DMA_REQ_SRC_I2C1_RX = (RCC_DMA1 << 3) | 7, - DMA_REQ_SRC_TIM2_CH2 = (RCC_DMA1 << 3) | 7, - DMA_REQ_SRC_TIM2_CH4 = (RCC_DMA1 << 3) | 7, - DMA_REQ_SRC_TIM4_UP = (RCC_DMA1 << 3) | 7, - /**@}*/ - - /* DMA2 request sources */ - - /**@{*/ - /** (DMA2, tube 1)*/ - DMA_REQ_SRC_ADC2 = (RCC_DMA2 << 3) | 1, - DMA_REQ_SRC_SPI3_RX = (RCC_DMA2 << 3) | 1, - DMA_REQ_SRC_TIM8_CH3 = (RCC_DMA2 << 3) | 1, - DMA_REQ_SRC_TIM8_UP = (RCC_DMA2 << 3) | 1, - /**@}*/ - - /**@{*/ - /** (DMA2, tube 2)*/ - DMA_REQ_SRC_ADC4 = (RCC_DMA2 << 3) | 2, - DMA_REQ_SRC_SPI3_TX = (RCC_DMA2 << 3) | 2, - DMA_REQ_SRC_TIM8_CH4 = (RCC_DMA2 << 3) | 2, - DMA_REQ_SRC_TIM8_TRIG = (RCC_DMA2 << 3) | 2, - DMA_REQ_SRC_TIM8_COM = (RCC_DMA2 << 3) | 2, - /**@}*/ - - /**@{*/ - /** (DMA2, tube 3)*/ - /* DMA_REQ_SRC_ADC2 = (RCC_DMA2 << 3) | 3,*/ /* remap in SYSCFGR */ - DMA_REQ_SRC_UART4_RX = (RCC_DMA2 << 3) | 3, - DMA_REQ_SRC_TIM6_UP = (RCC_DMA2 << 3) | 3, - DMA_REQ_SRC_DAC1_CH1 = (RCC_DMA2 << 3) | 3, - DMA_REQ_SRC_TIM8_CH1 = (RCC_DMA2 << 3) | 3, - /**@}*/ - - /**@{*/ - /** (DMA2, tube 4)*/ - /*DMA_REQ_SRC_ADC4 = (RCC_DMA2 << 3) | 4,*/ /* remap in SYSCFGR */ - DMA_REQ_SRC_TIM7_UP = (RCC_DMA2 << 3) | 4, - DMA_REQ_SRC_DAC1_CH2 = (RCC_DMA2 << 3) | 4, - /**@}*/ - - /**@{*/ - /** (DMA2, tube 5)*/ - DMA_REQ_SRC_ADC3 = (RCC_DMA2 << 3) | 5, - DMA_REQ_SRC_UART4_TX = (RCC_DMA2 << 3) | 5, - DMA_REQ_SRC_TIM8_CH2 = (RCC_DMA2 << 3) | 5, - /**@}*/ -} dma_request_src; - -/* - * Convenience routines. - */ - -/** - * @brief On STM32F3, dma_is_channel_enabled() is an alias for - * dma_is_enabled(). - * This is for backwards compatibility. - */ -#define dma_is_channel_enabled dma_is_enabled - -#define DMA_CHANNEL_NREGS 5 /* accounts for reserved word */ -static inline dma_tube_reg_map* dma_tube_regs(dma_dev *dev, dma_tube tube) { - __IO uint32 *ccr1 = &dev->regs->CCR1; - return (dma_channel_reg_map*)(ccr1 + DMA_CHANNEL_NREGS * (tube - 1)); -} - -/** - * @brief On STM32F3, dma_channel_regs() is an alias for dma_tube_regs(). - * This is for backwards compatibility. */ -#define dma_channel_regs(dev, ch) dma_tube_regs(dev, ch) - -static inline uint8 dma_is_enabled(dma_dev *dev, dma_tube tube) { - return (uint8)(dma_tube_regs(dev, tube)->CCR & DMA_CCR_EN); -} - -static inline uint8 dma_get_isr_bits(dma_dev *dev, dma_tube tube) { - uint8 shift = (tube - 1) * 4; - return (dev->regs->ISR >> shift) & 0xF; -} - -static inline void dma_clear_isr_bits(dma_dev *dev, dma_tube tube) { - dev->regs->IFCR = (1U << (4 * (tube - 1))); -} - -#ifdef __cplusplus -} // extern "C" -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/exti.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/exti.h deleted file mode 100644 index 05ed1e6e9..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/exti.h +++ /dev/null @@ -1,49 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/exti.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 external interrupts - */ - -#ifndef _LIBMAPLE_STM32F3_EXTI_H_ -#define _LIBMAPLE_STM32F3_EXTI_H_ - -#ifdef __cpluspus -extern "C" { -#endif - -//FIXME F3 has up to 36 EXTIs, expose and handle internal EXTIs 16-35 -struct exti_reg_map; -#define EXTI_BASE ((struct exti_reg_map*)0x40010400) - -#ifdef __cpluspus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h deleted file mode 100644 index 8bc6114eb..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/flash.h +++ /dev/null @@ -1,164 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/flash.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 Flash header. - * - * Provides register map, base pointer, and register bit definitions - * for the Flash controller on the STM32F3 line, along with - * series-specific configuration values. - */ - -#ifndef _LIBMAPLE_STM32F3_FLASH_H_ -#define _LIBMAPLE_STM32F3_FLASH_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* - * Register map - */ - -/** @brief STM32F3 Flash register map type */ -typedef struct flash_reg_map { - __IO uint32 ACR; /**< Access control register */ - __IO uint32 KEYR; /**< Key register */ - __IO uint32 OPTKEYR; /**< OPTKEY register */ - __IO uint32 SR; /**< Status register */ - __IO uint32 CR; /**< Control register */ - __IO uint32 AR; /**< Address register */ - __IO uint32 OBR; /**< Option byte register */ - __IO uint32 WRPR; /**< Write protection register */ -} flash_reg_map; - -#define FLASH_BASE ((struct flash_reg_map*)0x40022000) - -/* - * Register bit definitions - */ - -/* Access control register */ - -#define FLASH_ACR_PRFTBS_BIT 5 -#define FLASH_ACR_PRFTBE_BIT 4 -#define FLASH_ACR_HLFCYA_BIT 3 - -#define FLASH_ACR_PRFTBS (1U << FLASH_ACR_PRFTBS_BIT) -#define FLASH_ACR_PRFTBE (1U << FLASH_ACR_PRFTBE_BIT) -#define FLASH_ACR_HLFCYA (1U << FLASH_ACR_HLFCYA_BIT) -#define FLASH_ACR_LATENCY 0x7 - -/* Status register */ - -#define FLASH_SR_EOP_BIT 5 -#define FLASH_SR_WRPRTERR_BIT 4 -#define FLASH_SR_PGERR_BIT 2 -#define FLASH_SR_BSY_BIT 0 - -#define FLASH_SR_EOP (1U << FLASH_SR_EOP_BIT) -#define FLASH_SR_WRPRTERR (1U << FLASH_SR_WRPRTERR_BIT) -#define FLASH_SR_PGERR (1U << FLASH_SR_PGERR_BIT) -#define FLASH_SR_BSY (1U << FLASH_SR_BSY_BIT) - -/* Control register */ - -#define FLASH_CR_OBL_LAUNCH_BIT 13 -#define FLASH_CR_EOPIE_BIT 12 -#define FLASH_CR_ERRIE_BIT 10 -#define FLASH_CR_OPTWRE_BIT 9 -#define FLASH_CR_LOCK_BIT 7 -#define FLASH_CR_STRT_BIT 6 -#define FLASH_CR_OPTER_BIT 5 -#define FLASH_CR_OPTPG_BIT 4 -#define FLASH_CR_MER_BIT 2 -#define FLASH_CR_PER_BIT 1 -#define FLASH_CR_PG_BIT 0 - -#define FLASH_CR_OBL_LAUNCH (1U << FLASH_CR_OBL_LAUNCH_BIT) -#define FLASH_CR_EOPIE (1U << FLASH_CR_EOPIE_BIT) -#define FLASH_CR_ERRIE (1U << FLASH_CR_ERRIE_BIT) -#define FLASH_CR_OPTWRE (1U << FLASH_CR_OPTWRE_BIT) -#define FLASH_CR_LOCK (1U << FLASH_CR_LOCK_BIT) -#define FLASH_CR_STRT (1U << FLASH_CR_STRT_BIT) -#define FLASH_CR_OPTER (1U << FLASH_CR_OPTER_BIT) -#define FLASH_CR_OPTPG (1U << FLASH_CR_OPTPG_BIT) -#define FLASH_CR_MER (1U << FLASH_CR_MER_BIT) -#define FLASH_CR_PER (1U << FLASH_CR_PER_BIT) -#define FLASH_CR_PG (1U << FLASH_CR_PG_BIT) - -/* Option byte register */ - -#define FLASH_OBR_DATA1_SHIFT 24 -#define FLASH_OBR_DATA0_SHIFT 16 -#define FLASH_OBR_BYTE_SHIFT 8 -#define FLASH_OBR_SRAM_PE_BIT 14 -#define FLASH_OBR_VDDA_MONITOR_BIT 13 -#define FLASH_OBR_nBOOT1_BIT 12 -#define FLASH_OBR_nRST_STDBY_BIT 10 -#define FLASH_OBR_nRST_STOP_BIT 9 -#define FLASH_OBR_WDG_SW_BIT 8 -#define FLASH_OBR_RDPRT_SHIFT 1 -#define FLASH_OBR_OPTERR_BIT 0 - -#define FLASH_OBR_DATA1 (0xFF << FLASH_OBR_DATA1_SHIFT) -#define FLASH_OBR_DATA0 (0xFF << FLASH_OBR_DATA0_SHIFT) -#define FLASH_OBR_BYTE (0xFF << FLASH_OBR_BYTE_SHIFT) -#define FLASH_OBR_SRAM_PE_STDBY (1U << FLASH_OBR_SRAM_PE_STDBY_BIT) -#define FLASH_OBR_VDDA_MONITOR_STDBY (1U << FLASH_OBR_VDDA_MONITOR_STDBY_BIT) -#define FLASH_OBR_nBOOT1_STDBY (1U << FLASH_OBR_nBOOT1_STDBY_BIT) -#define FLASH_OBR_nRST_STDBY (1U << FLASH_OBR_nRST_STDBY_BIT) -#define FLASH_OBR_nRST_STOP (1U << FLASH_OBR_nRST_STOP_BIT) -#define FLASH_OBR_WDG_SW (1U << FLASH_OBR_WDG_SW_BIT) -#define FLASH_OBR_RDPRT (0x3 << FLASH_OBR_RDPRT_SHIFT) -#define FLASH_OBR_OPTERR (1U << FLASH_OBR_OPTERR_BIT) - -/* - * Series-specific configuration values. - */ - -#define FLASH_SAFE_WAIT_STATES FLASH_WAIT_STATE_2 - -/* Flash memory features available via ACR */ -enum { - FLASH_PREFETCH = 0x10, - FLASH_HALF_CYCLE = 0x8, - FLASH_ICACHE = 0x0, /* Not available on STM32F3 */ - FLASH_DCACHE = 0x0, /* Not available on STM32F3 */ -}; - -/* TODO add routines for option byte handling, e.g. nBoot1 */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h deleted file mode 100644 index ee5d5c1b5..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/fpu.h +++ /dev/null @@ -1,65 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/fpu.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 Floating Point Unit support. - */ - -#ifndef _LIBMAPLE_STM32F3_FPU_H_ -#define _LIBMAPLE_STM32F3_FPU_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include - -/* - * FPU register maps and devices - */ - -/** FPU register map type */ -typedef struct fpu_reg_map { - __IO uint32 CPACR; /**< coprocessor access control register */ - __IO uint32 FPCCR; /**< floating-point context control register */ - __IO uint32 FPCAR; /**< floating-point context address register */ - __IO uint32 FPDSCR; /**< floating-point default status control register */ -} fpu_reg_map; - -#define FPU_BASE ((struct fpu_reg_map*)(SCB_BASE + 0x88)) - -/* TODO - * give registry bitfields here - */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h deleted file mode 100644 index 268c9c2f5..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/gpio.h +++ /dev/null @@ -1,255 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/gpio.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 GPIO support. - */ - -#ifndef _LIBMAPLE_STM32F3_GPIO_H_ -#define _LIBMAPLE_STM32F3_GPIO_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* - * GPIO register maps and devices - */ - -/** GPIO register map type */ -typedef struct gpio_reg_map { - __IO uint32 MODER; /**< Mode register */ - __IO uint32 OTYPER; /**< Output type register */ - __IO uint32 OSPEEDR; /**< Output speed register */ - __IO uint32 PUPDR; /**< Pull-up/pull-down register */ - __IO uint32 IDR; /**< Input data register */ - __IO uint32 ODR; /**< Output data register */ - __IO uint32 BSRR; /**< Bit set/reset register */ - __IO uint32 LCKR; /**< Configuration lock register */ - __IO uint32 AFRL; /**< Alternate function low register */ - __IO uint32 AFRH; /**< Alternate function high register */ - __IO uint32 BRR; /**< Port bit reset register */ -} gpio_reg_map; - -/** GPIO port A register map base pointer */ -#define GPIOA_BASE ((struct gpio_reg_map*)0x48000000) -/** GPIO port B register map base pointer */ -#define GPIOB_BASE ((struct gpio_reg_map*)0x48000400) -/** GPIO port C register map base pointer */ -#define GPIOC_BASE ((struct gpio_reg_map*)0x48000800) -/** GPIO port D register map base pointer */ -#define GPIOD_BASE ((struct gpio_reg_map*)0x48000C00) -/** GPIO port E register map base pointer */ -#define GPIOE_BASE ((struct gpio_reg_map*)0x48001000) -/** GPIO port F register map base pointer */ -#define GPIOF_BASE ((struct gpio_reg_map*)0x48001400) - -struct gpio_dev; -extern struct gpio_dev* const GPIOA; -extern struct gpio_dev gpioa; -extern struct gpio_dev* const GPIOB; -extern struct gpio_dev gpiob; -extern struct gpio_dev* const GPIOC; -extern struct gpio_dev gpioc; -extern struct gpio_dev* const GPIOD; -extern struct gpio_dev gpiod; -extern struct gpio_dev* const GPIOE; -extern struct gpio_dev gpioe; -extern struct gpio_dev* const GPIOF; -extern struct gpio_dev gpiof; - -/* - * Register bit definitions - * - * Currently, we only provide masks to be used for shifting for some - * registers, rather than repeating the same values 16 times. - */ - -/* Mode register */ - -#define GPIO_MODER_INPUT 0x0 -#define GPIO_MODER_OUTPUT 0x1 -#define GPIO_MODER_AF 0x2 -#define GPIO_MODER_ANALOG 0x3 - -/* Output type register */ - -#define GPIO_OTYPER_PP 0x0 -#define GPIO_OTYPER_OD 0x1 - -/* Output speed register */ - -#define GPIO_OSPEEDR_LOW 0x0 -#define GPIO_OSPEEDR_MED 0x1 -#define GPIO_OSPEEDR_FAST 0x2 -#define GPIO_OSPEEDR_HIGH 0x3 - -/* Pull-up/pull-down register */ - -#define GPIO_PUPDR_NOPUPD 0x0 -#define GPIO_PUPDR_PU 0x1 -#define GPIO_PUPDR_PD 0x2 - -/* Alternate function register low */ - -#define GPIO_AFRL_AF0 (0xFU << 0) -#define GPIO_AFRL_AF1 (0xFU << 4) -#define GPIO_AFRL_AF2 (0xFU << 8) -#define GPIO_AFRL_AF3 (0xFU << 12) -#define GPIO_AFRL_AF4 (0xFU << 16) -#define GPIO_AFRL_AF5 (0xFU << 20) -#define GPIO_AFRL_AF6 (0xFU << 24) -#define GPIO_AFRL_AF7 (0xFU << 28) - -/* Alternate function register high */ - -#define GPIO_AFRH_AF8 (0xFU << 0) -#define GPIO_AFRH_AF9 (0xFU << 4) -#define GPIO_AFRH_AF10 (0xFU << 8) -#define GPIO_AFRH_AF11 (0xFU << 12) -#define GPIO_AFRH_AF12 (0xFU << 16) -#define GPIO_AFRH_AF13 (0xFU << 20) -#define GPIO_AFRH_AF14 (0xFU << 24) -#define GPIO_AFRH_AF15 (0xFU << 28) - -/* - * GPIO routines - */ - -/** - * @brief GPIO pin modes - */ -typedef enum gpio_pin_mode { - GPIO_MODE_INPUT = GPIO_MODER_INPUT, /**< Input mode */ - GPIO_MODE_OUTPUT = GPIO_MODER_OUTPUT, /**< Output mode */ - GPIO_MODE_AF = GPIO_MODER_AF, /**< Alternate function mode */ - GPIO_MODE_ANALOG = GPIO_MODER_ANALOG, /**< Analog mode */ -} gpio_pin_mode; - -/** - * @brief Additional flags to be used when setting a pin's mode. - * - * Beyond the basic modes (input, general purpose output, alternate - * function, and analog), there are three parameters that can affect a - * pin's mode: - * - * 1. Output type: push/pull or open-drain. This only has an effect - * for output modes. Choices are: GPIO_MODEF_TYPE_PP (the default) - * and GPIO_MODEF_TYPE_OD. - * - * 2. Output speed: specifies the frequency at which a pin changes - * state. This only has an effect for output modes. Choices are: - * GPIO_MODEF_SPEED_LOW (default), GPIO_MODEF_SPEED_MED, - * GPIO_MODEF_SPEED_FAST, and GPIO_MODEF_SPEED_HIGH. - * - * 3. Push/pull setting: All GPIO pins have weak pull-up and pull-down - * resistors that can be enabled when the pin's mode is - * set. Choices are: GPIO_MODEF_PUPD_NONE (default), - * GPIO_MODEF_PUPD_PU, and GPIO_MODEF_PUPD_PD. - */ -typedef enum gpio_mode_flags { - /* Output type in bit 0 */ - GPIO_MODEF_TYPE_PP = GPIO_OTYPER_PP, /**< Output push/pull (default). - Applies only when the mode - specifies output. */ - GPIO_MODEF_TYPE_OD = GPIO_OTYPER_OD, /**< Output open drain. - Applies only when the mode - specifies output. */ - - /* Speed in bits 2:1 */ - GPIO_MODEF_SPEED_LOW = GPIO_OSPEEDR_LOW << 1, /**< Low speed (default): - 2 MHz. */ - GPIO_MODEF_SPEED_MED = GPIO_OSPEEDR_MED << 1, /**< Medium speed: 25 MHz. */ - GPIO_MODEF_SPEED_FAST = GPIO_OSPEEDR_FAST << 1, /**< Fast speed: 50 MHz. */ - GPIO_MODEF_SPEED_HIGH = GPIO_OSPEEDR_HIGH << 1, /**< High speed: FIXME one of those does not exist on the F3 - 100 MHz on 30 pF, - 80 MHz on 15 pF. */ - - /* Pull-up/pull-down in bits 4:3 */ - GPIO_MODEF_PUPD_NONE = GPIO_PUPDR_NOPUPD << 3, /**< No pull-up/pull-down - (default). */ - GPIO_MODEF_PUPD_PU = GPIO_PUPDR_PU << 3, /**< Pull-up */ - GPIO_MODEF_PUPD_PD = GPIO_PUPDR_PD << 3, /**< Pull-down */ -} gpio_mode_flags; - -void gpio_set_modef(struct gpio_dev *dev, - uint8 bit, - gpio_pin_mode mode, - unsigned flags); - -/** - * @brief Set the mode of a GPIO pin. - * - * Calling this function is equivalent to calling gpio_set_modef(dev, - * pin, mode, GPIO_MODE_SPEED_HIGH). Note that this overrides the - * default speed. - * - * @param dev GPIO device. - * @param bit Bit on the device whose mode to set, 0--15. - * @param mode Mode to set the pin to. - */ -static inline void gpio_set_mode(struct gpio_dev *dev, - uint8 bit, - gpio_pin_mode mode) { - gpio_set_modef(dev, bit, mode, GPIO_MODEF_SPEED_HIGH); -} - -/** - * @brief GPIO alternate functions. - * Use these to select an alternate function for a pin. - * @see gpio_set_af() - */ -typedef enum gpio_af { - GPIO_AF_0 = 0x0, /**< alternate function 0. */ - GPIO_AF_1 = 0x1, /**< alternate function 1. */ - GPIO_AF_2 = 0x2, /**< alternate function 2. */ - GPIO_AF_3 = 0x3, /**< alternate function 3. */ - GPIO_AF_4 = 0x4, /**< alternate function 4. */ - GPIO_AF_5 = 0x5, /**< alternate function 5. */ - GPIO_AF_6 = 0x6, /**< alternate function 6. */ - GPIO_AF_7 = 0x7, /**< alternate function 7. */ - GPIO_AF_8 = 0x8, /**< alternate function 8. */ - GPIO_AF_9 = 0x9, /**< alternate function 9. */ - GPIO_AF_10 = 0xA, /**< alternate function 10. */ - GPIO_AF_11 = 0xB, /**< alternate function 11. */ - GPIO_AF_12 = 0xC, /**< alternate function 12. */ - GPIO_AF_13 = 0xD, /**< alternate function 13. */ - GPIO_AF_14 = 0xE, /**< alternate function 14. */ - GPIO_AF_15 = 0xF, /**< alternate function 14. */ -} gpio_af; - -void gpio_set_af(struct gpio_dev *dev, uint8 bit, gpio_af af); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h deleted file mode 100644 index ef1b0ff5e..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/i2c.h +++ /dev/null @@ -1,315 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/i2c.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 I2C - */ - -#ifndef _LIBMAPLE_STM32F3_I2C_H_ -#define _LIBMAPLE_STM32F3_I2C_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include -#include - -/* - * Register maps - */ - -/** I2C register map type */ -typedef struct i2c_reg_map { - __IO uint32 CR1; /**< Control register 1 */ - __IO uint32 CR2; /**< Control register 2 */ - __IO uint32 OAR1; /**< Own address register 1 */ - __IO uint32 OAR2; /**< Own address register 2 */ - __IO uint32 TIMINGR; /**< Timing register */ - __IO uint32 TIMEOUTR; /**< Timeout register */ - __IO uint32 ISR; /**< Interrupt and status register */ - __IO uint32 ICR; /**< Interrupt clear register */ - __IO uint32 PECR; /**< PEC register */ - __IO uint32 RXDR; /**< Receive data register */ - __IO uint32 TXDR; /**< Transmit data register */ -} i2c_reg_map; - -extern i2c_dev* const I2C1; -extern i2c_dev* const I2C2; - -/* - * Register map base pointers - */ - -/** STM32F3 I2C1 register map base pointer */ -#define I2C1_BASE ((struct i2c_reg_map*)0x40005400) -/** STM32F3 I2C2 register map base pointer */ -#define I2C2_BASE ((struct i2c_reg_map*)0x40005800) - -/* - * Register bit definitions - */ - -/* Control register 1 */ -#define I2C_CR1_PECEN_BIT 23 -#define I2C_CR1_ALERTEN_BIT 22 -#define I2C_CR1_SMBDEN_BIT 21 -#define I2C_CR1_SMBHEN_BIT 20 -#define I2C_CR1_GCEN_BIT 19 -#define I2C_CR1_WUPEN_BIT 18 -#define I2C_CR1_NOSTRETCH_BIT 17 -#define I2C_CR1_SBC_BIT 16 -#define I2C_CR1_RXDMAEN_BIT 15 -#define I2C_CR1_TXDMAEN_BIT 14 -#define I2C_CR1_ANFOFF_BIT 12 -#define I2C_CR1_DNF_SHIFT 8 -#define I2C_CR1_ERRIE_BIT 7 -#define I2C_CR1_TCIE_BIT 6 -#define I2C_CR1_STOPIE_BIT 5 -#define I2C_CR1_NACKIE_BIT 4 -#define I2C_CR1_ADDRIE_BIT 3 -#define I2C_CR1_RXIE_BIT 2 -#define I2C_CR1_TXIE_BIT 1 -#define I2C_CR1_PE_BIT 0 - -#define I2C_CR1_PECEN (1U << I2C_CR1_PECEN_BIT) -#define I2C_CR1_ALERTEN (1U << I2C_CR1_ALERTEN_BIT) -#define I2C_CR1_SMBDEN (1U << I2C_CR1_SMBDEN_BIT) -#define I2C_CR1_SMBHEN (1U << I2C_CR1_SMBHEN_BIT) -#define I2C_CR1_GCEN (1U << I2C_CR1_GCEN_BIT) -#define I2C_CR1_WUPEN (1U << I2C_CR1_WUPEN_BIT) -#define I2C_CR1_NOSTRETCH (1U << I2C_CR1_NOSTRETCH_BIT) -#define I2C_CR1_SBC (1U << I2C_CR1_SBC_BIT) -#define I2C_CR1_RXDMAEN (1U << I2C_CR1_RXDMAEN_BIT) -#define I2C_CR1_TXDMAEN (1U << I2C_CR1_TXDMAEN_BIT) -#define I2C_CR1_ANFOFF (1U << I2C_CR1_ANFOFF_BIT) -#define I2C_CR1_DNF (0xF << I2C_CR1_DNF_SHIFT) -#define I2C_CR1_ERRIE (1U << I2C_CR1_ERRIE_BIT) -#define I2C_CR1_TCIE (1U << I2C_CR1_TCIE_BIT) -#define I2C_CR1_STOPIE (1U << I2C_CR1_STOPIE_BIT) -#define I2C_CR1_NACKIE (1U << I2C_CR1_NACKIE_BIT) -#define I2C_CR1_ADDRIE (1U << I2C_CR1_ADDRIE_BIT) -#define I2C_CR1_RXIE (1U << I2C_CR1_RXIE_BIT) -#define I2C_CR1_TXIE (1U << I2C_CR1_TXIE_BIT) -#define I2C_CR1_PE (1U << I2C_CR1_PE_BIT) - -/* Control register 2 */ -#define I2C_CR2_PECBYTE_BIT 26 -#define I2C_CR2_AUTOEND_BIT 25 -#define I2C_CR2_RELOAD_BIT 24 -#define I2C_CR2_NBYTES_SHIFT 16 -#define I2C_CR2_NACK_BIT 15 -#define I2C_CR2_STOP_BIT 14 -#define I2C_CR2_START_BIT 13 -#define I2C_CR2_HEAD10R_BIT 12 -#define I2C_CR2_ADD10_BIT 11 -#define I2C_CR2_RD_WRN_BIT 10 -#define I2C_CR2_SADD_7_BIT_SHIFT 1 -#define I2C_CR2_SADD_10_BIT_SHIFT 0 - -#define I2C_CR2_PECBYTE (1U << I2C_CR2_PECBYTE_BIT) -#define I2C_CR2_AUTOEND (1U << I2C_CR2_AUTOEND_BIT) -#define I2C_CR2_RELOAD (1U << I2C_CR2_RELOAD_BIT) -#define I2C_CR2_NBYTES (0xFF << I2C_CR2_NBYTES_SHIFT) -#define I2C_CR2_NACK (1U << I2C_CR2_NACK_BIT) -#define I2C_CR2_STOP (1U << I2C_CR2_STOP_BIT) -#define I2C_CR2_START (1U << I2C_CR2_START_BIT) -#define I2C_CR2_HEAD10R (1U << I2C_CR2_HEAD10R_BIT) -#define I2C_CR2_ADD10 (1U << I2C_CR2_ADD10_BIT) -#define I2C_CR2_RD_WRN (1U << I2C_CR2_RD_WRN_BIT) -#define I2C_CR2_SADD_7_BIT (0x7F << I2C_CR2_SADD_7_BIT_SHIFT) -#define I2C_CR2_SADD_10_BIT (0x3FF << I2C_CR2_SADD_10_BIT_SHIFT) - -/* Own address register 1 */ -#define I2C_OAR1_OA1EN_BIT 15 -#define I2C_OAR1_OA1MODE_BIT 10 -#define I2C_OAR1_OA1_7_BIT_SHIFT 1 -#define I2C_OAR1_OA1_10_BIT_SHIFT 0 - -#define I2C_OAR1_OA1EN (1U << I2C_OAR1_OA1EN_BIT) -#define I2C_OAR1_OA1MODE (1U << I2C_OAR1_OA1MODE_BIT) -#define I2C_OAR1_OA1_7_BIT (0x7F << I2C_OAR1_OA1_7_BIT_SHIFT) -#define I2C_OAR1_OA1_10_BIT (0x3FF << I2C_OAR1_OA1_10_BIT_SHIFT) - -/* Own address register 2 */ -#define I2C_OAR2_OA2EN_BIT 15 -#define I2C_OAR2_OA2MSK_SHIFT 8 -#define I2C_OAR2_OA2_7_BIT_SHIFT 1 - -#define I2C_OAR2_OA2EN (1U << I2C_OAR2_OA2EN_BIT) -#define I2C_OAR2_OA2MSK (0x7 << I2C_OAR2_OA2MSK_SHIFT) -#define I2C_OAR2_OA2_7_BIT (0x7F << I2C_OAR2_OA2_7_BIT_SHIFT) - -/* Timing register */ -#define I2C_TIMINGR_PRESC_SHIFT 28 -#define I2C_TIMINGR_SCLDEL_SHIFT 20 -#define I2C_TIMINGR_SDADEL_SHIFT 16 -#define I2C_TIMINGR_SCLH_SHIFT 8 -#define I2C_TIMINGR_SCLL_SHIFT 0 - -#define I2C_TIMINGR_PRESC (0xF << I2C_TIMINGR_PRESC_SHIFT) -#define I2C_TIMINGR_SCLDEL (0xF << I2C_TIMINGR_SCLDEL_SHIFT) -#define I2C_TIMINGR_SCADEL (0xF << I2C_TIMINGR_SCADEL_SHIFT) -#define I2C_TIMINGR_SCLH (0xFF << I2C_TIMINGR_SCLH_SHIFT) -#define I2C_TIMINGR_SCLL (0xFF << I2C_TIMINGR_SCLL_SHIFT) - -/* Timeout register */ -#define I2C_TIMEOUTR_TEXTEN_BIT 31 -#define I2C_TIMEOUTR_TIMEOUTB_SHIFT 16 -#define I2C_TIMEOUTR_TIMOUTEN_BIT 15 -#define I2C_TIMEOUTR_TIDLE_BIT 12 -#define I2C_TIMEOUTR_TIMEOUTA_SHIFT 0 - -#define I2C_TIMEOUTR_TEXTEN (1U << I2C_TIMEOUTR_TEXTEN_BIT) -#define I2C_TIMEOUTR_TIMEOUTB (0xFFF << I2C_TIMEOUTR_TIMEOUTB_SHIFT) -#define I2C_TIMEOUTR_TIMOUTEN (1U << I2C_TIMEOUTR_TIMOUTEN_BIT) -#define I2C_TIMEOUTR_TIDLE (1U << I2C_TIMEOUTR_TIDLE_BIT) -#define I2C_TIMEOUTR_TIMEOUTA (0xFFF << I2C_TIMEOUTR_TIMEOUTA_SHIFT) - -/* Interrupt and status register */ -#define I2C_ISR_ADDCODE_SHIFT 17 -#define I2C_ISR_DIR_BIT 16 -#define I2C_ISR_BUSY_BIT 15 -#define I2C_ISR_ALERT_BIT 13 -#define I2C_ISR_TIMEOUT_BIT 12 -#define I2C_ISR_PECERR_BIT 11 -#define I2C_ISR_OVR_BIT 10 -#define I2C_ISR_ARLO_BIT 9 -#define I2C_ISR_BERR_BIT 8 -#define I2C_ISR_TCR_BIT 7 -#define I2C_ISR_TC_BIT 6 -#define I2C_ISR_STOPF_BIT 5 -#define I2C_ISR_NACKF_BIT 4 -#define I2C_ISR_ADDR_BIT 3 -#define I2C_ISR_RXNE_BIT 2 -#define I2C_ISR_TXIS_BIT 1 -#define I2C_ISR_TXE_BIT 0 - -#define I2C_ISR_ADDCODE (0x7F << I2C_ISR_ADDCODE_SHIFT) -#define I2C_ISR_ALERTCF (1U << I2C_ISR_ALERTCF_BIT) -#define I2C_ISR_DIR (1U << I2C_ISR_DIR_BIT) -#define I2C_ISR_BUSY (1U << I2C_ISR_BUSY_BIT) -#define I2C_ISR_ALERT (1U << I2C_ISR_ALERT_BIT) -#define I2C_ISR_TIMEOUT (1U << I2C_ISR_TIMEOUT_BIT) -#define I2C_ISR_PECERR (1U << I2C_ISR_PECERR_BIT) -#define I2C_ISR_OVR (1U << I2C_ISR_OVR_BIT) -#define I2C_ISR_ARLO (1U << I2C_ISR_ARLO_BIT) -#define I2C_ISR_BERR (1U << I2C_ISR_BERR_BIT) -#define I2C_ISR_TCR (1U << I2C_ISR_TCR_BIT) -#define I2C_ISR_TC (1U << I2C_ISR_TC_BIT) -#define I2C_ISR_STOPF (1U << I2C_ISR_STOPF_BIT) -#define I2C_ISR_NACKF (1U << I2C_ISR_NACKF_BIT) -#define I2C_ISR_ADDR (1U << I2C_ISR_ADDR_BIT) -#define I2C_ISR_RXNE (1U << I2C_ISR_RXNE_BIT) -#define I2C_ISR_TXIS (1U << I2C_ISR_TXIS_BIT) -#define I2C_ISR_TXE (1U << I2C_ISR_TXE_BIT) - -/* Interrupt clear register */ -#define I2C_ICR_ALERTCF_BIT 13 -#define I2C_ICR_TIMOUTCF_BIT 12 -#define I2C_ICR_PECCF_BIT 11 -#define I2C_ICR_OVRCF_BIT 10 -#define I2C_ICR_ARLOCF_BIT 9 -#define I2C_ICR_BERRCF_BIT 8 -#define I2C_ICR_STOPCF_BIT 5 -#define I2C_ICR_NACKCF_BIT 4 -#define I2C_ICR_ADDRCF_BIT 3 - -#define I2C_ICR_ALERTCF (1U << I2C_ICR_ALERTCF_BIT) -#define I2C_ICR_TIMOUTCF (1U << I2C_ICR_TIMOUTCF_BIT) -#define I2C_ICR_PECCF (1U << I2C_ICR_PECERRCF_BIT) -#define I2C_ICR_OVRCF (1U << I2C_ICR_OVRCF_BIT) -#define I2C_ICR_ARLOCF (1U << I2C_ICR_ARLOCF_BIT) -#define I2C_ICR_BERRCF (1U << I2C_ICR_BERRCF_BIT) -#define I2C_ICR_STOPCF (1U << I2C_ICR_STOPCF_BIT) -#define I2C_ICR_NACKCF (1U << I2C_ICR_NACKCF_BIT) -#define I2C_ICR_ADDRCF (1U << I2C_ICR_ADDRCF_BIT) - -/* PEC register */ -#define I2C_PEC_PEC 0xFF - -/* Receive data register */ -#define I2C_RXDR_RXDATA 0xFF - -/* Transmit data register */ -#define I2C_TXDR_TXDATA 0xFF - -/* - * Timing configurations - */ - -/* Timing configuration for I2C clock running at 8MHz */ - -/* NOTE: - * I2C is clocked by HSI (8MHz) by default - * if clock source is changed with RCC_CFGR_I2C1SW/I2C2SW, - * these values have to be adapted - */ -typedef enum i2c_timing { - I2C_TIMING_10_kHz = (0x01 << I2C_TIMINGR_PRESC_SHIFT) - + (0x04 << I2C_TIMINGR_SCLDEL_SHIFT) - + (0x02 << I2C_TIMINGR_SDADEL_SHIFT) - + (0xC3 << I2C_TIMINGR_SCLH_SHIFT) - + (0xC7 << I2C_TIMINGR_SCLL_SHIFT), - - I2C_TIMING_100_kHz = (0x01 << I2C_TIMINGR_PRESC_SHIFT) - + (0x04 << I2C_TIMINGR_SCLDEL_SHIFT) - + (0x02 << I2C_TIMINGR_SDADEL_SHIFT) - + (0x0F << I2C_TIMINGR_SCLH_SHIFT) - + (0x13 << I2C_TIMINGR_SCLL_SHIFT), - - I2C_TIMING_400_kHz = (0x00 << I2C_TIMINGR_PRESC_SHIFT) - + (0x03 << I2C_TIMINGR_SCLDEL_SHIFT) - + (0x01 << I2C_TIMINGR_SDADEL_SHIFT) - + (0x03 << I2C_TIMINGR_SCLH_SHIFT) - + (0x09 << I2C_TIMINGR_SCLL_SHIFT), - - I2C_TIMING_500_kHz = (0x00 << I2C_TIMINGR_PRESC_SHIFT) - + (0x01 << I2C_TIMINGR_SCLDEL_SHIFT) - + (0x01 << I2C_TIMINGR_SDADEL_SHIFT) - + (0x03 << I2C_TIMINGR_SCLH_SHIFT) - + (0x06 << I2C_TIMINGR_SCLL_SHIFT), -} i2c_timing; - -/* - * For internal use - */ - -static inline uint32 _i2c_bus_clk(i2c_dev *dev) { /* FIXME remove, is a remainder of F1 code */ - /* Both I2C peripherals are on APB1 */ - return STM32_PCLK1 / (1000 * 1000); -} - -extern uint8 i2c_read(i2c_dev *dev); - -#ifdef __cplusplus -} -#endif - -#endif /* _LIBMAPLE_STM32F3_I2C_H_ */ diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/nvic.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/nvic.h deleted file mode 100644 index 7643c3251..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/nvic.h +++ /dev/null @@ -1,153 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/nvic.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 Nested Vectored Interrupt Controller (NVIC) support. - */ - -#ifndef _LIBMAPLE_STM32F3_NVIC_H_ -#define _LIBMAPLE_STM32F3_NVIC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include -#include - -/** - * @brief STM32F1 interrupt vector table interrupt numbers. - * @see - */ -typedef enum nvic_irq_num { - NVIC_NMI = -14, /**< Non-maskable interrupt */ - NVIC_HARDFAULT = -13, /**< Hard fault (all class of fault) */ - NVIC_MEM_MANAGE = -12, /**< Memory management */ - NVIC_BUS_FAULT = -11, /**< Bus fault: prefetch fault, memory - access fault. */ - NVIC_USAGE_FAULT = -10, /**< Usage fault: Undefined instruction or - illegal state. */ - NVIC_SVC = -5, /**< System service call via SWI insruction */ - NVIC_DEBUG_MON = -4, /**< Debug monitor */ - NVIC_PEND_SVC = -2, /**< Pendable request for system service */ - NVIC_SYSTICK = -1, /**< System tick timer */ - - NVIC_WWDG = 0, /**< Window watchdog interrupt */ - NVIC_PVD = 1, /**< PVD through EXTI line detection */ - NVIC_TAMP_STAMP = 2, /**< Tamper */ - NVIC_RTC_WKUP = 3, /**< Real-time clock */ - NVIC_FLASH = 4, /**< Flash */ - NVIC_RCC = 5, /**< Reset and clock control */ - NVIC_EXTI0 = 6, /**< EXTI line 0 */ - NVIC_EXTI1 = 7, /**< EXTI line 1 */ - NVIC_EXTI2 = 8, /**< EXTI line 2 */ //FIXME capacitive touch - NVIC_EXTI3 = 9, /**< EXTI line 3 */ - NVIC_EXTI4 = 10, /**< EXTI line 4 */ - NVIC_DMA_CH1 = 11, /**< DMA1 channel 1 */ - NVIC_DMA_CH2 = 12, /**< DMA1 channel 2 */ - NVIC_DMA_CH3 = 13, /**< DMA1 channel 3 */ - NVIC_DMA_CH4 = 14, /**< DMA1 channel 4 */ - NVIC_DMA_CH5 = 15, /**< DMA1 channel 5 */ - NVIC_DMA_CH6 = 16, /**< DMA1 channel 6 */ - NVIC_DMA_CH7 = 17, /**< DMA1 channel 7 */ - NVIC_ADC1_2 = 18, /**< ADC1 and ADC2 */ - NVIC_USB_HP_CAN_TX = 19, /**< USB high priority or CAN TX */ - NVIC_USB_LP_CAN_RX0 = 20, /**< USB low priority or CAN RX0 */ - NVIC_CAN_RX1 = 21, /**< CAN RX1 */ - NVIC_CAN_SCE = 22, /**< CAN SCE */ - NVIC_EXTI_9_5 = 23, /**< EXTI line [9:5] */ - //NVIC_TIMER1_BRK_TIMER15 = 24, // FIXME hack - NVIC_TIMER1_BRK_TIMER9 = 24, /**< Timer 1 break, Timer 9. */ // FIXME rm - //NVIC_TIMER1_UP_TIMER16 = 25, // FIXME hack - NVIC_TIMER1_UP_TIMER10 = 25, /**< Timer 1 update, Timer 10. */ //FIXME rm - //NVIC_TIMER1_TRG_COM_TIMER17 = 26, // FIXME hack - NVIC_TIMER1_TRG_COM_TIMER11 = 26, /**< - * Timer 1 trigger and commutation, - * Timer 11. */ // FIXME rm - NVIC_TIMER1_CC = 27, /**< Timer 1 capture/compare */ - NVIC_TIMER2 = 28, /**< Timer 2 */ - NVIC_TIMER3 = 29, /**< Timer 3 */ - NVIC_TIMER4 = 30, /**< Timer 4 */ - NVIC_I2C1_EV = 31, /**< I2C1 event */ - NVIC_I2C1_ER = 32, /**< I2C1 error */ - NVIC_I2C2_EV = 33, /**< I2C2 event */ - NVIC_I2C2_ER = 34, /**< I2C2 error */ - NVIC_SPI1 = 35, /**< SPI1 */ - NVIC_SPI2 = 36, /**< SPI2 */ - NVIC_USART1 = 37, /**< USART1 */ - NVIC_USART2 = 38, /**< USART2 */ - NVIC_USART3 = 39, /**< USART3 */ - NVIC_EXTI_15_10 = 40, /**< EXTI line [15:10] */ - NVIC_RTC_ALARM = 41, /**< RTC alarm through EXTI line */ - NVIC_USB_WKUP = 42, /**< USB wakeup from suspend through - EXTI line */ - NVIC_TIMER8_BRK_TIMER12 = 43, /**< Timer 8 break, timer 12 */ //TODO rm TIMER12 - NVIC_TIMER8_UP_TIMER13 = 44, /**< Timer 8 update, timer 13 */ // TODO rm TIMER13 - NVIC_TIMER8_TRG_COM_TIMER14 = 45, /**< - * Timer 8 trigger and commutation, - * Timer 14. */ //TODO rm TIMER14 - NVIC_TIMER8_CC = 46, /**< Timer 8 capture/compare */ - NVIC_ADC3 = 47, /**< ADC3 */ - - NVIC_SPI3 = 51, /**< SPI3 */ - NVIC_UART4 = 52, /**< UART4 */ - NVIC_UART5 = 53, /**< UART5 */ - //NVIC_TIMER6_DAC = 54, // TODO hack - NVIC_TIMER6 = 54, /**< Timer 6 */ //TODO add DAC - NVIC_TIMER7 = 55, /**< Timer 7 */ - NVIC_DMA2_CH1 = 56, /**< DMA2 channel 1 */ - NVIC_DMA2_CH2 = 57, /**< DMA2 channel 2 */ - NVIC_DMA2_CH3 = 58, /**< DMA2 channel 3 */ - NVIC_DMA2_CH4 = 59, /**< DMA2 channel 4 */ - NVIC_DMA2_CH5 = 60, /**< DMA2 channel 5 */ - - NVIC_ADC4 = 61, /**< DMA2 channels 4 and 5 */ - - NVIC_COMP123 = 64, /**< DMA2 channels 4 and 5 */ - NVIC_COMP456 = 65, /**< DMA2 channels 4 and 5 */ - NVIC_COMP7 = 66, /**< DMA2 channels 4 and 5 */ - - NVIC_USB_HP = 74, /**< DMA2 channels 4 and 5 */ - NVIC_USB_LP = 75, /**< DMA2 channels 4 and 5 */ - NVIC_USB_WKUP2 = 76, /**< DMA2 channels 4 and 5 */ - - NVIC_FPU = 81, /**< DMA2 channels 4 and 5 */ -} nvic_irq_num; - -static inline void nvic_irq_disable_all(void) { - NVIC_BASE->ICER[0] = 0xFFFFFFFF; - NVIC_BASE->ICER[1] = 0xFFFFFFFF; - NVIC_BASE->ICER[2] = 0xFFFFFFFF; -} - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h deleted file mode 100644 index a5c627bef..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/opamp.h +++ /dev/null @@ -1,123 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/ompamp.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 Operational Amplifier support. - */ - -#ifndef _LIBMAPLE_STM32F3_OPAMP_H_ -#define _LIBMAPLE_STM32F3_OPAMP_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* - * Register map - */ - -/* - * OpAmp individual register map type. - */ -typedef struct opamp_reg_map { - __IO uint32 CSR; /**< */ -} opamp_reg_map; - -/** OpAmp device type. */ -typedef struct opamp_dev { - opamp_reg_map *regs; /**< Register map */ -} opamp_dev; - -/* - * Devices - */ - -extern const struct opamp_dev *OPAMP1; /* OpAmp amplifier 1 */ -extern const struct opamp_dev *OPAMP2; /* OpAmp amplifier 2 */ -extern const struct opamp_dev *OPAMP3; /* OpAmp amplifier 3 */ -extern const struct opamp_dev *OPAMP4; /* OpAmp amplifier 4 */ - -/* - * Register map base pointers - */ - -#define OPAMP1_BASE ((struct opamp_reg_map*)0x40010038) -#define OPAMP2_BASE ((struct opamp_reg_map*)0x4001003C) -#define OPAMP3_BASE ((struct opamp_reg_map*)0x40010040) -#define OPAMP4_BASE ((struct opamp_reg_map*)0x40010044) - -/* - * Register bit definitions - */ - -/* Control and status register */ -#define OPAMP_CSR_LOCK_BIT 31 -#define OPAMP_CSR_OUTCAL_BIT 30 -#define OPAMP_CSR_TSTREF_BIT 29 -#define OPAMP_CSR_TRIMOFFSETN_SHIFT 24 -#define OPAMP_CSR_TRIMOFFSETP_SHIFT 19 -#define OPAMP_CSR_USER_TRIM_BIT 18 -#define OPAMP_CSR_PGA_GAIN_SHIFT 14 -#define OPAMP_CSR_CAL_SEL_SHIFT 12 -#define OPAMP_CSR_CAL_ON_BIT 11 -#define OPAMP_CSR_VPS_SEL_SHIFT 9 -#define OPAMP_CSR_VMS_SEL_BIT 8 -#define OPAMP_CSR_TCM_EN_BIT 7 -#define OPAMP_CSR_VM_SEL_SHIFT 5 -#define OPAMP_CSR_VP_SEL_SHIFT 2 -#define OPAMP_CSR_FORCE_VP_BIT 1 -#define OPAMP_CSR_EN_BIT 0 - -#define OPAMP_CSR_LOCK (1U << OPAMP_CSR_LOCK_BIT) -#define OPAMP_CSR_OUTCAL (1U << OPAMP_CSR_OUTCAL_BIT) -#define OPAMP_CSR_TSTREF (1U << OPAMP_CSR_TSTREF_BIT) -#define COMP_CSR_TRIMOFFSETN (0x1F << COMP_CSR_TRIMOFFSETN_SHIFT) -#define COMP_CSR_TRIMOFFSETP (0x1F << COMP_CSR_TRIMOFFSETP_SHIFT) -#define OPAMP_CSR_USER_TRIM (1U << OPAMP_CSR_USER_TRIM_BIT) -#define COMP_CSR_PGA_GAIN (0xF << COMP_CSR_PGA_GAIN_SHIFT) -#define COMP_CSR_CAL_SEL (0x3 << COMP_CSR_CAL_SEL_SHIFT) -#define OPAMP_CSR_CAL_ON (1U << OPAMP_CSR_CAL_ON_BIT) -#define COMP_CSR_VPS_SEL (0x3 << COMP_CSR_VPS_SEL_SHIFT) -#define OPAMP_CSR_VMS_SEL (1U << OPAMP_CSR_VMS_SEL_BIT) -#define OPAMP_CSR_TCM_EN (1U << OPAMP_CSR_TCM_EN_BIT) -#define COMP_CSR_VM_SEL (0x3 << COMP_CSR_VM_SEL_SHIFT) -#define COMP_CSR_VP_SEL (0x3 << COMP_CSR_VP_SEL_SHIFT) -#define OPAMP_CSR_FORCE_VP (1U << OPAMP_CSR_FORCE_VP_BIT) -#define OPAMP_CSR_EN (1U << OPAMP_CSR_EN_BIT) - -/* TODO - * actually implement me ;-) - */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/pwr.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/pwr.h deleted file mode 100644 index d3564e8c6..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/pwr.h +++ /dev/null @@ -1,52 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f1/include/series/pwr.h - * @author Marti Bolivar - * @brief STM32F3 Power control (PWR) support. - */ - -#ifndef _LIBMAPLE_STM32F3_PWR_H_ -#define _LIBMAPLE_STM32F3_PWR_H_ - -/* - * Register bit definitions - */ - -/* Control register */ - -/* PVD level selection */ -#define PWR_CR_PLS_2_2V (0x0 << 5) -#define PWR_CR_PLS_2_3V (0x1 << 5) -#define PWR_CR_PLS_2_4V (0x2 << 5) -#define PWR_CR_PLS_2_5V (0x3 << 5) -#define PWR_CR_PLS_2_6V (0x4 << 5) -#define PWR_CR_PLS_2_7V (0x5 << 5) -#define PWR_CR_PLS_2_8V (0x6 << 5) -#define PWR_CR_PLS_2_9V (0x7 << 5) - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h deleted file mode 100644 index b8f4b3491..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/rcc.h +++ /dev/null @@ -1,632 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/rcc.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 reset and clock control (RCC) support. - */ - -#ifndef _LIBMAPLE_STM32F3_RCC_H_ -#define _LIBMAPLE_STM32F3_RCC_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include - -/* - * Register map - */ - -/** STM32F3 RCC register map type */ -typedef struct rcc_reg_map { - __IO uint32 CR; /**< Clock control register */ - __IO uint32 CFGR; /**< Clock configuration register */ - __IO uint32 CIR; /**< Clock interrupt register */ - __IO uint32 APB2RSTR; /**< APB2 peripheral reset register */ - __IO uint32 APB1RSTR; /**< APB1 peripheral reset register */ - __IO uint32 AHBENR; /**< AHB peripheral clock enable register */ - __IO uint32 APB2ENR; /**< APB2 peripheral clock enable register */ - __IO uint32 APB1ENR; /**< APB1 peripheral clock enable register */ - __IO uint32 BDCR; /**< Backup domain control register */ - __IO uint32 CSR; /**< Control/status register */ - __IO uint32 AHBRSTR; /**< AHB peripheral reset register */ - __IO uint32 CFGR2; /**< Control/status register 2 */ - __IO uint32 CFGR3; /**< Control/status register 3 */ -} rcc_reg_map; - -#define RCC_BASE ((struct rcc_reg_map*)0x40021000) - -/* - * Register bit definitions - */ - -/* Clock control register */ - -#define RCC_CR_PLLRDY_BIT 25 -#define RCC_CR_PLLON_BIT 24 -#define RCC_CR_CSSON_BIT 19 -#define RCC_CR_HSEBYP_BIT 18 -#define RCC_CR_HSERDY_BIT 17 -#define RCC_CR_HSEON_BIT 16 -#define RCC_CR_HSIRDY_BIT 1 -#define RCC_CR_HSION_BIT 0 - -#define RCC_CR_PLLRDY (1U << RCC_CR_PLLRDY_BIT) -#define RCC_CR_PLLON (1U << RCC_CR_PLLON_BIT) -#define RCC_CR_CSSON (1U << RCC_CR_CSSON_BIT) -#define RCC_CR_HSEBYP (1U << RCC_CR_HSEBYP_BIT) -#define RCC_CR_HSERDY (1U << RCC_CR_HSERDY_BIT) -#define RCC_CR_HSEON (1U << RCC_CR_HSEON_BIT) -#define RCC_CR_HSICAL (0xFF << 8) -#define RCC_CR_HSITRIM (0x1F << 3) -#define RCC_CR_HSIRDY (1U << RCC_CR_HSIRDY_BIT) -#define RCC_CR_HSION (1U << RCC_CR_HSION_BIT) - -/* Clock configuration register */ - -#define RCC_CFGR_I2SSRC_BIT 23 -#define RCC_CFGR_USBPRE_BIT 22 -#define RCC_CFGR_PLLMUL_BIT 18 -#define RCC_CFGR_PLLXTPRE_BIT 17 -#define RCC_CFGR_PLLSRC_BIT 16 -#define RCC_CFGR_PPRE2_BIT 11 -#define RCC_CFGR_PPRE1_BIT 8 -#define RCC_CFGR_HPRE_BIT 4 - -#define RCC_CFGR_MCO (0x3 << 24) -#define RCC_CFGR_I2SSRC (1U << RCC_CFGR_I2CSRC_BIT) -#define RCC_CFGR_USBPRE (1U << RCC_CFGR_USBPRE_BIT) -#define RCC_CFGR_PLLMUL (0xF << RCC_CFGR_PLLMUL_BIT) -#define RCC_CFGR_PLLXTPRE (1U << RCC_CFGR_PLLXTPRE_BIT) -#define RCC_CFGR_PLLSRC (1U << RCC_CFGR_PLLSRC_BIT) -#define RCC_CFGR_PPRE2 (0x7 << RCC_CFGR_PPRE2_BIT) -#define RCC_CFGR_PPRE1 (0x7 << RCC_CFGR_PPRE1_BIT) -#define RCC_CFGR_HPRE (0xF << RCC_CFGR_HPRE_BIT) -#define RCC_CFGR_SWS (0x3 << 2) -#define RCC_CFGR_SWS_PLL (0x2 << 2) -#define RCC_CFGR_SWS_HSE (0x1 << 2) -#define RCC_CFGR_SW 0x3 -#define RCC_CFGR_SW_PLL 0x2 -#define RCC_CFGR_SW_HSE 0x1 - -/* Clock interrupt register */ - -#define RCC_CIR_CSSC_BIT 23 -#define RCC_CIR_PLLRDYC_BIT 20 -#define RCC_CIR_HSERDYC_BIT 19 -#define RCC_CIR_HSIRDYC_BIT 18 -#define RCC_CIR_LSERDYC_BIT 17 -#define RCC_CIR_LSIRDYC_BIT 16 -#define RCC_CIR_PLLRDYIE_BIT 12 -#define RCC_CIR_HSERDYIE_BIT 11 -#define RCC_CIR_HSIRDYIE_BIT 10 -#define RCC_CIR_LSERDYIE_BIT 9 -#define RCC_CIR_LSIRDYIE_BIT 8 -#define RCC_CIR_CSSF_BIT 7 -#define RCC_CIR_PLLRDYF_BIT 4 -#define RCC_CIR_HSERDYF_BIT 3 -#define RCC_CIR_HSIRDYF_BIT 2 -#define RCC_CIR_LSERDYF_BIT 1 -#define RCC_CIR_LSIRDYF_BIT 0 - -#define RCC_CIR_CSSC (1U << RCC_CIR_CSSC_BIT) -#define RCC_CIR_PLLRDYC (1U << RCC_CIR_PLLRDYC_BIT) -#define RCC_CIR_HSERDYC (1U << RCC_CIR_HSERDYC_BIT) -#define RCC_CIR_HSIRDYC (1U << RCC_CIR_HSIRDYC_BIT) -#define RCC_CIR_LSERDYC (1U << RCC_CIR_LSERDYC_BIT) -#define RCC_CIR_LSIRDYC (1U << RCC_CIR_LSIRDYC_BIT) -#define RCC_CIR_PLLRDYIE (1U << RCC_CIR_PLLRDYIE_BIT) -#define RCC_CIR_HSERDYIE (1U << RCC_CIR_HSERDYIE_BIT) -#define RCC_CIR_HSIRDYIE (1U << RCC_CIR_HSIRDYIE_BIT) -#define RCC_CIR_LSERDYIE (1U << RCC_CIR_LSERDYIE_BIT) -#define RCC_CIR_LSIRDYIE (1U << RCC_CIR_LSIRDYIE_BIT) -#define RCC_CIR_CSSF (1U << RCC_CIR_CSSF_BIT) -#define RCC_CIR_PLLRDYF (1U << RCC_CIR_PLLRDYF_BIT) -#define RCC_CIR_HSERDYF (1U << RCC_CIR_HSERDYF_BIT) -#define RCC_CIR_HSIRDYF (1U << RCC_CIR_HSIRDYF_BIT) -#define RCC_CIR_LSERDYF (1U << RCC_CIR_LSERDYF_BIT) -#define RCC_CIR_LSIRDYF (1U << RCC_CIR_LSIRDYF_BIT) - -/* APB2 peripheral reset register */ - -#define RCC_APB2RSTR_TIM17RST_BIT 18 -#define RCC_APB2RSTR_TIM16RST_BIT 17 -#define RCC_APB2RSTR_TIM15RST_BIT 16 -#define RCC_APB2RSTR_USART1RST_BIT 14 -#define RCC_APB2RSTR_TIM8RST_BIT 13 -#define RCC_APB2RSTR_SPI1RST_BIT 12 -#define RCC_APB2RSTR_TIM1RST_BIT 11 -#define RCC_APB2RSTR_SYSCFGRST_BIT 0 - -#define RCC_APB2RSTR_TIM17RST (1U << RCC_APB2RSTR_TIM17RST_BIT) -#define RCC_APB2RSTR_TIM16RST (1U << RCC_APB2RSTR_TIM16RST_BIT) -#define RCC_APB2RSTR_TIM15RST (1U << RCC_APB2RSTR_TIM15RST_BIT) -#define RCC_APB2RSTR_USART1RST (1U << RCC_APB2RSTR_USART1RST_BIT) -#define RCC_APB2RSTR_TIM8RST (1U << RCC_APB2RSTR_TIM8RST_BIT) -#define RCC_APB2RSTR_SPI1RST (1U << RCC_APB2RSTR_SPI1RST_BIT) -#define RCC_APB2RSTR_TIM1RST (1U << RCC_APB2RSTR_TIM1RST_BIT) -#define RCC_APB2RSTR_SYSCFGRST (1U << RCC_APB2RSTR_SYSCFGRST_BIT) - -/* APB1 peripheral reset register */ - -#define RCC_APB1RSTR_DACRST_BIT 29 -#define RCC_APB1RSTR_PWRRST_BIT 28 -#define RCC_APB1RSTR_CANRST_BIT 25 -#define RCC_APB1RSTR_USBRST_BIT 23 -#define RCC_APB1RSTR_I2C2RST_BIT 22 -#define RCC_APB1RSTR_I2C1RST_BIT 21 -#define RCC_APB1RSTR_UART5RST_BIT 20 -#define RCC_APB1RSTR_UART4RST_BIT 19 -#define RCC_APB1RSTR_USART3RST_BIT 18 -#define RCC_APB1RSTR_USART2RST_BIT 17 -#define RCC_APB1RSTR_SPI3RST_BIT 15 -#define RCC_APB1RSTR_SPI2RST_BIT 14 -#define RCC_APB1RSTR_WWDRST_BIT 11 -#define RCC_APB1RSTR_TIM7RST_BIT 5 -#define RCC_APB1RSTR_TIM6RST_BIT 4 -#define RCC_APB1RSTR_TIM4RST_BIT 2 -#define RCC_APB1RSTR_TIM3RST_BIT 1 -#define RCC_APB1RSTR_TIM2RST_BIT 0 - -#define RCC_APB1RSTR_DACRST (1U << RCC_APB1RSTR_DACRST_BIT) -#define RCC_APB1RSTR_PWRRST (1U << RCC_APB1RSTR_PWRRST_BIT) -#define RCC_APB1RSTR_CANRST (1U << RCC_APB1RSTR_CANRST_BIT) -#define RCC_APB1RSTR_USBRST (1U << RCC_APB1RSTR_USBRST_BIT) -#define RCC_APB1RSTR_I2C2RST (1U << RCC_APB1RSTR_I2C2RST_BIT) -#define RCC_APB1RSTR_I2C1RST (1U << RCC_APB1RSTR_I2C1RST_BIT) -#define RCC_APB1RSTR_UART5RST (1U << RCC_APB1RSTR_UART5RST_BIT) -#define RCC_APB1RSTR_UART4RST (1U << RCC_APB1RSTR_UART4RST_BIT) -#define RCC_APB1RSTR_USART3RST (1U << RCC_APB1RSTR_USART3RST_BIT) -#define RCC_APB1RSTR_USART2RST (1U << RCC_APB1RSTR_USART2RST_BIT) -#define RCC_APB1RSTR_SPI3RST (1U << RCC_APB1RSTR_SPI3RST_BIT) -#define RCC_APB1RSTR_SPI2RST (1U << RCC_APB1RSTR_SPI2RST_BIT) -#define RCC_APB1RSTR_WWDRST (1U << RCC_APB1RSTR_WWDRST_BIT) -#define RCC_APB1RSTR_TIM7RST (1U << RCC_APB1RSTR_TIM7RST_BIT) -#define RCC_APB1RSTR_TIM6RST (1U << RCC_APB1RSTR_TIM6RST_BIT) -#define RCC_APB1RSTR_TIM4RST (1U << RCC_APB1RSTR_TIM4RST_BIT) -#define RCC_APB1RSTR_TIM3RST (1U << RCC_APB1RSTR_TIM3RST_BIT) -#define RCC_APB1RSTR_TIM2RST (1U << RCC_APB1RSTR_TIM2RST_BIT) - -/* AHB peripheral clock enable register */ - -#define RCC_AHBENR_ADC34EN_BIT 29 -#define RCC_AHBENR_ADC12EN_BIT 28 -#define RCC_AHBENR_TSCEN_BIT 24 -#define RCC_AHBENR_IOPFEN_BIT 22 -#define RCC_AHBENR_IOPEEN_BIT 21 -#define RCC_AHBENR_IOPDEN_BIT 20 -#define RCC_AHBENR_IOPCEN_BIT 19 -#define RCC_AHBENR_IOPBEN_BIT 18 -#define RCC_AHBENR_IOPAEN_BIT 17 -#define RCC_AHBENR_CRCEN_BIT 6 -#define RCC_AHBENR_FLITFEN_BIT 4 -#define RCC_AHBENR_SRAMEN_BIT 2 -#define RCC_AHBENR_DMA2EN_BIT 1 -#define RCC_AHBENR_DMA1EN_BIT 0 - -#define RCC_AHBENR_ADC34EN (1U << RCC_AHBENR_ADC34EN_BIT) -#define RCC_AHBENR_ADC12EN (1U << RCC_AHBENR_ADC12EN_BIT) -#define RCC_AHBENR_TSCEN (1U << RCC_AHBENR_TSCEN_BIT) -#define RCC_AHBENR_IOPFEN (1U << RCC_AHBENR_IOPFEN_BIT) -#define RCC_AHBENR_IOPEEN (1U << RCC_AHBENR_IOPEEN_BIT) -#define RCC_AHBENR_IOPDEN (1U << RCC_AHBENR_IOPDEN_BIT) -#define RCC_AHBENR_IOPCEN (1U << RCC_AHBENR_IOPCEN_BIT) -#define RCC_AHBENR_IOPBEN (1U << RCC_AHBENR_IOPBEN_BIT) -#define RCC_AHBENR_IOPAEN (1U << RCC_AHBENR_IOPAEN_BIT) -#define RCC_AHBENR_CRCEN (1U << RCC_AHBENR_CRCEN_BIT) -#define RCC_AHBENR_FLITFEN (1U << RCC_AHBENR_FLITFEN_BIT) -#define RCC_AHBENR_SRAMEN (1U << RCC_AHBENR_SRAMEN_BIT) -#define RCC_AHBENR_DMA2EN (1U << RCC_AHBENR_DMA2EN_BIT) -#define RCC_AHBENR_DMA1EN (1U << RCC_AHBENR_DMA1EN_BIT) - -/* APB2 peripheral clock enable register */ - -#define RCC_APB2ENR_TIM17EN_BIT 18 -#define RCC_APB2ENR_TIM16EN_BIT 17 -#define RCC_APB2ENR_TIM15EN_BIT 16 -#define RCC_APB2ENR_USART1EN_BIT 14 -#define RCC_APB2ENR_TIM8EN_BIT 13 -#define RCC_APB2ENR_SPI1EN_BIT 12 -#define RCC_APB2ENR_TIM1EN_BIT 11 -#define RCC_APB2ENR_SYSCFGEN_BIT 0 - -#define RCC_APB2ENR_TIM17EN (1U << RCC_APB2ENR_TIM17EN_BIT) -#define RCC_APB2ENR_TIM16EN (1U << RCC_APB2ENR_TIM16EN_BIT) -#define RCC_APB2ENR_TIM15EN (1U << RCC_APB2ENR_TIM15EN_BIT) -#define RCC_APB2ENR_USART1EN (1U << RCC_APB2ENR_USART1EN_BIT) -#define RCC_APB2ENR_TIM8EN (1U << RCC_APB2ENR_TIM8EN_BIT) -#define RCC_APB2ENR_SPI1EN (1U << RCC_APB2ENR_SPI1EN_BIT) -#define RCC_APB2ENR_TIM1EN (1U << RCC_APB2ENR_TIM1EN_BIT) -#define RCC_APB2ENR_SYSCFGEN (1U << RCC_APB2ENR_SYSCFGEN_BIT) - -/* APB1 peripheral clock enable register */ - -#define RCC_APB1ENR_DACEN_BIT 29 -#define RCC_APB1ENR_PWREN_BIT 28 -#define RCC_APB1ENR_CANEN_BIT 25 -#define RCC_APB1ENR_USBEN_BIT 23 -#define RCC_APB1ENR_I2C2EN_BIT 22 -#define RCC_APB1ENR_I2C1EN_BIT 21 -#define RCC_APB1ENR_UART5EN_BIT 20 -#define RCC_APB1ENR_UART4EN_BIT 19 -#define RCC_APB1ENR_USART3EN_BIT 18 -#define RCC_APB1ENR_USART2EN_BIT 17 -#define RCC_APB1ENR_SPI3EN_BIT 15 -#define RCC_APB1ENR_SPI2EN_BIT 14 -#define RCC_APB1ENR_WWDEN_BIT 11 -#define RCC_APB1ENR_TIM7EN_BIT 5 -#define RCC_APB1ENR_TIM6EN_BIT 4 -#define RCC_APB1ENR_TIM4EN_BIT 2 -#define RCC_APB1ENR_TIM3EN_BIT 1 -#define RCC_APB1ENR_TIM2EN_BIT 0 - -#define RCC_APB1ENR_DACEN (1U << RCC_APB1ENR_DACEN_BIT) -#define RCC_APB1ENR_PWREN (1U << RCC_APB1ENR_PWREN_BIT) -#define RCC_APB1ENR_CANEN (1U << RCC_APB1ENR_CANEN_BIT) -#define RCC_APB1ENR_USBEN (1U << RCC_APB1ENR_USBEN_BIT) -#define RCC_APB1ENR_I2C2EN (1U << RCC_APB1ENR_I2C2EN_BIT) -#define RCC_APB1ENR_I2C1EN (1U << RCC_APB1ENR_I2C1EN_BIT) -#define RCC_APB1ENR_UART5EN (1U << RCC_APB1ENR_UART5EN_BIT) -#define RCC_APB1ENR_UART4EN (1U << RCC_APB1ENR_UART4EN_BIT) -#define RCC_APB1ENR_USART3EN (1U << RCC_APB1ENR_USART3EN_BIT) -#define RCC_APB1ENR_USART2EN (1U << RCC_APB1ENR_USART2EN_BIT) -#define RCC_APB1ENR_SPI3EN (1U << RCC_APB1ENR_SPI3EN_BIT) -#define RCC_APB1ENR_SPI2EN (1U << RCC_APB1ENR_SPI2EN_BIT) -#define RCC_APB1ENR_WWDEN (1U << RCC_APB1ENR_WWDEN_BIT) -#define RCC_APB1ENR_TIM7EN (1U << RCC_APB1ENR_TIM7EN_BIT) -#define RCC_APB1ENR_TIM6EN (1U << RCC_APB1ENR_TIM6EN_BIT) -#define RCC_APB1ENR_TIM4EN (1U << RCC_APB1ENR_TIM4EN_BIT) -#define RCC_APB1ENR_TIM3EN (1U << RCC_APB1ENR_TIM3EN_BIT) -#define RCC_APB1ENR_TIM2EN (1U << RCC_APB1ENR_TIM2EN_BIT) - -/* Backup domain control register */ - -#define RCC_BDCR_BDRST_BIT 16 -#define RCC_BDCR_RTCEN_BIT 15 -#define RCC_BDCR_LSEBYP_BIT 2 -#define RCC_BDCR_LSERDY_BIT 1 -#define RCC_BDCR_LSEON_BIT 0 - -#define RCC_BDCR_BDRST (1U << RCC_BDCR_BDRST_BIT) -#define RCC_BDCR_RTCEN (1U << RCC_BDCR_RTC_BIT) -#define RCC_BDCR_RTCSEL (0x3 << 8) -#define RCC_BDCR_RTCSEL_NONE (0x0 << 8) -#define RCC_BDCR_RTCSEL_LSE (0x1 << 8) -#define RCC_BDCR_RTCSEL_HSE (0x3 << 8) -#define RCC_BDCR_LSEBYP (1U << RCC_BDCR_LSEBYP_BIT) -#define RCC_BDCR_LSERDY (1U << RCC_BDCR_LSERDY_BIT) -#define RCC_BDCR_LSEON (1U << RCC_BDCR_LSEON_BIT) - -/* Control/status register */ - -#define RCC_CSR_LPWRRSTF_BIT 31 -#define RCC_CSR_WWDGRSTF_BIT 30 -#define RCC_CSR_IWDGRSTF_BIT 29 -#define RCC_CSR_SFTRSTF_BIT 28 -#define RCC_CSR_PORRSTF_BIT 27 -#define RCC_CSR_PINRSTF_BIT 26 -#define RCC_CSR_OBLRSTF_BIT 25 -#define RCC_CSR_RMVF_BIT 24 -#define RCC_CSR_LSIRDY_BIT 1 -#define RCC_CSR_LSION_BIT 0 - -#define RCC_CSR_LPWRRSTF (1U << RCC_CSR_LPWRRSTF_BIT) -#define RCC_CSR_WWDGRSTF (1U << RCC_CSR_WWDGRSTF_BIT) -#define RCC_CSR_IWDGRSTF (1U << RCC_CSR_IWDGRSTF_BIT) -#define RCC_CSR_SFTRSTF (1U << RCC_CSR_SFTRSTF_BIT) -#define RCC_CSR_PORRSTF (1U << RCC_CSR_PORRSTF_BIT) -#define RCC_CSR_PINRSTF (1U << RCC_CSR_PINRSTF_BIT) -#define RCC_CSR_OBLRSTF (1U << RCC_CSR_OBLRSTF_BIT) -#define RCC_CSR_RMVF (1U << RCC_CSR_RMVF_BIT) -#define RCC_CSR_LSIRDY (1U << RCC_CSR_LSIRDY_BIT) -#define RCC_CSR_LSION (1U << RCC_CSR_LSION_BIT) - -/* AHB peripheral reset register */ - -#define RCC_AHBRSTR_ADC34RST_BIT 29 -#define RCC_AHBRSTR_ADC12RST_BIT 28 -#define RCC_AHBRSTR_TSCRST_BIT 24 -#define RCC_AHBRSTR_IOPFRST_BIT 22 -#define RCC_AHBRSTR_IOPERST_BIT 21 -#define RCC_AHBRSTR_IOPDRST_BIT 20 -#define RCC_AHBRSTR_IOPCRST_BIT 19 -#define RCC_AHBRSTR_IOPBRST_BIT 18 -#define RCC_AHBRSTR_IOPARST_BIT 17 - -#define RCC_AHBRSTR_ADC34RST (1U << RCC_AHBRSTR_ADC34RST_BIT) -#define RCC_AHBRSTR_ADC12RST (1U << RCC_AHBRSTR_ADC12RST_BIT) -#define RCC_AHBRSTR_TSCRST (1U << RCC_AHBRSTR_TSCRST_BIT) -#define RCC_AHBRSTR_IOPFRST (1U << RCC_AHBRSTR_IOPFRST_BIT) -#define RCC_AHBRSTR_IOPERST (1U << RCC_AHBRSTR_IOPERST_BIT) -#define RCC_AHBRSTR_IOPDRST (1U << RCC_AHBRSTR_IOPDRST_BIT) -#define RCC_AHBRSTR_IOPCRST (1U << RCC_AHBRSTR_IOPCRST_BIT) -#define RCC_AHBRSTR_IOPBRST (1U << RCC_AHBRSTR_IOPBRST_BIT) -#define RCC_AHBRSTR_IOPARST (1U << RCC_AHBRSTR_IOPARST_BIT) - -/* Clock configuration register 2 */ - -#define RCC_CFGR2_ADC34PRES_SHIFT 9 -#define RCC_CFGR2_ADC12PRES_SHIFT 4 - -#define RCC_CFGR2_ADC34PRES (0x1f << RCC_CFGR2_ADC34PRES_SHIFT) -#define RCC_CFGR2_ADC12PRES (0x1f << RCC_CFGR2_ADC12PRES_SHIFT) -#define RCC_CFGR2_PREDIV 0xf - -/* Clock configuration register 3 */ //TODO make clock sources configurable - -#define RCC_CFGR3_TIM8SW_BIT 9 -#define RCC_CFGR3_TIM1SW_BIT 8 -#define RCC_CFGR3_I2C2SW_BIT 5 -#define RCC_CFGR3_I2C1SW_BIT 4 - -#define RCC_CFGR3_UART5SW (0x3 << 22) -#define RCC_CFGR3_UART4SW (0x3 << 20) -#define RCC_CFGR3_USART3SW (0x3 << 18) -#define RCC_CFGR3_USART2SW (0x3 << 16) -#define RCC_CFGR_TIM8SW (1U << RCC_CFGR3_TIM8SW_BIT) -#define RCC_CFGR_TIM1SW (1U << RCC_CFGR3_TIM1SW_BIT) -#define RCC_CFGR_I2C2SW (1U << RCC_CFGR3_I2C2SW_BIT) -#define RCC_CFGR_I2C1SW (1U << RCC_CFGR3_I2C1SW_BIT) -#define RCC_CFGR3_USART1SW 0x3 - -/* - * libmaple-mandated enumeration types. - */ - -/** - * @brief STM32F3 rcc_clk_id. - */ -typedef enum rcc_clk_id { - RCC_GPIOA, - RCC_GPIOB, - RCC_GPIOC, - RCC_GPIOD, - RCC_GPIOE, - RCC_GPIOF, - - RCC_ADC12, - RCC_ADC34, - - RCC_DAC, - - RCC_DMA1, - RCC_DMA2, - - RCC_I2C1, - RCC_I2C2, - - RCC_SPI1, - RCC_SPI2, - RCC_SPI3, - - RCC_USART1, - RCC_USART2, - RCC_USART3, - RCC_UART4, - RCC_UART5, - - RCC_TIMER1, - RCC_TIMER2, - RCC_TIMER3, - RCC_TIMER4, - RCC_TIMER5, - RCC_TIMER6, - RCC_TIMER7, - RCC_TIMER8, - RCC_TIMER9, - RCC_TIMER10, - RCC_TIMER11, - RCC_TIMER12, - RCC_TIMER13, - RCC_TIMER14, - RCC_TIMER15, - RCC_TIMER16, - RCC_TIMER17, - - RCC_SYSCFG, - RCC_CRC, - RCC_FLITF, - RCC_PWR, - RCC_SRAM, - RCC_USB, -} rcc_clk_id; - -/** - * @brief STM32F3 PLL clock sources. - * @see rcc_configure_pll() - */ -typedef enum rcc_pllsrc { - RCC_PLLSRC_HSE = (0x1 << RCC_CFGR_PLLSRC_BIT), - RCC_PLLSRC_HSI_DIV_2 = (0x0 << RCC_CFGR_PLLSRC_BIT) -} rcc_pllsrc; - -/** - * @brief STM32F3 clock domains. - * @see rcc_dev_clk() - */ -typedef enum rcc_clk_domain { - RCC_APB1, - RCC_APB2, - RCC_AHB -} rcc_clk_domain; - -/** - * @brief STM32F3 Prescaler identifiers - * @see rcc_set_prescaler() - */ -typedef enum rcc_prescaler { - RCC_PRESCALER_AHB, - RCC_PRESCALER_APB1, - RCC_PRESCALER_APB2, - RCC_PRESCALER_USB, -} rcc_prescaler; - -/** - * @brief STM32F3 ADC prescaler dividers - * @see rcc_set_prescaler() - */ -typedef enum rcc_adc_divider { - RCC_ADCPRE_PCLK_DISABLED = 0x00, - RCC_ADCPRE_PCLK_DIV_1 = 0x10, - RCC_ADCPRE_PCLK_DIV_2 = 0x11, - RCC_ADCPRE_PCLK_DIV_4 = 0x12, - RCC_ADCPRE_PCLK_DIV_6 = 0x13, - RCC_ADCPRE_PCLK_DIV_8 = 0x14, - RCC_ADCPRE_PCLK_DIV_10 = 0x15, - RCC_ADCPRE_PCLK_DIV_12 = 0x16, - RCC_ADCPRE_PCLK_DIV_16 = 0x17, - RCC_ADCPRE_PCLK_DIV_32 = 0x18, - RCC_ADCPRE_PCLK_DIV_64 = 0x19, - RCC_ADCPRE_PCLK_DIV_128 = 0x1A, - RCC_ADCPRE_PCLK_DIV_256 = 0x1B, -} rcc_adc_divider; - -/** - * @brief STM32F3 PREDIV prescaler dividers - * @see rcc_set_prescaler() - */ -typedef enum rcc_prediv_divider { - RCC_PREDIV_PCLK_DIV_1 = 0x0, - RCC_PREDIV_PCLK_DIV_2 = 0x1, - RCC_PREDIV_PCLK_DIV_3 = 0x2, - RCC_PREDIV_PCLK_DIV_4 = 0x3, - RCC_PREDIV_PCLK_DIV_5 = 0x4, - RCC_PREDIV_PCLK_DIV_6 = 0x5, - RCC_PREDIV_PCLK_DIV_7 = 0x6, - RCC_PREDIV_PCLK_DIV_8 = 0x7, - RCC_PREDIV_PCLK_DIV_9 = 0x8, - RCC_PREDIV_PCLK_DIV_10 = 0x9, - RCC_PREDIV_PCLK_DIV_11 = 0xA, - RCC_PREDIV_PCLK_DIV_12 = 0xB, - RCC_PREDIV_PCLK_DIV_13 = 0xC, - RCC_PREDIV_PCLK_DIV_14 = 0xD, - RCC_PREDIV_PCLK_DIV_15 = 0xE, - RCC_PREDIV_PCLK_DIV_16 = 0xF, -} rcc_prediv_divider; - -/** - * @brief STM32F3 APB1 prescaler dividers - * @see rcc_set_prescaler() - */ -typedef enum rcc_apb1_divider { - RCC_APB1_HCLK_DIV_1 = 0x0 << RCC_CFGR_PPRE1_BIT, - RCC_APB1_HCLK_DIV_2 = 0x4 << RCC_CFGR_PPRE1_BIT, - RCC_APB1_HCLK_DIV_4 = 0x5 << RCC_CFGR_PPRE1_BIT, - RCC_APB1_HCLK_DIV_8 = 0x6 << RCC_CFGR_PPRE1_BIT, - RCC_APB1_HCLK_DIV_16 = 0x7 << RCC_CFGR_PPRE1_BIT, -} rcc_apb1_divider; - -/** - * @brief STM32F3 APB2 prescaler dividers - * @see rcc_set_prescaler() - */ -typedef enum rcc_apb2_divider { - RCC_APB2_HCLK_DIV_1 = 0x0 << RCC_CFGR_PPRE2_BIT, - RCC_APB2_HCLK_DIV_2 = 0x4 << RCC_CFGR_PPRE2_BIT, - RCC_APB2_HCLK_DIV_4 = 0x5 << RCC_CFGR_PPRE2_BIT, - RCC_APB2_HCLK_DIV_8 = 0x6 << RCC_CFGR_PPRE2_BIT, - RCC_APB2_HCLK_DIV_16 = 0x7 << RCC_CFGR_PPRE2_BIT, -} rcc_apb2_divider; - -/** - * @brief STM32F3 AHB prescaler dividers - * @see rcc_set_prescaler() - */ -typedef enum rcc_ahb_divider { - RCC_AHB_SYSCLK_DIV_1 = 0x0 << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_2 = 0x8 << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_4 = 0x9 << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_8 = 0xA << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_16 = 0xB << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_32 = 0xC << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_64 = 0xD << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_128 = 0xD << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_256 = 0xE << RCC_CFGR_HPRE_BIT, - RCC_AHB_SYSCLK_DIV_512 = 0xF << RCC_CFGR_HPRE_BIT, -} rcc_ahb_divider; - -/** - * @brief STM32F3 clock sources. - */ -typedef enum rcc_clk { - RCC_CLK_PLL = (uint16)((offsetof(struct rcc_reg_map, CR) << 8) | - RCC_CR_PLLON_BIT), /**< Main PLL, clocked by - HSI or HSE. */ - RCC_CLK_HSE = (uint16)((offsetof(struct rcc_reg_map, CR) << 8) | - RCC_CR_HSEON_BIT), /**< High speed external. */ - RCC_CLK_HSI = (uint16)((offsetof(struct rcc_reg_map, CR) << 8) | - RCC_CR_HSION_BIT), /**< High speed internal. */ - RCC_CLK_LSE = (uint16)((offsetof(struct rcc_reg_map, BDCR) << 8) | - RCC_BDCR_LSEON_BIT), /**< Low-speed external - * (32.768 KHz). */ - RCC_CLK_LSI = (uint16)((offsetof(struct rcc_reg_map, CSR) << 8) | - RCC_CSR_LSION_BIT), /**< Low-speed internal - * (approximately 32 KHz). */ -} rcc_clk; - -/** - * @brief STM32F3 PLL multipliers. - */ -typedef enum rcc_pll_multiplier { - RCC_PLLMUL_2 = (0x0 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_3 = (0x1 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_4 = (0x2 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_5 = (0x3 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_6 = (0x4 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_7 = (0x5 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_8 = (0x6 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_9 = (0x7 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_10 = (0x8 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_11 = (0x9 << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_12 = (0xA << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_13 = (0xB << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_14 = (0xC << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_15 = (0xD << RCC_CFGR_PLLMUL_BIT), - RCC_PLLMUL_16 = (0xE << RCC_CFGR_PLLMUL_BIT), -} rcc_pll_multiplier; - -/* FIXME [0.0.13] Just have data point to an rcc_pll_multiplier! */ - -/** - * @brief STM32F3 PLL configuration values. - * Point to one of these with the "data" field in a struct rcc_pll_cfg. - * @see struct rcc_pll_cfg. - */ -typedef struct stm32f3_rcc_pll_data { - rcc_pll_multiplier pll_mul; /**< PLL multiplication factor. */ - rcc_prediv_divider pclk_prediv; /**< PCLK predivider. */ -} stm32f3_rcc_pll_data; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/simd.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/simd.h deleted file mode 100644 index 8325d5d47..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/simd.h +++ /dev/null @@ -1,109 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file libmaple/include/libmaple/simd.h - * @author F3-port by Hanspeter Portner - * @brief Convenience macros for the digital signal processing (DSP) - * instruction set of the ARM Cortex M4 microcontroller. - */ - -#ifndef _LIBMAPLE_DSP_H_ -#define _LIBMAPLE_DSP_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#define DSP3(ID, A, B, C) \ -({ \ - uint32_t X; \ - asm volatile (ID" %[res], %[val1], %[val2], %[val3]" \ - : [res]"=r" (X) \ - : [val1]"r" (A), [val2]"r" (B), [val3]"r" (C) \ - ); \ - (uint32_t)X; \ -}) - -#define DSP2(ID, A, B) \ -({ \ - uint32_t X; \ - asm volatile (ID" %[res], %[val1], %[val2]" \ - : [res]"=r" (X) \ - : [val1]"r" (A), [val2]"r" (B) \ - );\ - (uint32_t)X; \ -}) - -#define DSP1(ID, A) \ -({ \ - uint32_t X; \ - asm volatile (ID" %[res], %[val1]" \ - : [res]"=r" (X) \ - : [val1]"r" (A) \ - ); \ - (uint32_t)X; \ -}) - -/* General data processing instructions */ -#define __rev16(A) DSP1("REV16", A) - -/* SIMD instructions (single instruction multiple data) */ -#define __sadd16(A, B) DSP2("SADD16", A, B) -#define __shadd16(A, B) DSP2("SHADD16", A, B) -#define __ssub16(A, B) DSP2("SSUB16", A, B) -#define __shsub16(A, B) DSP2("SHSUB16", A, B) -#define __uadd16(A, B) DSP2("UADD16", A, B) -#define __uhadd16(A, B) DSP2("UHADD16", A, B) -#define __usub16(A, B) DSP2("USUB16", A, B) -#define __uhsub16(A, B) DSP2("UHSUB16", A, B) - -#define __sadd8(A, B) DSP2("SADD8", A, B) -#define __shadd8(A, B) DSP2("SHADD8", A, B) -#define __ssub8(A, B) DSP2("SSUB8", A, B) -#define __shsub8(A, B) DSP2("SHSUB8", A, B) -#define __uadd8(A, B) DSP2("UADD8", A, B) -#define __uhadd8(A, B) DSP2("UHADD8", A, B) -#define __usub8(A, B) DSP2("USUB8", A, B) -#define __uhsub8(A, B) DSP2("UHSUB8", A, B) - -#define __sasx(A, B) DSP2("SASX", A, B) -#define __ssax(A, B) DSP2("SSAX", A, B) -#define __shasx(A, B) DSP2("SHASX", A, B) -#define __shsax(A, B) DSP2("SHSAX", A, B) -#define __uasx(A, B) DSP2("UASX", A, B) -#define __usax(A, B) DSP2("USAX", A, B) -#define __uhasx(A, B) DSP2("UHASX", A, B) -#define __uhsax(A, B) DSP2("UHSAX", A, B) - -#define __usad8(A, B) DSP2("USAD8", A, B) -#define __usada8(A, B, C) DSP3("USADA8", A, B, C) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/spi.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/spi.h deleted file mode 100644 index 5b1de093c..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/spi.h +++ /dev/null @@ -1,178 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/spi.h - * @author Marti Bolivar , - * F3-port by Hanspeter Portner - * @brief STM32F3 SPI/I2S series header. - */ - -#ifndef _LIBMAPLE_STM32F3_SPI_H_ -#define _LIBMAPLE_STM32F3_SPI_H_ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * Register map base pointers - */ - -struct spi_reg_map; - -#define SPI1_BASE ((struct spi_reg_map*)0x40013000) -#define SPI2_BASE ((struct spi_reg_map*)0x40003800) -#define SPI3_BASE ((struct spi_reg_map*)0x40003C00) - -/* - * F3 additional registry items - */ - -/* Control register 1 */ -/* CRC length bitfield in F3 overwrites the data length field in F1/F2 */ -#define SPI_CR1_CRCL_BIT 11 - -#define SPI_CR1_CRCL (1U << SPI_CR1_CRCL_BIT) - -/* Control register 2 */ -#define SPI_CR2_LDMA_TX_BIT 14 -#define SPI_CR2_LDMA_RX_BIT 13 -#define SPI_CR2_FRXTH_BIT 12 -#define SPI_CR2_DS_SHIFT 8 -#define SPI_CR2_FRF_BIT 4 -#define SPI_CR2_NSSP_BIT 3 - -#define SPI_CR2_LDMA_TX (1U << SPI_CR2_LDMA_TX_BIT) -#define SPI_CR2_LDMA_RX (1U << SPI_CR2_LDMA_RX_BIT) -#define SPI_CR2_FRXTH (1U << SPI_CR2_FRXTH_BIT) -#define SPI_CR2_DS (0x7 << SPI_CR2_DS_SHIFT) -#define SPI_CR2_FRF (1U << SPI_CR2_FRF_BIT) -#define SPI_CR2_NSSP (1U << SPI_CR2_NSSP_BIT) - -/* Status register */ -#define SPI_SR_FTLVL_SHIFT 11 -#define SPI_SR_FRLVL_SHIFT 9 -#define SPI_SR_FRE_BIT 8 - -#define SPI_SR_FTLVL (0x3 << SPI_SR_FTLVL_SHIFT) -#define SPI_SR_FRLVL (0x3 << SPI_SR_FRLVL_SHIFT) -#define SPI_SR_FRE (1U << SPI_SR_FRE_SHIFT) - -/** - * @brief TODO document me - */ -typedef enum spi_crc_size { - SPI_CRC_SIZE_8_BIT = (0x0 << SPI_CR1_CRCL_BIT), - SPI_CRC_SIZE_16_BIT = (0x1 << SPI_CR1_CRCL_BIT), -} spi_crc_size; - -/** - * @brief TODO document me - */ -typedef enum spi_frame_format { - SPI_FRAME_FORMAT_MOTOROLA = (0x0 << SPI_CR2_FRF_BIT), - SPI_FRAME_FORMAT_TI = (0x1 << SPI_CR2_FRF_BIT), -} spi_frame_format; - -/** - * @brief TODO document me - */ -typedef enum spi_ds { - SPI_DATA_SIZE_DEFAULT = (0x0 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_4_BIT = (0x3 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_5_BIT = (0x4 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_6_BIT = (0x5 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_7_BIT = (0x6 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_8_BIT = (0x7 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_9_BIT = (0x8 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_10_BIT = (0x9 << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_11_BIT = (0xA << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_12_BIT = (0xB << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_13_BIT = (0xC << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_14_BIT = (0xD << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_15_BIT = (0xE << SPI_CR2_DS_SHIFT), - SPI_DATA_SIZE_16_BIT = (0xF << SPI_CR2_DS_SHIFT), -} spi_ds; - -/** - * @brief TODO document me - */ -typedef enum spi_fifo_transmission_level { - SPI_FIFO_TRANSMISSION_LEVEL_EMPTY = (0x0 << SPI_SR_FTLVL_SHIFT), - SPI_FIFO_TRANSMISSION_LEVEL_QUARTER = (0x1 << SPI_SR_FTLVL_SHIFT), - SPI_FIFO_TRANSMISSION_LEVEL_HALF = (0x2 << SPI_SR_FTLVL_SHIFT), - SPI_FIFO_TRANSMISSION_LEVEL_FULL = (0x3 << SPI_SR_FTLVL_SHIFT), -} spi_fifo_transmission_level; - -/** - * @brief TODO document me - */ -typedef enum spi_fifo_reception_level { - SPI_FIFO_RECEPTION_LEVEL_EMPTY = (0x0 << SPI_SR_FRLVL_SHIFT), - SPI_FIFO_RECEPTION_LEVEL_QUARTER = (0x1 << SPI_SR_FRLVL_SHIFT), - SPI_FIFO_RECEPTION_LEVEL_HALF = (0x2 << SPI_SR_FRLVL_SHIFT), - SPI_FIFO_RECEPTION_LEVEL_FULL = (0x3 << SPI_SR_FRLVL_SHIFT), -} spi_fifo_reception_level; - -/* - * Device pointers - */ - -struct spi_dev; - -extern struct spi_dev *SPI1; -extern struct spi_dev *SPI2; -extern struct spi_dev *SPI3; - -/* - * Routines - */ - -struct gpio_dev; -extern void spi_config_gpios(struct spi_dev*, uint8, - struct gpio_dev*, uint8, - struct gpio_dev*, uint8, uint8, uint8); - -/** - * @brief Set the data size of the given SPI device. - * - * @param dev SPI device - * @param ds SPI data size - * @see spi_ds - * @see spi_reconfigure() - */ -extern void spi_data_size(struct spi_dev *, spi_ds); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/stm32.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/stm32.h deleted file mode 100644 index c40627c10..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/stm32.h +++ /dev/null @@ -1,238 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010, 2011 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f1/include/series/stm32.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 chip- and series-specific definitions. - */ - -#ifndef _LIBMAPLE_STM32F3_H_ -#define _LIBMAPLE_STM32F3_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#define __CCM__ __attribute__((section(".CCM"))) - -#define STM32_MCU_SERIES STM32_SERIES_F3 - -/* The STM32F3 series is subdivided into "lines". libmaple currently - * officially supports STM32F303 performance line MCUs (see the - * MCU-specific value section below). - * - * You can use these F3 line defines if porting libmaple to support - * MCUs on other lines. */ -/** STM32F3 302 line (STM32F302 MCUs). */ -#define STM32_F3_LINE_302 0 -/** STM32F3 303 line (STM32F303 MCUs). */ -#define STM32_F3_LINE_303 1 - -/* - * MCU-specific values. - * - * You can use this section to override any of the below settings on a - * per-MCU basis. For example, if your MCU has different STM32_PCLK1 - * or STM32_PCLK2 values, you can set them here and the values for - * STM32F303 microcontrollers set below won't take effect. - */ - -#if defined(MCU_STM32F302CB) -# define STM32_F3_LINE STM32_F3_LINE_302 -# define STM32_NR_GPIO_PORTS 20 -# define STM32_SRAM_END ((void*)0x20008000) -# define STM32_MEDIUM_DENSITY // 48pin package - -#elif defined(MCU_STM32F302RB) -# define STM32_F3_LINE STM32_F3_LINE_302 -# define STM32_NR_GPIO_PORTS 27 -# define STM32_SRAM_END ((void*)0x20008000) -# define STM32_HIGH_DENSITY // 64pin package - -#elif defined(MCU_STM32F302VB) -# define STM32_F3_LINE STM32_F3_LINE_302 -# define STM32_NR_GPIO_PORTS 45 -# define STM32_SRAM_END ((void*)0x20008000) -# define STM32_XL_DENSITY // 100pin package - -#elif defined(MCU_STM32F302CC) -# define STM32_F3_LINE STM32_F3_LINE_302 -# define STM32_NR_GPIO_PORTS 20 -# define STM32_SRAM_END ((void*)0x2000A000) -# define STM32_MEDIUM_DENSITY // 48pin package - -#elif defined(MCU_STM32F302RC) -# define STM32_F3_LINE STM32_F3_LINE_302 -# define STM32_NR_GPIO_PORTS 27 -# define STM32_SRAM_END ((void*)0x2000A000) -# define STM32_HIGH_DENSITY // 64pin package - -#elif defined(MCU_STM32F302VC) -# define STM32_F3_LINE STM32_F3_LINE_302 -# define STM32_NR_GPIO_PORTS 45 -# define STM32_SRAM_END ((void*)0x2000A000) -# define STM32_XL_DENSITY // 100pin package - -#elif defined(MCU_STM32F303CB) -# define STM32_F3_LINE STM32_F3_LINE_303 -# define STM32_NR_GPIO_PORTS 20 -# define STM32_SRAM_END ((void*)0x2000A000) -# define STM32_MEDIUM_DENSITY // 48pin package - -#elif defined(MCU_STM32F303RB) -# define STM32_F3_LINE STM32_F3_LINE_303 -# define STM32_NR_GPIO_PORTS 27 -# define STM32_SRAM_END ((void*)0x2000A000) -# define STM32_HIGH_DENSITY // 64pin package - -#elif defined(MCU_STM32F303VB) -# define STM32_F3_LINE STM32_F3_LINE_303 -# define STM32_NR_GPIO_PORTS 45 -# define STM32_SRAM_END ((void*)0x2000A000) -# define STM32_XL_DENSITY // 100pin package - -#elif defined(MCU_STM32F303CC) -# define STM32_F3_LINE STM32_F3_LINE_303 -# define STM32_NR_GPIO_PORTS 20 -# define STM32_SRAM_END ((void*)0x2000C000) -# define STM32_MEDIUM_DENSITY // 48pin package - -#elif defined(MCU_STM32F303RC) -# define STM32_F3_LINE STM32_F3_LINE_303 -# define STM32_NR_GPIO_PORTS 27 -# define STM32_SRAM_END ((void*)0x2000C000) -# define STM32_HIGH_DENSITY // 64pin package - -#elif defined(MCU_STM32F303VC) -# define STM32_F3_LINE STM32_F3_LINE_303 -# define STM32_NR_GPIO_PORTS 45 -# define STM32_SRAM_END ((void*)0x2000C000) -// # define STM32_XL_DENSITY // 100pin package - -#else -#warning "Unsupported or unspecified STM32F3 MCU." -#endif - -/* - * Derived values. - */ - -#if STM32_F3_LINE == STM32_F3_LINE_302 -# define STM32_HAVE_USB 1 - -# ifdef STM32_MEDIUM_DENSITY -# define STM32_NR_INTERRUPTS 82 -# define STM32_TIMER_MASK 0b111000000001011110 -# define STM32_HAVE_FSMC 0 -# define STM32_HAVE_DAC 1 -# elif defined(STM32_HIGH_DENSITY) -# define STM32_NR_INTERRUPTS 82 -# define STM32_TIMER_MASK 0b111000000001011110 -# define STM32_HAVE_FSMC 0 -# define STM32_HAVE_DAC 1 -# elif defined(STM32_XL_DENSITY) -# define STM32_NR_INTERRUPTS 82 -# define STM32_TIMER_MASK 0b111000000001011110 -# define STM32_HAVE_FSMC 0 -# define STM32_HAVE_DAC 1 -# endif - -#elif STM32_F3_LINE == STM32_F3_LINE_303 -# define STM32_HAVE_USB 1 - -# ifdef STM32_MEDIUM_DENSITY -# define STM32_NR_INTERRUPTS 82 -# define STM32_TIMER_MASK 0b111000000111011110 -# define STM32_HAVE_FSMC 0 -# define STM32_HAVE_DAC 1 -# elif defined(STM32_HIGH_DENSITY) -# define STM32_NR_INTERRUPTS 82 -# define STM32_TIMER_MASK 0b111000000111011110 -# define STM32_HAVE_FSMC 0 -# define STM32_HAVE_DAC 1 -# elif defined(STM32_XL_DENSITY) -# define STM32_NR_INTERRUPTS 82 -# define STM32_TIMER_MASK 0b111000000111011110 -# define STM32_HAVE_FSMC 0 -# define STM32_HAVE_DAC 1 -# endif - -#endif - -/* - * Clock configuration. - * - * You can patch these for your line, MCU, clock configuration, - * etc. here or by setting cflags when compiling libmaple. - */ - -#ifndef STM32_PCLK1 -#define STM32_PCLK1 36000000U -#endif - -#ifndef STM32_PCLK2 -#define STM32_PCLK2 72000000U -#endif - -#ifndef STM32_DELAY_US_MULT -#define STM32_DELAY_US_MULT 12 /* FIXME: value is incorrect. */ -#endif - -/* - * Sanity checks. - * - * Make sure we have the F3-specific defines we need. - * will check that we've defined everything it needs. - */ - -#if !defined(STM32_F3_LINE) -#error "Bad STM32F3 configuration. Check STM32F3 header." -#endif - -/* - * Doxygen - */ - -#ifdef __DOXYGEN__ - -/** - * @brief STM32 line value for the STM32F3 MCU being targeted. - * - * At time of writing, allowed values are: STM32_F3_LINE_303, - * STM32_F3_LINE_302. This set of values may expand as libmaple adds - * support for more STM32F3 lines. - */ -#define STM32_F3_LINE - -#endif /* __DOXYGEN__ */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h deleted file mode 100644 index 2565290f1..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/syscfg.h +++ /dev/null @@ -1,138 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/syscfg.h - * @author F3-port by Hanspeter Portner - * @brief System configuration controller (SYSCFG) - */ - -#ifndef _LIBMAPLE_STM32F3_SYSCFG_H_ -#define _LIBMAPLE_STM32F3_SYSCFG_H_ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/* - * Register map and base pointer - */ - -/** - * @brief SYSCFG register map type. - */ -typedef struct syscfg_reg_map { - __IO uint32 CFGR1; /**< Configuration register 1*/ - __IO uint32 RCR; /**< CCM SRAM protection register */ - __IO uint32 EXTICR[4]; /**< External Interrupt configuration register */ - __IO uint32 CFGR2; /**< Configuration register 2 */ -} syscfg_reg_map; - -/** SYSCFG register map base pointer */ -#define SYSCFG_BASE ((struct syscfg_reg_map*)0x40010000) - -/* - * Register bit definitions - */ - -/* Configuration register 1 */ - -#define SYSCFG_CFGR1_FPU_IE_SHIFT 26 -#define SYSCFG_CFGR1_ENCODE_MODE_SHIFT 22 -#define SYSCFG_CFGR1_I2C2_FM_PLUS_BIT 21 -#define SYSCFG_CFGR1_I2C1_FM_PLUS_BIT 20 -#define SYSCFG_CFGR1_I2C_PB9_FM_PLUS_BIT 19 -#define SYSCFG_CFGR1_I2C_PB8_FM_PLUS_BIT 18 -#define SYSCFG_CFGR1_I2C_PB7_FM_PLUS_BIT 17 -#define SYSCFG_CFGR1_I2C_PB6_FM_PLUS_BIT 16 -#define SYSCFG_CFGR1_TIM7_DAC2_DMA_RMP_BIT 14 -#define SYSCFG_CFGR1_TIM6_DAC1_DMA_RMP_BIT 13 -#define SYSCFG_CFGR1_TIM17_DMA_RMP_BIT 12 -#define SYSCFG_CFGR1_TIM16_DMA_RMP_BIT 11 -#define SYSCFG_CFGR1_ADC24_DMA_RMP_BIT 8 -#define SYSCFG_CFGR1_DAC_TRIG_RMP_BIT 7 -#define SYSCFG_CFGR1_TIM1_ITR3_RMP_BIT 6 -#define SYSCFG_CFGR1_USB_IT_RMP_BIT 5 - -//FIXME FPU_IE -//FIXME ENCODE_MODE -#define SYSCFG_CFGR1_I2C2_FM_PLUS (1U << SYSCFG_CFGR1_I2C2_FM_PLUS_BIT) -#define SYSCFG_CFGR1_I2C1_FM_PLUS (1U << SYSCFG_CFGR1_I2C1_FM_PLUS_BIT) -#define SYSCFG_CFGR1_I2C1_PB9_FM_PLUS (1U << SYSCFG_CFGR1_I2C1_PB9_FM_PLUS_BIT) -#define SYSCFG_CFGR1_I2C1_PB8_FM_PLUS (1U << SYSCFG_CFGR1_I2C1_PB8_FM_PLUS_BIT) -#define SYSCFG_CFGR1_I2C1_PB7_FM_PLUS (1U << SYSCFG_CFGR1_I2C1_PB7_FM_PLUS_BIT) -#define SYSCFG_CFGR1_I2C1_PB6_FM_PLUS (1U << SYSCFG_CFGR1_I2C1_PB6_FM_PLUS_BIT) -#define SYSCFG_CFGR1_TIM7_DAC2_DMA_RMP (1U << SYSCFG_CFGR1_TIM7_DAC2_DMA_RMP_BIT) -#define SYSCFG_CFGR1_TIM6_DAC1_DMA_RMP (1U << SYSCFG_CFGR1_TIM6_DAC1_DMA_RMP_BIT) -#define SYSCFG_CFGR1_TIM17_DMA_RMP (1U << SYSCFG_CFGR1_TIM17_DMA_RMP_BIT) -#define SYSCFG_CFGR1_TIM16_DMA_RMP (1U << SYSCFG_CFGR1_TIM16_DMA_RMP_BIT) -#define SYSCFG_CFGR1_ADC23_DMA_RMP (1U << SYSCFG_CFGR1_ADC23_DMA_RMP_BIT) -#define SYSCFG_CFGR1_DAC_TRIG_RMP (1U << SYSCFG_CFGR1_DAC_TRIG_RMP_BIT) -#define SYSCFG_CFGR1_TIM1_ITR3_RMP (1U << SYSCFG_CFGR1_TIM1_ITR3_RMP_BIT) -#define SYSCFG_CFGR1_USB_IT_RMP (1U << SYSCFG_CFGR1_USB_IT_RMP_BIT) -#define SYSCFG_CFGR1_MEM_MODE 0X3 - -/* CCM SRAM protection register */ - -#define SYSCFG_RCR_PAGE7_WP_BIT 7 -#define SYSCFG_RCR_PAGE6_WP_BIT 6 -#define SYSCFG_RCR_PAGE5_WP_BIT 5 -#define SYSCFG_RCR_PAGE4_WP_BIT 4 -#define SYSCFG_RCR_PAGE3_WP_BIT 3 -#define SYSCFG_RCR_PAGE2_WP_BIT 2 -#define SYSCFG_RCR_PAGE1_WP_BIT 1 -#define SYSCFG_RCR_PAGE0_WP_BIT 0 - -#define SYSCFG_RCR_PAGE_7 (1U << SYSCFG_RCR_PAGE7_WP_BIT) -#define SYSCFG_RCR_PAGE_6 (1U << SYSCFG_RCR_PAGE6_WP_BIT) -#define SYSCFG_RCR_PAGE_5 (1U << SYSCFG_RCR_PAGE5_WP_BIT) -#define SYSCFG_RCR_PAGE_4 (1U << SYSCFG_RCR_PAGE4_WP_BIT) -#define SYSCFG_RCR_PAGE_3 (1U << SYSCFG_RCR_PAGE3_WP_BIT) -#define SYSCFG_RCR_PAGE_2 (1U << SYSCFG_RCR_PAGE2_WP_BIT) -#define SYSCFG_RCR_PAGE_1 (1U << SYSCFG_RCR_PAGE1_WP_BIT) -#define SYSCFG_RCR_PAGE_0 (1U << SYSCFG_RCR_PAGE0_WP_BIT) - -/* Configuration register 2 */ - -#define SYSCFG_CFGR2_SRAM_PEF_BIT 8 -#define SYSCFG_CFGR2_BYP_ADDR_PAR_BIT 4 -#define SYSCFG_CFGR2_PVD_LOCK_BIT 2 -#define SYSCFG_CFGR2_SRAM_PARITY_LOCK_BIT 1 -#define SYSCFG_CFGR2_LOCKUP_LOCK_BIT 0 - -#define SYSCFG_CFGR2_SRAM_PEF (1U << SYSCFG_CFGR2_SRAM_PEF_BIT) -#define SYSCFG_CFGR2_BYP_ADDR_PAR (1U << SYSCFG_CFGR2_BYP_ADDR_PAR_BIT) -#define SYSCFG_CFGR2_PVD_LOCK (1U << SYSCFG_CFGR2_PVD_LOCK_BIT) -#define SYSCFG_CFGR2_SRAM_PARITY_LOCK (1U << SYSCFG_CFGR2_SRAM_PARITY_LOCK_BIT) -#define SYSCFG_CFGR2_LOCKUP_LOCK (1U << SYSCFG_CFGR2_LOCKUP_LOCK_BIT) - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h deleted file mode 100644 index 01e2c88d5..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/timer.h +++ /dev/null @@ -1,123 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/timer.h - * @author Marti Bolivar , - * F3-port by Hanspeter Portner - * @brief STM32F3 timer support. - */ - -#ifndef _LIBMAPLE_STM32F3_TIMER_H_ -#define _LIBMAPLE_STM32F3_TIMER_H_ - -#include -#include - -/* - * Register maps and base pointers - */ - -/** STM32F1 general purpose timer register map type */ -typedef struct timer_gen_reg_map { - __IO uint32 CR1; /**< Control register 1 */ - __IO uint32 CR2; /**< Control register 2 */ - __IO uint32 SMCR; /**< Slave mode control register */ - __IO uint32 DIER; /**< DMA/Interrupt enable register */ - __IO uint32 SR; /**< Status register */ - __IO uint32 EGR; /**< Event generation register */ - __IO uint32 CCMR1; /**< Capture/compare mode register 1 */ - __IO uint32 CCMR2; /**< Capture/compare mode register 2 */ - __IO uint32 CCER; /**< Capture/compare enable register */ - __IO uint32 CNT; /**< Counter */ - __IO uint32 PSC; /**< Prescaler */ - __IO uint32 ARR; /**< Auto-reload register */ - const uint32 RESERVED1; /**< Reserved */ - __IO uint32 CCR1; /**< Capture/compare register 1 */ - __IO uint32 CCR2; /**< Capture/compare register 2 */ - __IO uint32 CCR3; /**< Capture/compare register 3 */ - __IO uint32 CCR4; /**< Capture/compare register 4 */ - const uint32 RESERVED2; /**< Reserved */ - __IO uint32 DCR; /**< DMA control register */ - __IO uint32 DMAR; /**< DMA address for full transfer */ -} timer_gen_reg_map; - -struct timer_adv_reg_map; -struct timer_bas_reg_map; - -/** Timer 1 register map base pointer */ -#define TIMER1_BASE ((struct timer_adv_reg_map*)0x40012C00) -/** Timer 2 register map base pointer */ -#define TIMER2_BASE ((struct timer_gen_reg_map*)0x40000000) -/** Timer 3 register map base pointer */ -#define TIMER3_BASE ((struct timer_gen_reg_map*)0x40000400) -/** Timer 4 register map base pointer */ -#define TIMER4_BASE ((struct timer_gen_reg_map*)0x40000800) - -/** Timer 6 register map base pointer */ -#define TIMER6_BASE ((struct timer_bas_reg_map*)0x40001000) -/** Timer 7 register map base pointer */ -#define TIMER7_BASE ((struct timer_bas_reg_map*)0x40001400) -/** Timer 8 register map base pointer */ -#define TIMER8_BASE ((struct timer_adv_reg_map*)0x40013400) - -/** Timer 15 register map base pointer */ -#define TIMER15_BASE ((struct timer_gen_reg_map*)0x40014000) -/** Timer 16 register map base pointer */ -#define TIMER16_BASE ((struct timer_gen_reg_map*)0x40014400) -/** Timer 17 register map base pointer */ -#define TIMER17_BASE ((struct timer_gen_reg_map*)0x40014800) - -/* - * Device pointers - * - * We only declare device pointers to timers which actually exist on - * the target MCU. - */ - -struct timer_dev; - -extern struct timer_dev *TIMER1; -extern struct timer_dev *TIMER2; /* FIXME 32bit-capable counter */ -extern struct timer_dev *TIMER3; -extern struct timer_dev *TIMER4; -extern struct timer_dev *TIMER6; -#if STM32_F3_LINE == STM32_F3_LINE_303 -extern struct timer_dev *TIMER7; -extern struct timer_dev *TIMER8; -#endif -extern struct timer_dev *TIMER15; -extern struct timer_dev *TIMER16; -extern struct timer_dev *TIMER17; - -/* - * Routines - */ - -gpio_af timer_get_af(struct timer_dev *dev); - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h b/STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h deleted file mode 100644 index 94a25d961..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/include/series/usart.h +++ /dev/null @@ -1,277 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/stm32f3/include/series/usart.h - * @author F3-port by Hanspeter Portner - * @brief STM32F3 USART support. - */ - -#ifndef _LIBMAPLE_STM32F3_USART_H_ -#define _LIBMAPLE_STM32F3_USART_H_ - -#ifdef __cplusplus -extern "C"{ -#endif - -#include /* for gpio_af */ - -/* - * Register maps - */ - -/** USART register map type */ -typedef struct usart_reg_map { - __IO uint32 CR1; /**< Control register 1 */ - __IO uint32 CR2; /**< Control register 2 */ - __IO uint32 CR3; /**< Control register 3 */ - __IO uint32 BRR; /**< Baud rate register */ - __IO uint32 GTPR; /**< Guard time and prescaler register */ - __IO uint32 RTOR; /**< Receiver timeout register */ - __IO uint32 RQR; /**< Request register */ - __IO uint32 SR; /**< ISR Interrupt and status register */ - __IO uint32 ICR; /**< Interrupt clear register */ - __IO uint16 RDR; /**< Receive data register */ - uint16 RESERVED1; - __IO uint16 TDR; /**< Transmit data register */ - uint16 RESERVED2; -} usart_reg_map; - -/* - * Register map base pointers - */ - -/** USART1 register map base pointer */ -#define USART1_BASE ((struct usart_reg_map*)0x40013800) -/** USART2 register map base pointer */ -#define USART2_BASE ((struct usart_reg_map*)0x40004400) -/** USART3 register map base pointer */ -#define USART3_BASE ((struct usart_reg_map*)0x40004800) - -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) -/** UART4 register map base pointer */ -#define UART4_BASE ((struct usart_reg_map*)0x40004C00) -/** UART5 register map base pointer */ -#define UART5_BASE ((struct usart_reg_map*)0x40005000) -#endif - -/* - * Devices - */ - -struct usart_dev; -extern struct usart_dev *USART1; -extern struct usart_dev *USART2; -extern struct usart_dev *USART3; -#ifdef STM32_HIGH_DENSITY -extern struct usart_dev *UART4; -extern struct usart_dev *UART5; -#endif - -/* - * F3-only register bit definitions. - */ - -/* Control register 1 */ -#define USART_CR1_EOBIE_BIT 27 -#define USART_CR1_RTOIE_BIT 26 -#define USART_CR1_DEAT4_BIT 25 -#define USART_CR1_DEAT3_BIT 24 -#define USART_CR1_DEAT2_BIT 23 -#define USART_CR1_DEAT1_BIT 22 -#define USART_CR1_DEAT0_BIT 21 -#define USART_CR1_DEDT4_BIT 20 -#define USART_CR1_DEDT3_BIT 19 -#define USART_CR1_DEDT2_BIT 18 -#define USART_CR1_DEDT1_BIT 17 -#define USART_CR1_DEDT0_BIT 16 -#define USART_CR1_OVER8_BIT 15 -#define USART_CR1_CMIE_BIT 14 -#define USART_CR1_MME_BIT 13 -#define USART_CR1_UESM_BIT 1 -#define USART_CR1_UE_BIT 0 - -#define USART_CR1_EOBIE (1UL << USART_CR1_EOBIE_BIT) -#define USART_CR1_RTOIE (1UL << USART_CR1_RTOIE_BIT) -#define USART_CR1_DEAT4 (1UL << USART_CR1_DEAT4_BIT) -#define USART_CR1_DEAT3 (1UL << USART_CR1_DEAT3_BIT) -#define USART_CR1_DEAT2 (1UL << USART_CR1_DEAT2_BIT) -#define USART_CR1_DEAT1 (1UL << USART_CR1_DEAT1_BIT) -#define USART_CR1_DEAT0 (1UL << USART_CR1_DEAT0_BIT) -#define USART_CR1_DEDT4 (1UL << USART_CR1_DEDT4_BIT) -#define USART_CR1_DEDT3 (1UL << USART_CR1_DEDT3_BIT) -#define USART_CR1_DEDT2 (1UL << USART_CR1_DEDT2_BIT) -#define USART_CR1_DEDT1 (1UL << USART_CR1_DEDT1_BIT) -#define USART_CR1_DEDT0 (1UL << USART_CR1_DEDT0_BIT) -#define USART_CR1_OVER8 (1UL << USART_CR1_OVER8_BIT) -#define USART_CR1_CMIE (1UL << USART_CR1_CMIE_BIT) -#define USART_CR1_MME (1UL << USART_CR1_MME_BIT) -#define USART_CR1_UESM (1UL << USART_CR1_UESM_BIT) -#define USART_CR1_UE (1UL << USART_CR1_UE_BIT) - -/* Control register 2 */ -#define USART_CR2_ADD_SHIFT 24 -#define USART_CR2_RTOEN_BIT 23 -#define USART_CR2_ABRMOD1_BIT 22 -#define USART_CR2_ABRMOD0_BIT 21 -#define USART_CR2_ABREN_BIT 20 -#define USART_CR2_MSBFIRST_BIT 19 -#define USART_CR2_DATAINV_BIT 18 -#define USART_CR2_TXINV_BIT 17 -#define USART_CR2_RXINV_BIT 16 -#define USART_CR2_SWAP_BIT 15 -#define USART_CR2_ADDM7_BIT 4 - -#define USART_CR2_ADD (0xFF << USART_CR2_ADD_SHIFT) -#define USART_CR2_RTOEN (1UL << USART_CR2_RTOEN_BIT) -#define USART_CR2_ABRMOD1 (1UL << USART_CR2_ABRMOD1_BIT) -#define USART_CR2_ABRMOD0 (1UL << USART_CR2_ABRMOD0_BIT) -#define USART_CR2_ABREN (1UL << USART_CR2_ABREN_BIT) -#define USART_CR2_MSBFIRST (1UL << USART_CR2_MSBFIRST_BIT) -#define USART_CR2_DATAINV (1UL << USART_CR2_DATAINV_BIT) -#define USART_CR2_TXINV (1UL << USART_CR2_TXINV_BIT) -#define USART_CR2_RXINV (1UL << USART_CR2_RXINV_BIT) -#define USART_CR2_SWAP (1UL << USART_CR2_SWAP_BIT) -#define USART_CR2_ADDM7 (1UL << USART_CR2_ADDM7_BIT) - -/* Control register 3 */ -#define USART_CR3_WUFIE_BIT 22 -#define USART_CR3_WUS_SHIFT 20 -#define USART_CR3_SCAR_SHIFT 17 -#define USART_CR3_DEP_BIT 15 -#define USART_CR3_DEM_BIT 14 -#define USART_CR3_DDRE_BIT 13 -#define USART_CR3_OVRDIS_BIT 12 -#define USART_CR3_ONEBIT_BIT 11 - -#define USART_CR3_WUFIE (1UL << USART_CR3_WUFIE_BIT) -#define USART_CR3_WUS (0x3 << USART_CR3_WUS_SHIFT) -#define USART_CR3_SCAR (0x7 << USART_CR3_SCAR_SHIFT) -#define USART_CR3_DEP (1UL << USART_CR3_DEP_BIT) -#define USART_CR3_DEM (1UL << USART_CR3_DEM_BIT) -#define USART_CR3_DDRE (1UL << USART_CR3_DDRE_BIT) -#define USART_CR3_OVRDIS (1UL << USART_CR3_OVRDIS_BIT) -#define USART_CR3_ONEBIT (1UL << USART_CR3_ONEBIT_BIT) - -/* Receive timeout register */ -#define USART_RTOR_BLEN_SHIFT 24 -#define USART_RTOR_RTO_SHIFT 0 - -#define USART_RTOR_BLEN (0xF << USART_RTOR_BLEN_SHIFT) -#define USART_RTOR_RTO (0xFFF << USART_RTOR_RTO_SHIFT) - -/* Request register */ -#define USART_RQR_TXFRQ_BIT 4 -#define USART_RQR_RXFRQ_BIT 3 -#define USART_RQR_MMRQ_BIT 2 -#define USART_RQR_SBKRQ_BIT 1 -#define USART_RQR_ABRRQ_BIT 0 - -#define USART_RQR_TXFRQ (1UL << USART_RQR_TXFRQ_BIT) -#define USART_RQR_RXFRQ (1UL << USART_RQR_RXFRQ_BIT) -#define USART_RQR_MMRQ (1UL << USART_RQR_MMRQ_BIT) -#define USART_RQR_SBKRQ (1UL << USART_RQR_SBKRQ_BIT) -#define USART_RQR_ABRRQ (1UL << USART_RQR_ABRRQ_BIT) - -/* Interrupt and status register */ -// common register bits with other STM32 series are defined as USART_SR_* for compatibility -#define USART_SR_REACK_BIT 22 -#define USART_SR_TEACK_BIT 21 -#define USART_SR_WUF_BIT 20 -#define USART_SR_RWU_BIT 19 -#define USART_SR_SBKF_BIT 18 -#define USART_SR_CMF_BIT 17 -#define USART_SR_BUSY_BIT 16 -#define USART_SR_ABRF_BIT 15 -#define USART_SR_ABRE_BIT 14 -#define USART_SR_EOBF_BIT 12 -#define USART_SR_RTOF_BIT 11 -#define USART_SR_CTS_BIT 10 -#define USART_SR_CTSIF_BIT 9 - -#define USART_SR_REACK (1UL << USART_ISR_REACK_BIT) -#define USART_SR_TEACK (1UL << USART_ISR_TEACK_BIT) -#define USART_SR_WUF (1UL << USART_ISR_WUF_BIT) -#define USART_SR_RWU (1UL << USART_ISR_RWU_BIT) -#define USART_SR_SBKF (1UL << USART_ISR_SBKF_BIT) -#define USART_SR_CMF (1UL << USART_ISR_CMF_BIT) -#define USART_SR_BUSY (1UL << USART_ISR_BUSY_BIT) -#define USART_SR_ABRF (1UL << USART_ISR_ABRF_BIT) -#define USART_SR_ABRE (1UL << USART_ISR_ABRE_BIT) -#define USART_SR_EOBF (1UL << USART_ISR_EOBF_BIT) -#define USART_SR_RTOF (1UL << USART_ISR_RTOF_BIT) -#define USART_SR_CTS (1UL << USART_ISR_CTS_BIT) -#define USART_SR_CTSIF (1UL << USART_ISR_CTSIF_BIT) - -/* Interrupt clear register */ -#define USART_ICR_WUFCF_BIT 20 -#define USART_ICR_CMCF_BIT 17 -#define USART_ICR_EOBCF_BIT 12 -#define USART_ICR_RTOCF_BIT 11 -#define USART_ICR_CTSCF_BIT 9 -#define USART_ICR_LBDCF_BIT 8 -#define USART_ICR_TCCF_BIT 6 -#define USART_ICR_IDLECF_BIT 4 -#define USART_ICR_ORECF_BIT 3 -#define USART_ICR_NCF_BIT 2 -#define USART_ICR_FECF_BIT 1 -#define USART_ICR_PECF_BIT 0 - -#define USART_ICR_WUFCF (1UL << USART_ICR_WUFCF_BIT) -#define USART_ICR_CMCF (1UL << USART_ICR_CMCF_BIT) -#define USART_ICR_EOBCF (1UL << USART_ICR_EOBCF_BIT) -#define USART_ICR_RTOCF (1UL << USART_ICR_RTOCF_BIT) -#define USART_ICR_CTSCF (1UL << USART_ICR_CTSCF_BIT) -#define USART_ICR_LBDCF (1UL << USART_ICR_LBDCF_BIT) -#define USART_ICR_TCCF (1UL << USART_ICR_TCCF_BIT) -#define USART_ICR_IDLECF (1UL << USART_ICR_IDLECF_BIT) -#define USART_ICR_ORECF (1UL << USART_ICR_ORECF_BIT) -#define USART_ICR_NCF (1UL << USART_ICR_NCF_BIT) -#define USART_ICR_FECF (1UL << USART_ICR_FECF_BIT) -#define USART_ICR_PECF (1UL << USART_ICR_PECF_BIT) - -/* Receive data register */ -#define USART_RDR_RDR_SHIFT 0 - -#define USART_RDR_RDR (0x1FF << USART_RDR_RDR_SHIFT) - - -/* Transmit data register */ -#define USART_TDR_TDR_SHIFT 0 - -#define USART_TDR_TDR (0x1FF << USART_TDR_TDR_SHIFT) - -/* - * Routines - */ - -gpio_af usart_get_af(struct usart_dev *dev); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/stm32f3/rules.mk b/STM32F3/cores/maple/libmaple/stm32f3/rules.mk deleted file mode 100644 index f17f7451e..000000000 --- a/STM32F3/cores/maple/libmaple/stm32f3/rules.mk +++ /dev/null @@ -1,48 +0,0 @@ -# Standard things -sp := $(sp).x -dirstack_$(sp) := $(d) -d := $(dir) -BUILDDIRS += $(BUILD_PATH)/$(d) - -# Local flags -CFLAGS_$(d) = -I$(d) $(LIBMAPLE_PRIVATE_INCLUDES) $(LIBMAPLE_INCLUDES) -Wall -Werror -ASFLAGS_$(d) = -I$(d) $(LIBMAPLE_PRIVATE_INCLUDES) $(LIBMAPLE_INCLUDES) -Wall -Werror - -# Extra BUILDDIRS -BUILDDIRS += $(BUILD_PATH)/$(d)/F30xxx - -# Local rules and targets -sSRCS_$(d) := F30xxx/isrs.S -sSRCS_$(d) += F30xxx/vector_table.S - -cSRCS_$(d) := adc.c -cSRCS_$(d) += dma.c -cSRCS_$(d) += exti.c -cSRCS_$(d) += gpio.c -cSRCS_$(d) += i2c.c -cSRCS_$(d) += rcc.c -cSRCS_$(d) += spi.c -cSRCS_$(d) += timer.c -cSRCS_$(d) += usart.c -cSRCS_$(d) += syscfg.c -cSRCS_$(d) += fpu.c -cSRCS_$(d) += comp.c -cSRCS_$(d) += opamp.c -cSRCS_$(d) += bkp.c - -sFILES_$(d) := $(sSRCS_$(d):%=$(d)/%) -cFILES_$(d) := $(cSRCS_$(d):%=$(d)/%) - -OBJS_$(d) := $(sFILES_$(d):%.S=$(BUILD_PATH)/%.o) \ - $(cFILES_$(d):%.c=$(BUILD_PATH)/%.o) -DEPS_$(d) := $(OBJS_$(d):%.o=%.d) - -$(OBJS_$(d)): TGT_ASFLAGS := $(ASFLAGS_$(d)) -$(OBJS_$(d)): TGT_CFLAGS := $(CFLAGS_$(d)) - -TGT_BIN += $(OBJS_$(d)) - -# Standard things --include $(DEPS_$(d)) -d := $(dirstack_$(sp)) -sp := $(basename $(sp)) diff --git a/STM32F3/cores/maple/libmaple/syscfg.c b/STM32F3/cores/maple/libmaple/syscfg.c deleted file mode 100644 index 8b3c96301..000000000 --- a/STM32F3/cores/maple/libmaple/syscfg.c +++ /dev/null @@ -1,41 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/syscfg.c - * @brief System configuration controller (SYSCFG) - * @author F3-port by Hanspeter Portner - * - * Availability: STM32F2, STM32F3, STM32F4. - */ - -#include -#include - -void syscfg_init(void) { - rcc_clk_enable(RCC_SYSCFG); - rcc_reset_dev(RCC_SYSCFG); -} diff --git a/STM32F3/cores/maple/libmaple/systick.c b/STM32F3/cores/maple/libmaple/systick.c deleted file mode 100644 index 7568abe06..000000000 --- a/STM32F3/cores/maple/libmaple/systick.c +++ /dev/null @@ -1,88 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2010, 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/systick.c - * @brief System timer (SysTick). - */ - -#include - -volatile uint32 systick_uptime_millis; -static void (*systick_user_callback)(void); - -/** - * @brief Initialize and enable SysTick. - * - * Clocks the system timer with the core clock, turns it on, and - * enables interrupts. - * - * @param reload_val Appropriate reload counter to tick every 1 ms. - */ -void systick_init(uint32 reload_val) { - SYSTICK_BASE->RVR = reload_val; - systick_enable(); -} - -/** - * Clock the system timer with the core clock, but don't turn it - * on or enable interrupt. - */ -void systick_disable() { - SYSTICK_BASE->CSR = SYSTICK_CSR_CLKSOURCE_CORE; -} - -/** - * Clock the system timer with the core clock and turn it on; - * interrupt every 1 ms, for systick_timer_millis. - */ -void systick_enable() { - /* re-enables init registers without changing reload val */ - SYSTICK_BASE->CSR = (SYSTICK_CSR_CLKSOURCE_CORE | - SYSTICK_CSR_ENABLE | - SYSTICK_CSR_TICKINT_PEND); -} - -/** - * @brief Attach a callback to be called from the SysTick exception handler. - * - * To detach a callback, call this function again with a null argument. - */ -void systick_attach_callback(void (*callback)(void)) { - systick_user_callback = callback; -} - -/* - * SysTick ISR - */ - -void __exc_systick(void) { - systick_uptime_millis++; - if (systick_user_callback) { - systick_user_callback(); - } -} diff --git a/STM32F3/cores/maple/libmaple/timer.c b/STM32F3/cores/maple/libmaple/timer.c deleted file mode 100644 index e48cb1a57..000000000 --- a/STM32F3/cores/maple/libmaple/timer.c +++ /dev/null @@ -1,456 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/timer.c - * @author Marti Bolivar - * @brief Portable timer routines. - */ - -#include -#include -#include "timer_private.h" - -static void disable_channel(timer_dev *dev, uint8 channel); -static void pwm_mode(timer_dev *dev, uint8 channel); -static void output_compare_mode(timer_dev *dev, uint8 channel); - -static inline void enable_irq(timer_dev *dev, uint8 interrupt); - -/* - * Devices - * - * Defer to the timer_private API for declaring these. - */ - -#if STM32_HAVE_TIMER(1) -static timer_dev timer1 = ADVANCED_TIMER(1); -/** Timer 1 device (advanced) */ -timer_dev *TIMER1 = &timer1; -#endif -#if STM32_HAVE_TIMER(2) -static timer_dev timer2 = GENERAL_TIMER(2); -/** Timer 2 device (general-purpose) */ -timer_dev *TIMER2 = &timer2; -#endif -#if STM32_HAVE_TIMER(3) -static timer_dev timer3 = GENERAL_TIMER(3); -/** Timer 3 device (general-purpose) */ -timer_dev *TIMER3 = &timer3; -#endif -#if STM32_HAVE_TIMER(4) -static timer_dev timer4 = GENERAL_TIMER(4); -/** Timer 4 device (general-purpose) */ -timer_dev *TIMER4 = &timer4; -#endif -#if STM32_HAVE_TIMER(5) -static timer_dev timer5 = GENERAL_TIMER(5); -/** Timer 5 device (general-purpose) */ -timer_dev *TIMER5 = &timer5; -#endif -#if STM32_HAVE_TIMER(6) -static timer_dev timer6 = BASIC_TIMER(6); -/** Timer 6 device (basic) */ -timer_dev *TIMER6 = &timer6; -#endif -#if STM32_HAVE_TIMER(7) -static timer_dev timer7 = BASIC_TIMER(7); -/** Timer 7 device (basic) */ -timer_dev *TIMER7 = &timer7; -#endif -#if STM32_HAVE_TIMER(8) -static timer_dev timer8 = ADVANCED_TIMER(8); -/** Timer 8 device (advanced) */ -timer_dev *TIMER8 = &timer8; -#endif -#if STM32_HAVE_TIMER(9) -static timer_dev timer9 = RESTRICTED_GENERAL_TIMER(9, TIMER_DIER_TIE_BIT); -/** Timer 9 device (general-purpose) */ -timer_dev *TIMER9 = &timer9; -#endif -#if STM32_HAVE_TIMER(10) -static timer_dev timer10 = RESTRICTED_GENERAL_TIMER(10, TIMER_DIER_CC1IE_BIT); -/** Timer 10 device (general-purpose) */ -timer_dev *TIMER10 = &timer10; -#endif -#if STM32_HAVE_TIMER(11) -static timer_dev timer11 = RESTRICTED_GENERAL_TIMER(11, TIMER_DIER_CC1IE_BIT); -/** Timer 11 device (general-purpose) */ -timer_dev *TIMER11 = &timer11; -#endif -#if STM32_HAVE_TIMER(12) -static timer_dev timer12 = RESTRICTED_GENERAL_TIMER(12, TIMER_DIER_TIE_BIT); -/** Timer 12 device (general-purpose) */ -timer_dev *TIMER12 = &timer12; -#endif -#if STM32_HAVE_TIMER(13) -static timer_dev timer13 = RESTRICTED_GENERAL_TIMER(13, TIMER_DIER_CC1IE_BIT); -/** Timer 13 device (general-purpose) */ -timer_dev *TIMER13 = &timer13; -#endif -#if STM32_HAVE_TIMER(14) -static timer_dev timer14 = RESTRICTED_GENERAL_TIMER(14, TIMER_DIER_CC1IE_BIT); -/** Timer 14 device (general-purpose) */ -timer_dev *TIMER14 = &timer14; -#endif -#if STM32_HAVE_TIMER(15) -static timer_dev timer15 = RESTRICTED_GENERAL_TIMER(15, TIMER_DIER_TIE_BIT); //XXX -/** Timer 15 device (general-purpose) */ -timer_dev *TIMER15 = &timer15; -#endif -#if STM32_HAVE_TIMER(16) -static timer_dev timer16 = RESTRICTED_GENERAL_TIMER(16, TIMER_DIER_CC1IE_BIT); //XXX -/** Timer 16 device (general-purpose) */ -timer_dev *TIMER16 = &timer16; -#endif -#if STM32_HAVE_TIMER(17) -static timer_dev timer17 = RESTRICTED_GENERAL_TIMER(17, TIMER_DIER_CC1IE_BIT); //XXX -/** Timer 17 device (general-purpose) */ -timer_dev *TIMER17 = &timer17; -#endif - -/* - * Routines - */ - -/** - * @brief Call a function on timer devices. - * @param fn Function to call on each timer device. - */ -void timer_foreach(void (*fn)(timer_dev*)) { -#if STM32_HAVE_TIMER(1) - fn(TIMER1); -#endif -#if STM32_HAVE_TIMER(2) - fn(TIMER2); -#endif -#if STM32_HAVE_TIMER(3) - fn(TIMER3); -#endif -#if STM32_HAVE_TIMER(4) - fn(TIMER4); -#endif -#if STM32_HAVE_TIMER(5) - fn(TIMER5); -#endif -#if STM32_HAVE_TIMER(6) - fn(TIMER6); -#endif -#if STM32_HAVE_TIMER(7) - fn(TIMER7); -#endif -#if STM32_HAVE_TIMER(8) - fn(TIMER8); -#endif -#if STM32_HAVE_TIMER(9) - fn(TIMER9); -#endif -#if STM32_HAVE_TIMER(10) - fn(TIMER10); -#endif -#if STM32_HAVE_TIMER(11) - fn(TIMER11); -#endif -#if STM32_HAVE_TIMER(12) - fn(TIMER12); -#endif -#if STM32_HAVE_TIMER(13) - fn(TIMER13); -#endif -#if STM32_HAVE_TIMER(14) - fn(TIMER14); -#endif -#if STM32_HAVE_TIMER(15) - fn(TIMER15); -#endif -#if STM32_HAVE_TIMER(16) - fn(TIMER16); -#endif -#if STM32_HAVE_TIMER(17) - fn(TIMER17); -#endif -} - -/** - * Initialize a timer, and reset its register map. - * @param dev Timer to initialize - */ -void timer_init(timer_dev *dev) { - rcc_clk_enable(dev->clk_id); - rcc_reset_dev(dev->clk_id); -} - -/** - * @brief Disable a timer. - * - * The timer will stop counting, all DMA requests and interrupts will - * be disabled, and no state changes will be output. - * - * @param dev Timer to disable. - */ -void timer_disable(timer_dev *dev) { - (dev->regs).bas->CR1 = 0; - (dev->regs).bas->DIER = 0; - switch (dev->type) { - case TIMER_ADVANCED: /* fall-through */ - case TIMER_GENERAL: - (dev->regs).gen->CCER = 0; - break; - case TIMER_BASIC: - break; - } -} - -/** - * Sets the mode of an individual timer channel. - * - * Note that not all timers can be configured in every mode. For - * example, basic timers cannot be configured to output compare mode. - * Be sure to use a timer which is appropriate for the mode you want. - * - * @param dev Timer whose channel mode to set - * @param channel Relevant channel - * @param mode New timer mode for channel - */ -void timer_set_mode(timer_dev *dev, uint8 channel, timer_mode mode) { - ASSERT_FAULT(channel > 0 && channel <= 4); - - /* TODO decide about the basic timers */ - ASSERT(dev->type != TIMER_BASIC); - if (dev->type == TIMER_BASIC) - return; - - switch (mode) { - case TIMER_DISABLED: - disable_channel(dev, channel); - break; - case TIMER_PWM: - pwm_mode(dev, channel); - break; - case TIMER_OUTPUT_COMPARE: - output_compare_mode(dev, channel); - break; - } -} - -/** - * @brief Determine whether a timer has a particular capture/compare channel. - * - * Different timers have different numbers of capture/compare channels - * (and some have none at all). Use this function to test whether a - * given timer/channel combination will work. - * - * @param dev Timer device - * @param channel Capture/compare channel, from 1 to 4 - * @return Nonzero if dev has channel, zero otherwise. - */ -int timer_has_cc_channel(timer_dev *dev, uint8 channel) { - /* On all currently supported series: advanced and "full-featured" - * general purpose timers have all four channels. Of the - * restricted general timers, timers 9, 12 and 15 have channels 1 and - * 2; the others have channel 1 only. Basic timers have none. */ - rcc_clk_id id = dev->clk_id; - ASSERT((1 <= channel) && (channel <= 4)); - if (id <= RCC_TIMER5 || id == RCC_TIMER8) { - return 1; /* 1 and 8 are advanced, 2-5 are "full" general */ - } else if (id <= RCC_TIMER7) { - return 0; /* 6 and 7 are basic */ - } - /* The rest are restricted general. */ - return (((id == RCC_TIMER9 || id == RCC_TIMER12 || id == RCC_TIMER15) && channel <= 2) || - channel == 1); -} - -/** - * @brief Attach a timer interrupt. - * @param dev Timer device - * @param interrupt Interrupt number to attach to; this may be any - * timer_interrupt_id or timer_channel value appropriate - * for the timer. - * @param handler Handler to attach to the given interrupt. - * @see timer_interrupt_id - * @see timer_channel - */ -void timer_attach_interrupt(timer_dev *dev, - uint8 interrupt, - voidFuncPtr handler) { - dev->handlers[interrupt] = handler; - timer_enable_irq(dev, interrupt); - enable_irq(dev, interrupt); -} - -/** - * @brief Detach a timer interrupt. - * @param dev Timer device - * @param interrupt Interrupt number to detach; this may be any - * timer_interrupt_id or timer_channel value appropriate - * for the timer. - * @see timer_interrupt_id - * @see timer_channel - */ -void timer_detach_interrupt(timer_dev *dev, uint8 interrupt) { - timer_disable_irq(dev, interrupt); - dev->handlers[interrupt] = NULL; -} - -/* - * Utilities - */ - -static void disable_channel(timer_dev *dev, uint8 channel) { - timer_detach_interrupt(dev, channel); - timer_cc_disable(dev, channel); -} - -static void pwm_mode(timer_dev *dev, uint8 channel) { - timer_disable_irq(dev, channel); - timer_oc_set_mode(dev, channel, TIMER_OC_MODE_PWM_1, TIMER_OC_PE); - timer_cc_enable(dev, channel); -} - -static void output_compare_mode(timer_dev *dev, uint8 channel) { - timer_oc_set_mode(dev, channel, TIMER_OC_MODE_ACTIVE_ON_MATCH, 0); - timer_cc_enable(dev, channel); -} - -static void enable_adv_irq(timer_dev *dev, timer_interrupt_id id); -static void enable_bas_gen_irq(timer_dev *dev); - -static inline void enable_irq(timer_dev *dev, timer_interrupt_id iid) { - if (dev->type == TIMER_ADVANCED) { - enable_adv_irq(dev, iid); - } else { - enable_bas_gen_irq(dev); - } -} - -/* Advanced control timers have several IRQ lines corresponding to - * different timer interrupts. - * - * Note: This function assumes that the only advanced timers are TIM1 - * and TIM8, and needs the obvious changes if that assumption is - * violated by a later STM32 series. */ -static void enable_adv_irq(timer_dev *dev, timer_interrupt_id id) { - uint8 is_tim1 = dev->clk_id == RCC_TIMER1; - nvic_irq_num irq_num; - switch (id) { - case TIMER_UPDATE_INTERRUPT: - irq_num = (is_tim1 ? - NVIC_TIMER1_UP_TIMER10 : - NVIC_TIMER8_UP_TIMER13); - break; - case TIMER_CC1_INTERRUPT: /* Fall through */ - case TIMER_CC2_INTERRUPT: /* ... */ - case TIMER_CC3_INTERRUPT: /* ... */ - case TIMER_CC4_INTERRUPT: - irq_num = is_tim1 ? NVIC_TIMER1_CC : NVIC_TIMER8_CC; - break; - case TIMER_COM_INTERRUPT: /* Fall through */ - case TIMER_TRG_INTERRUPT: - irq_num = (is_tim1 ? - NVIC_TIMER1_TRG_COM_TIMER11 : - NVIC_TIMER8_TRG_COM_TIMER14); - break; - case TIMER_BREAK_INTERRUPT: - irq_num = (is_tim1 ? - NVIC_TIMER1_BRK_TIMER9 : - NVIC_TIMER8_BRK_TIMER12); - break; - default: - /* Can't happen, but placate the compiler */ - ASSERT(0); - return; - } - nvic_irq_enable(irq_num); -} - -/* Basic and general purpose timers have a single IRQ line, which is - * shared by all interrupts supported by a particular timer. */ -static void enable_bas_gen_irq(timer_dev *dev) { - nvic_irq_num irq_num; - switch (dev->clk_id) { - case RCC_TIMER2: - irq_num = NVIC_TIMER2; - break; - case RCC_TIMER3: - irq_num = NVIC_TIMER3; - break; - case RCC_TIMER4: - irq_num = NVIC_TIMER4; - break; -#if STM32_HAVE_TIMER(5) - case RCC_TIMER5: - irq_num = NVIC_TIMER5; - break; -#endif - case RCC_TIMER6: - irq_num = NVIC_TIMER6; - break; - case RCC_TIMER7: - irq_num = NVIC_TIMER7; - break; - case RCC_TIMER9: - irq_num = NVIC_TIMER1_BRK_TIMER9; - break; - case RCC_TIMER10: - irq_num = NVIC_TIMER1_UP_TIMER10; - break; - case RCC_TIMER11: - irq_num = NVIC_TIMER1_TRG_COM_TIMER11; - break; - case RCC_TIMER12: - irq_num = NVIC_TIMER8_BRK_TIMER12; - break; - case RCC_TIMER13: - irq_num = NVIC_TIMER8_UP_TIMER13; - break; - case RCC_TIMER14: - irq_num = NVIC_TIMER8_TRG_COM_TIMER14; - break; -#if STM32_HAVE_TIMER(15) - case RCC_TIMER15: - //irq_num = NVIC_TIMER1_BRK_TIMER15; - irq_num = NVIC_TIMER1_BRK_TIMER9; - break; -#endif -#if STM32_HAVE_TIMER(16) - case RCC_TIMER16: - //irq_num = NVIC_TIMER1_UP_TIMER16; - irq_num = NVIC_TIMER1_UP_TIMER10; - break; -#endif -#if STM32_HAVE_TIMER(17) - case RCC_TIMER17: - //irq_num = NVIC_TIMER1_TRG_COM_TIMER17; - irq_num = NVIC_TIMER1_TRG_COM_TIMER11; - break; -#endif - default: - ASSERT_FAULT(0); - return; - } - nvic_irq_enable(irq_num); -} diff --git a/STM32F3/cores/maple/libmaple/timer_private.h b/STM32F3/cores/maple/libmaple/timer_private.h deleted file mode 100644 index 320c6364a..000000000 --- a/STM32F3/cores/maple/libmaple/timer_private.h +++ /dev/null @@ -1,235 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/timer_private.h - * @author Marti Bolivar - * @brief Private, internal timer APIs. - */ - -#ifndef _LIBMAPLE_TIMER_PRIVATE_H_ -#define _LIBMAPLE_TIMER_PRIVATE_H_ - -/* - * Helper macros for declaring timer_devs of various timer_types - */ - -/* The indexes of user handlers in a timer_dev.handlers are just like - * the corresponding DIER bits, as follows: */ - -/* Advanced timers: - * [0] = Update handler; - * [1,2,3,4] = capture/compare 1,2,3,4 handlers, respectively; - * [5] = COM; - * [6] = TRG; - * [7] = BRK. */ -#define NR_ADV_HANDLERS 8 -/* General purpose timers: - * [0] = update; - * [1,2,3,4] = capture/compare 1,2,3,4; - * [5] = ; - * [6] = trigger. */ -#define NR_GEN_HANDLERS 7 -/* Basic timers: - * [0] = update. */ -#define NR_BAS_HANDLERS 1 - -/* For declaring advanced timers. */ -#define ADVANCED_TIMER(num) \ - { \ - .regs = { .adv = TIMER##num##_BASE }, \ - .clk_id = RCC_TIMER##num, \ - .type = TIMER_ADVANCED, \ - .handlers = { [NR_ADV_HANDLERS - 1] = 0 }, \ - } - -/* For declaring full-featured general purpose timers. */ -#define GENERAL_TIMER(num) \ - { \ - .regs = { .gen = TIMER##num##_BASE }, \ - .clk_id = RCC_TIMER##num, \ - .type = TIMER_GENERAL, \ - .handlers = { [NR_GEN_HANDLERS - 1] = 0 }, \ - } - -/* For declaring general purpose timers with limited interrupt - * capability (e.g. timers 9 through 14 on STM32F2 and XL-density - * STM32F1). */ -#define RESTRICTED_GENERAL_TIMER(num, max_dier_bit) \ - { \ - .regs = { .gen = TIMER##num##_BASE }, \ - .clk_id = RCC_TIMER##num, \ - .type = TIMER_GENERAL, \ - .handlers = { [max_dier_bit] = 0 }, \ - } - -/* For declaring basic timers (e.g. TIM6 and TIM7). */ -#define BASIC_TIMER(num) \ - { \ - .regs = { .bas = TIMER##num##_BASE }, \ - .clk_id = RCC_TIMER##num, \ - .type = TIMER_BASIC, \ - .handlers = { [NR_BAS_HANDLERS - 1] = 0 }, \ - } - -/* - * IRQ handlers - * - * These decode TIMx_DIER and TIMx_SR, then dispatch to the user-level - * IRQ handlers. They also clean up TIMx_SR afterwards, so the user - * doesn't have to deal with register details. - * - * Notes: - * - * - These dispatch routines make use of the fact that DIER interrupt - * enable bits and SR interrupt flags have common bit positions. - * Thus, ANDing DIER and SR lets us check if an interrupt is enabled - * and if it has occurred simultaneously. - * - * - We force these routines to inline to avoid call overhead, but - * there aren't any measurements to prove that this is actually a - * good idea. Profile-directed optimizations are definitely wanted. */ - -/* A special-case dispatch routine for timers which only serve a - * single interrupt on a given IRQ line. - * - * This function still checks DIER & SR, as in some cases, a timer may - * only serve a single interrupt on a particular NVIC line, but that - * line may be shared with another timer. For example, the timer 1 - * update interrupt shares an IRQ line with the timer 10 interrupt on - * STM32F1 (XL-density), STM32F2, and STM32F4. */ -static __always_inline void dispatch_single_irq(timer_dev *dev, - timer_interrupt_id iid, - uint32 irq_mask) { - timer_bas_reg_map *regs = (dev->regs).bas; - if (regs->DIER & regs->SR & irq_mask) { - void (*handler)(void) = dev->handlers[iid]; - if (handler) { - handler(); - regs->SR &= ~irq_mask; - } - } -} - -/* Helper macro for dispatch routines which service multiple interrupts. */ -#define handle_irq(dier_sr, irq_mask, handlers, iid, handled_irq) do { \ - if ((dier_sr) & (irq_mask)) { \ - void (*__handler)(void) = (handlers)[iid]; \ - if (__handler) { \ - __handler(); \ - handled_irq |= (irq_mask); \ - } \ - } \ - } while (0) - -static __always_inline void dispatch_adv_brk(timer_dev *dev) { - dispatch_single_irq(dev, TIMER_BREAK_INTERRUPT, TIMER_SR_BIF); -} - -static __always_inline void dispatch_adv_up(timer_dev *dev) { - dispatch_single_irq(dev, TIMER_UPDATE_INTERRUPT, TIMER_SR_UIF); -} - -static __always_inline void dispatch_adv_trg_com(timer_dev *dev) { - timer_adv_reg_map *regs = (dev->regs).adv; - uint32 dsr = regs->DIER & regs->SR; - void (**hs)(void) = dev->handlers; - uint32 handled = 0; /* Logical OR of SR interrupt flags we end up - * handling. We clear these. User handlers - * must clear overcapture flags, to avoid - * wasting time in output mode. */ - - handle_irq(dsr, TIMER_SR_TIF, hs, TIMER_TRG_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_COMIF, hs, TIMER_COM_INTERRUPT, handled); - - regs->SR &= ~handled; -} - -static __always_inline void dispatch_adv_cc(timer_dev *dev) { - timer_adv_reg_map *regs = (dev->regs).adv; - uint32 dsr = regs->DIER & regs->SR; - void (**hs)(void) = dev->handlers; - uint32 handled = 0; - - handle_irq(dsr, TIMER_SR_CC4IF, hs, TIMER_CC4_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC3IF, hs, TIMER_CC3_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC2IF, hs, TIMER_CC2_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); - - regs->SR &= ~handled; -} - -static __always_inline void dispatch_general(timer_dev *dev) { - timer_gen_reg_map *regs = (dev->regs).gen; - uint32 dsr = regs->DIER & regs->SR; - void (**hs)(void) = dev->handlers; - uint32 handled = 0; - - handle_irq(dsr, TIMER_SR_TIF, hs, TIMER_TRG_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC4IF, hs, TIMER_CC4_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC3IF, hs, TIMER_CC3_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC2IF, hs, TIMER_CC2_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_UIF, hs, TIMER_UPDATE_INTERRUPT, handled); - - regs->SR &= ~handled; -} - -/* On F1 (XL-density), F2, and F4, TIM9 and TIM12 are restricted - * general-purpose timers with update, CC1, CC2, and TRG interrupts. */ -static __always_inline void dispatch_tim_9_12(timer_dev *dev) { - timer_gen_reg_map *regs = (dev->regs).gen; - uint32 dsr = regs->DIER & regs->SR; - void (**hs)(void) = dev->handlers; - uint32 handled = 0; - - handle_irq(dsr, TIMER_SR_TIF, hs, TIMER_TRG_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC2IF, hs, TIMER_CC2_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_UIF, hs, TIMER_UPDATE_INTERRUPT, handled); - - regs->SR &= ~handled; -} - -/* On F1 (XL-density), F2, and F4, timers 10, 11, 13, and 14 are - * restricted general-purpose timers with update and CC1 interrupts. */ -static __always_inline void dispatch_tim_10_11_13_14(timer_dev *dev) { - timer_gen_reg_map *regs = (dev->regs).gen; - uint32 dsr = regs->DIER & regs->SR; - void (**hs)(void) = dev->handlers; - uint32 handled = 0; - - handle_irq(dsr, TIMER_SR_CC1IF, hs, TIMER_CC1_INTERRUPT, handled); - handle_irq(dsr, TIMER_SR_UIF, hs, TIMER_UPDATE_INTERRUPT, handled); - - regs->SR &= ~handled; -} - -static __always_inline void dispatch_basic(timer_dev *dev) { - dispatch_single_irq(dev, TIMER_UPDATE_INTERRUPT, TIMER_SR_UIF); -} - -#endif diff --git a/STM32F3/cores/maple/libmaple/usart.c b/STM32F3/cores/maple/libmaple/usart.c deleted file mode 100644 index 52da4d10f..000000000 --- a/STM32F3/cores/maple/libmaple/usart.c +++ /dev/null @@ -1,122 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/usart.c - * @author Marti Bolivar , - * Perry Hung - * @brief Portable USART routines - */ - -#include - -/** - * @brief Initialize a serial port. - * @param dev Serial port to be initialized - */ -void usart_init(usart_dev *dev) { - rb_init(dev->rb, USART_RX_BUF_SIZE, dev->rx_buf); - rcc_clk_enable(dev->clk_id); - nvic_irq_enable(dev->irq_num); -} - -/** - * @brief Enable a serial port. - * - * USART is enabled in single buffer transmission mode, multibuffer - * receiver mode, 8n1. - * - * Serial port must have a baud rate configured to work properly. - * - * @param dev Serial port to enable. - * @see usart_set_baud_rate() - */ -void usart_enable(usart_dev *dev) { - usart_reg_map *regs = dev->regs; - regs->CR1 = (USART_CR1_TE | USART_CR1_RE | USART_CR1_RXNEIE | - USART_CR1_M_8N1); - regs->CR1 |= USART_CR1_UE; -} - -/** - * @brief Turn off a serial port. - * @param dev Serial port to be disabled - */ -void usart_disable(usart_dev *dev) { - /* FIXME this misbehaves (on F1) if you try to use PWM on TX afterwards */ - usart_reg_map *regs = dev->regs; - - /* TC bit must be high before disabling the USART */ - while((regs->CR1 & USART_CR1_UE) && !(regs->SR & USART_SR_TC)) - ; - - /* Disable UE */ - regs->CR1 &= ~USART_CR1_UE; - - /* Clean up buffer */ - usart_reset_rx(dev); -} - -/** - * @brief Nonblocking USART receive. - * @param dev Serial port to receive bytes from - * @param buf Buffer to store received bytes into - * @param len Maximum number of bytes to store - * @return Number of bytes received - */ -uint32 usart_rx(usart_dev *dev, uint8 *buf, uint32 len) { - uint32 rxed = 0; - while (usart_data_available(dev) && rxed < len) { - *buf++ = usart_getc(dev); - rxed++; - } - return rxed; -} - -/** - * @brief Transmit an unsigned integer to the specified serial port in - * decimal format. - * - * This function blocks until the integer's digits have been - * completely transmitted. - * - * @param dev Serial port to send on - * @param val Number to print - */ -void usart_putudec(usart_dev *dev, uint32 val) { - char digits[12]; - int i = 0; - - do { - digits[i++] = val % 10 + '0'; - val /= 10; - } while (val > 0); - - while (--i >= 0) { - usart_putc(dev, digits[i]); - } -} diff --git a/STM32F3/cores/maple/libmaple/usart_private.c b/STM32F3/cores/maple/libmaple/usart_private.c deleted file mode 100644 index 0eaacdf17..000000000 --- a/STM32F3/cores/maple/libmaple/usart_private.c +++ /dev/null @@ -1,41 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/usart_private.c - * @author Marti Bolivar - * @brief Private USART routines. - */ - -#include "usart_private.h" -#include -#include - -uint32 _usart_clock_freq(usart_dev *dev) { - rcc_clk_domain domain = rcc_dev_clk(dev->clk_id); - return (domain == RCC_APB1 ? STM32_PCLK1 : - (domain == RCC_APB2 ? STM32_PCLK2 : 0)); -} diff --git a/STM32F3/cores/maple/libmaple/usart_private.h b/STM32F3/cores/maple/libmaple/usart_private.h deleted file mode 100644 index e6044d874..000000000 --- a/STM32F3/cores/maple/libmaple/usart_private.h +++ /dev/null @@ -1,42 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/usart_private.h - * @author Marti Bolivar - * @brief Private USART header. - */ - -#ifndef _LIBMAPLE_USART_PRIVATE_H_ -#define _LIBMAPLE_USART_PRIVATE_H_ - -#include -#include - -uint32 _usart_clock_freq(usart_dev *dev); - -#endif diff --git a/STM32F3/cores/maple/libmaple/usb/README b/STM32F3/cores/maple/libmaple/usb/README deleted file mode 100644 index d0fca8d00..000000000 --- a/STM32F3/cores/maple/libmaple/usb/README +++ /dev/null @@ -1,63 +0,0 @@ -The USB submodule of libmaple is a separate piece of the codebase for -reasons that are largely historical. - -Current Status: - - There's only support for the USB device peripheral found on - STM32F103s. - - We rely on the low level core library provided by ST to implement - the USB transfer protocol for control endpoint transfers. - - The virtual com port (which is exposed via - ) serves two important purposes. - - 1) It allows serial data transfers between user sketches an a - host computer. - - 2) It allows the host PC to issue a system reset into the DFU - bootloader with the DTR + RTS + "1EAF" sequence (see - leaflabs.com/docs/bootloader.html for more information on - this). - - After reset, Maple will run the DFU bootloader for a few seconds, - during which the user can begin a DFU upload operation (uploads - application binary into RAM/FLASH). Thus, without this virtual com - port, it would be necessary to find an alternative means to reset - the chip in order to enable the bootloader. - - If you would like to develop your own USB application for whatever - reason (e.g. to use faster isochronous enpoints for streaming - audio, or implement the USB HID or Mass Storage specs), then - ensure that you leave some hook for resetting Maple remotely in - order to spin up the DFU bootloader. Please make sure to get - yourself a unique vendor/product ID pair for your application, as - some operating systems will assign a host-side driver based on - these tags. - - It would be possible to build a compound USB device, that - implements endpoints for both the virtual COM port as well as some - other components (mass storage etc.). However, this turns out to - be a burden from the host driver side, as Windows and *nix handle - compound USB devices quite differently. - - Be mindful that enabling the USB peripheral isn't "free." The - device must respond to periodic bus activity (every few - milliseconds) by servicing an ISR. Therefore, the USB application - should be disabled inside of timing critical applications. - - In order to disconnect the device from the host, a USB_DISC pin is - asserted (e.g. on Maple, this is PC12). Alternatively, the NVIC - can be directly configured to disable the USB LP/HP IRQ's. - - The files inside of usb_lib were provided by ST and are subject to - their own license, all other files were written by the LeafLabs - team and fall under the MIT license. - -TODO: - - - Generic USB driver core with series-provided backends, like - libopencm3 has. - - Strip out ST code. - - Integration with a high level USB library (like LUFA/MyUSB) to - allow users to write custom USB applications. diff --git a/STM32F3/cores/maple/libmaple/usb/usb.c b/STM32F3/cores/maple/libmaple/usb/usb.c deleted file mode 100644 index f694f04f9..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb.c +++ /dev/null @@ -1,387 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/usb/stm32f1/usb.c - * @brief USB support. - * - * This is a mess. - */ - -#include - -#include -#include - -/* Private headers */ -#include "usb_reg_map.h" -#include "usb_lib_globals.h" - -/* usb_lib headers */ -#include "usb_type.h" -#include "usb_core.h" - -static void dispatch_ctr_lp(void); - -/* - * usb_lib/ globals - */ - -uint16 SaveTState; /* caches TX status for later use */ -uint16 SaveRState; /* caches RX status for later use */ - -/* - * Other state - */ - -typedef enum { - RESUME_EXTERNAL, - RESUME_INTERNAL, - RESUME_LATER, - RESUME_WAIT, - RESUME_START, - RESUME_ON, - RESUME_OFF, - RESUME_ESOF -} RESUME_STATE; - -struct { - volatile RESUME_STATE eState; - volatile uint8 bESOFcnt; -} ResumeS; - -static usblib_dev usblib = { - .irq_mask = USB_ISR_MSK, - .state = USB_UNCONNECTED, - .prevState = USB_UNCONNECTED, - .clk_id = RCC_USB, -}; -usblib_dev *USBLIB = &usblib; - -/* - * Routines - */ - -void usb_init_usblib(usblib_dev *dev, - void (**ep_int_in)(void), - void (**ep_int_out)(void)) { - rcc_clk_enable(dev->clk_id); - - dev->ep_int_in = ep_int_in; - dev->ep_int_out = ep_int_out; - - /* usb_lib/ declares both and then assumes that pFoo points to Foo - * (even though the names don't always match), which is stupid for - * all of the obvious reasons, but whatever. Here we are. */ - pInformation = &Device_Info; - pProperty = &Device_Property; - pUser_Standard_Requests = &User_Standard_Requests; - - pInformation->ControlState = 2; /* FIXME [0.0.12] use - CONTROL_STATE enumerator */ - pProperty->Init(); -} - -static void usb_suspend(void) { - uint16 cntr; - - /* TODO decide if read/modify/write is really what we want - * (e.g. usb_resume_init() reconfigures CNTR). */ - cntr = USB_BASE->CNTR; - cntr |= USB_CNTR_FSUSP; - USB_BASE->CNTR = cntr; - cntr |= USB_CNTR_LP_MODE; - USB_BASE->CNTR = cntr; - - USBLIB->prevState = USBLIB->state; - USBLIB->state = USB_SUSPENDED; -} - -static void usb_resume_init(void) { - uint16 cntr; - - cntr = USB_BASE->CNTR; - cntr &= ~USB_CNTR_LP_MODE; - USB_BASE->CNTR = cntr; - - /* Enable interrupt lines */ - USB_BASE->CNTR = USB_ISR_MSK; -} - -static void usb_resume(RESUME_STATE eResumeSetVal) { - uint16 cntr; - - if (eResumeSetVal != RESUME_ESOF) { - ResumeS.eState = eResumeSetVal; - } - - switch (ResumeS.eState) { - case RESUME_EXTERNAL: - usb_resume_init(); - ResumeS.eState = RESUME_OFF; - USBLIB->state = USBLIB->prevState; - break; - case RESUME_INTERNAL: - usb_resume_init(); - ResumeS.eState = RESUME_START; - break; - case RESUME_LATER: - ResumeS.bESOFcnt = 2; - ResumeS.eState = RESUME_WAIT; - break; - case RESUME_WAIT: - ResumeS.bESOFcnt--; - if (ResumeS.bESOFcnt == 0) { - ResumeS.eState = RESUME_START; - } - break; - case RESUME_START: - cntr = USB_BASE->CNTR; - cntr |= USB_CNTR_RESUME; - USB_BASE->CNTR = cntr; - ResumeS.eState = RESUME_ON; - ResumeS.bESOFcnt = 10; - break; - case RESUME_ON: - ResumeS.bESOFcnt--; - if (ResumeS.bESOFcnt == 0) { - cntr = USB_BASE->CNTR; - cntr &= ~USB_CNTR_RESUME; - USB_BASE->CNTR = cntr; - USBLIB->state = USBLIB->prevState; - ResumeS.eState = RESUME_OFF; - } - break; - case RESUME_OFF: - case RESUME_ESOF: - default: - ResumeS.eState = RESUME_OFF; - break; - } -} - -#define SUSPEND_ENABLED 1 -void __irq_usb_lp_can_rx0(void) { - uint16 istr = USB_BASE->ISTR; - - /* Use USB_ISR_MSK to only include code for bits we care about. */ - -#if (USB_ISR_MSK & USB_ISTR_RESET) - if (istr & USB_ISTR_RESET & USBLIB->irq_mask) { - USB_BASE->ISTR = ~USB_ISTR_RESET; - pProperty->Reset(); - } -#endif - -#if (USB_ISR_MSK & USB_ISTR_PMAOVR) - if (istr & ISTR_PMAOVR & USBLIB->irq_mask) { - USB_BASE->ISTR = ~USB_ISTR_PMAOVR; - } -#endif - -#if (USB_ISR_MSK & USB_ISTR_ERR) - if (istr & USB_ISTR_ERR & USBLIB->irq_mask) { - USB_BASE->ISTR = ~USB_ISTR_ERR; - } -#endif - -#if (USB_ISR_MSK & USB_ISTR_WKUP) - if (istr & USB_ISTR_WKUP & USBLIB->irq_mask) { - USB_BASE->ISTR = ~USB_ISTR_WKUP; - usb_resume(RESUME_EXTERNAL); - } -#endif - -#if (USB_ISR_MSK & USB_ISTR_SUSP) - if (istr & USB_ISTR_SUSP & USBLIB->irq_mask) { - /* check if SUSPEND is possible */ - if (SUSPEND_ENABLED) { - usb_suspend(); - } else { - /* if not possible then resume after xx ms */ - usb_resume(RESUME_LATER); - } - /* clear of the ISTR bit must be done after setting of CNTR_FSUSP */ - USB_BASE->ISTR = ~USB_ISTR_SUSP; - } -#endif - -#if (USB_ISR_MSK & USB_ISTR_SOF) - if (istr & USB_ISTR_SOF & USBLIB->irq_mask) { - USB_BASE->ISTR = ~USB_ISTR_SOF; - } -#endif - -#if (USB_ISR_MSK & USB_ISTR_ESOF) - if (istr & USB_ISTR_ESOF & USBLIB->irq_mask) { - USB_BASE->ISTR = ~USB_ISTR_ESOF; - /* resume handling timing is made with ESOFs */ - usb_resume(RESUME_ESOF); /* request without change of the machine state */ - } -#endif - - /* - * Service the correct transfer interrupt. - */ - -#if (USB_ISR_MSK & USB_ISTR_CTR) - if (istr & USB_ISTR_CTR & USBLIB->irq_mask) { - dispatch_ctr_lp(); - } -#endif -} - -/* - * Auxiliary routines - */ - -static inline uint8 dispatch_endpt_zero(uint16 istr_dir); -static inline void dispatch_endpt(uint8 ep); -static inline void set_rx_tx_status0(uint16 rx, uint16 tx); - -static void handle_setup0(void); -static void handle_in0(void); -static void handle_out0(void); - -static void dispatch_ctr_lp() { - uint16 istr; - while (((istr = USB_BASE->ISTR) & USB_ISTR_CTR) != 0) { - /* TODO WTF, figure this out: RM0008 says CTR is read-only, - * but ST's firmware claims it's clear-only, and emphasizes - * the importance of clearing it in more than one place. */ - USB_BASE->ISTR = ~USB_ISTR_CTR; - uint8 ep_id = istr & USB_ISTR_EP_ID; - if (ep_id == 0) { - /* TODO figure out why it's OK to break out of the loop - * once we're done serving endpoint zero, but not okay if - * there are multiple nonzero endpoint transfers to - * handle. */ - if (dispatch_endpt_zero(istr & USB_ISTR_DIR)) { - return; - } - } else { - dispatch_endpt(ep_id); - } - } -} - -/* FIXME Dataflow on endpoint 0 RX/TX status is based off of ST's - * code, and is ugly/confusing in its use of SaveRState/SaveTState. - * Fixing this requires filling in handle_in0(), handle_setup0(), - * handle_out0(). */ -static inline uint8 dispatch_endpt_zero(uint16 istr_dir) { - uint32 epr = (uint16)USB_BASE->EP[0]; - - if (!(epr & (USB_EP_CTR_TX | USB_EP_SETUP | USB_EP_CTR_RX))) { - return 0; - } - - /* Cache RX/TX statuses in SaveRState/SaveTState, respectively. - * The various handle_foo0() may clobber these values - * before we reset them at the end of this routine. */ - SaveRState = epr & USB_EP_STAT_RX; - SaveTState = epr & USB_EP_STAT_TX; - - /* Set actual RX/TX statuses to NAK while we're thinking */ - set_rx_tx_status0(USB_EP_STAT_RX_NAK, USB_EP_STAT_TX_NAK); - - if (istr_dir == 0) { - /* ST RM0008: "If DIR bit=0, CTR_TX bit is set in the USB_EPnR - * register related to the interrupting endpoint. The - * interrupting transaction is of IN type (data transmitted by - * the USB peripheral to the host PC)." */ - ASSERT_FAULT(epr & USB_EP_CTR_TX); - usb_clear_ctr_tx(USB_EP0); - handle_in0(); - } else { - /* RM0008: "If DIR bit=1, CTR_RX bit or both CTR_TX/CTR_RX - * are set in the USB_EPnR register related to the - * interrupting endpoint. The interrupting transaction is of - * OUT type (data received by the USB peripheral from the host - * PC) or two pending transactions are waiting to be - * processed." - * - * [mbolivar] Note how the following control flow (which - * replicates ST's) doesn't seem to actually handle both - * interrupts that are ostensibly pending when both CTR_RX and - * CTR_TX are set. - * - * TODO sort this mess out. - */ - if (epr & USB_EP_CTR_TX) { - usb_clear_ctr_tx(USB_EP0); - handle_in0(); - } else { /* SETUP or CTR_RX */ - /* SETUP is held constant while CTR_RX is set, so clear it - * either way */ - usb_clear_ctr_rx(USB_EP0); - if (epr & USB_EP_SETUP) { - handle_setup0(); - } else { /* CTR_RX */ - handle_out0(); - } - } - } - - set_rx_tx_status0(SaveRState, SaveTState); - return 1; -} - -static inline void dispatch_endpt(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - /* If ISTR_CTR is set and the ISTR gave us this EP_ID to handle, - * then presumably at least one of CTR_RX and CTR_TX is set, but - * again, ST's control flow allows for the possibility of neither. - * - * TODO try to find out if neither being set is possible. */ - if (epr & USB_EP_CTR_RX) { - usb_clear_ctr_rx(ep); - (USBLIB->ep_int_out[ep - 1])(); - } - if (epr & USB_EP_CTR_TX) { - usb_clear_ctr_tx(ep); - (USBLIB->ep_int_in[ep - 1])(); - } -} - -static inline void set_rx_tx_status0(uint16 rx, uint16 tx) { - usb_set_ep_rx_stat(USB_EP0, rx); - usb_set_ep_tx_stat(USB_EP0, tx); -} - -/* TODO Rip out usb_lib/ dependency from the following functions: */ - -static void handle_setup0(void) { - Setup0_Process(); -} - -static void handle_in0(void) { - In0_Process(); -} - -static void handle_out0(void) { - Out0_Process(); -} diff --git a/STM32F3/cores/maple/libmaple/usb/usb_cdcacm.c b/STM32F3/cores/maple/libmaple/usb/usb_cdcacm.c deleted file mode 100644 index bafb90ba6..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_cdcacm.c +++ /dev/null @@ -1,723 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/usb/stm32f1/usb_cdcacm.c - * @brief USB CDC ACM (a.k.a. virtual serial terminal, VCOM). - * - * FIXME: this works on the STM32F1 USB peripherals, and probably no - * place else. Nonportable bits really need to be factored out, and - * the result made cleaner. - */ - -#include - -#include -#include -#include - -/* Private headers */ -#include "usb_lib_globals.h" -#include "usb_reg_map.h" - -/* usb_lib headers */ -#include "usb_type.h" -#include "usb_core.h" -#include "usb_def.h" - -/****************************************************************************** - ****************************************************************************** - *** - *** HACK ALERT! FIXME FIXME FIXME FIXME! - *** - *** A bunch of LeafLabs-specific configuration lives in here for - *** now. This mess REALLY needs to get teased apart, with - *** appropriate pieces moved into Wirish. - *** - ****************************************************************************** - *****************************************************************************/ - -#if !(defined(BOARD_maple_mini_f3)) -#warning USB CDC ACM relies on LeafLabs board-specific configuration.\ - You may have problems on non-LeafLabs boards. -#endif - -static void vcomDataTxCb(void); -static void vcomDataRxCb(void); -static uint8* vcomGetSetLineCoding(uint16); - -static void usbInit(void); -static void usbReset(void); -static RESULT usbDataSetup(uint8 request); -static RESULT usbNoDataSetup(uint8 request); -static RESULT usbGetInterfaceSetting(uint8 interface, uint8 alt_setting); -static uint8* usbGetDeviceDescriptor(uint16 length); -static uint8* usbGetConfigDescriptor(uint16 length); -static uint8* usbGetStringDescriptor(uint16 length); -static void usbSetConfiguration(void); -static void usbSetDeviceAddress(void); - -/* - * Descriptors - */ - -/* FIXME move to Wirish */ -#define LEAFLABS_ID_VENDOR 0x1EAF -#define MAPLE_ID_PRODUCT 0x0004 -static const usb_descriptor_device usbVcomDescriptor_Device = - USB_CDCACM_DECLARE_DEV_DESC(LEAFLABS_ID_VENDOR, MAPLE_ID_PRODUCT); - -typedef struct { - usb_descriptor_config_header Config_Header; - usb_descriptor_interface CCI_Interface; - CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_IntHeader; - CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_CallManagement; - CDC_FUNCTIONAL_DESCRIPTOR(1) CDC_Functional_ACM; - CDC_FUNCTIONAL_DESCRIPTOR(2) CDC_Functional_Union; - usb_descriptor_endpoint ManagementEndpoint; - usb_descriptor_interface DCI_Interface; - usb_descriptor_endpoint DataOutEndpoint; - usb_descriptor_endpoint DataInEndpoint; -} __packed usb_descriptor_config; - -#define MAX_POWER (100 >> 1) -static const usb_descriptor_config usbVcomDescriptor_Config = { - .Config_Header = { - .bLength = sizeof(usb_descriptor_config_header), - .bDescriptorType = USB_DESCRIPTOR_TYPE_CONFIGURATION, - .wTotalLength = sizeof(usb_descriptor_config), - .bNumInterfaces = 0x02, - .bConfigurationValue = 0x01, - .iConfiguration = 0x00, - .bmAttributes = (USB_CONFIG_ATTR_BUSPOWERED | - USB_CONFIG_ATTR_SELF_POWERED), - .bMaxPower = MAX_POWER, - }, - - .CCI_Interface = { - .bLength = sizeof(usb_descriptor_interface), - .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, - .bInterfaceNumber = 0x00, - .bAlternateSetting = 0x00, - .bNumEndpoints = 0x01, - .bInterfaceClass = USB_INTERFACE_CLASS_CDC, - .bInterfaceSubClass = USB_INTERFACE_SUBCLASS_CDC_ACM, - .bInterfaceProtocol = 0x01, /* Common AT Commands */ - .iInterface = 0x00, - }, - - .CDC_Functional_IntHeader = { - .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(2), - .bDescriptorType = 0x24, - .SubType = 0x00, - .Data = {0x01, 0x10}, - }, - - .CDC_Functional_CallManagement = { - .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(2), - .bDescriptorType = 0x24, - .SubType = 0x01, - .Data = {0x03, 0x01}, - }, - - .CDC_Functional_ACM = { - .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(1), - .bDescriptorType = 0x24, - .SubType = 0x02, - .Data = {0x06}, - }, - - .CDC_Functional_Union = { - .bLength = CDC_FUNCTIONAL_DESCRIPTOR_SIZE(2), - .bDescriptorType = 0x24, - .SubType = 0x06, - .Data = {0x00, 0x01}, - }, - - .ManagementEndpoint = { - .bLength = sizeof(usb_descriptor_endpoint), - .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, - .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | - USB_CDCACM_MANAGEMENT_ENDP), - .bmAttributes = USB_EP_TYPE_INTERRUPT, - .wMaxPacketSize = USB_CDCACM_MANAGEMENT_EPSIZE, - .bInterval = 0xFF, - }, - - .DCI_Interface = { - .bLength = sizeof(usb_descriptor_interface), - .bDescriptorType = USB_DESCRIPTOR_TYPE_INTERFACE, - .bInterfaceNumber = 0x01, - .bAlternateSetting = 0x00, - .bNumEndpoints = 0x02, - .bInterfaceClass = USB_INTERFACE_CLASS_DIC, - .bInterfaceSubClass = 0x00, /* None */ - .bInterfaceProtocol = 0x00, /* None */ - .iInterface = 0x00, - }, - - .DataOutEndpoint = { - .bLength = sizeof(usb_descriptor_endpoint), - .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, - .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_OUT | - USB_CDCACM_RX_ENDP), - .bmAttributes = USB_EP_TYPE_BULK, - .wMaxPacketSize = USB_CDCACM_RX_EPSIZE, - .bInterval = 0x00, - }, - - .DataInEndpoint = { - .bLength = sizeof(usb_descriptor_endpoint), - .bDescriptorType = USB_DESCRIPTOR_TYPE_ENDPOINT, - .bEndpointAddress = (USB_DESCRIPTOR_ENDPOINT_IN | USB_CDCACM_TX_ENDP), - .bmAttributes = USB_EP_TYPE_BULK, - .wMaxPacketSize = USB_CDCACM_TX_EPSIZE, - .bInterval = 0x00, - }, -}; - -/* - String Descriptors: - - we may choose to specify any or none of the following string - identifiers: - - iManufacturer: LeafLabs - iProduct: Maple - iSerialNumber: NONE - iConfiguration: NONE - iInterface(CCI): NONE - iInterface(DCI): NONE - -*/ - -/* Unicode language identifier: 0x0409 is US English */ -/* FIXME move to Wirish */ -static const usb_descriptor_string usbVcomDescriptor_LangID = { - .bLength = USB_DESCRIPTOR_STRING_LEN(1), - .bDescriptorType = USB_DESCRIPTOR_TYPE_STRING, - .bString = {0x09, 0x04}, -}; - -/* FIXME move to Wirish */ -static const usb_descriptor_string usbVcomDescriptor_iManufacturer = { - .bLength = USB_DESCRIPTOR_STRING_LEN(8), - .bDescriptorType = USB_DESCRIPTOR_TYPE_STRING, - .bString = {'L', 0, 'e', 0, 'a', 0, 'f', 0, - 'L', 0, 'a', 0, 'b', 0, 's', 0}, -}; - -/* FIXME move to Wirish */ -static const usb_descriptor_string usbVcomDescriptor_iProduct = { - .bLength = USB_DESCRIPTOR_STRING_LEN(5), - .bDescriptorType = USB_DESCRIPTOR_TYPE_STRING, - .bString = {'M', 0, 'a', 0, 'p', 0, 'l', 0, 'e', 0}, -}; - -static ONE_DESCRIPTOR Device_Descriptor = { - (uint8*)&usbVcomDescriptor_Device, - sizeof(usb_descriptor_device) -}; - -static ONE_DESCRIPTOR Config_Descriptor = { - (uint8*)&usbVcomDescriptor_Config, - sizeof(usb_descriptor_config) -}; - -#define N_STRING_DESCRIPTORS 3 -static ONE_DESCRIPTOR String_Descriptor[N_STRING_DESCRIPTORS] = { - {(uint8*)&usbVcomDescriptor_LangID, USB_DESCRIPTOR_STRING_LEN(1)}, - {(uint8*)&usbVcomDescriptor_iManufacturer,USB_DESCRIPTOR_STRING_LEN(8)}, - {(uint8*)&usbVcomDescriptor_iProduct, USB_DESCRIPTOR_STRING_LEN(5)} -}; - -/* - * Etc. - */ - -/* I/O state */ - -/* Received data */ -static volatile uint8 vcomBufferRx[USB_CDCACM_RX_EPSIZE]; -/* Read index into vcomBufferRx */ -static volatile uint32 rx_offset = 0; -/* Number of bytes left to transmit */ -static volatile uint32 n_unsent_bytes = 0; -/* Are we currently sending an IN packet? */ -static volatile uint8 transmitting = 0; -/* Number of unread bytes */ -static volatile uint32 n_unread_bytes = 0; - -/* Other state (line coding, DTR/RTS) */ - -static volatile usb_cdcacm_line_coding line_coding = { - /* This default is 115200 baud, 8N1. */ - .dwDTERate = 115200, - .bCharFormat = USB_CDCACM_STOP_BITS_1, - .bParityType = USB_CDCACM_PARITY_NONE, - .bDataBits = 8, -}; - -/* DTR in bit 0, RTS in bit 1. */ -static volatile uint8 line_dtr_rts = 0; - -/* - * Endpoint callbacks - */ - -static void (*ep_int_in[7])(void) = - {vcomDataTxCb, - NOP_Process, - NOP_Process, - NOP_Process, - NOP_Process, - NOP_Process, - NOP_Process}; - -static void (*ep_int_out[7])(void) = - {NOP_Process, - NOP_Process, - vcomDataRxCb, - NOP_Process, - NOP_Process, - NOP_Process, - NOP_Process}; - -/* - * Globals required by usb_lib/ - * - * Mark these weak so they can be overriden to implement other USB - * functionality. - */ - -#define NUM_ENDPTS 0x04 -__weak DEVICE Device_Table = { - .Total_Endpoint = NUM_ENDPTS, - .Total_Configuration = 1 -}; - -#define MAX_PACKET_SIZE 0x40 /* 64B, maximum for USB FS Devices */ -__weak DEVICE_PROP Device_Property = { - .Init = usbInit, - .Reset = usbReset, - .Process_Status_IN = NOP_Process, - .Process_Status_OUT = NOP_Process, - .Class_Data_Setup = usbDataSetup, - .Class_NoData_Setup = usbNoDataSetup, - .Class_Get_Interface_Setting = usbGetInterfaceSetting, - .GetDeviceDescriptor = usbGetDeviceDescriptor, - .GetConfigDescriptor = usbGetConfigDescriptor, - .GetStringDescriptor = usbGetStringDescriptor, - .RxEP_buffer = NULL, - .MaxPacketSize = MAX_PACKET_SIZE -}; - -__weak USER_STANDARD_REQUESTS User_Standard_Requests = { - .User_GetConfiguration = NOP_Process, - .User_SetConfiguration = usbSetConfiguration, - .User_GetInterface = NOP_Process, - .User_SetInterface = NOP_Process, - .User_GetStatus = NOP_Process, - .User_ClearFeature = NOP_Process, - .User_SetEndPointFeature = NOP_Process, - .User_SetDeviceFeature = NOP_Process, - .User_SetDeviceAddress = usbSetDeviceAddress -}; - -/* - * User hooks - */ - -static void (*rx_hook)(unsigned, void*) = 0; -static void (*iface_setup_hook)(unsigned, void*) = 0; - -void usb_cdcacm_set_hooks(unsigned hook_flags, void (*hook)(unsigned, void*)) { - if (hook_flags & USB_CDCACM_HOOK_RX) { - rx_hook = hook; - } - if (hook_flags & USB_CDCACM_HOOK_IFACE_SETUP) { - iface_setup_hook = hook; - } -} - -/* - * CDC ACM interface - */ - -void usb_cdcacm_enable(gpio_dev *disc_dev, uint8 disc_bit) { - /* Present ourselves to the host. Writing 0 to "disc" pin must - * pull USB_DP pin up while leaving USB_DM pulled down by the - * transceiver. See USB 2.0 spec, section 7.1.7.3. */ - gpio_set_modef(disc_dev, disc_bit, GPIO_MODE_OUTPUT, GPIO_MODEF_TYPE_PP); - gpio_write_bit(disc_dev, disc_bit, 0); - - /* - * set USB_DP and USB_DM pins to alternate mode and set alternate function to USB - */ - gpio_set_modef(GPIOA, 12, GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(GPIOA, 11, GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_af(GPIOA, 12, GPIO_AF_14); - gpio_set_af(GPIOA, 11, GPIO_AF_14); - - /* Initialize the USB peripheral. */ - usb_init_usblib(USBLIB, ep_int_in, ep_int_out); -} - -void usb_cdcacm_disable(gpio_dev *disc_dev, uint8 disc_bit) { - /* Turn off the interrupt and signal disconnect (see e.g. USB 2.0 - * spec, section 7.1.7.3). */ - nvic_irq_disable(NVIC_USB_LP_CAN_RX0); - gpio_write_bit(disc_dev, disc_bit, 1); - - /* - * set USB_DP and USB_DM pins to input floating mode, reset alternate function to system default - */ - gpio_set_modef(GPIOA, 12, GPIO_MODE_INPUT, GPIO_MODEF_PUPD_NONE); - gpio_set_modef(GPIOA, 11, GPIO_MODE_INPUT, GPIO_MODEF_PUPD_NONE); - gpio_set_af(GPIOA, 12, GPIO_AF_0); - gpio_set_af(GPIOA, 11, GPIO_AF_0); -} - -void usb_cdcacm_putc(char ch) { - while (!usb_cdcacm_tx((uint8*)&ch, 1)) - ; -} - -/* This function is non-blocking. - * - * It copies data from a usercode buffer into the USB peripheral TX - * buffer, and returns the number of bytes copied. */ -uint32 usb_cdcacm_tx(const uint8* buf, uint32 len) { - /* Last transmission hasn't finished, so abort. */ - if (usb_cdcacm_is_transmitting()) { - return 0; - } - - /* We can only put USB_CDCACM_TX_EPSIZE bytes in the buffer. */ - if (len > USB_CDCACM_TX_EPSIZE) { - len = USB_CDCACM_TX_EPSIZE; - } - - /* Queue bytes for sending. */ - if (len) { - usb_copy_to_pma(buf, len, USB_CDCACM_TX_ADDR); - } - // We still need to wait for the interrupt, even if we're sending - // zero bytes. (Sending zero-size packets is useful for flushing - // host-side buffers.) - usb_set_ep_tx_count(USB_CDCACM_TX_ENDP, len); - n_unsent_bytes = len; - transmitting = 1; - usb_set_ep_tx_stat(USB_CDCACM_TX_ENDP, USB_EP_STAT_TX_VALID); - - return len; -} - -uint32 usb_cdcacm_data_available(void) { - return n_unread_bytes; -} - -uint8 usb_cdcacm_is_transmitting(void) { - return transmitting; -} - -uint16 usb_cdcacm_get_pending(void) { - return n_unsent_bytes; -} - -/* Nonblocking byte receive. - * - * Copies up to len bytes from our private data buffer (*NOT* the PMA) - * into buf and deq's the FIFO. */ -uint32 usb_cdcacm_rx(uint8* buf, uint32 len) { - /* Copy bytes to buffer. */ - uint32 n_copied = usb_cdcacm_peek(buf, len); - - /* Mark bytes as read. */ - n_unread_bytes -= n_copied; - rx_offset += n_copied; - - /* If all bytes have been read, re-enable the RX endpoint, which - * was set to NAK when the current batch of bytes was received. */ - if (n_unread_bytes == 0) { - usb_set_ep_rx_count(USB_CDCACM_RX_ENDP, USB_CDCACM_RX_EPSIZE); - usb_set_ep_rx_stat(USB_CDCACM_RX_ENDP, USB_EP_STAT_RX_VALID); - rx_offset = 0; - } - - return n_copied; -} - -/* Nonblocking byte lookahead. - * - * Looks at unread bytes without marking them as read. */ -uint32 usb_cdcacm_peek(uint8* buf, uint32 len) { - int i; - - if (len > n_unread_bytes) { - len = n_unread_bytes; - } - - for (i = 0; i < len; i++) { - buf[i] = vcomBufferRx[i + rx_offset]; - } - - return len; -} - -uint8 usb_cdcacm_get_dtr() { - return ((line_dtr_rts & USB_CDCACM_CONTROL_LINE_DTR) != 0); -} - -uint8 usb_cdcacm_get_rts() { - return ((line_dtr_rts & USB_CDCACM_CONTROL_LINE_RTS) != 0); -} - -void usb_cdcacm_get_line_coding(usb_cdcacm_line_coding *ret) { - ret->dwDTERate = line_coding.dwDTERate; - ret->bCharFormat = line_coding.bCharFormat; - ret->bParityType = line_coding.bParityType; - ret->bDataBits = line_coding.bDataBits; -} - -int usb_cdcacm_get_baud(void) { - return line_coding.dwDTERate; -} - -int usb_cdcacm_get_stop_bits(void) { - return line_coding.bCharFormat; -} - -int usb_cdcacm_get_parity(void) { - return line_coding.bParityType; -} - -int usb_cdcacm_get_n_data_bits(void) { - return line_coding.bDataBits; -} - - -/* - * Callbacks - */ - -static void vcomDataTxCb(void) { - n_unsent_bytes = 0; - transmitting = 0; -} - -static void vcomDataRxCb(void) { - usb_set_ep_rx_stat(USB_CDCACM_RX_ENDP, USB_EP_STAT_RX_NAK); - n_unread_bytes = usb_get_ep_rx_count(USB_CDCACM_RX_ENDP); - /* This copy won't overwrite unread bytes, since we've set the RX - * endpoint to NAK, and will only set it to VALID when all bytes - * have been read. */ - usb_copy_from_pma((uint8*)vcomBufferRx, n_unread_bytes, - USB_CDCACM_RX_ADDR); - - - if (n_unread_bytes == 0) { - usb_set_ep_rx_count(USB_CDCACM_RX_ENDP, USB_CDCACM_RX_EPSIZE); - usb_set_ep_rx_stat(USB_CDCACM_RX_ENDP, USB_EP_STAT_RX_VALID); - rx_offset = 0; - } - - if (rx_hook) { - rx_hook(USB_CDCACM_HOOK_RX, 0); - } -} - -static uint8* vcomGetSetLineCoding(uint16 length) { - if (length == 0) { - pInformation->Ctrl_Info.Usb_wLength = sizeof(struct usb_cdcacm_line_coding); - } - return (uint8*)&line_coding; -} - -static void usbInit(void) { - pInformation->Current_Configuration = 0; - - USB_BASE->CNTR = USB_CNTR_FRES; - - USBLIB->irq_mask = 0; - USB_BASE->CNTR = USBLIB->irq_mask; - USB_BASE->ISTR = 0; - USBLIB->irq_mask = USB_CNTR_RESETM | USB_CNTR_SUSPM | USB_CNTR_WKUPM; - USB_BASE->CNTR = USBLIB->irq_mask; - - USB_BASE->ISTR = 0; - USBLIB->irq_mask = USB_ISR_MSK; - USB_BASE->CNTR = USBLIB->irq_mask; - - nvic_irq_enable(NVIC_USB_LP_CAN_RX0); - USBLIB->state = USB_UNCONNECTED; -} - -#define BTABLE_ADDRESS 0x00 -static void usbReset(void) { - pInformation->Current_Configuration = 0; - - /* current feature is current bmAttributes */ - pInformation->Current_Feature = (USB_CONFIG_ATTR_BUSPOWERED | - USB_CONFIG_ATTR_SELF_POWERED); - - USB_BASE->BTABLE = BTABLE_ADDRESS; - - /* setup control endpoint 0 */ - usb_set_ep_type(USB_EP0, USB_EP_EP_TYPE_CONTROL); - usb_set_ep_tx_stat(USB_EP0, USB_EP_STAT_TX_STALL); - usb_set_ep_rx_addr(USB_EP0, USB_CDCACM_CTRL_RX_ADDR); - usb_set_ep_tx_addr(USB_EP0, USB_CDCACM_CTRL_TX_ADDR); - usb_clear_status_out(USB_EP0); - - usb_set_ep_rx_count(USB_EP0, pProperty->MaxPacketSize); - usb_set_ep_rx_stat(USB_EP0, USB_EP_STAT_RX_VALID); - - /* setup management endpoint 1 */ - usb_set_ep_type(USB_CDCACM_MANAGEMENT_ENDP, USB_EP_EP_TYPE_INTERRUPT); - usb_set_ep_tx_addr(USB_CDCACM_MANAGEMENT_ENDP, - USB_CDCACM_MANAGEMENT_ADDR); - usb_set_ep_tx_stat(USB_CDCACM_MANAGEMENT_ENDP, USB_EP_STAT_TX_NAK); - usb_set_ep_rx_stat(USB_CDCACM_MANAGEMENT_ENDP, USB_EP_STAT_RX_DISABLED); - - /* TODO figure out differences in style between RX/TX EP setup */ - - /* set up data endpoint OUT (RX) */ - usb_set_ep_type(USB_CDCACM_RX_ENDP, USB_EP_EP_TYPE_BULK); - usb_set_ep_rx_addr(USB_CDCACM_RX_ENDP, USB_CDCACM_RX_ADDR); - usb_set_ep_rx_count(USB_CDCACM_RX_ENDP, USB_CDCACM_RX_EPSIZE); - usb_set_ep_rx_stat(USB_CDCACM_RX_ENDP, USB_EP_STAT_RX_VALID); - - /* set up data endpoint IN (TX) */ - usb_set_ep_type(USB_CDCACM_TX_ENDP, USB_EP_EP_TYPE_BULK); - usb_set_ep_tx_addr(USB_CDCACM_TX_ENDP, USB_CDCACM_TX_ADDR); - usb_set_ep_tx_stat(USB_CDCACM_TX_ENDP, USB_EP_STAT_TX_NAK); - usb_set_ep_rx_stat(USB_CDCACM_TX_ENDP, USB_EP_STAT_RX_DISABLED); - - USBLIB->state = USB_ATTACHED; - SetDeviceAddress(0); - - /* Reset the RX/TX state */ - n_unread_bytes = 0; - n_unsent_bytes = 0; - rx_offset = 0; -} - -static RESULT usbDataSetup(uint8 request) { - uint8* (*CopyRoutine)(uint16) = 0; - - if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) { - switch (request) { - case USB_CDCACM_GET_LINE_CODING: - CopyRoutine = vcomGetSetLineCoding; - break; - case USB_CDCACM_SET_LINE_CODING: - CopyRoutine = vcomGetSetLineCoding; - break; - default: - break; - } - - /* Call the user hook. */ - if (iface_setup_hook) { - uint8 req_copy = request; - iface_setup_hook(USB_CDCACM_HOOK_IFACE_SETUP, &req_copy); - } - } - - if (CopyRoutine == NULL) { - return USB_UNSUPPORT; - } - - pInformation->Ctrl_Info.CopyData = CopyRoutine; - pInformation->Ctrl_Info.Usb_wOffset = 0; - (*CopyRoutine)(0); - return USB_SUCCESS; -} - -static RESULT usbNoDataSetup(uint8 request) { - RESULT ret = USB_UNSUPPORT; - - if (Type_Recipient == (CLASS_REQUEST | INTERFACE_RECIPIENT)) { - switch (request) { - case USB_CDCACM_SET_COMM_FEATURE: - /* We support set comm. feature, but don't handle it. */ - ret = USB_SUCCESS; - break; - case USB_CDCACM_SET_CONTROL_LINE_STATE: - /* Track changes to DTR and RTS. */ - line_dtr_rts = (pInformation->USBwValues.bw.bb0 & - (USB_CDCACM_CONTROL_LINE_DTR | - USB_CDCACM_CONTROL_LINE_RTS)); - ret = USB_SUCCESS; - break; - } - - /* Call the user hook. */ - if (iface_setup_hook) { - uint8 req_copy = request; - iface_setup_hook(USB_CDCACM_HOOK_IFACE_SETUP, &req_copy); - } - } - return ret; -} - -static RESULT usbGetInterfaceSetting(uint8 interface, uint8 alt_setting) { - if (alt_setting > 0) { - return USB_UNSUPPORT; - } else if (interface > 1) { - return USB_UNSUPPORT; - } - - return USB_SUCCESS; -} - -static uint8* usbGetDeviceDescriptor(uint16 length) { - return Standard_GetDescriptorData(length, &Device_Descriptor); -} - -static uint8* usbGetConfigDescriptor(uint16 length) { - return Standard_GetDescriptorData(length, &Config_Descriptor); -} - -static uint8* usbGetStringDescriptor(uint16 length) { - uint8 wValue0 = pInformation->USBwValue0; - - if (wValue0 > N_STRING_DESCRIPTORS) { - return NULL; - } - return Standard_GetDescriptorData(length, &String_Descriptor[wValue0]); -} - -static void usbSetConfiguration(void) { - if (pInformation->Current_Configuration != 0) { - USBLIB->state = USB_CONFIGURED; - } -} - -static void usbSetDeviceAddress(void) { - USBLIB->state = USB_ADDRESSED; -} diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.c b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.c deleted file mode 100644 index 5cf9e8745..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.c +++ /dev/null @@ -1,1013 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_core.c -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Standard protocol processing (USB v2.0) -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "usb_lib.h" -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -#define ValBit(VAR,Place) (VAR & (1 << Place)) -#define SetBit(VAR,Place) (VAR |= (1 << Place)) -#define ClrBit(VAR,Place) (VAR &= ((1 << Place) ^ 255)) - -#define Send0LengthData() { _SetEPTxCount(ENDP0, 0); \ - vSetEPTxStatus(EP_TX_VALID); \ - } - -#define vSetEPRxStatus(st) (SaveRState = st) -#define vSetEPTxStatus(st) (SaveTState = st) - -#define USB_StatusIn() Send0LengthData() -#define USB_StatusOut() vSetEPRxStatus(EP_RX_VALID) - -#define StatusInfo0 StatusInfo.bw.bb1 /* Reverse bb0 & bb1 */ -#define StatusInfo1 StatusInfo.bw.bb0 - -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -u16_u8 StatusInfo; -USB_Bool Data_Mul_MaxPacketSize = FALSE; -/* Private function prototypes -----------------------------------------------*/ -static void DataStageOut(void); -static void DataStageIn(void); -static void NoData_Setup0(void); -static void Data_Setup0(void); -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : Standard_GetConfiguration. -* Description : Return the current configuration variable address. -* Input : Length - How many bytes are needed. -* Output : None. -* Return : Return 1 , if the request is invalid when "Length" is 0. -* Return "Buffer" if the "Length" is not 0. -*******************************************************************************/ -u8 *Standard_GetConfiguration(u16 Length) -{ - if (Length == 0) - { - pInformation->Ctrl_Info.Usb_wLength = - sizeof(pInformation->Current_Configuration); - return 0; - } - pUser_Standard_Requests->User_GetConfiguration(); - return (u8 *)&pInformation->Current_Configuration; -} - -/******************************************************************************* -* Function Name : Standard_SetConfiguration. -* Description : This routine is called to set the configuration value -* Then each class should configure device themself. -* Input : None. -* Output : None. -* Return : Return USB_SUCCESS, if the request is performed. -* Return USB_UNSUPPORT, if the request is invalid. -*******************************************************************************/ -RESULT Standard_SetConfiguration(void) -{ - - if ((pInformation->USBwValue0 <= - Device_Table.Total_Configuration) && (pInformation->USBwValue1 == 0) - && (pInformation->USBwIndex == 0)) /*call Back usb spec 2.0*/ - { - pInformation->Current_Configuration = pInformation->USBwValue0; - pUser_Standard_Requests->User_SetConfiguration(); - return USB_SUCCESS; - } - else - { - return USB_UNSUPPORT; - } -} - -/******************************************************************************* -* Function Name : Standard_GetInterface. -* Description : Return the Alternate Setting of the current interface. -* Input : Length - How many bytes are needed. -* Output : None. -* Return : Return 0, if the request is invalid when "Length" is 0. -* Return "Buffer" if the "Length" is not 0. -*******************************************************************************/ -u8 *Standard_GetInterface(u16 Length) -{ - if (Length == 0) - { - pInformation->Ctrl_Info.Usb_wLength = - sizeof(pInformation->Current_AlternateSetting); - return 0; - } - pUser_Standard_Requests->User_GetInterface(); - return (u8 *)&pInformation->Current_AlternateSetting; -} - -/******************************************************************************* -* Function Name : Standard_SetInterface. -* Description : This routine is called to set the interface. -* Then each class should configure the interface them self. -* Input : None. -* Output : None. -* Return : - Return USB_SUCCESS, if the request is performed. -* - Return USB_UNSUPPORT, if the request is invalid. -*******************************************************************************/ -RESULT Standard_SetInterface(void) -{ - RESULT Re; - /*Test if the specified Interface and Alternate Setting are supported by - the application Firmware*/ - Re = (*pProperty->Class_Get_Interface_Setting)(pInformation->USBwIndex0, pInformation->USBwValue0); - - if (pInformation->Current_Configuration != 0) - { - if ((Re != USB_SUCCESS) || (pInformation->USBwIndex1 != 0) - || (pInformation->USBwValue1 != 0)) - { - return USB_UNSUPPORT; - } - else if (Re == USB_SUCCESS) - { - pUser_Standard_Requests->User_SetInterface(); - pInformation->Current_Interface = pInformation->USBwIndex0; - pInformation->Current_AlternateSetting = pInformation->USBwValue0; - return USB_SUCCESS; - } - - } - - return USB_UNSUPPORT; -} - -/******************************************************************************* -* Function Name : Standard_GetStatus. -* Description : Copy the device request data to "StatusInfo buffer". -* Input : - Length - How many bytes are needed. -* Output : None. -* Return : Return 0, if the request is at end of data block, -* or is invalid when "Length" is 0. -*******************************************************************************/ -u8 *Standard_GetStatus(u16 Length) -{ - if (Length == 0) - { - pInformation->Ctrl_Info.Usb_wLength = 2; - return 0; - } - - StatusInfo.w = 0; - /* Reset Status Information */ - - if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) - { - /*Get Device Status */ - u8 Feature = pInformation->Current_Feature; - - /* Remote Wakeup enabled */ - if (ValBit(Feature, 5)) - { - SetBit(StatusInfo0, 1); - } - - /* Bus-powered */ - if (ValBit(Feature, 6)) - { - ClrBit(StatusInfo0, 0); - } - else /* Self-powered */ - { - SetBit(StatusInfo0, 0); - } - } - /*Interface Status*/ - else if (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) - { - return (u8 *)&StatusInfo; - } - /*Get EndPoint Status*/ - else if (Type_Recipient == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) - { - u8 Related_Endpoint; - u8 wIndex0 = pInformation->USBwIndex0; - - Related_Endpoint = (wIndex0 & 0x0f); - if (ValBit(wIndex0, 7)) - { - /* IN endpoint */ - if (_GetTxStallStatus(Related_Endpoint)) - { - SetBit(StatusInfo0, 0); /* IN Endpoint stalled */ - } - } - else - { - /* OUT endpoint */ - if (_GetRxStallStatus(Related_Endpoint)) - { - SetBit(StatusInfo0, 0); /* OUT Endpoint stalled */ - } - } - - } - else - { - return NULL; - } - pUser_Standard_Requests->User_GetStatus(); - return (u8 *)&StatusInfo; -} - -/******************************************************************************* -* Function Name : Standard_ClearFeature. -* Description : Clear or disable a specific feature. -* Input : None. -* Output : None. -* Return : - Return USB_SUCCESS, if the request is performed. -* - Return USB_UNSUPPORT, if the request is invalid. -*******************************************************************************/ -RESULT Standard_ClearFeature(void) -{ - u32 Type_Rec = Type_Recipient; - u32 Status; - - - if (Type_Rec == (STANDARD_REQUEST | DEVICE_RECIPIENT)) - {/*Device Clear Feature*/ - ClrBit(pInformation->Current_Feature, 5); - return USB_SUCCESS; - } - else if (Type_Rec == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) - {/*EndPoint Clear Feature*/ - DEVICE* pDev; - u32 Related_Endpoint; - u32 wIndex0; - u32 rEP; - - if ((pInformation->USBwValue != ENDPOINT_STALL) - || (pInformation->USBwIndex1 != 0)) - { - return USB_UNSUPPORT; - } - - pDev = &Device_Table; - wIndex0 = pInformation->USBwIndex0; - rEP = wIndex0 & ~0x80; - Related_Endpoint = ENDP0 + rEP; - - if (ValBit(pInformation->USBwIndex0, 7)) - { - /*Get Status of endpoint & stall the request if the related_ENdpoint - is Disabled*/ - Status = _GetEPTxStatus(Related_Endpoint); - } - else - { - Status = _GetEPRxStatus(Related_Endpoint); - } - - if ((rEP >= pDev->Total_Endpoint) || (Status == 0) - || (pInformation->Current_Configuration == 0)) - { - return USB_UNSUPPORT; - } - - - if (wIndex0 & 0x80) - { - /* IN endpoint */ - if (_GetTxStallStatus(Related_Endpoint )) - { - ClearDTOG_TX(Related_Endpoint); - SetEPTxStatus(Related_Endpoint, EP_TX_VALID); - } - } - else - { - /* OUT endpoint */ - if (_GetRxStallStatus(Related_Endpoint)) - { - if (Related_Endpoint == ENDP0) - { - /* After clear the STALL, enable the default endpoint receiver */ - SetEPRxCount(Related_Endpoint, Device_Property.MaxPacketSize); - _SetEPRxStatus(Related_Endpoint, EP_RX_VALID); - } - else - { - ClearDTOG_RX(Related_Endpoint); - _SetEPRxStatus(Related_Endpoint, EP_RX_VALID); - } - } - } - pUser_Standard_Requests->User_ClearFeature(); - return USB_SUCCESS; - } - - return USB_UNSUPPORT; -} - -/******************************************************************************* -* Function Name : Standard_SetEndPointFeature -* Description : Set or enable a specific feature of EndPoint -* Input : None. -* Output : None. -* Return : - Return USB_SUCCESS, if the request is performed. -* - Return USB_UNSUPPORT, if the request is invalid. -*******************************************************************************/ -RESULT Standard_SetEndPointFeature(void) -{ - u32 wIndex0; - u32 Related_Endpoint; - u32 rEP; - u32 Status; - - wIndex0 = pInformation->USBwIndex0; - rEP = wIndex0 & ~0x80; - Related_Endpoint = ENDP0 + rEP; - - if (ValBit(pInformation->USBwIndex0, 7)) - { - /* get Status of endpoint & stall the request if the related_ENdpoint - is Disabled*/ - Status = _GetEPTxStatus(Related_Endpoint); - } - else - { - Status = _GetEPRxStatus(Related_Endpoint); - } - - if (Related_Endpoint >= Device_Table.Total_Endpoint - || pInformation->USBwValue != 0 || Status == 0 - || pInformation->Current_Configuration == 0) - { - return USB_UNSUPPORT; - } - else - { - if (wIndex0 & 0x80) - { - /* IN endpoint */ - _SetEPTxStatus(Related_Endpoint, EP_TX_STALL); - } - - else - { - /* OUT endpoint */ - _SetEPRxStatus(Related_Endpoint, EP_RX_STALL); - } - } - pUser_Standard_Requests->User_SetEndPointFeature(); - return USB_SUCCESS; -} - -/******************************************************************************* -* Function Name : Standard_SetDeviceFeature. -* Description : Set or enable a specific feature of Device. -* Input : None. -* Output : None. -* Return : - Return USB_SUCCESS, if the request is performed. -* - Return USB_UNSUPPORT, if the request is invalid. -*******************************************************************************/ -RESULT Standard_SetDeviceFeature(void) -{ - SetBit(pInformation->Current_Feature, 5); - pUser_Standard_Requests->User_SetDeviceFeature(); - return USB_SUCCESS; -} - -/******************************************************************************* -* Function Name : Standard_GetDescriptorData. -* Description : Standard_GetDescriptorData is used for descriptors transfer. -* : This routine is used for the descriptors resident in Flash -* or RAM -* pDesc can be in either Flash or RAM -* The purpose of this routine is to have a versatile way to -* response descriptors request. It allows user to generate -* certain descriptors with software or read descriptors from -* external storage part by part. -* Input : - Length - Length of the data in this transfer. -* - pDesc - A pointer points to descriptor struct. -* The structure gives the initial address of the descriptor and -* its original size. -* Output : None. -* Return : Address of a part of the descriptor pointed by the Usb_ -* wOffset The buffer pointed by this address contains at least -* Length bytes. -*******************************************************************************/ -u8 *Standard_GetDescriptorData(u16 Length, ONE_DESCRIPTOR *pDesc) -{ - u32 wOffset; - - wOffset = pInformation->Ctrl_Info.Usb_wOffset; - if (Length == 0) - { - pInformation->Ctrl_Info.Usb_wLength = pDesc->Descriptor_Size - wOffset; - return 0; - } - - return pDesc->Descriptor + wOffset; -} - -/******************************************************************************* -* Function Name : DataStageOut. -* Description : Data stage of a Control Write Transfer. -* Input : None. -* Output : None. -* Return : None. -*******************************************************************************/ -void DataStageOut(void) -{ - ENDPOINT_INFO *pEPinfo = &pInformation->Ctrl_Info; - u32 save_rLength; - - save_rLength = pEPinfo->Usb_rLength; - - if (pEPinfo->CopyData && save_rLength) - { - u8 *Buffer; - u32 Length; - - Length = pEPinfo->PacketSize; - if (Length > save_rLength) - { - Length = save_rLength; - } - - Buffer = (*pEPinfo->CopyData)(Length); - pEPinfo->Usb_rLength -= Length; - pEPinfo->Usb_rOffset += Length; - - PMAToUserBufferCopy(Buffer, GetEPRxAddr(ENDP0), Length); - } - - if (pEPinfo->Usb_rLength != 0) - { - vSetEPRxStatus(EP_RX_VALID);/* re-enable for next data reception */ - SetEPTxCount(ENDP0, 0); - vSetEPTxStatus(EP_TX_VALID);/* Expect the host to abort the data OUT stage */ - } - /* Set the next State*/ - if (pEPinfo->Usb_rLength >= pEPinfo->PacketSize) - { - pInformation->ControlState = OUT_DATA; - } - else - { - if (pEPinfo->Usb_rLength > 0) - { - pInformation->ControlState = LAST_OUT_DATA; - } - else if (pEPinfo->Usb_rLength == 0) - { - pInformation->ControlState = WAIT_STATUS_IN; - USB_StatusIn(); - } - } -} - -/******************************************************************************* -* Function Name : DataStageIn. -* Description : Data stage of a Control Read Transfer. -* Input : None. -* Output : None. -* Return : None. -*******************************************************************************/ -void DataStageIn(void) -{ - ENDPOINT_INFO *pEPinfo = &pInformation->Ctrl_Info; - u32 save_wLength = pEPinfo->Usb_wLength; - u32 ControlState = pInformation->ControlState; - - u8 *DataBuffer; - u32 Length; - - if ((save_wLength == 0) && (ControlState == LAST_IN_DATA)) - { - if(Data_Mul_MaxPacketSize == TRUE) - { - /* No more data to send and empty packet */ - Send0LengthData(); - ControlState = LAST_IN_DATA; - Data_Mul_MaxPacketSize = FALSE; - } - else - { - /* No more data to send so STALL the TX Status*/ - ControlState = WAIT_STATUS_OUT; - vSetEPTxStatus(EP_TX_STALL); - } - - goto Expect_Status_Out; - } - - Length = pEPinfo->PacketSize; - ControlState = (save_wLength <= Length) ? LAST_IN_DATA : IN_DATA; - - if (Length > save_wLength) - { - Length = save_wLength; - } - - DataBuffer = (*pEPinfo->CopyData)(Length); - - UserToPMABufferCopy(DataBuffer, GetEPTxAddr(ENDP0), Length); - - SetEPTxCount(ENDP0, Length); - - pEPinfo->Usb_wLength -= Length; - pEPinfo->Usb_wOffset += Length; - vSetEPTxStatus(EP_TX_VALID); - - USB_StatusOut();/* Expect the host to abort the data IN stage */ - -Expect_Status_Out: - pInformation->ControlState = ControlState; -} - -/******************************************************************************* -* Function Name : NoData_Setup0. -* Description : Proceed the processing of setup request without data stage. -* Input : None. -* Output : None. -* Return : None. -*******************************************************************************/ -void NoData_Setup0(void) -{ - RESULT Result = USB_UNSUPPORT; - u32 RequestNo = pInformation->USBbRequest; - u32 ControlState; - - if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) - { - /* Device Request*/ - /* SET_CONFIGURATION*/ - if (RequestNo == SET_CONFIGURATION) - { - Result = Standard_SetConfiguration(); - } - - /*SET ADDRESS*/ - else if (RequestNo == SET_ADDRESS) - { - if ((pInformation->USBwValue0 > 127) || (pInformation->USBwValue1 != 0) - || (pInformation->USBwIndex != 0) - || (pInformation->Current_Configuration != 0)) - /* Device Address should be 127 or less*/ - { - ControlState = STALLED; - goto exit_NoData_Setup0; - } - else - { - Result = USB_SUCCESS; - } - } - /*SET FEATURE for Device*/ - else if (RequestNo == SET_FEATURE) - { - if ((pInformation->USBwValue0 == DEVICE_REMOTE_WAKEUP) - && (pInformation->USBwIndex == 0) - && (ValBit(pInformation->Current_Feature, 5))) - { - Result = Standard_SetDeviceFeature(); - } - else - { - Result = USB_UNSUPPORT; - } - } - /*Clear FEATURE for Device */ - else if (RequestNo == CLEAR_FEATURE) - { - if (pInformation->USBwValue0 == DEVICE_REMOTE_WAKEUP - && pInformation->USBwIndex == 0 - && ValBit(pInformation->Current_Feature, 5)) - { - Result = Standard_ClearFeature(); - } - else - { - Result = USB_UNSUPPORT; - } - } - - } - - /* Interface Request*/ - else if (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) - { - /*SET INTERFACE*/ - if (RequestNo == SET_INTERFACE) - { - Result = Standard_SetInterface(); - } - } - - /* EndPoint Request*/ - else if (Type_Recipient == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) - { - /*CLEAR FEATURE for EndPoint*/ - if (RequestNo == CLEAR_FEATURE) - { - Result = Standard_ClearFeature(); - } - /* SET FEATURE for EndPoint*/ - else if (RequestNo == SET_FEATURE) - { - Result = Standard_SetEndPointFeature(); - } - } - else - { - Result = USB_UNSUPPORT; - } - - - if (Result != USB_SUCCESS) - { - Result = (*pProperty->Class_NoData_Setup)(RequestNo); - if (Result == USB_NOT_READY) - { - ControlState = PAUSE; - goto exit_NoData_Setup0; - } - } - - if (Result != USB_SUCCESS) - { - ControlState = STALLED; - goto exit_NoData_Setup0; - } - - ControlState = WAIT_STATUS_IN;/* After no data stage SETUP */ - - USB_StatusIn(); - -exit_NoData_Setup0: - pInformation->ControlState = ControlState; - return; -} - -/******************************************************************************* -* Function Name : Data_Setup0. -* Description : Proceed the processing of setup request with data stage. -* Input : None. -* Output : None. -* Return : None. -*******************************************************************************/ -void Data_Setup0(void) -{ - u8 *(*CopyRoutine)(u16); - RESULT Result; - u32 Request_No = pInformation->USBbRequest; - - u32 Related_Endpoint, Reserved; - u32 wOffset, Status; - - - - CopyRoutine = NULL; - wOffset = 0; - - if (Request_No == GET_DESCRIPTOR) - { - if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) - { - u8 wValue1 = pInformation->USBwValue1; - if (wValue1 == DEVICE_DESCRIPTOR) - { - CopyRoutine = pProperty->GetDeviceDescriptor; - } - else if (wValue1 == CONFIG_DESCRIPTOR) - { - CopyRoutine = pProperty->GetConfigDescriptor; - } - else if (wValue1 == STRING_DESCRIPTOR) - { - CopyRoutine = pProperty->GetStringDescriptor; - } /* End of GET_DESCRIPTOR */ - } - } - - /*GET STATUS*/ - else if ((Request_No == GET_STATUS) && (pInformation->USBwValue == 0) - && (pInformation->USBwLength == 0x0002) - && (pInformation->USBwIndex1 == 0)) - { - /* GET STATUS for Device*/ - if ((Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) - && (pInformation->USBwIndex == 0)) - { - CopyRoutine = Standard_GetStatus; - } - - /* GET STATUS for Interface*/ - else if (Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) - { - if (((*pProperty->Class_Get_Interface_Setting)(pInformation->USBwIndex0, 0) == USB_SUCCESS) - && (pInformation->Current_Configuration != 0)) - { - CopyRoutine = Standard_GetStatus; - } - } - - /* GET STATUS for EndPoint*/ - else if (Type_Recipient == (STANDARD_REQUEST | ENDPOINT_RECIPIENT)) - { - Related_Endpoint = (pInformation->USBwIndex0 & 0x0f); - Reserved = pInformation->USBwIndex0 & 0x70; - - if (ValBit(pInformation->USBwIndex0, 7)) - { - /*Get Status of endpoint & stall the request if the related_ENdpoint - is Disabled*/ - Status = _GetEPTxStatus(Related_Endpoint); - } - else - { - Status = _GetEPRxStatus(Related_Endpoint); - } - - if ((Related_Endpoint < Device_Table.Total_Endpoint) && (Reserved == 0) - && (Status != 0)) - { - CopyRoutine = Standard_GetStatus; - } - } - - } - - /*GET CONFIGURATION*/ - else if (Request_No == GET_CONFIGURATION) - { - if (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT)) - { - CopyRoutine = Standard_GetConfiguration; - } - } - /*GET INTERFACE*/ - else if (Request_No == GET_INTERFACE) - { - if ((Type_Recipient == (STANDARD_REQUEST | INTERFACE_RECIPIENT)) - && (pInformation->Current_Configuration != 0) && (pInformation->USBwValue == 0) - && (pInformation->USBwIndex1 == 0) && (pInformation->USBwLength == 0x0001) - && ((*pProperty->Class_Get_Interface_Setting)(pInformation->USBwIndex0, 0) == USB_SUCCESS)) - { - CopyRoutine = Standard_GetInterface; - } - - } - - if (CopyRoutine) - { - pInformation->Ctrl_Info.Usb_wOffset = wOffset; - pInformation->Ctrl_Info.CopyData = CopyRoutine; - /* sb in the original the cast to word was directly */ - /* now the cast is made step by step */ - (*CopyRoutine)(0); - Result = USB_SUCCESS; - } - else - { - Result = (*pProperty->Class_Data_Setup)(pInformation->USBbRequest); - if (Result == USB_NOT_READY) - { - pInformation->ControlState = PAUSE; - return; - } - } - - if (pInformation->Ctrl_Info.Usb_wLength == 0xFFFF) - { - /* Data is not ready, wait it */ - pInformation->ControlState = PAUSE; - return; - } - if ((Result == USB_UNSUPPORT) || (pInformation->Ctrl_Info.Usb_wLength == 0)) - { - /* Unsupported request */ - pInformation->ControlState = STALLED; - return; - } - - - if (ValBit(pInformation->USBbmRequestType, 7)) - { - /* Device ==> Host */ - vu32 wLength = pInformation->USBwLength; - - /* Restrict the data length to be the one host asks */ - if (pInformation->Ctrl_Info.Usb_wLength > wLength) - { - pInformation->Ctrl_Info.Usb_wLength = wLength; - } - - else if (pInformation->Ctrl_Info.Usb_wLength < pInformation->USBwLength) - { - if (pInformation->Ctrl_Info.Usb_wLength < pProperty->MaxPacketSize) - { - Data_Mul_MaxPacketSize = FALSE; - } - else if ((pInformation->Ctrl_Info.Usb_wLength % pProperty->MaxPacketSize) == 0) - { - Data_Mul_MaxPacketSize = TRUE; - } - } - - pInformation->Ctrl_Info.PacketSize = pProperty->MaxPacketSize; - DataStageIn(); - } - else - { - pInformation->ControlState = OUT_DATA; - vSetEPRxStatus(EP_RX_VALID); /* enable for next data reception */ - } - - return; -} - -/******************************************************************************* -* Function Name : Setup0_Process -* Description : Get the device request data and dispatch to individual process. -* Input : None. -* Output : None. -* Return : Post0_Process. -*******************************************************************************/ -u8 Setup0_Process(void) -{ - - union - { - u8* b; - u16* w; - } pBuf; - - pBuf.b = PMAAddr + (u8 *)(_GetEPRxAddr(ENDP0) * 2); /* *2 for 32 bits addr */ - - if (pInformation->ControlState != PAUSE) - { - pInformation->USBbmRequestType = *pBuf.b++; /* bmRequestType */ - pInformation->USBbRequest = *pBuf.b++; /* bRequest */ - pBuf.w++; /* word not accessed because of 32 bits addressing */ - pInformation->USBwValue = ByteSwap(*pBuf.w++); /* wValue */ - pBuf.w++; /* word not accessed because of 32 bits addressing */ - pInformation->USBwIndex = ByteSwap(*pBuf.w++); /* wIndex */ - pBuf.w++; /* word not accessed because of 32 bits addressing */ - pInformation->USBwLength = *pBuf.w; /* wLength */ - } - - pInformation->ControlState = SETTING_UP; - if (pInformation->USBwLength == 0) - { - /* Setup with no data stage */ - NoData_Setup0(); - } - else - { - /* Setup with data stage */ - Data_Setup0(); - } - return Post0_Process(); -} - -/******************************************************************************* -* Function Name : In0_Process -* Description : Process the IN token on all default endpoint. -* Input : None. -* Output : None. -* Return : Post0_Process. -*******************************************************************************/ -u8 In0_Process(void) -{ - u32 ControlState = pInformation->ControlState; - - if ((ControlState == IN_DATA) || (ControlState == LAST_IN_DATA)) - { - DataStageIn(); - /* ControlState may be changed outside the function */ - ControlState = pInformation->ControlState; - } - - else if (ControlState == WAIT_STATUS_IN) - { - if ((pInformation->USBbRequest == SET_ADDRESS) && - (Type_Recipient == (STANDARD_REQUEST | DEVICE_RECIPIENT))) - { - SetDeviceAddress(pInformation->USBwValue0); - pUser_Standard_Requests->User_SetDeviceAddress(); - } - (*pProperty->Process_Status_IN)(); - ControlState = STALLED; - } - - else - { - ControlState = STALLED; - } - - pInformation->ControlState = ControlState; - - return Post0_Process(); -} - -/******************************************************************************* -* Function Name : Out0_Process -* Description : Process the OUT token on all default endpoint. -* Input : None. -* Output : None. -* Return : Post0_Process. -*******************************************************************************/ -u8 Out0_Process(void) -{ - u32 ControlState = pInformation->ControlState; - - if ((ControlState == OUT_DATA) || (ControlState == LAST_OUT_DATA)) - { - DataStageOut(); - ControlState = pInformation->ControlState; /* may be changed outside the function */ - } - - else if (ControlState == WAIT_STATUS_OUT) - { - (*pProperty->Process_Status_OUT)(); - ControlState = STALLED; - } - - else if ((ControlState == IN_DATA) || (ControlState == LAST_IN_DATA)) - { - /* host aborts the transfer before finish */ - ControlState = STALLED; - } - - /* Unexpect state, STALL the endpoint */ - else - { - ControlState = STALLED; - } - - pInformation->ControlState = ControlState; - - return Post0_Process(); -} - -/******************************************************************************* -* Function Name : Post0_Process -* Description : Stall the Endpoint 0 in case of error. -* Input : None. -* Output : None. -* Return : - 0 if the control State is in PAUSE -* - 1 if not. -*******************************************************************************/ -u8 Post0_Process(void) -{ - SetEPRxCount(ENDP0, Device_Property.MaxPacketSize); - - if (pInformation->ControlState == STALLED) - { - vSetEPRxStatus(EP_RX_STALL); - vSetEPTxStatus(EP_TX_STALL); - } - - return (pInformation->ControlState == PAUSE); -} - -/******************************************************************************* -* Function Name : SetDeviceAddress. -* Description : Set the device and all the used Endpoints addresses. -* Input : - Val: device adress. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetDeviceAddress(u8 Val) -{ - u32 i; - u32 nEP = Device_Table.Total_Endpoint; - - /* set address in every used endpoint */ - for (i = 0; i < nEP; i++) - { - _SetEPAddress((u8)i, (u8)i); - } /* for */ - _SetDADDR(Val | DADDR_EF); /* set device address and enable function */ -} - -/******************************************************************************* -* Function Name : NOP_Process -* Description : No operation function. -* Input : None. -* Output : None. -* Return : None. -*******************************************************************************/ -void NOP_Process(void) -{ -} - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.h b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.h deleted file mode 100644 index fa29a183b..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_core.h +++ /dev/null @@ -1,251 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_core.h -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Standard protocol processing functions prototypes -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_CORE_H -#define __USB_CORE_H - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -/* Exported types ------------------------------------------------------------*/ -typedef enum _CONTROL_STATE -{ - WAIT_SETUP, /* 0 */ - SETTING_UP, /* 1 */ - IN_DATA, /* 2 */ - OUT_DATA, /* 3 */ - LAST_IN_DATA, /* 4 */ - LAST_OUT_DATA, /* 5 */ - WAIT_STATUS_IN, /* 7 */ - WAIT_STATUS_OUT, /* 8 */ - STALLED, /* 9 */ - PAUSE /* 10 */ -} CONTROL_STATE; /* The state machine states of a control pipe */ - -typedef struct OneDescriptor -{ - u8 *Descriptor; - u16 Descriptor_Size; -} -ONE_DESCRIPTOR, *PONE_DESCRIPTOR; -/* All the request process routines return a value of this type - If the return value is not SUCCESS or NOT_READY, - the software will STALL the correspond endpoint */ -typedef enum _RESULT -{ - USB_SUCCESS = 0, /* Process sucessfully */ - USB_ERROR, - USB_UNSUPPORT, - USB_NOT_READY /* The process has not been finished, endpoint will be - NAK to further rquest */ -} RESULT; - - -/*-*-*-*-*-*-*-*-*-*-* Definitions for endpoint level -*-*-*-*-*-*-*-*-*-*-*-*/ -typedef struct _ENDPOINT_INFO -{ - /* When send data out of the device, - CopyData() is used to get data buffer 'Length' bytes data - if Length is 0, - CopyData() returns the total length of the data - if the request is not supported, returns 0 - (NEW Feature ) - if CopyData() returns -1, the calling routine should not proceed - further and will resume the SETUP process by the class device - if Length is not 0, - CopyData() returns a pointer to indicate the data location - Usb_wLength is the data remain to be sent, - Usb_wOffset is the Offset of original data - When receive data from the host, - CopyData() is used to get user data buffer which is capable - of Length bytes data to copy data from the endpoint buffer. - if Length is 0, - CopyData() returns the available data length, - if Length is not 0, - CopyData() returns user buffer address - Usb_rLength is the data remain to be received, - Usb_rPointer is the Offset of data buffer - */ - u16 Usb_wLength; - u16 Usb_wOffset; - u16 PacketSize; - u8 *(*CopyData)(u16 Length); -}ENDPOINT_INFO; - -/*-*-*-*-*-*-*-*-*-*-*-* Definitions for device level -*-*-*-*-*-*-*-*-*-*-*-*/ - -typedef struct _DEVICE -{ - u8 Total_Endpoint; /* Number of endpoints that are used */ - u8 Total_Configuration;/* Number of configuration available */ -} -DEVICE; - -typedef union -{ - u16 w; - struct BW - { - u8 bb1; - u8 bb0; - } - bw; -} u16_u8; - -typedef struct _DEVICE_INFO -{ - u8 USBbmRequestType; /* bmRequestType */ - u8 USBbRequest; /* bRequest */ - u16_u8 USBwValues; /* wValue */ - u16_u8 USBwIndexs; /* wIndex */ - u16_u8 USBwLengths; /* wLength */ - - u8 ControlState; /* of type CONTROL_STATE */ - u8 Current_Feature; - u8 Current_Configuration; /* Selected configuration */ - u8 Current_Interface; /* Selected interface of current configuration */ - u8 Current_AlternateSetting;/* Selected Alternate Setting of current - interface*/ - - ENDPOINT_INFO Ctrl_Info; -}DEVICE_INFO; - -typedef struct _DEVICE_PROP -{ - void (*Init)(void); /* Initialize the device */ - void (*Reset)(void); /* Reset routine of this device */ - - /* Device dependent process after the status stage */ - void (*Process_Status_IN)(void); - void (*Process_Status_OUT)(void); - - /* Procedure of process on setup stage of a class specified request with data stage */ - /* All class specified requests with data stage are processed in Class_Data_Setup - Class_Data_Setup() - responses to check all special requests and fills ENDPOINT_INFO - according to the request - If IN tokens are expected, then wLength & wOffset will be filled - with the total transferring bytes and the starting position - If OUT tokens are expected, then rLength & rOffset will be filled - with the total expected bytes and the starting position in the buffer - - If the request is valid, Class_Data_Setup returns SUCCESS, else UNSUPPORT - - CAUTION: - Since GET_CONFIGURATION & GET_INTERFACE are highly related to - the individual classes, they will be checked and processed here. - */ - RESULT (*Class_Data_Setup)(u8 RequestNo); - - /* Procedure of process on setup stage of a class specified request without data stage */ - /* All class specified requests without data stage are processed in Class_NoData_Setup - Class_NoData_Setup - responses to check all special requests and perform the request - - CAUTION: - Since SET_CONFIGURATION & SET_INTERFACE are highly related to - the individual classes, they will be checked and processed here. - */ - RESULT (*Class_NoData_Setup)(u8 RequestNo); - - /*Class_Get_Interface_Setting - This function is used by the file usb_core.c to test if the selected Interface - and Alternate Setting (u8 Interface, u8 AlternateSetting) are supported by - the application. - This function is writing by user. It should return "SUCCESS" if the Interface - and Alternate Setting are supported by the application or "UNSUPPORT" if they - are not supported. */ - - RESULT (*Class_Get_Interface_Setting)(u8 Interface, u8 AlternateSetting); - - u8* (*GetDeviceDescriptor)(u16 Length); - u8* (*GetConfigDescriptor)(u16 Length); - u8* (*GetStringDescriptor)(u16 Length); - - u8* RxEP_buffer; - u8 MaxPacketSize; - -}DEVICE_PROP; - -typedef struct _USER_STANDARD_REQUESTS -{ - void (*User_GetConfiguration)(void); /* Get Configuration */ - void (*User_SetConfiguration)(void); /* Set Configuration */ - void (*User_GetInterface)(void); /* Get Interface */ - void (*User_SetInterface)(void); /* Set Interface */ - void (*User_GetStatus)(void); /* Get Status */ - void (*User_ClearFeature)(void); /* Clear Feature */ - void (*User_SetEndPointFeature)(void); /* Set Endpoint Feature */ - void (*User_SetDeviceFeature)(void); /* Set Device Feature */ - void (*User_SetDeviceAddress)(void); /* Set Device Address */ -} -USER_STANDARD_REQUESTS; - -/* Exported constants --------------------------------------------------------*/ -#define Type_Recipient (pInformation->USBbmRequestType & (REQUEST_TYPE | RECIPIENT)) - -#define Usb_rLength Usb_wLength -#define Usb_rOffset Usb_wOffset - -#define USBwValue USBwValues.w -#define USBwValue0 USBwValues.bw.bb0 -#define USBwValue1 USBwValues.bw.bb1 -#define USBwIndex USBwIndexs.w -#define USBwIndex0 USBwIndexs.bw.bb0 -#define USBwIndex1 USBwIndexs.bw.bb1 -#define USBwLength USBwLengths.w -#define USBwLength0 USBwLengths.bw.bb0 -#define USBwLength1 USBwLengths.bw.bb1 - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -u8 Setup0_Process(void); -u8 Post0_Process(void); -u8 Out0_Process(void); -u8 In0_Process(void); - -RESULT Standard_SetEndPointFeature(void); -RESULT Standard_SetDeviceFeature(void); - -u8 *Standard_GetConfiguration(u16 Length); -RESULT Standard_SetConfiguration(void); -u8 *Standard_GetInterface(u16 Length); -RESULT Standard_SetInterface(void); -u8 *Standard_GetDescriptorData(u16 Length, PONE_DESCRIPTOR pDesc); - -u8 *Standard_GetStatus(u16 Length); -RESULT Standard_ClearFeature(void); -void SetDeviceAddress(u8); -void NOP_Process(void); - -extern DEVICE_PROP Device_Property; -extern USER_STANDARD_REQUESTS User_Standard_Requests; -extern DEVICE Device_Table; -extern DEVICE_INFO Device_Info; - -/* cells saving status during interrupt servicing */ -extern u16 SaveRState; -extern u16 SaveTState; - -#if defined(__cplusplus) -} -#endif - -#endif /* __USB_CORE_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_def.h b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_def.h deleted file mode 100644 index 80aa3038c..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_def.h +++ /dev/null @@ -1,88 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_def.h -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Definitions related to USB Core -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_DEF_H -#define __USB_DEF_H - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -/* Exported types ------------------------------------------------------------*/ -typedef enum _RECIPIENT_TYPE -{ - DEVICE_RECIPIENT, /* Recipient device */ - INTERFACE_RECIPIENT, /* Recipient interface */ - ENDPOINT_RECIPIENT, /* Recipient endpoint */ - OTHER_RECIPIENT -} RECIPIENT_TYPE; - - -typedef enum _STANDARD_REQUESTS -{ - GET_STATUS = 0, - CLEAR_FEATURE, - RESERVED1, - SET_FEATURE, - RESERVED2, - SET_ADDRESS, - GET_DESCRIPTOR, - SET_DESCRIPTOR, - GET_CONFIGURATION, - SET_CONFIGURATION, - GET_INTERFACE, - SET_INTERFACE, - TOTAL_sREQUEST, /* Total number of Standard request */ - SYNCH_FRAME = 12 -} STANDARD_REQUESTS; - -/* Definition of "USBwValue" */ -typedef enum _DESCRIPTOR_TYPE -{ - DEVICE_DESCRIPTOR = 1, - CONFIG_DESCRIPTOR, - STRING_DESCRIPTOR, - INTERFACE_DESCRIPTOR, - ENDPOINT_DESCRIPTOR -} DESCRIPTOR_TYPE; - -/* Feature selector of a SET_FEATURE or CLEAR_FEATURE */ -typedef enum _FEATURE_SELECTOR -{ - ENDPOINT_STALL, - DEVICE_REMOTE_WAKEUP -} FEATURE_SELECTOR; - -/* Exported constants --------------------------------------------------------*/ -/* Definition of "USBbmRequestType" */ -#define REQUEST_TYPE 0x60 /* Mask to get request type */ -#define STANDARD_REQUEST 0x00 /* Standard request */ -#define CLASS_REQUEST 0x20 /* Class request */ -#define VENDOR_REQUEST 0x40 /* Vendor request */ - -#define RECIPIENT 0x1F /* Mask to get recipient */ - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ - -#if defined(__cplusplus) -} -#endif - -#endif /* __USB_DEF_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.c b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.c deleted file mode 100644 index 94f3a836a..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.c +++ /dev/null @@ -1,64 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_init.c -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Initialization routines & global variables -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "usb_lib.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* The number of current endpoint, it will be used to specify an endpoint */ - u8 EPindex; -/* The number of current device, it is an index to the Device_Table */ -/* u8 Device_no; */ -/* Points to the DEVICE_INFO structure of current device */ -/* The purpose of this register is to speed up the execution */ -DEVICE_INFO *pInformation; -/* Points to the DEVICE_PROP structure of current device */ -/* The purpose of this register is to speed up the execution */ -DEVICE_PROP *pProperty; -/* Temporary save the state of Rx & Tx status. */ -/* Whenever the Rx or Tx state is changed, its value is saved */ -/* in this variable first and will be set to the EPRB or EPRA */ -/* at the end of interrupt process */ -u16 SaveState ; -u16 wInterrupt_Mask; -DEVICE_INFO Device_Info; -USER_STANDARD_REQUESTS *pUser_Standard_Requests; - -/* Extern variables ----------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : USB_Init -* Description : USB system initialization -* Input : None. -* Output : None. -* Return : None. -*******************************************************************************/ -void USB_Init(void) -{ - pInformation = &Device_Info; - pInformation->ControlState = 2; - pProperty = &Device_Property; - pUser_Standard_Requests = &User_Standard_Requests; - /* Initialize devices one by one */ - - pProperty->Init(); -} - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.h b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.h deleted file mode 100644 index 80ee2fb32..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_init.h +++ /dev/null @@ -1,57 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_init.h -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Initialization routines & global variables -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_INIT_H -#define __USB_INIT_H - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Includes ------------------------------------------------------------------*/ -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -void USB_Init(void); - -/* External variables --------------------------------------------------------*/ -/* The number of current endpoint, it will be used to specify an endpoint */ -extern u8 EPindex; -/* The number of current device, it is an index to the Device_Table */ -/*extern u8 Device_no; */ -/* Points to the DEVICE_INFO structure of current device */ -/* The purpose of this register is to speed up the execution */ -extern DEVICE_INFO* pInformation; -/* Points to the DEVICE_PROP structure of current device */ -/* The purpose of this register is to speed up the execution */ -extern DEVICE_PROP* pProperty; -/* Temporary save the state of Rx & Tx status. */ -/* Whenever the Rx or Tx state is changed, its value is saved */ -/* in this variable first and will be set to the EPRB or EPRA */ -/* at the end of interrupt process */ -extern USER_STANDARD_REQUESTS *pUser_Standard_Requests; - -extern u16 SaveState ; -extern u16 wInterrupt_Mask; - -#if defined(__cplusplus) -} -#endif - -#endif /* __USB_INIT_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_lib.h b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_lib.h deleted file mode 100644 index 85f94abdf..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_lib.h +++ /dev/null @@ -1,36 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_lib.h -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : USB library include files -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_LIB_H -#define __USB_LIB_H - -/* Includes ------------------------------------------------------------------*/ -#include "usb_type.h" -#include "usb_regs.h" -#include "usb_def.h" -#include "usb_core.h" -#include "usb_init.h" -#include "usb_mem.h" - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -/* External variables --------------------------------------------------------*/ - -#endif /* __USB_LIB_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.c b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.c deleted file mode 100644 index ad9740a18..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.c +++ /dev/null @@ -1,73 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_mem.c -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Utility functions for memory transfers to/from PMA -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "usb_lib.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Extern variables ----------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ -/******************************************************************************* -* Function Name : UserToPMABufferCopy -* Description : Copy a buffer from user memory area to packet memory area (PMA) -* Input : - pbUsrBuf: pointer to user memory area. -* - wPMABufAddr: address into PMA. -* - wNBytes: no. of bytes to be copied. -* Output : None. -* Return : None . -*******************************************************************************/ -void UserToPMABufferCopy(const u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes) -{ - u32 n = (wNBytes + 1) >> 1; /* n = (wNBytes + 1) / 2 */ - u32 i, temp1, temp2; - u16 *pdwVal; - pdwVal = (u16 *)(wPMABufAddr * 2 + PMAAddr); - for (i = n; i != 0; i--) - { - temp1 = (u16) * pbUsrBuf; - pbUsrBuf++; - temp2 = temp1 | (u16) * pbUsrBuf << 8; - *pdwVal++ = temp2; - pdwVal++; - pbUsrBuf++; - } -} -/******************************************************************************* -* Function Name : PMAToUserBufferCopy -* Description : Copy a buffer from user memory area to packet memory area (PMA) -* Input : - pbUsrBuf = pointer to user memory area. -* - wPMABufAddr = address into PMA. -* - wNBytes = no. of bytes to be copied. -* Output : None. -* Return : None. -*******************************************************************************/ -void PMAToUserBufferCopy(u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes) -{ - u32 n = (wNBytes + 1) >> 1;/* /2*/ - u32 i; - u32 *pdwVal; - pdwVal = (u32 *)(wPMABufAddr * 2 + PMAAddr); - for (i = n; i != 0; i--) - { - *(u16*)pbUsrBuf++ = *pdwVal++; - pbUsrBuf++; - } -} - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.h b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.h deleted file mode 100644 index b0e0474a9..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_mem.h +++ /dev/null @@ -1,40 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_mem.h -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Utility prototypes functions for memory/PMA transfers -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_MEM_H -#define __USB_MEM_H - -/* Includes ------------------------------------------------------------------*/ -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -#if defined(__cplusplus) -extern "C" { -#endif - -void UserToPMABufferCopy(const u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes); -void PMAToUserBufferCopy(u8 *pbUsrBuf, u16 wPMABufAddr, u16 wNBytes); - -#if defined(__cplusplus) -} -#endif - -/* External variables --------------------------------------------------------*/ - -#endif /*__USB_MEM_H*/ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.c b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.c deleted file mode 100644 index c7e0276fe..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.c +++ /dev/null @@ -1,748 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_regs.c -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Interface functions to USB cell registers -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Includes ------------------------------------------------------------------*/ -#include "usb_lib.h" - -/* Private typedef -----------------------------------------------------------*/ -/* Private define ------------------------------------------------------------*/ -/* Private macro -------------------------------------------------------------*/ -/* Private variables ---------------------------------------------------------*/ -/* Extern variables ----------------------------------------------------------*/ -/* Private function prototypes -----------------------------------------------*/ -/* Private functions ---------------------------------------------------------*/ - -/******************************************************************************* -* Function Name : SetCNTR. -* Description : Set the CNTR register value. -* Input : wRegValue: new register value. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetCNTR(u16 wRegValue) -{ - _SetCNTR(wRegValue); -} - -/******************************************************************************* -* Function Name : GetCNTR. -* Description : returns the CNTR register value. -* Input : None. -* Output : None. -* Return : CNTR register Value. -*******************************************************************************/ -u16 GetCNTR(void) -{ - return(_GetCNTR()); -} - -/******************************************************************************* -* Function Name : SetISTR. -* Description : Set the ISTR register value. -* Input : wRegValue: new register value. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetISTR(u16 wRegValue) -{ - _SetISTR(wRegValue); -} - -/******************************************************************************* -* Function Name : GetISTR -* Description : Returns the ISTR register value. -* Input : None. -* Output : None. -* Return : ISTR register Value -*******************************************************************************/ -u16 GetISTR(void) -{ - return(_GetISTR()); -} - -/******************************************************************************* -* Function Name : GetFNR -* Description : Returns the FNR register value. -* Input : None. -* Output : None. -* Return : FNR register Value -*******************************************************************************/ -u16 GetFNR(void) -{ - return(_GetFNR()); -} - -/******************************************************************************* -* Function Name : SetDADDR -* Description : Set the DADDR register value. -* Input : wRegValue: new register value. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetDADDR(u16 wRegValue) -{ - _SetDADDR(wRegValue); -} - -/******************************************************************************* -* Function Name : GetDADDR -* Description : Returns the DADDR register value. -* Input : None. -* Output : None. -* Return : DADDR register Value -*******************************************************************************/ -u16 GetDADDR(void) -{ - return(_GetDADDR()); -} - -/******************************************************************************* -* Function Name : SetBTABLE -* Description : Set the BTABLE. -* Input : wRegValue: New register value. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetBTABLE(u16 wRegValue) -{ - _SetBTABLE(wRegValue); -} - -/******************************************************************************* -* Function Name : GetBTABLE. -* Description : Returns the BTABLE register value. -* Input : None. -* Output : None. -* Return : BTABLE address. -*******************************************************************************/ -u16 GetBTABLE(void) -{ - return(_GetBTABLE()); -} - -/******************************************************************************* -* Function Name : SetENDPOINT -* Description : Setthe Endpoint register value. -* Input : bEpNum: Endpoint Number. -* wRegValue. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetENDPOINT(u8 bEpNum, u16 wRegValue) -{ - _SetENDPOINT(bEpNum, wRegValue); -} - -/******************************************************************************* -* Function Name : GetENDPOINT -* Description : Return the Endpoint register value. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint register value. -*******************************************************************************/ -u16 GetENDPOINT(u8 bEpNum) -{ - return(_GetENDPOINT(bEpNum)); -} - -/******************************************************************************* -* Function Name : SetEPType -* Description : sets the type in the endpoint register. -* Input : bEpNum: Endpoint Number. -* wType: type definition. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPType(u8 bEpNum, u16 wType) -{ - _SetEPType(bEpNum, wType); -} - -/******************************************************************************* -* Function Name : GetEPType -* Description : Returns the endpoint type. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint Type -*******************************************************************************/ -u16 GetEPType(u8 bEpNum) -{ - return(_GetEPType(bEpNum)); -} - -/******************************************************************************* -* Function Name : SetEPTxStatus -* Description : Set the status of Tx endpoint. -* Input : bEpNum: Endpoint Number. -* wState: new state. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPTxStatus(u8 bEpNum, u16 wState) -{ - _SetEPTxStatus(bEpNum, wState); -} - -/******************************************************************************* -* Function Name : SetEPRxStatus -* Description : Set the status of Rx endpoint. -* Input : bEpNum: Endpoint Number. -* wState: new state. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPRxStatus(u8 bEpNum, u16 wState) -{ - _SetEPRxStatus(bEpNum, wState); -} - -/******************************************************************************* -* Function Name : SetDouBleBuffEPStall -* Description : sets the status for Double Buffer Endpoint to STALL -* Input : bEpNum: Endpoint Number. -* bDir: Endpoint direction. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetDouBleBuffEPStall(u8 bEpNum, u8 bDir) -{ - u16 Endpoint_DTOG_Status; - Endpoint_DTOG_Status = GetENDPOINT(bEpNum); - if (bDir == EP_DBUF_OUT) - { /* OUT double buffered endpoint */ - _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPRX_DTOG1); - } - else if (bDir == EP_DBUF_IN) - { /* IN double buffered endpoint */ - _SetENDPOINT(bEpNum, Endpoint_DTOG_Status & ~EPTX_DTOG1); - } -} - -/******************************************************************************* -* Function Name : GetEPTxStatus -* Description : Returns the endpoint Tx status. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint TX Status -*******************************************************************************/ -u16 GetEPTxStatus(u8 bEpNum) -{ - return(_GetEPTxStatus(bEpNum)); -} - -/******************************************************************************* -* Function Name : GetEPRxStatus -* Description : Returns the endpoint Rx status. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint RX Status -*******************************************************************************/ -u16 GetEPRxStatus(u8 bEpNum) -{ - return(_GetEPRxStatus(bEpNum)); -} - -/******************************************************************************* -* Function Name : SetEPTxValid -* Description : Valid the endpoint Tx Status. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPTxValid(u8 bEpNum) -{ - _SetEPTxStatus(bEpNum, EP_TX_VALID); -} - -/******************************************************************************* -* Function Name : SetEPRxValid -* Description : Valid the endpoint Rx Status. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPRxValid(u8 bEpNum) -{ - _SetEPRxStatus(bEpNum, EP_RX_VALID); -} - -/******************************************************************************* -* Function Name : SetEP_KIND -* Description : Clear the EP_KIND bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEP_KIND(u8 bEpNum) -{ - _SetEP_KIND(bEpNum); -} - -/******************************************************************************* -* Function Name : ClearEP_KIND -* Description : set the EP_KIND bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ClearEP_KIND(u8 bEpNum) -{ - _ClearEP_KIND(bEpNum); -} -/******************************************************************************* -* Function Name : Clear_Status_Out -* Description : Clear the Status Out of the related Endpoint -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void Clear_Status_Out(u8 bEpNum) -{ - _ClearEP_KIND(bEpNum); -} -/******************************************************************************* -* Function Name : Set_Status_Out -* Description : Set the Status Out of the related Endpoint -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void Set_Status_Out(u8 bEpNum) -{ - _SetEP_KIND(bEpNum); -} -/******************************************************************************* -* Function Name : SetEPDoubleBuff -* Description : Enable the double buffer feature for the endpoint. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPDoubleBuff(u8 bEpNum) -{ - _SetEP_KIND(bEpNum); -} -/******************************************************************************* -* Function Name : ClearEPDoubleBuff -* Description : Disable the double buffer feature for the endpoint. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ClearEPDoubleBuff(u8 bEpNum) -{ - _ClearEP_KIND(bEpNum); -} -/******************************************************************************* -* Function Name : GetTxStallStatus -* Description : Returns the Stall status of the Tx endpoint. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Tx Stall status. -*******************************************************************************/ -u16 GetTxStallStatus(u8 bEpNum) -{ - return(_GetTxStallStatus(bEpNum)); -} -/******************************************************************************* -* Function Name : GetRxStallStatus -* Description : Returns the Stall status of the Rx endpoint. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Rx Stall status. -*******************************************************************************/ -u16 GetRxStallStatus(u8 bEpNum) -{ - return(_GetRxStallStatus(bEpNum)); -} -/******************************************************************************* -* Function Name : ClearEP_CTR_RX -* Description : Clear the CTR_RX bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ClearEP_CTR_RX(u8 bEpNum) -{ - _ClearEP_CTR_RX(bEpNum); -} -/******************************************************************************* -* Function Name : ClearEP_CTR_TX -* Description : Clear the CTR_TX bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ClearEP_CTR_TX(u8 bEpNum) -{ - _ClearEP_CTR_TX(bEpNum); -} -/******************************************************************************* -* Function Name : ToggleDTOG_RX -* Description : Toggle the DTOG_RX bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ToggleDTOG_RX(u8 bEpNum) -{ - _ToggleDTOG_RX(bEpNum); -} -/******************************************************************************* -* Function Name : ToggleDTOG_TX -* Description : Toggle the DTOG_TX bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ToggleDTOG_TX(u8 bEpNum) -{ - _ToggleDTOG_TX(bEpNum); -} -/******************************************************************************* -* Function Name : ClearDTOG_RX. -* Description : Clear the DTOG_RX bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ClearDTOG_RX(u8 bEpNum) -{ - _ClearDTOG_RX(bEpNum); -} -/******************************************************************************* -* Function Name : ClearDTOG_TX. -* Description : Clear the DTOG_TX bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -void ClearDTOG_TX(u8 bEpNum) -{ - _ClearDTOG_TX(bEpNum); -} -/******************************************************************************* -* Function Name : SetEPAddress -* Description : Set the endpoint address. -* Input : bEpNum: Endpoint Number. -* bAddr: New endpoint address. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPAddress(u8 bEpNum, u8 bAddr) -{ - _SetEPAddress(bEpNum, bAddr); -} -/******************************************************************************* -* Function Name : GetEPAddress -* Description : Get the endpoint address. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint address. -*******************************************************************************/ -u8 GetEPAddress(u8 bEpNum) -{ - return(_GetEPAddress(bEpNum)); -} -/******************************************************************************* -* Function Name : SetEPTxAddr -* Description : Set the endpoint Tx buffer address. -* Input : bEpNum: Endpoint Number. -* wAddr: new address. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPTxAddr(u8 bEpNum, u16 wAddr) -{ - _SetEPTxAddr(bEpNum, wAddr); -} -/******************************************************************************* -* Function Name : SetEPRxAddr -* Description : Set the endpoint Rx buffer address. -* Input : bEpNum: Endpoint Number. -* wAddr: new address. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPRxAddr(u8 bEpNum, u16 wAddr) -{ - _SetEPRxAddr(bEpNum, wAddr); -} -/******************************************************************************* -* Function Name : GetEPTxAddr -* Description : Returns the endpoint Tx buffer address. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Rx buffer address. -*******************************************************************************/ -u16 GetEPTxAddr(u8 bEpNum) -{ - return(_GetEPTxAddr(bEpNum)); -} -/******************************************************************************* -* Function Name : GetEPRxAddr. -* Description : Returns the endpoint Rx buffer address. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Rx buffer address. -*******************************************************************************/ -u16 GetEPRxAddr(u8 bEpNum) -{ - return(_GetEPRxAddr(bEpNum)); -} -/******************************************************************************* -* Function Name : SetEPTxCount. -* Description : Set the Tx count. -* Input : bEpNum: Endpoint Number. -* wCount: new count value. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPTxCount(u8 bEpNum, u16 wCount) -{ - _SetEPTxCount(bEpNum, wCount); -} -/******************************************************************************* -* Function Name : SetEPCountRxReg. -* Description : Set the Count Rx Register value. -* Input : *pdwReg: point to the register. -* wCount: the new register value. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPCountRxReg(u32 *pdwReg, u16 wCount) -{ - _SetEPCountRxReg(dwReg, wCount); -} -/******************************************************************************* -* Function Name : SetEPRxCount -* Description : Set the Rx count. -* Input : bEpNum: Endpoint Number. -* wCount: the new count value. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPRxCount(u8 bEpNum, u16 wCount) -{ - _SetEPRxCount(bEpNum, wCount); -} -/******************************************************************************* -* Function Name : GetEPTxCount -* Description : Get the Tx count. -* Input : bEpNum: Endpoint Number. -* Output : None -* Return : Tx count value. -*******************************************************************************/ -u16 GetEPTxCount(u8 bEpNum) -{ - return(_GetEPTxCount(bEpNum)); -} -/******************************************************************************* -* Function Name : GetEPRxCount -* Description : Get the Rx count. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Rx count value. -*******************************************************************************/ -u16 GetEPRxCount(u8 bEpNum) -{ - return(_GetEPRxCount(bEpNum)); -} -/******************************************************************************* -* Function Name : SetEPDblBuffAddr -* Description : Set the addresses of the buffer 0 and 1. -* Input : bEpNum: Endpoint Number. -* wBuf0Addr: new address of buffer 0. -* wBuf1Addr: new address of buffer 1. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPDblBuffAddr(u8 bEpNum, u16 wBuf0Addr, u16 wBuf1Addr) -{ - _SetEPDblBuffAddr(bEpNum, wBuf0Addr, wBuf1Addr); -} -/******************************************************************************* -* Function Name : SetEPDblBuf0Addr -* Description : Set the Buffer 1 address. -* Input : bEpNum: Endpoint Number -* wBuf0Addr: new address. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPDblBuf0Addr(u8 bEpNum, u16 wBuf0Addr) -{ - _SetEPDblBuf0Addr(bEpNum, wBuf0Addr); -} -/******************************************************************************* -* Function Name : SetEPDblBuf1Addr -* Description : Set the Buffer 1 address. -* Input : bEpNum: Endpoint Number -* wBuf1Addr: new address. -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPDblBuf1Addr(u8 bEpNum, u16 wBuf1Addr) -{ - _SetEPDblBuf1Addr(bEpNum, wBuf1Addr); -} -/******************************************************************************* -* Function Name : GetEPDblBuf0Addr -* Description : Returns the address of the Buffer 0. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -u16 GetEPDblBuf0Addr(u8 bEpNum) -{ - return(_GetEPDblBuf0Addr(bEpNum)); -} -/******************************************************************************* -* Function Name : GetEPDblBuf1Addr -* Description : Returns the address of the Buffer 1. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Address of the Buffer 1. -*******************************************************************************/ -u16 GetEPDblBuf1Addr(u8 bEpNum) -{ - return(_GetEPDblBuf1Addr(bEpNum)); -} -/******************************************************************************* -* Function Name : SetEPDblBuffCount -* Description : Set the number of bytes for a double Buffer -* endpoint. -* Input : bEpNum,bDir, wCount -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPDblBuffCount(u8 bEpNum, u8 bDir, u16 wCount) -{ - _SetEPDblBuffCount(bEpNum, bDir, wCount); -} -/******************************************************************************* -* Function Name : SetEPDblBuf0Count -* Description : Set the number of bytes in the buffer 0 of a double Buffer -* endpoint. -* Input : bEpNum, bDir, wCount -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPDblBuf0Count(u8 bEpNum, u8 bDir, u16 wCount) -{ - _SetEPDblBuf0Count(bEpNum, bDir, wCount); -} -/******************************************************************************* -* Function Name : SetEPDblBuf1Count -* Description : Set the number of bytes in the buffer 0 of a double Buffer -* endpoint. -* Input : bEpNum, bDir, wCount -* Output : None. -* Return : None. -*******************************************************************************/ -void SetEPDblBuf1Count(u8 bEpNum, u8 bDir, u16 wCount) -{ - _SetEPDblBuf1Count(bEpNum, bDir, wCount); -} -/******************************************************************************* -* Function Name : GetEPDblBuf0Count -* Description : Returns the number of byte received in the buffer 0 of a double -* Buffer endpoint. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint Buffer 0 count -*******************************************************************************/ -u16 GetEPDblBuf0Count(u8 bEpNum) -{ - return(_GetEPDblBuf0Count(bEpNum)); -} -/******************************************************************************* -* Function Name : GetEPDblBuf1Count -* Description : Returns the number of data received in the buffer 1 of a double -* Buffer endpoint. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint Buffer 1 count. -*******************************************************************************/ -u16 GetEPDblBuf1Count(u8 bEpNum) -{ - return(_GetEPDblBuf1Count(bEpNum)); -} -/******************************************************************************* -* Function Name : GetEPDblBufDir -* Description : gets direction of the double buffered endpoint -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : EP_DBUF_OUT, EP_DBUF_IN, -* EP_DBUF_ERR if the endpoint counter not yet programmed. -*******************************************************************************/ -EP_DBUF_DIR GetEPDblBufDir(u8 bEpNum) -{ - if ((u16)(*_pEPRxCount(bEpNum) & 0xFC00) != 0) - return(EP_DBUF_OUT); - else if (((u16)(*_pEPTxCount(bEpNum)) & 0x03FF) != 0) - return(EP_DBUF_IN); - else - return(EP_DBUF_ERR); -} -/******************************************************************************* -* Function Name : FreeUserBuffer -* Description : free buffer used from the application realizing it to the line - toggles bit SW_BUF in the double buffered endpoint register -* Input : bEpNum, bDir -* Output : None. -* Return : None. -*******************************************************************************/ -void FreeUserBuffer(u8 bEpNum, u8 bDir) -{ - if (bDir == EP_DBUF_OUT) - { /* OUT double buffered endpoint */ - _ToggleDTOG_TX(bEpNum); - } - else if (bDir == EP_DBUF_IN) - { /* IN double buffered endpoint */ - _ToggleDTOG_RX(bEpNum); - } -} - -/******************************************************************************* -* Function Name : ToWord -* Description : merge two byte in a word. -* Input : bh: byte high, bl: bytes low. -* Output : None. -* Return : resulted word. -*******************************************************************************/ -u16 ToWord(u8 bh, u8 bl) -{ - u16 wRet; - wRet = (u16)bl | ((u16)bh << 8); - return(wRet); -} -/******************************************************************************* -* Function Name : ByteSwap -* Description : Swap two byte in a word. -* Input : wSwW: word to Swap. -* Output : None. -* Return : resulted word. -*******************************************************************************/ -u16 ByteSwap(u16 wSwW) -{ - u8 bTemp; - u16 wRet; - bTemp = (u8)(wSwW & 0xff); - wRet = (wSwW >> 8) | ((u16)bTemp << 8); - return(wRet); -} - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.h b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.h deleted file mode 100644 index b63cc5fd1..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_regs.h +++ /dev/null @@ -1,627 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_regs.h -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Interface prototype functions to USB cell registers -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_REGS_H -#define __USB_REGS_H - -/* Includes ------------------------------------------------------------------*/ -/* Exported types ------------------------------------------------------------*/ -#if defined(__cplusplus) -extern "C" { -#endif - -typedef enum _EP_DBUF_DIR -{ - /* double buffered endpoint direction */ - EP_DBUF_ERR, - EP_DBUF_OUT, - EP_DBUF_IN -}EP_DBUF_DIR; - -/* endpoint buffer number */ -enum EP_BUF_NUM -{ - EP_NOBUF, - EP_BUF0, - EP_BUF1 -}; - -/* Exported constants --------------------------------------------------------*/ -#define RegBase (0x40005C00L) /* USB_IP Peripheral Registers base address */ -#define PMAAddr (0x40006000L) /* USB_IP Packet Memory Area base address */ - -/******************************************************************************/ -/* General registers */ -/******************************************************************************/ - -/* Control register */ -#define CNTR ((volatile unsigned *)(RegBase + 0x40)) -/* Interrupt status register */ -#define ISTR ((volatile unsigned *)(RegBase + 0x44)) -/* Frame number register */ -#define FNR ((volatile unsigned *)(RegBase + 0x48)) -/* Device address register */ -#define DADDR ((volatile unsigned *)(RegBase + 0x4C)) -/* Buffer Table address register */ -#define BTABLE ((volatile unsigned *)(RegBase + 0x50)) -/******************************************************************************/ -/* Endpoint registers */ -/******************************************************************************/ -#define EP0REG ((volatile unsigned *)(RegBase)) /* endpoint 0 register address */ - -/* endpoints enumeration */ -#define ENDP0 ((u8)0) -#define ENDP1 ((u8)1) -#define ENDP2 ((u8)2) -#define ENDP3 ((u8)3) -#define ENDP4 ((u8)4) -#define ENDP5 ((u8)5) -#define ENDP6 ((u8)6) -#define ENDP7 ((u8)7) -/******************************************************************************/ -/* ISTR interrupt events */ -/******************************************************************************/ -#define ISTR_CTR (0x8000) /* Correct TRansfer (clear-only bit) */ -#define ISTR_DOVR (0x4000) /* DMA OVeR/underrun (clear-only bit) */ -#define ISTR_ERR (0x2000) /* ERRor (clear-only bit) */ -#define ISTR_WKUP (0x1000) /* WaKe UP (clear-only bit) */ -#define ISTR_SUSP (0x0800) /* SUSPend (clear-only bit) */ -#define ISTR_RESET (0x0400) /* RESET (clear-only bit) */ -#define ISTR_SOF (0x0200) /* Start Of Frame (clear-only bit) */ -#define ISTR_ESOF (0x0100) /* Expected Start Of Frame (clear-only bit) */ - - -#define ISTR_DIR (0x0010) /* DIRection of transaction (read-only bit) */ -#define ISTR_EP_ID (0x000F) /* EndPoint IDentifier (read-only bit) */ - -#define CLR_CTR (~ISTR_CTR) /* clear Correct TRansfer bit */ -#define CLR_DOVR (~ISTR_DOVR) /* clear DMA OVeR/underrun bit*/ -#define CLR_ERR (~ISTR_ERR) /* clear ERRor bit */ -#define CLR_WKUP (~ISTR_WKUP) /* clear WaKe UP bit */ -#define CLR_SUSP (~ISTR_SUSP) /* clear SUSPend bit */ -#define CLR_RESET (~ISTR_RESET) /* clear RESET bit */ -#define CLR_SOF (~ISTR_SOF) /* clear Start Of Frame bit */ -#define CLR_ESOF (~ISTR_ESOF) /* clear Expected Start Of Frame bit */ - -/******************************************************************************/ -/* CNTR control register bits definitions */ -/******************************************************************************/ -#define CNTR_CTRM (0x8000) /* Correct TRansfer Mask */ -#define CNTR_DOVRM (0x4000) /* DMA OVeR/underrun Mask */ -#define CNTR_ERRM (0x2000) /* ERRor Mask */ -#define CNTR_WKUPM (0x1000) /* WaKe UP Mask */ -#define CNTR_SUSPM (0x0800) /* SUSPend Mask */ -#define CNTR_RESETM (0x0400) /* RESET Mask */ -#define CNTR_SOFM (0x0200) /* Start Of Frame Mask */ -#define CNTR_ESOFM (0x0100) /* Expected Start Of Frame Mask */ - - -#define CNTR_RESUME (0x0010) /* RESUME request */ -#define CNTR_FSUSP (0x0008) /* Force SUSPend */ -#define CNTR_LPMODE (0x0004) /* Low-power MODE */ -#define CNTR_PDWN (0x0002) /* Power DoWN */ -#define CNTR_FRES (0x0001) /* Force USB RESet */ - -/******************************************************************************/ -/* FNR Frame Number Register bit definitions */ -/******************************************************************************/ -#define FNR_RXDP (0x8000) /* status of D+ data line */ -#define FNR_RXDM (0x4000) /* status of D- data line */ -#define FNR_LCK (0x2000) /* LoCKed */ -#define FNR_LSOF (0x1800) /* Lost SOF */ -#define FNR_FN (0x07FF) /* Frame Number */ -/******************************************************************************/ -/* DADDR Device ADDRess bit definitions */ -/******************************************************************************/ -#define DADDR_EF (0x80) -#define DADDR_ADD (0x7F) -/******************************************************************************/ -/* Endpoint register */ -/******************************************************************************/ -/* bit positions */ -#define EP_CTR_RX (0x8000) /* EndPoint Correct TRansfer RX */ -#define EP_DTOG_RX (0x4000) /* EndPoint Data TOGGLE RX */ -#define EPRX_STAT (0x3000) /* EndPoint RX STATus bit field */ -#define EP_SETUP (0x0800) /* EndPoint SETUP */ -#define EP_T_FIELD (0x0600) /* EndPoint TYPE */ -#define EP_KIND (0x0100) /* EndPoint KIND */ -#define EP_CTR_TX (0x0080) /* EndPoint Correct TRansfer TX */ -#define EP_DTOG_TX (0x0040) /* EndPoint Data TOGGLE TX */ -#define EPTX_STAT (0x0030) /* EndPoint TX STATus bit field */ -#define EPADDR_FIELD (0x000F) /* EndPoint ADDRess FIELD */ - -/* EndPoint REGister MASK (no toggle fields) */ -#define EPREG_MASK (EP_CTR_RX|EP_SETUP|EP_T_FIELD|EP_KIND|EP_CTR_TX|EPADDR_FIELD) - -/* EP_TYPE[1:0] EndPoint TYPE */ -#define EP_TYPE_MASK (0x0600) /* EndPoint TYPE Mask */ -#define EP_BULK (0x0000) /* EndPoint BULK */ -#define EP_CONTROL (0x0200) /* EndPoint CONTROL */ -#define EP_ISOCHRONOUS (0x0400) /* EndPoint ISOCHRONOUS */ -#define EP_INTERRUPT (0x0600) /* EndPoint INTERRUPT */ -#define EP_T_MASK (~EP_T_FIELD & EPREG_MASK) - - -/* EP_KIND EndPoint KIND */ -#define EPKIND_MASK (~EP_KIND & EPREG_MASK) - -/* STAT_TX[1:0] STATus for TX transfer */ -#define EP_TX_DIS (0x0000) /* EndPoint TX DISabled */ -#define EP_TX_STALL (0x0010) /* EndPoint TX STALLed */ -#define EP_TX_NAK (0x0020) /* EndPoint TX NAKed */ -#define EP_TX_VALID (0x0030) /* EndPoint TX VALID */ -#define EPTX_DTOG1 (0x0010) /* EndPoint TX Data TOGgle bit1 */ -#define EPTX_DTOG2 (0x0020) /* EndPoint TX Data TOGgle bit2 */ -#define EPTX_DTOGMASK (EPTX_STAT|EPREG_MASK) - -/* STAT_RX[1:0] STATus for RX transfer */ -#define EP_RX_DIS (0x0000) /* EndPoint RX DISabled */ -#define EP_RX_STALL (0x1000) /* EndPoint RX STALLed */ -#define EP_RX_NAK (0x2000) /* EndPoint RX NAKed */ -#define EP_RX_VALID (0x3000) /* EndPoint RX VALID */ -#define EPRX_DTOG1 (0x1000) /* EndPoint RX Data TOGgle bit1 */ -#define EPRX_DTOG2 (0x2000) /* EndPoint RX Data TOGgle bit1 */ -#define EPRX_DTOGMASK (EPRX_STAT|EPREG_MASK) -/* Exported macro ------------------------------------------------------------*/ -/* SetCNTR */ -#define _SetCNTR(wRegValue) (*CNTR = (u16)wRegValue) - -/* SetISTR */ -#define _SetISTR(wRegValue) (*ISTR = (u16)wRegValue) - -/* SetDADDR */ -#define _SetDADDR(wRegValue) (*DADDR = (u16)wRegValue) - -/* SetBTABLE */ -#define _SetBTABLE(wRegValue)(*BTABLE = (u16)(wRegValue & 0xFFF8)) - -/* GetCNTR */ -#define _GetCNTR() ((u16) *CNTR) - -/* GetISTR */ -#define _GetISTR() ((u16) *ISTR) - -/* GetFNR */ -#define _GetFNR() ((u16) *FNR) - -/* GetDADDR */ -#define _GetDADDR() ((u16) *DADDR) - -/* GetBTABLE */ -#define _GetBTABLE() ((u16) *BTABLE) - -/* SetENDPOINT */ -#define _SetENDPOINT(bEpNum,wRegValue) (*(EP0REG + bEpNum)= \ - (u16)wRegValue) - -/* GetENDPOINT */ -#define _GetENDPOINT(bEpNum) ((u16)(*(EP0REG + bEpNum))) - -/******************************************************************************* -* Macro Name : SetEPType -* Description : sets the type in the endpoint register(bits EP_TYPE[1:0]) -* Input : bEpNum: Endpoint Number. -* wType -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPType(bEpNum,wType) (_SetENDPOINT(bEpNum,\ - ((_GetENDPOINT(bEpNum) & EP_T_MASK) | wType))) - -/******************************************************************************* -* Macro Name : GetEPType -* Description : gets the type in the endpoint register(bits EP_TYPE[1:0]) -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : Endpoint Type -*******************************************************************************/ -#define _GetEPType(bEpNum) (_GetENDPOINT(bEpNum) & EP_T_FIELD) - -/******************************************************************************* -* Macro Name : SetEPTxStatus -* Description : sets the status for tx transfer (bits STAT_TX[1:0]). -* Input : bEpNum: Endpoint Number. -* wState: new state -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPTxStatus(bEpNum,wState) {\ - register u16 _wRegVal; \ - _wRegVal = _GetENDPOINT(bEpNum) & EPTX_DTOGMASK;\ - /* toggle first bit ? */ \ - if((EPTX_DTOG1 & wState)!= 0) \ - _wRegVal ^= EPTX_DTOG1; \ - /* toggle second bit ? */ \ - if((EPTX_DTOG2 & wState)!= 0) \ - _wRegVal ^= EPTX_DTOG2; \ - _SetENDPOINT(bEpNum, _wRegVal); \ - } /* _SetEPTxStatus */ - -/******************************************************************************* -* Macro Name : SetEPRxStatus -* Description : sets the status for rx transfer (bits STAT_TX[1:0]) -* Input : bEpNum: Endpoint Number. -* wState: new state. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPRxStatus(bEpNum,wState) {\ - register u16 _wRegVal; \ - \ - _wRegVal = _GetENDPOINT(bEpNum) & EPRX_DTOGMASK;\ - /* toggle first bit ? */ \ - if((EPRX_DTOG1 & wState)!= 0) \ - _wRegVal ^= EPRX_DTOG1; \ - /* toggle second bit ? */ \ - if((EPRX_DTOG2 & wState)!= 0) \ - _wRegVal ^= EPRX_DTOG2; \ - _SetENDPOINT(bEpNum, _wRegVal); \ - } /* _SetEPRxStatus */ -/******************************************************************************* -* Macro Name : GetEPTxStatus / GetEPRxStatus -* Description : gets the status for tx/rx transfer (bits STAT_TX[1:0] -* /STAT_RX[1:0]) -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : status . -*******************************************************************************/ -#define _GetEPTxStatus(bEpNum) ((u16)_GetENDPOINT(bEpNum) & EPTX_STAT) - -#define _GetEPRxStatus(bEpNum) ((u16)_GetENDPOINT(bEpNum) & EPRX_STAT) - -/******************************************************************************* -* Macro Name : SetEPTxValid / SetEPRxValid -* Description : sets directly the VALID tx/rx-status into the enpoint register -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPTxValid(bEpNum) (_SetEPTxStatus(bEpNum, EP_TX_VALID)) - -#define _SetEPRxValid(bEpNum) (_SetEPRxStatus(bEpNum, EP_RX_VALID)) - -/******************************************************************************* -* Macro Name : GetTxStallStatus / GetRxStallStatus. -* Description : checks stall condition in an endpoint. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : TRUE = endpoint in stall condition. -*******************************************************************************/ -#define _GetTxStallStatus(bEpNum) (_GetEPTxStatus(bEpNum) \ - == EP_TX_STALL) -#define _GetRxStallStatus(bEpNum) (_GetEPRxStatus(bEpNum) \ - == EP_RX_STALL) - -/******************************************************************************* -* Macro Name : SetEP_KIND / ClearEP_KIND. -* Description : set & clear EP_KIND bit. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEP_KIND(bEpNum) (_SetENDPOINT(bEpNum, \ - (_GetENDPOINT(bEpNum) | EP_KIND) & EPREG_MASK)) -#define _ClearEP_KIND(bEpNum) (_SetENDPOINT(bEpNum, \ - (_GetENDPOINT(bEpNum) & EPKIND_MASK))) - -/******************************************************************************* -* Macro Name : Set_Status_Out / Clear_Status_Out. -* Description : Sets/clears directly STATUS_OUT bit in the endpoint register. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _Set_Status_Out(bEpNum) _SetEP_KIND(bEpNum) -#define _Clear_Status_Out(bEpNum) _ClearEP_KIND(bEpNum) - -/******************************************************************************* -* Macro Name : SetEPDoubleBuff / ClearEPDoubleBuff. -* Description : Sets/clears directly EP_KIND bit in the endpoint register. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPDoubleBuff(bEpNum) _SetEP_KIND(bEpNum) -#define _ClearEPDoubleBuff(bEpNum) _ClearEP_KIND(bEpNum) - -/******************************************************************************* -* Macro Name : ClearEP_CTR_RX / ClearEP_CTR_TX. -* Description : Clears bit CTR_RX / CTR_TX in the endpoint register. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _ClearEP_CTR_RX(bEpNum) (_SetENDPOINT(bEpNum,\ - _GetENDPOINT(bEpNum) & 0x7FFF & EPREG_MASK)) -#define _ClearEP_CTR_TX(bEpNum) (_SetENDPOINT(bEpNum,\ - _GetENDPOINT(bEpNum) & 0xFF7F & EPREG_MASK)) - -/******************************************************************************* -* Macro Name : ToggleDTOG_RX / ToggleDTOG_TX . -* Description : Toggles DTOG_RX / DTOG_TX bit in the endpoint register. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _ToggleDTOG_RX(bEpNum) (_SetENDPOINT(bEpNum, \ - EP_DTOG_RX | (_GetENDPOINT(bEpNum) & EPREG_MASK))) -#define _ToggleDTOG_TX(bEpNum) (_SetENDPOINT(bEpNum, \ - EP_DTOG_TX | (_GetENDPOINT(bEpNum) & EPREG_MASK))) - -/******************************************************************************* -* Macro Name : ClearDTOG_RX / ClearDTOG_TX. -* Description : Clears DTOG_RX / DTOG_TX bit in the endpoint register. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _ClearDTOG_RX(bEpNum) if((_GetENDPOINT(bEpNum) & EP_DTOG_RX) != 0)\ - _ToggleDTOG_RX(bEpNum) -#define _ClearDTOG_TX(bEpNum) if((_GetENDPOINT(bEpNum) & EP_DTOG_TX) != 0)\ - _ToggleDTOG_TX(bEpNum) -/******************************************************************************* -* Macro Name : SetEPAddress. -* Description : Sets address in an endpoint register. -* Input : bEpNum: Endpoint Number. -* bAddr: Address. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPAddress(bEpNum,bAddr) _SetENDPOINT(bEpNum,\ - (_GetENDPOINT(bEpNum) & EPREG_MASK) | bAddr) - -/******************************************************************************* -* Macro Name : GetEPAddress. -* Description : Gets address in an endpoint register. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _GetEPAddress(bEpNum) ((u8)(_GetENDPOINT(bEpNum) & EPADDR_FIELD)) - -#define _pEPTxAddr(bEpNum) ((u32 *)((_GetBTABLE()+bEpNum*8 )*2 + PMAAddr)) -#define _pEPTxCount(bEpNum) ((u32 *)((_GetBTABLE()+bEpNum*8+2)*2 + PMAAddr)) -#define _pEPRxAddr(bEpNum) ((u32 *)((_GetBTABLE()+bEpNum*8+4)*2 + PMAAddr)) -#define _pEPRxCount(bEpNum) ((u32 *)((_GetBTABLE()+bEpNum*8+6)*2 + PMAAddr)) - -/******************************************************************************* -* Macro Name : SetEPTxAddr / SetEPRxAddr. -* Description : sets address of the tx/rx buffer. -* Input : bEpNum: Endpoint Number. -* wAddr: address to be set (must be word aligned). -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPTxAddr(bEpNum,wAddr) (*_pEPTxAddr(bEpNum) = ((wAddr >> 1) << 1)) -#define _SetEPRxAddr(bEpNum,wAddr) (*_pEPRxAddr(bEpNum) = ((wAddr >> 1) << 1)) - -/******************************************************************************* -* Macro Name : GetEPTxAddr / GetEPRxAddr. -* Description : Gets address of the tx/rx buffer. -* Input : bEpNum: Endpoint Number. -* Output : None. -* Return : address of the buffer. -*******************************************************************************/ -#define _GetEPTxAddr(bEpNum) ((u16)*_pEPTxAddr(bEpNum)) -#define _GetEPRxAddr(bEpNum) ((u16)*_pEPRxAddr(bEpNum)) - -/******************************************************************************* -* Macro Name : SetEPCountRxReg. -* Description : Sets counter of rx buffer with no. of blocks. -* Input : pdwReg: pointer to counter. -* wCount: Counter. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _BlocksOf32(dwReg,wCount,wNBlocks) {\ - wNBlocks = wCount >> 5;\ - if((wCount & 0x1f) == 0)\ - wNBlocks--;\ - *pdwReg = (u32)((wNBlocks << 10) | 0x8000);\ - }/* _BlocksOf32 */ - -#define _BlocksOf2(dwReg,wCount,wNBlocks) {\ - wNBlocks = wCount >> 1;\ - if((wCount & 0x1) != 0)\ - wNBlocks++;\ - *pdwReg = (u32)(wNBlocks << 10);\ - }/* _BlocksOf2 */ - -#define _SetEPCountRxReg(dwReg,wCount) {\ - u16 wNBlocks;\ - if(wCount > 62){_BlocksOf32(dwReg,wCount,wNBlocks);}\ - else {_BlocksOf2(dwReg,wCount,wNBlocks);}\ - }/* _SetEPCountRxReg */ - - - -#define _SetEPRxDblBuf0Count(bEpNum,wCount) {\ - u32 *pdwReg = _pEPTxCount(bEpNum); \ - _SetEPCountRxReg(pdwReg, wCount);\ - } -/******************************************************************************* -* Macro Name : SetEPTxCount / SetEPRxCount. -* Description : sets counter for the tx/rx buffer. -* Input : bEpNum: endpoint number. -* wCount: Counter value. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPTxCount(bEpNum,wCount) (*_pEPTxCount(bEpNum) = wCount) -#define _SetEPRxCount(bEpNum,wCount) {\ - u32 *pdwReg = _pEPRxCount(bEpNum); \ - _SetEPCountRxReg(pdwReg, wCount);\ - } -/******************************************************************************* -* Macro Name : GetEPTxCount / GetEPRxCount. -* Description : gets counter of the tx buffer. -* Input : bEpNum: endpoint number. -* Output : None. -* Return : Counter value. -*******************************************************************************/ -#define _GetEPTxCount(bEpNum)((u16)(*_pEPTxCount(bEpNum)) & 0x3ff) -#define _GetEPRxCount(bEpNum)((u16)(*_pEPRxCount(bEpNum)) & 0x3ff) - -/******************************************************************************* -* Macro Name : SetEPDblBuf0Addr / SetEPDblBuf1Addr. -* Description : Sets buffer 0/1 address in a double buffer endpoint. -* Input : bEpNum: endpoint number. -* : wBuf0Addr: buffer 0 address. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPDblBuf0Addr(bEpNum,wBuf0Addr) {_SetEPTxAddr(bEpNum, wBuf0Addr);} -#define _SetEPDblBuf1Addr(bEpNum,wBuf1Addr) {_SetEPRxAddr(bEpNum, wBuf1Addr);} - -/******************************************************************************* -* Macro Name : SetEPDblBuffAddr. -* Description : Sets addresses in a double buffer endpoint. -* Input : bEpNum: endpoint number. -* : wBuf0Addr: buffer 0 address. -* : wBuf1Addr = buffer 1 address. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPDblBuffAddr(bEpNum,wBuf0Addr,wBuf1Addr) { \ - _SetEPDblBuf0Addr(bEpNum, wBuf0Addr);\ - _SetEPDblBuf1Addr(bEpNum, wBuf1Addr);\ - } /* _SetEPDblBuffAddr */ - -/******************************************************************************* -* Macro Name : GetEPDblBuf0Addr / GetEPDblBuf1Addr. -* Description : Gets buffer 0/1 address of a double buffer endpoint. -* Input : bEpNum: endpoint number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _GetEPDblBuf0Addr(bEpNum) (_GetEPTxAddr(bEpNum)) -#define _GetEPDblBuf1Addr(bEpNum) (_GetEPRxAddr(bEpNum)) - -/******************************************************************************* -* Macro Name : SetEPDblBuffCount / SetEPDblBuf0Count / SetEPDblBuf1Count. -* Description : Gets buffer 0/1 address of a double buffer endpoint. -* Input : bEpNum: endpoint number. -* : bDir: endpoint dir EP_DBUF_OUT = OUT -* EP_DBUF_IN = IN -* : wCount: Counter value -* Output : None. -* Return : None. -*******************************************************************************/ -#define _SetEPDblBuf0Count(bEpNum, bDir, wCount) { \ - if(bDir == EP_DBUF_OUT)\ - /* OUT endpoint */ \ - {_SetEPRxDblBuf0Count(bEpNum,wCount);} \ - else if(bDir == EP_DBUF_IN)\ - /* IN endpoint */ \ - *_pEPTxCount(bEpNum) = (u32)wCount; \ - } /* SetEPDblBuf0Count*/ - -#define _SetEPDblBuf1Count(bEpNum, bDir, wCount) { \ - if(bDir == EP_DBUF_OUT)\ - /* OUT endpoint */ \ - {_SetEPRxCount(bEpNum,wCount);}\ - else if(bDir == EP_DBUF_IN)\ - /* IN endpoint */\ - *_pEPRxCount(bEpNum) = (u32)wCount; \ - } /* SetEPDblBuf1Count */ - -#define _SetEPDblBuffCount(bEpNum, bDir, wCount) {\ - _SetEPDblBuf0Count(bEpNum, bDir, wCount); \ - _SetEPDblBuf1Count(bEpNum, bDir, wCount); \ - } /* _SetEPDblBuffCount */ - -/******************************************************************************* -* Macro Name : GetEPDblBuf0Count / GetEPDblBuf1Count. -* Description : Gets buffer 0/1 rx/tx counter for double buffering. -* Input : bEpNum: endpoint number. -* Output : None. -* Return : None. -*******************************************************************************/ -#define _GetEPDblBuf0Count(bEpNum) (_GetEPTxCount(bEpNum)) -#define _GetEPDblBuf1Count(bEpNum) (_GetEPRxCount(bEpNum)) - - -/* External variables --------------------------------------------------------*/ -extern volatile u16 wIstr; /* ISTR register last read value */ - -/* Exported functions ------------------------------------------------------- */ -void SetCNTR(u16 /*wRegValue*/); -void SetISTR(u16 /*wRegValue*/); -void SetDADDR(u16 /*wRegValue*/); -void SetBTABLE(u16 /*wRegValue*/); -u16 GetCNTR(void); -u16 GetISTR(void); -u16 GetFNR(void); -u16 GetDADDR(void); -u16 GetBTABLE(void); -void SetENDPOINT(u8 /*bEpNum*/, u16 /*wRegValue*/); -u16 GetENDPOINT(u8 /*bEpNum*/); -void SetEPType(u8 /*bEpNum*/, u16 /*wType*/); -u16 GetEPType(u8 /*bEpNum*/); -void SetEPTxStatus(u8 /*bEpNum*/, u16 /*wState*/); -void SetEPRxStatus(u8 /*bEpNum*/, u16 /*wState*/); -void SetDouBleBuffEPStall(u8 /*bEpNum*/, u8 bDir); -u16 GetEPTxStatus(u8 /*bEpNum*/); -u16 GetEPRxStatus(u8 /*bEpNum*/); -void SetEPTxValid(u8 /*bEpNum*/); -void SetEPRxValid(u8 /*bEpNum*/); -u16 GetTxStallStatus(u8 /*bEpNum*/); -u16 GetRxStallStatus(u8 /*bEpNum*/); -void SetEP_KIND(u8 /*bEpNum*/); -void ClearEP_KIND(u8 /*bEpNum*/); -void Set_Status_Out(u8 /*bEpNum*/); -void Clear_Status_Out(u8 /*bEpNum*/); -void SetEPDoubleBuff(u8 /*bEpNum*/); -void ClearEPDoubleBuff(u8 /*bEpNum*/); -void ClearEP_CTR_RX(u8 /*bEpNum*/); -void ClearEP_CTR_TX(u8 /*bEpNum*/); -void ToggleDTOG_RX(u8 /*bEpNum*/); -void ToggleDTOG_TX(u8 /*bEpNum*/); -void ClearDTOG_RX(u8 /*bEpNum*/); -void ClearDTOG_TX(u8 /*bEpNum*/); -void SetEPAddress(u8 /*bEpNum*/, u8 /*bAddr*/); -u8 GetEPAddress(u8 /*bEpNum*/); -void SetEPTxAddr(u8 /*bEpNum*/, u16 /*wAddr*/); -void SetEPRxAddr(u8 /*bEpNum*/, u16 /*wAddr*/); -u16 GetEPTxAddr(u8 /*bEpNum*/); -u16 GetEPRxAddr(u8 /*bEpNum*/); -void SetEPCountRxReg(u32 * /*pdwReg*/, u16 /*wCount*/); -void SetEPTxCount(u8 /*bEpNum*/, u16 /*wCount*/); -void SetEPRxCount(u8 /*bEpNum*/, u16 /*wCount*/); -u16 GetEPTxCount(u8 /*bEpNum*/); -u16 GetEPRxCount(u8 /*bEpNum*/); -void SetEPDblBuf0Addr(u8 /*bEpNum*/, u16 /*wBuf0Addr*/); -void SetEPDblBuf1Addr(u8 /*bEpNum*/, u16 /*wBuf1Addr*/); -void SetEPDblBuffAddr(u8 /*bEpNum*/, u16 /*wBuf0Addr*/, u16 /*wBuf1Addr*/); -u16 GetEPDblBuf0Addr(u8 /*bEpNum*/); -u16 GetEPDblBuf1Addr(u8 /*bEpNum*/); -void SetEPDblBuffCount(u8 /*bEpNum*/, u8 /*bDir*/, u16 /*wCount*/); -void SetEPDblBuf0Count(u8 /*bEpNum*/, u8 /*bDir*/, u16 /*wCount*/); -void SetEPDblBuf1Count(u8 /*bEpNum*/, u8 /*bDir*/, u16 /*wCount*/); -u16 GetEPDblBuf0Count(u8 /*bEpNum*/); -u16 GetEPDblBuf1Count(u8 /*bEpNum*/); -EP_DBUF_DIR GetEPDblBufDir(u8 /*bEpNum*/); -void FreeUserBuffer(u8 bEpNum/*bEpNum*/, u8 bDir); -u16 ToWord(u8, u8); -u16 ByteSwap(u16); - -#if defined(__cplusplus) -} -#endif - -#endif /* __USB_REGS_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_type.h b/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_type.h deleted file mode 100644 index 34b3bf5b7..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib/usb_type.h +++ /dev/null @@ -1,77 +0,0 @@ -/******************** (C) COPYRIGHT 2008 STMicroelectronics ******************** -* File Name : usb_type.h -* Author : MCD Application Team -* Version : V2.2.1 -* Date : 09/22/2008 -* Description : Type definitions used by the USB Library -******************************************************************************** -* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS -* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. -* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, -* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE -* CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING -* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. -*******************************************************************************/ - -/* Define to prevent recursive inclusion -------------------------------------*/ -#ifndef __USB_TYPE_H -#define __USB_TYPE_H - -#if defined(__cplusplus) -extern "C" { -#endif - -/* Exported types ------------------------------------------------------------*/ -/* Exported constants --------------------------------------------------------*/ -#ifndef NULL -#define NULL ((void *)0) -#endif - -typedef signed long s32; -typedef signed short s16; -typedef signed char s8; - -typedef volatile signed long vs32; -typedef volatile signed short vs16; -typedef volatile signed char vs8; - -typedef unsigned long u32; -typedef unsigned short u16; -typedef unsigned char u8; - -typedef unsigned long const uc32; /* Read Only */ -typedef unsigned short const uc16; /* Read Only */ -typedef unsigned char const uc8; /* Read Only */ - -typedef volatile unsigned long vu32; -typedef volatile unsigned short vu16; -typedef volatile unsigned char vu8; - -typedef volatile unsigned long const vuc32; /* Read Only */ -typedef volatile unsigned short const vuc16; /* Read Only */ -typedef volatile unsigned char const vuc8; /* Read Only */ - - -typedef enum -{ - FALSE = 0, TRUE = !FALSE -} -USB_Bool; - -typedef enum { RESET = 0, SET = !RESET } FlagStatus, ITStatus; - -typedef enum { DISABLE = 0, ENABLE = !DISABLE} FunctionalState; - -typedef enum { ERROR = 0, SUCCESS = !ERROR} ErrorStatus; - -/* Exported macro ------------------------------------------------------------*/ -/* Exported functions ------------------------------------------------------- */ -/* External variables --------------------------------------------------------*/ - -#if defined(__cplusplus) -} -#endif - -#endif /* __USB_TYPE_H */ - -/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/ diff --git a/STM32F3/cores/maple/libmaple/usb/usb_lib_globals.h b/STM32F3/cores/maple/libmaple/usb/usb_lib_globals.h deleted file mode 100644 index 1cd27540c..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_lib_globals.h +++ /dev/null @@ -1,55 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#ifndef _USB_LIB_GLOBALS_H_ -#define _USB_LIB_GLOBALS_H_ - -/* usb_lib headers */ -#include "usb_type.h" -#include "usb_core.h" - -#ifdef __cplusplus -extern "C" { -#endif - -extern USER_STANDARD_REQUESTS User_Standard_Requests; -extern USER_STANDARD_REQUESTS *pUser_Standard_Requests; - -extern DEVICE_PROP Device_Property; -extern DEVICE_PROP *pProperty; - -extern DEVICE_INFO Device_Info; -extern DEVICE_INFO *pInformation; - -extern DEVICE Device_Table; -extern u16 SaveRState; -extern u16 SaveTState; - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/STM32F3/cores/maple/libmaple/usb/usb_reg_map.c b/STM32F3/cores/maple/libmaple/usb/usb_reg_map.c deleted file mode 100644 index ea60cb3c2..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_reg_map.c +++ /dev/null @@ -1,88 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#include "usb_reg_map.h" - -/* TODO these could use some improvement; they're fairly - * straightforward ports of the analogous ST code. The PMA blit - * routines in particular are obvious targets for performance - * measurement and tuning. */ - -void usb_copy_to_pma(const uint8 *buf, uint16 len, uint16 pma_offset) { - uint16 *dst = (uint16*)usb_pma_ptr(pma_offset); - uint16 n = len >> 1; - uint16 i; - for (i = 0; i < n; i++) { - *dst = (uint16)(*buf) | *(buf + 1) << 8; - buf += 2; - dst += 2; - } - if (len & 1) { - *dst = *buf; - } -} - -void usb_copy_from_pma(uint8 *buf, uint16 len, uint16 pma_offset) { - uint32 *src = (uint32*)usb_pma_ptr(pma_offset); - uint16 *dst = (uint16*)buf; - uint16 n = len >> 1; - uint16 i; - for (i = 0; i < n; i++) { - *dst++ = *src++; - } - if (len & 1) { - *dst = *src & 0xFF; - } -} - -static void usb_set_ep_rx_count_common(uint32 *rxc, uint16 count) { - uint16 nblocks; - if (count > 62) { - /* use 32-byte memory block size */ - nblocks = count >> 5; - if ((count & 0x1F) == 0) { - nblocks--; - } - *rxc = (nblocks << 10) | 0x8000; - } else { - /* use 2-byte memory block size */ - nblocks = count >> 1; - if ((count & 0x1) != 0) { - nblocks++; - } - *rxc = nblocks << 10; - } -} - -void usb_set_ep_rx_buf0_count(uint8 ep, uint16 count) { - uint32 *rxc = usb_ep_rx_buf0_count_ptr(ep); - usb_set_ep_rx_count_common(rxc, count); -} - -void usb_set_ep_rx_count(uint8 ep, uint16 count) { - uint32 *rxc = usb_ep_rx_count_ptr(ep); - usb_set_ep_rx_count_common(rxc, count); -} diff --git a/STM32F3/cores/maple/libmaple/usb/usb_reg_map.h b/STM32F3/cores/maple/libmaple/usb/usb_reg_map.h deleted file mode 100644 index 2cd5e3531..000000000 --- a/STM32F3/cores/maple/libmaple/usb/usb_reg_map.h +++ /dev/null @@ -1,617 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#include -#include - -#ifndef _USB_REG_MAP_H_ -#define _USB_REG_MAP_H_ - -/* TODO: - * - Pick one of "endp", "ep" "endpt" - */ - -/* - * Register map and base pointer - */ - -#define USB_NR_EP_REGS 8 - -/** USB register map type */ -typedef struct usb_reg_map { - __IO uint32 EP[USB_NR_EP_REGS]; /**< Endpoint registers */ - const uint32 RESERVED[8]; /**< Reserved */ - __IO uint32 CNTR; /**< Control register */ - __IO uint32 ISTR; /**< Interrupt status register */ - __IO uint32 FNR; /**< Frame number register */ - __IO uint32 DADDR; /**< Device address */ - __IO uint32 BTABLE; /**< @brief Buffer table address - * - * Address offset within the USB - * packet memory area which points - * to the base of the buffer - * descriptor table. Must be - * aligned to an 8 byte boundary. - */ -} usb_reg_map; - -/** USB register map base pointer */ -#define USB_BASE ((struct usb_reg_map*)0x40005C00) - -/* - * Register bit definitions - */ - -/* Endpoint registers (USB_EPnR) */ - -#define USB_EP_CTR_RX_BIT 15 -#define USB_EP_DTOG_RX_BIT 14 -#define USB_EP_SETUP_BIT 11 -#define USB_EP_EP_KIND_BIT 8 -#define USB_EP_CTR_TX_BIT 7 -#define USB_EP_DTOG_TX_BIT 6 - -#define USB_EP_CTR_RX BIT(USB_EP_CTR_RX_BIT) -#define USB_EP_DTOG_RX BIT(USB_EP_DTOG_RX_BIT) -#define USB_EP_STAT_RX (0x3 << 12) -#define USB_EP_STAT_RX_DISABLED (0x0 << 12) -#define USB_EP_STAT_RX_STALL (0x1 << 12) -#define USB_EP_STAT_RX_NAK (0x2 << 12) -#define USB_EP_STAT_RX_VALID (0x3 << 12) -#define USB_EP_SETUP BIT(USB_EP_SETUP_BIT) -#define USB_EP_EP_TYPE (0x3 << 9) -#define USB_EP_EP_TYPE_BULK (0x0 << 9) -#define USB_EP_EP_TYPE_CONTROL (0x1 << 9) -#define USB_EP_EP_TYPE_ISO (0x2 << 9) -#define USB_EP_EP_TYPE_INTERRUPT (0x3 << 9) -#define USB_EP_EP_KIND BIT(USB_EP_EP_KIND_BIT) -#define USB_EP_EP_KIND_DBL_BUF (0x1 << USB_EP_EP_KIND_BIT) -#define USB_EP_CTR_TX BIT(USB_EP_CTR_TX_BIT) -#define USB_EP_DTOG_TX BIT(USB_EP_DTOG_TX_BIT) -#define USB_EP_STAT_TX (0x3 << 4) -#define USB_EP_STAT_TX_DISABLED (0x0 << 4) -#define USB_EP_STAT_TX_STALL (0x1 << 4) -#define USB_EP_STAT_TX_NAK (0x2 << 4) -#define USB_EP_STAT_TX_VALID (0x3 << 4) -#define USB_EP_EA 0xF - -/* Control register (USB_CNTR) */ - -#define USB_CNTR_CTRM_BIT 15 -#define USB_CNTR_PMAOVERM_BIT 14 -#define USB_CNTR_ERRM_BIT 13 -#define USB_CNTR_WKUPM_BIT 12 -#define USB_CNTR_SUSPM_BIT 11 -#define USB_CNTR_RESETM_BIT 10 -#define USB_CNTR_SOFM_BIT 9 -#define USB_CNTR_ESOFM_BIT 8 -#define USB_CNTR_RESUME_BIT 4 -#define USB_CNTR_FSUSP_BIT 3 -#define USB_CNTR_LP_MODE_BIT 2 -#define USB_CNTR_PDWN_BIT 1 -#define USB_CNTR_FRES_BIT 0 - -#define USB_CNTR_CTRM BIT(USB_CNTR_CTRM_BIT) -#define USB_CNTR_PMAOVERM BIT(USB_CNTR_PMAOVERM_BIT) -#define USB_CNTR_ERRM BIT(USB_CNTR_ERRM_BIT) -#define USB_CNTR_WKUPM BIT(USB_CNTR_WKUPM_BIT) -#define USB_CNTR_SUSPM BIT(USB_CNTR_SUSPM_BIT) -#define USB_CNTR_RESETM BIT(USB_CNTR_RESETM_BIT) -#define USB_CNTR_SOFM BIT(USB_CNTR_SOFM_BIT) -#define USB_CNTR_ESOFM BIT(USB_CNTR_ESOFM_BIT) -#define USB_CNTR_RESUME BIT(USB_CNTR_RESUME_BIT) -#define USB_CNTR_FSUSP BIT(USB_CNTR_FSUSP_BIT) -#define USB_CNTR_LP_MODE BIT(USB_CNTR_LP_MODE_BIT) -#define USB_CNTR_PDWN BIT(USB_CNTR_PDWN_BIT) -#define USB_CNTR_FRES BIT(USB_CNTR_FRES_BIT) - -/* Interrupt status register (USB_ISTR) */ - -#define USB_ISTR_CTR_BIT 15 -#define USB_ISTR_PMAOVR_BIT 14 -#define USB_ISTR_ERR_BIT 13 -#define USB_ISTR_WKUP_BIT 12 -#define USB_ISTR_SUSP_BIT 11 -#define USB_ISTR_RESET_BIT 10 -#define USB_ISTR_SOF_BIT 9 -#define USB_ISTR_ESOF_BIT 8 -#define USB_ISTR_DIR_BIT 4 - -#define USB_ISTR_CTR BIT(USB_ISTR_CTR_BIT) -#define USB_ISTR_PMAOVR BIT(USB_ISTR_PMAOVR_BIT) -#define USB_ISTR_ERR BIT(USB_ISTR_ERR_BIT) -#define USB_ISTR_WKUP BIT(USB_ISTR_WKUP_BIT) -#define USB_ISTR_SUSP BIT(USB_ISTR_SUSP_BIT) -#define USB_ISTR_RESET BIT(USB_ISTR_RESET_BIT) -#define USB_ISTR_SOF BIT(USB_ISTR_SOF_BIT) -#define USB_ISTR_ESOF BIT(USB_ISTR_ESOF_BIT) -#define USB_ISTR_DIR BIT(USB_ISTR_DIR_BIT) -#define USB_ISTR_EP_ID 0xF - -/* Frame number register (USB_FNR) */ - -#define USB_FNR_RXDP_BIT 15 -#define USB_FNR_RXDM_BIT 14 -#define USB_FNR_LCK_BIT 13 - -#define USB_FNR_RXDP BIT(USB_FNR_RXDP_BIT) -#define USB_FNR_RXDM BIT(USB_FNR_RXDM_BIT) -#define USB_FNR_LCK BIT(USB_FNR_LCK_BIT) -#define USB_FNR_LSOF (0x3 << 11) -#define USB_FNR_FN 0x7FF - -/* Device address (USB_DADDR) */ - -#define USB_DADDR_EF_BIT 7 -#define USB_DADDR_ADD6_BIT 6 -#define USB_DADDR_ADD5_BIT 5 -#define USB_DADDR_ADD4_BIT 4 -#define USB_DADDR_ADD3_BIT 3 -#define USB_DADDR_ADD2_BIT 2 -#define USB_DADDR_ADD1_BIT 1 -#define USB_DADDR_ADD0_BIT 0 - -#define USB_DADDR_EF BIT(USB_DADDR_EF_BIT) -#define USB_DADDR_ADD6 BIT(USB_DADDR_ADD6_BIT) -#define USB_DADDR_ADD5 BIT(USB_DADDR_ADD5_BIT) -#define USB_DADDR_ADD4 BIT(USB_DADDR_ADD4_BIT) -#define USB_DADDR_ADD3 BIT(USB_DADDR_ADD3_BIT) -#define USB_DADDR_ADD2 BIT(USB_DADDR_ADD2_BIT) -#define USB_DADDR_ADD1 BIT(USB_DADDR_ADD1_BIT) -#define USB_DADDR_ADD0 BIT(USB_DADDR_ADD0_BIT) - -/* Buffer table address (USB_BTABLE) */ - -#define USB_BTABLE_BTABLE (0x1FFF << 3) - -/* - * Register convenience routines - */ - -#define __EP_CTR_NOP (USB_EP_CTR_RX | USB_EP_CTR_TX) -#define __EP_NONTOGGLE (USB_EP_CTR_RX | USB_EP_SETUP | \ - USB_EP_EP_TYPE | USB_EP_EP_KIND | \ - USB_EP_CTR_TX | USB_EP_EA) - -static inline void usb_clear_ctr_rx(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - USB_BASE->EP[ep] = epr & ~USB_EP_CTR_RX & __EP_NONTOGGLE; -} - -static inline void usb_clear_ctr_tx(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - USB_BASE->EP[ep] = epr & ~USB_EP_CTR_TX & __EP_NONTOGGLE; -} - -static inline uint32 usb_get_ep_dtog_tx(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - return epr & USB_EP_DTOG_TX; -} - -static inline uint32 usb_get_ep_dtog_rx(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - return epr & USB_EP_DTOG_RX; -} - -static inline uint32 usb_get_ep_tx_sw_buf(uint8 ep) { - return usb_get_ep_dtog_rx(ep); -} - -static inline uint32 usb_get_ep_rx_sw_buf(uint8 ep) { - return usb_get_ep_dtog_tx(ep); -} - -static inline void usb_toggle_ep_dtog_tx(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - epr &= __EP_NONTOGGLE; - epr |= USB_EP_DTOG_TX; - USB_BASE->EP[ep] = epr; -} - -static inline void usb_toggle_ep_dtog_rx(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - epr &= __EP_NONTOGGLE; - epr |= USB_EP_DTOG_RX; - USB_BASE->EP[ep] = epr; -} - -static inline void usb_clear_ep_dtog_tx(uint8 ep) { - if (usb_get_ep_dtog_tx(ep) != 0) { - usb_toggle_ep_dtog_tx(ep); - } -} - -static inline void usb_clear_ep_dtog_rx(uint8 ep) { - if (usb_get_ep_dtog_rx(ep) != 0) { - usb_toggle_ep_dtog_rx(ep); - } -} - -static inline void usb_set_ep_dtog_tx(uint8 ep) { - if (usb_get_ep_dtog_tx(ep) == 0) { - usb_toggle_ep_dtog_tx(ep); - } -} - -static inline void usb_set_ep_dtog_rx(uint8 ep) { - if (usb_get_ep_dtog_rx(ep) == 0) { - usb_toggle_ep_dtog_rx(ep); - } -} - -static inline void usb_toggle_ep_rx_sw_buf(uint8 ep) { - usb_toggle_ep_dtog_tx(ep); -} - -static inline void usb_toggle_ep_tx_sw_buf(uint8 ep) { - usb_toggle_ep_dtog_rx(ep); -} - -static inline void usb_clear_ep_rx_sw_buf(uint8 ep) { - usb_clear_ep_dtog_tx(ep); -} - -static inline void usb_clear_ep_tx_sw_buf(uint8 ep) { - usb_clear_ep_dtog_rx(ep); -} - -static inline void usb_set_ep_rx_sw_buf(uint8 ep) { - usb_set_ep_dtog_tx(ep); -} - -static inline void usb_set_ep_tx_sw_buf(uint8 ep) { - usb_set_ep_dtog_rx(ep); -} - -static inline void usb_set_ep_rx_stat(uint8 ep, uint32 status) { - uint32 epr = USB_BASE->EP[ep]; - epr &= ~(USB_EP_STAT_TX | USB_EP_DTOG_RX | USB_EP_DTOG_TX); - epr |= __EP_CTR_NOP; - epr ^= status; - USB_BASE->EP[ep] = epr; -} - -static inline void usb_set_ep_tx_stat(uint8 ep, uint32 status) { - uint32 epr = USB_BASE->EP[ep]; - epr &= ~(USB_EP_STAT_RX | USB_EP_DTOG_RX | USB_EP_DTOG_TX); - epr |= __EP_CTR_NOP; - epr ^= status; - USB_BASE->EP[ep] = epr; -} - -static inline void usb_set_ep_type(uint8 ep, uint32 type) { - uint32 epr = USB_BASE->EP[ep]; - epr &= ~USB_EP_EP_TYPE & __EP_NONTOGGLE; - epr |= type; - USB_BASE->EP[ep] = epr; -} - -static inline void usb_set_ep_kind(uint8 ep, uint32 kind) { - uint32 epr = USB_BASE->EP[ep]; - epr &= ~USB_EP_EP_KIND & __EP_NONTOGGLE; - epr |= kind; - USB_BASE->EP[ep] = epr; -} - -static inline uint32 usb_get_ep_type(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - return epr & USB_EP_EP_TYPE; -} - -static inline uint32 usb_get_ep_kind(uint8 ep) { - uint32 epr = USB_BASE->EP[ep]; - return epr & USB_EP_EP_TYPE; -} - - -static inline void usb_clear_status_out(uint8 ep) { - usb_set_ep_kind(ep, 0); -} - -/* - * Packet memory area (PMA) base pointer - */ - -/** - * @brief USB packet memory area (PMA) base pointer. - * - * The USB PMA is SRAM shared between USB and CAN. The USB peripheral - * accesses this memory directly via the packet buffer interface. */ -#define USB_PMA_BASE ((__IO void*)0x40006000) - -/* - * PMA conveniences - */ - -void usb_copy_to_pma(const uint8 *buf, uint16 len, uint16 pma_offset); -void usb_copy_from_pma(uint8 *buf, uint16 len, uint16 pma_offset); - -static inline void* usb_pma_ptr(uint32 offset) { - return (void*)(USB_PMA_BASE + 2 * offset); -} - -/* - * BTABLE - */ - -/* (Forward-declared) BTABLE entry. - * - * The BTABLE can be viewed as an array of usb_btable_ent values; - * these vary in structure according to the configuration of the - * endpoint. - */ -union usb_btable_ent; - -/* Bidirectional endpoint BTABLE entry */ -typedef struct usb_btable_bidi { - __IO uint16 addr_tx; const uint16 PAD1; - __IO uint16 count_tx; const uint16 PAD2; - __IO uint16 addr_rx; const uint16 PAD3; - __IO uint16 count_rx; const uint16 PAD4; -} usb_btable_bidi; - -/* Unidirectional receive-only endpoint BTABLE entry */ -typedef struct usb_btable_uni_rx { - __IO uint16 empty1; const uint16 PAD1; - __IO uint16 empty2; const uint16 PAD2; - __IO uint16 addr_rx; const uint16 PAD3; - __IO uint16 count_rx; const uint16 PAD4; -} usb_btable_uni_rx; - -/* Unidirectional transmit-only endpoint BTABLE entry */ -typedef struct usb_btable_uni_tx { - __IO uint16 addr_tx; const uint16 PAD1; - __IO uint16 count_tx; const uint16 PAD2; - __IO uint16 empty1; const uint16 PAD3; - __IO uint16 empty2; const uint16 PAD4; -} usb_btable_uni_tx; - -/* Double-buffered transmission endpoint BTABLE entry */ -typedef struct usb_btable_dbl_tx { - __IO uint16 addr_tx0; const uint16 PAD1; - __IO uint16 count_tx0; const uint16 PAD2; - __IO uint16 addr_tx1; const uint16 PAD3; - __IO uint16 count_tx1; const uint16 PAD4; -} usb_btable_dbl_tx; - -/* Double-buffered reception endpoint BTABLE entry */ -typedef struct usb_btable_dbl_rx { - __IO uint16 addr_rx0; const uint16 PAD1; - __IO uint16 count_rx0; const uint16 PAD2; - __IO uint16 addr_rx1; const uint16 PAD3; - __IO uint16 count_rx1; const uint16 PAD4; -} usb_btable_dbl_rx; - -/* TODO isochronous endpoint entries */ - -/* Definition for above forward-declared BTABLE entry. */ -typedef union usb_btable_ent { - usb_btable_bidi bidi; - usb_btable_uni_rx u_rx; - usb_btable_uni_tx u_tx; - usb_btable_dbl_tx d_tx; - usb_btable_dbl_rx d_rx; -} usb_btable_ent; - -/* - * BTABLE conveniences - */ - -/* TODO (?) Convert usages of the many (and lengthily-named) - * accessors/mutators below to just manipulating usb_btable_entry - * values. */ - -static inline uint32* usb_btable_ptr(uint32 offset) { - return (uint32*)usb_pma_ptr(USB_BASE->BTABLE + offset); -} - -/* TX address */ - -static inline uint32* usb_ep_tx_addr_ptr(uint8 ep) { - return usb_btable_ptr(ep * 8); -} - -static inline uint16 usb_get_ep_tx_addr(uint8 ep) { - return (uint16)*usb_ep_tx_addr_ptr(ep); -} - -static inline void usb_set_ep_tx_addr(uint8 ep, uint16 addr) { - uint32 *tx_addr = usb_ep_tx_addr_ptr(ep); - *tx_addr = addr & ~0x1; -} - -/* RX address */ - -static inline uint32* usb_ep_rx_addr_ptr(uint8 ep) { - return usb_btable_ptr(ep * 8 + 4); -} - -static inline uint16 usb_get_ep_rx_addr(uint8 ep) { - return (uint16)*usb_ep_rx_addr_ptr(ep); -} - -static inline void usb_set_ep_rx_addr(uint8 ep, uint16 addr) { - uint32 *rx_addr = usb_ep_rx_addr_ptr(ep); - *rx_addr = addr & ~0x1; -} - -/* TX count (doesn't cover double-buffered and isochronous in) */ - -static inline uint32* usb_ep_tx_count_ptr(uint8 ep) { - return usb_btable_ptr(ep * 8 + 2); -} - -static inline uint16 usb_get_ep_tx_count(uint8 ep) { - /* FIXME: this is broken somehow; calling it seems to - * confuse/crash the chip. */ - return (uint16)(*usb_ep_tx_count_ptr(ep) & 0x3FF); -} - -static inline void usb_set_ep_tx_count(uint8 ep, uint16 count) { - uint32 *txc = usb_ep_tx_count_ptr(ep); - *txc = count; -} - -/* RX count */ - -static inline uint32* usb_ep_rx_count_ptr(uint8 ep) { - return usb_btable_ptr(ep * 8 + 6); -} - -static inline uint16 usb_get_ep_rx_count(uint8 ep) { - return (uint16)*usb_ep_rx_count_ptr(ep) & 0x3FF; -} - -void usb_set_ep_rx_count(uint8 ep, uint16 count); - -/* double buffer definitions */ -static inline uint32* usb_get_ep_tx_buf0_addr_ptr(uint8 ep) { - return usb_ep_tx_addr_ptr(ep); -} - -static inline uint16 usb_get_ep_tx_buf0_addr(uint8 ep) { - return usb_get_ep_tx_addr(ep); -} - -static inline void usb_set_ep_tx_buf0_addr(uint8 ep, uint16 addr) { - usb_set_ep_tx_addr(ep, addr); -} - -static inline uint32* usb_get_ep_tx_buf1_addr_ptr(uint8 ep) { - return usb_ep_rx_addr_ptr(ep); -} - -static inline uint16 usb_get_ep_tx_buf1_addr(uint8 ep) { - return usb_get_ep_rx_addr(ep); -} - -static inline void usb_set_ep_tx_buf1_addr(uint8 ep, uint16 addr) { - usb_set_ep_rx_addr(ep, addr); -} - -static inline uint32* usb_ep_tx_buf0_count_ptr(uint8 ep) { - return usb_ep_tx_count_ptr(ep); -} - -static inline uint16 usb_get_ep_tx_buf0_count(uint8 ep) { - return usb_get_ep_tx_count(ep); -} - -static inline void usb_set_ep_tx_buf0_count(uint8 ep, uint16 count) { - usb_set_ep_tx_count(ep, count); -} - -static inline uint32* usb_ep_tx_buf1_count_ptr(uint8 ep) { - return usb_ep_rx_count_ptr(ep); -} - -static inline uint16 usb_get_ep_tx_buf1_count(uint8 ep) { - return usb_get_ep_rx_count(ep); -} - -static inline void usb_set_ep_tx_buf1_count(uint8 ep, uint16 count) { - usb_set_ep_rx_count(ep, count); -} -static inline uint32* usb_get_ep_rx_buf0_addr_ptr(uint8 ep) { - return usb_ep_tx_addr_ptr(ep); -} - -static inline uint16 usb_get_ep_rx_buf0_addr(uint8 ep) { - return usb_get_ep_tx_addr(ep); -} - -static inline void usb_set_ep_rx_buf0_addr(uint8 ep, uint16 addr) { - usb_set_ep_tx_addr(ep, addr); -} - -static inline uint32* usb_get_ep_rx_buf1_addr_ptr(uint8 ep) { - return usb_ep_rx_addr_ptr(ep); -} - -static inline uint16 usb_get_ep_rx_buf1_addr(uint8 ep) { - return usb_get_ep_rx_addr(ep); -} - -static inline void usb_set_ep_rx_buf1_addr(uint8 ep, uint16 addr) { - usb_set_ep_rx_addr(ep, addr); -} - -static inline uint32* usb_ep_rx_buf0_count_ptr(uint8 ep) { - return usb_ep_tx_count_ptr(ep); -} - -static inline uint16 usb_get_ep_rx_buf0_count(uint8 ep) { - return usb_get_ep_tx_count(ep); -} - -void usb_set_ep_rx_buf0_count(uint8 ep, uint16 count); - -static inline uint32* usb_ep_rx_buf1_count_ptr(uint8 ep) { - return usb_ep_rx_count_ptr(ep); -} - -static inline uint16 usb_get_ep_rx_buf1_count(uint8 ep) { - return usb_get_ep_rx_count(ep); -} - -static inline void usb_set_ep_rx_buf1_count(uint8 ep, uint16 count) { - usb_set_ep_rx_count(ep, count); -} - -/* - * Misc. types - */ - -typedef enum usb_ep { - USB_EP0, - USB_EP1, - USB_EP2, - USB_EP3, - USB_EP4, - USB_EP5, - USB_EP6, - USB_EP7, -} usb_ep; - -typedef enum usb_ep_type { - USB_EP_T_CTL = USB_EP_EP_TYPE_CONTROL, - USB_EP_T_BULK = USB_EP_EP_TYPE_BULK, - USB_EP_T_INT = USB_EP_EP_TYPE_INTERRUPT, - USB_EP_T_ISO = USB_EP_EP_TYPE_ISO -} usb_ep_type; - -typedef enum usb_ep_stat { - USB_EP_ST_RX_DIS = USB_EP_STAT_RX_DISABLED, - USB_EP_ST_RX_STL = USB_EP_STAT_RX_STALL, - USB_EP_ST_RX_NAK = USB_EP_STAT_RX_NAK, - USB_EP_ST_RX_VAL = USB_EP_STAT_RX_VALID, - USB_EP_ST_TX_DIS = USB_EP_STAT_TX_DISABLED, - USB_EP_ST_TX_STL = USB_EP_STAT_TX_STALL, - USB_EP_ST_TX_NAK = USB_EP_STAT_TX_NAK, - USB_EP_ST_TX_VAL = USB_EP_STAT_TX_VALID -} usb_ep_stat; - -#endif diff --git a/STM32F3/cores/maple/libmaple/util.c b/STM32F3/cores/maple/libmaple/util.c deleted file mode 100644 index 4c0b2c8ec..000000000 --- a/STM32F3/cores/maple/libmaple/util.c +++ /dev/null @@ -1,150 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file libmaple/util.c - * @brief Utility procedures for debugging - */ - -#include -#include -#include -#include - -/* (Undocumented) hooks used by Wirish to direct our behavior here */ -extern __weak void __lm_error(void); -extern __weak usart_dev* __lm_enable_error_usart(void); - -/* If you define ERROR_LED_PORT and ERROR_LED_PIN, then a failed - * ASSERT() will also throb() an LED connected to that port and pin. - */ -#if defined(ERROR_LED_PORT) && defined(ERROR_LED_PIN) -#define HAVE_ERROR_LED -#endif - -/* (Called from exc.S with global interrupts disabled.) */ -__attribute__((noreturn)) void __error(void) { - if (__lm_error) { - __lm_error(); - } - /* Reenable global interrupts */ - nvic_globalirq_enable(); - throb(); -} - -/* - * Print an error message on a UART upon a failed assertion (if one is - * available), and punt to __error(). - * - * @param file Source file of failed assertion - * @param line Source line of failed assertion - * @param exp String representation of failed assertion - * @sideeffect Turns of all peripheral interrupts except USB. - */ -void _fail(const char* file, int line, const char* exp) { - if (__lm_enable_error_usart) { - /* Initialize the error USART */ - usart_dev *err_usart = __lm_enable_error_usart(); - - /* Print failed assert message */ - usart_putstr(err_usart, "ERROR: FAILED ASSERT("); - usart_putstr(err_usart, exp); - usart_putstr(err_usart, "): "); - usart_putstr(err_usart, file); - usart_putstr(err_usart, ": "); - usart_putudec(err_usart, line); - usart_putc(err_usart, '\n'); - usart_putc(err_usart, '\r'); - } - /* Shutdown and error fade */ - __error(); -} - -/* - * Provide an __assert_func handler to libc so that calls to assert() - * get redirected to _fail. - */ -void __assert_func(const char* file, int line, const char* method, - const char* expression) { - _fail(file, line, expression); -} - -/* - * Provide an abort() implementation that aborts execution and punts - * to __error(). - */ -void abort() { - if (__lm_enable_error_usart) { - /* Initialize the error USART */ - usart_dev *err_usart = __lm_enable_error_usart(); - /* Print abort message. */ - usart_putstr(err_usart, "ERROR: PROGRAM ABORTED VIA abort()\r\n"); - } - - /* Shutdown and error fade */ - __error(); -} - -/* This was public as of v0.0.12, so we've got to keep it public. */ -/** - * @brief Fades the error LED on and off - * @sideeffect Sets output push-pull on ERROR_LED_PIN. - */ -__attribute__((noreturn)) void throb(void) { -#ifdef HAVE_ERROR_LED - int32 slope = 1; - uint32 CC = 0x0000; - uint32 TOP_CNT = 0x0200; - uint32 i = 0; - - gpio_set_mode(ERROR_LED_PORT, ERROR_LED_PIN, GPIO_MODE_OUTPUT); - /* Error fade. */ - while (1) { - if (CC == TOP_CNT) { - slope = -1; - } else if (CC == 0) { - slope = 1; - } - - if (i == TOP_CNT) { - CC += slope; - i = 0; - } - - if (i < CC) { - gpio_write_bit(ERROR_LED_PORT, ERROR_LED_PIN, 1); - } else { - gpio_write_bit(ERROR_LED_PORT, ERROR_LED_PIN, 0); - } - i++; - } -#else - /* No error LED is defined; do nothing. */ - while (1) - ; -#endif -} diff --git a/STM32F3/cores/maple/main.cpp b/STM32F3/cores/maple/main.cpp deleted file mode 100644 index 7305100d9..000000000 --- a/STM32F3/cores/maple/main.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -extern void setup(void); -extern void loop(void); -extern void init(void); - -// Force init to be called *first*, i.e. before static object allocation. -// Otherwise, statically allocated objects that need libmaple may fail. - __attribute__(( constructor )) void premain() { - init(); -} - -int main(void) { - setup(); - - while (1) { - loop(); - } - return 0; -} diff --git a/STM32F3/cores/maple/wirish/HardwareSPI.cpp b/STM32F3/cores/maple/wirish/HardwareSPI.cpp deleted file mode 100644 index 60d210fbc..000000000 --- a/STM32F3/cores/maple/wirish/HardwareSPI.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @author Marti Bolivar - * @brief Wirish SPI implementation. - */ - -#include - -#include -#include -#include - -#include -#include - -#if CYCLES_PER_MICROSECOND != 72 -/* TODO [0.2.0?] something smarter than this */ -#warning "Unexpected clock speed; SPI frequency calculation will be incorrect" -#endif - -struct spi_pins { - uint8 nss; - uint8 sck; - uint8 miso; - uint8 mosi; -}; - -static const spi_pins* dev_to_spi_pins(spi_dev *dev); - -static void enable_device(spi_dev *dev, - bool as_master, - SPIFrequency frequency, - spi_cfg_flag endianness, - spi_mode mode); - -static const spi_pins board_spi_pins[] __FLASH__ = { - {BOARD_SPI1_NSS_PIN, - BOARD_SPI1_SCK_PIN, - BOARD_SPI1_MISO_PIN, - BOARD_SPI1_MOSI_PIN}, - {BOARD_SPI2_NSS_PIN, - BOARD_SPI2_SCK_PIN, - BOARD_SPI2_MISO_PIN, - BOARD_SPI2_MOSI_PIN}, -#if defined(STM32_HIGH_DENSITY) || (STM32_MCU_SERIES == STM32_SERIES_F3) - {BOARD_SPI3_NSS_PIN, - BOARD_SPI3_SCK_PIN, - BOARD_SPI3_MISO_PIN, - BOARD_SPI3_MOSI_PIN}, -#endif -}; - - -/* - * Constructor - */ - -HardwareSPI::HardwareSPI(uint32 spi_num) { - switch (spi_num) { - case 1: - this->spi_d = SPI1; - break; - case 2: - this->spi_d = SPI2; - break; -#if defined(STM32_HIGH_DENSITY) || (STM32_MCU_SERIES == STM32_SERIES_F3) - case 3: - this->spi_d = SPI3; - break; -#endif - default: - ASSERT(0); - } -} - -/* - * Set up/tear down - */ - -void HardwareSPI::begin(SPIFrequency frequency, uint32 bitOrder, uint32 mode) { - if (mode >= 4) { - ASSERT(0); - return; - } - spi_cfg_flag end = bitOrder == MSBFIRST ? SPI_FRAME_MSB : SPI_FRAME_LSB; - spi_mode m = (spi_mode)mode; - enable_device(this->spi_d, true, frequency, end, m); -} - -void HardwareSPI::begin(void) { - this->begin(SPI_1_125MHZ, MSBFIRST, 0); -} - -void HardwareSPI::beginSlave(uint32 bitOrder, uint32 mode) { - if (mode >= 4) { - ASSERT(0); - return; - } - spi_cfg_flag end = bitOrder == MSBFIRST ? SPI_FRAME_MSB : SPI_FRAME_LSB; - spi_mode m = (spi_mode)mode; - enable_device(this->spi_d, false, (SPIFrequency)0, end, m); -} - -void HardwareSPI::beginSlave(void) { - this->beginSlave(MSBFIRST, 0); -} - -void HardwareSPI::end(void) { - if (!spi_is_enabled(this->spi_d)) { - return; - } - - // Follows RM0008's sequence for disabling a SPI in master/slave - // full duplex mode. - while (spi_is_rx_nonempty(this->spi_d)) { - // FIXME [0.1.0] remove this once you have an interrupt based driver - volatile uint16 rx __attribute__((unused)) = spi_rx_reg(this->spi_d); - } - while (!spi_is_tx_empty(this->spi_d)) - ; - while (spi_is_busy(this->spi_d)) - ; - spi_peripheral_disable(this->spi_d); -} - -/* - * I/O - */ - -uint8 HardwareSPI::read(void) { - uint8 buf[1]; - this->read(buf, 1); - return buf[0]; -} - -void HardwareSPI::read(uint8 *buf, uint32 len) { - uint32 rxed = 0; - while (rxed < len) { - while (!spi_is_rx_nonempty(this->spi_d)) - ; - buf[rxed++] = (uint8)spi_rx_reg(this->spi_d); - } -} - -void HardwareSPI::write(uint8 byte) { - this->write(&byte, 1); -} - -void HardwareSPI::write(const uint8 *data, uint32 length) { - uint32 txed = 0; - while (txed < length) { - txed += spi_tx(this->spi_d, data + txed, length - txed); - } -} - -uint8 HardwareSPI::transfer(uint8 byte) { - this->write(byte); - return this->read(); -} - -/* - * Pin accessors - */ - -uint8 HardwareSPI::misoPin(void) { - return dev_to_spi_pins(this->spi_d)->miso; -} - -uint8 HardwareSPI::mosiPin(void) { - return dev_to_spi_pins(this->spi_d)->mosi; -} - -uint8 HardwareSPI::sckPin(void) { - return dev_to_spi_pins(this->spi_d)->sck; -} - -uint8 HardwareSPI::nssPin(void) { - return dev_to_spi_pins(this->spi_d)->nss; -} - -/* - * Deprecated functions - */ - -uint8 HardwareSPI::send(uint8 data) { - uint8 buf[] = {data}; - return this->send(buf, 1); -} - -uint8 HardwareSPI::send(uint8 *buf, uint32 len) { - uint32 txed = 0; - uint8 ret = 0; - while (txed < len) { - this->write(buf[txed++]); - ret = this->read(); - } - return ret; -} - -uint8 HardwareSPI::recv(void) { - return this->read(); -} - -/* - * Auxiliary functions - */ - -static void configure_gpios(spi_dev *dev, bool as_master); -static spi_baud_rate determine_baud_rate(spi_dev *dev, SPIFrequency freq); - -static const spi_pins* dev_to_spi_pins(spi_dev *dev) { - switch (dev->clk_id) { - case RCC_SPI1: return board_spi_pins; - case RCC_SPI2: return board_spi_pins + 1; -#if defined(STM32_HIGH_DENSITY) || (STM32_MCU_SERIES == STM32_SERIES_F3) - case RCC_SPI3: return board_spi_pins + 2; -#endif - default: return NULL; - } -} - -/* Enables the device in master or slave full duplex mode. If you - * change this code, you must ensure that appropriate changes are made - * to HardwareSPI::end(). */ -static void enable_device(spi_dev *dev, - bool as_master, - SPIFrequency freq, - spi_cfg_flag endianness, - spi_mode mode) { - spi_baud_rate baud = determine_baud_rate(dev, freq); - uint32 cfg_flags = (endianness | SPI_DFF_8_BIT | SPI_SW_SLAVE | - (as_master ? SPI_SOFT_SS : 0)); - - spi_init(dev); - configure_gpios(dev, as_master); - if (as_master) { - spi_master_enable(dev, baud, mode, cfg_flags); - } else { - spi_slave_enable(dev, mode, cfg_flags); - } -} - -static void disable_pwm(const stm32_pin_info *i) { - if (i->timer_device) { - timer_set_mode(i->timer_device, i->timer_channel, TIMER_DISABLED); - } -} - -static void configure_gpios(spi_dev *dev, bool as_master) { - const spi_pins *pins = dev_to_spi_pins(dev); - - if (!pins) { - return; - } - - const stm32_pin_info *nssi = &PIN_MAP[pins->nss]; - const stm32_pin_info *scki = &PIN_MAP[pins->sck]; - const stm32_pin_info *misoi = &PIN_MAP[pins->miso]; - const stm32_pin_info *mosii = &PIN_MAP[pins->mosi]; - - disable_pwm(nssi); - disable_pwm(scki); - disable_pwm(misoi); - disable_pwm(mosii); - - spi_config_gpios(dev, as_master, nssi->gpio_device, nssi->gpio_bit, - scki->gpio_device, scki->gpio_bit, misoi->gpio_bit, - mosii->gpio_bit); -} - -static const spi_baud_rate baud_rates[MAX_SPI_FREQS] __FLASH__ = { - SPI_BAUD_PCLK_DIV_2, - SPI_BAUD_PCLK_DIV_4, - SPI_BAUD_PCLK_DIV_8, - SPI_BAUD_PCLK_DIV_16, - SPI_BAUD_PCLK_DIV_32, - SPI_BAUD_PCLK_DIV_64, - SPI_BAUD_PCLK_DIV_128, - SPI_BAUD_PCLK_DIV_256, -}; - -/* - * Note: This assumes you're on a LeafLabs-style board - * (CYCLES_PER_MICROSECOND == 72, APB2 at 72MHz, APB1 at 36MHz). - */ -static spi_baud_rate determine_baud_rate(spi_dev *dev, SPIFrequency freq) { - if (rcc_dev_clk(dev->clk_id) == RCC_APB2 && freq == SPI_140_625KHZ) { - /* APB2 peripherals are too fast for 140.625 KHz */ - ASSERT(0); - return (spi_baud_rate)~0; - } - return (rcc_dev_clk(dev->clk_id) == RCC_APB2 ? - baud_rates[freq + 1] : - baud_rates[freq]); -} diff --git a/STM32F3/cores/maple/wirish/HardwareSPI.h b/STM32F3/cores/maple/wirish/HardwareSPI.h deleted file mode 100644 index 4b61b58cc..000000000 --- a/STM32F3/cores/maple/wirish/HardwareSPI.h +++ /dev/null @@ -1,225 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/HardwareSPI.h - * @brief High-level SPI interface - * - * This is a "bare essentials" polling driver for now. - */ - -/* TODO [0.1.0] Remove deprecated methods. */ - -#include -#include - -#include - -#ifndef _WIRISH_HARDWARESPI_H_ -#define _WIRISH_HARDWARESPI_H_ - -/** - * @brief Defines the possible SPI communication speeds. - */ -typedef enum SPIFrequency { - SPI_18MHZ = 0, /**< 18 MHz */ - SPI_9MHZ = 1, /**< 9 MHz */ - SPI_4_5MHZ = 2, /**< 4.5 MHz */ - SPI_2_25MHZ = 3, /**< 2.25 MHz */ - SPI_1_125MHZ = 4, /**< 1.125 MHz */ - SPI_562_500KHZ = 5, /**< 562.500 KHz */ - SPI_281_250KHZ = 6, /**< 281.250 KHz */ - SPI_140_625KHZ = 7, /**< 140.625 KHz */ -} SPIFrequency; - -#define MAX_SPI_FREQS 8 - -/** - * @brief Wirish SPI interface. - * - * This implementation uses software slave management, so the caller - * is responsible for controlling the slave select line. - */ -class HardwareSPI { -public: - /** - * @param spiPortNumber Number of the SPI port to manage. - */ - HardwareSPI(uint32 spiPortNumber); - - /* - * Set up/tear down - */ - - /** - * @brief Turn on a SPI port and set its GPIO pin modes for use as master. - * - * SPI port is enabled in full duplex mode, with software slave management. - * - * @param frequency Communication frequency - * @param bitOrder Either LSBFIRST (little-endian) or MSBFIRST (big-endian) - * @param mode SPI mode to use, one of SPI_MODE_0, SPI_MODE_1, - * SPI_MODE_2, and SPI_MODE_3. - */ - void begin(SPIFrequency frequency, uint32 bitOrder, uint32 mode); - - /** - * @brief Equivalent to begin(SPI_1_125MHZ, MSBFIRST, 0). - */ - void begin(void); - - /** - * @brief Turn on a SPI port and set its GPIO pin modes for use as a slave. - * - * SPI port is enabled in full duplex mode, with software slave management. - * - * @param bitOrder Either LSBFIRST (little-endian) or MSBFIRST(big-endian) - * @param mode SPI mode to use - */ - void beginSlave(uint32 bitOrder, uint32 mode); - - /** - * @brief Equivalent to beginSlave(MSBFIRST, 0). - */ - void beginSlave(void); - - /** - * @brief Disables the SPI port, but leaves its GPIO pin modes unchanged. - */ - void end(void); - - /* - * I/O - */ - - /** - * @brief Return the next unread byte. - * - * If there is no unread byte waiting, this function will block - * until one is received. - */ - uint8 read(void); - - /** - * @brief Read length bytes, storing them into buffer. - * @param buffer Buffer to store received bytes into. - * @param length Number of bytes to store in buffer. This - * function will block until the desired number of - * bytes have been read. - */ - void read(uint8 *buffer, uint32 length); - - /** - * @brief Transmit a byte. - * @param data Byte to transmit. - */ - void write(uint8 data); - - /** - * @brief Transmit multiple bytes. - * @param buffer Bytes to transmit. - * @param length Number of bytes in buffer to transmit. - */ - void write(const uint8 *buffer, uint32 length); - - /** - * @brief Transmit a byte, then return the next unread byte. - * - * This function transmits before receiving. - * - * @param data Byte to transmit. - * @return Next unread byte. - */ - uint8 transfer(uint8 data); - - /* - * Pin accessors - */ - - /** - * @brief Return the number of the MISO (master in, slave out) pin - */ - uint8 misoPin(void); - - /** - * @brief Return the number of the MOSI (master out, slave in) pin - */ - uint8 mosiPin(void); - - /** - * @brief Return the number of the SCK (serial clock) pin - */ - uint8 sckPin(void); - - /** - * @brief Return the number of the NSS (slave select) pin - */ - uint8 nssPin(void); - - /* Escape hatch */ - - /** - * @brief Get a pointer to the underlying libmaple spi_dev for - * this HardwareSPI instance. - */ - spi_dev* c_dev(void) { return this->spi_d; } - - /* -- The following methods are deprecated --------------------------- */ - - /** - * @brief Deprecated. - * - * Use HardwareSPI::transfer() instead. - * - * @see HardwareSPI::transfer() - */ - uint8 send(uint8 data); - - /** - * @brief Deprecated. - * - * Use HardwareSPI::write() in combination with - * HardwareSPI::read() (or HardwareSPI::transfer()) instead. - * - * @see HardwareSPI::write() - * @see HardwareSPI::read() - * @see HardwareSPI::transfer() - */ - uint8 send(uint8 *data, uint32 length); - - /** - * @brief Deprecated. - * - * Use HardwareSPI::read() instead. - * - * @see HardwareSPI::read() - */ - uint8 recv(void); -private: - spi_dev *spi_d; -}; - -#endif diff --git a/STM32F3/cores/maple/wirish/HardwareSerial.cpp b/STM32F3/cores/maple/wirish/HardwareSerial.cpp deleted file mode 100644 index 87f80d1bd..000000000 --- a/STM32F3/cores/maple/wirish/HardwareSerial.cpp +++ /dev/null @@ -1,139 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/HardwareSerial.cpp - * @brief Wirish serial port implementation. - */ - -#include - -#include -#include -#include -#include - -#define DEFINE_HWSERIAL(name, n) \ - HardwareSerial name(USART##n, \ - BOARD_USART##n##_TX_PIN, \ - BOARD_USART##n##_RX_PIN) - -#if BOARD_HAVE_USART1 -DEFINE_HWSERIAL(Serial1, 1); -#endif -#if BOARD_HAVE_USART2 -DEFINE_HWSERIAL(Serial2, 2); -#endif -#if BOARD_HAVE_USART3 -DEFINE_HWSERIAL(Serial3, 3); -#endif -#if BOARD_HAVE_UART4 -DEFINE_HWSERIAL(Serial4, 4); -#endif -#if BOARD_HAVE_UART5 -DEFINE_HWSERIAL(Serial5, 5); -#endif -#if BOARD_HAVE_USART6 -DEFINE_HWSERIAL(Serial6, 6); -#endif - -HardwareSerial::HardwareSerial(usart_dev *usart_device, - uint8 tx_pin, - uint8 rx_pin) { - this->usart_device = usart_device; - this->tx_pin = tx_pin; - this->rx_pin = rx_pin; -} - -/* - * Set up/tear down - */ - -#if STM32_MCU_SERIES == STM32_SERIES_F1 -/* F1 MCUs have no GPIO_AFR[HL], so turn off PWM if there's a conflict - * on this GPIO bit. */ -static void disable_timer_if_necessary(timer_dev *dev, uint8 ch) { - if (dev != NULL) { - timer_set_mode(dev, ch, TIMER_DISABLED); - } -} -#elif (STM32_MCU_SERIES == STM32_SERIES_F2) || \ - (STM32_MCU_SERIES == STM32_SERIES_F3) || \ - (STM32_MCU_SERIES == STM32_SERIES_F4) -#define disable_timer_if_necessary(dev, ch) ((void)0) -#else -#warning "Unsupported STM32 series; timer conflicts are possible" -#endif - -void HardwareSerial::begin(uint32 baud) { - ASSERT(baud <= this->usart_device->max_baud); - - if (baud > this->usart_device->max_baud) { - return; - } - - const stm32_pin_info *txi = &PIN_MAP[this->tx_pin]; - const stm32_pin_info *rxi = &PIN_MAP[this->rx_pin]; - - disable_timer_if_necessary(txi->timer_device, txi->timer_channel); - - usart_config_gpios_async(this->usart_device, - rxi->gpio_device, rxi->gpio_bit, - txi->gpio_device, txi->gpio_bit, - 0); - usart_init(this->usart_device); - usart_set_baud_rate(this->usart_device, USART_USE_PCLK, baud); - usart_enable(this->usart_device); -} - -void HardwareSerial::end(void) { - usart_disable(this->usart_device); -} - -/* - * I/O - */ - -int HardwareSerial::read(void) { - if(usart_data_available(usart_device) > 0) { - return usart_getc(usart_device); - } else { - return -1; - } -} - -uint32 HardwareSerial::available(void) { - return usart_data_available(this->usart_device); -} - -void HardwareSerial::write(unsigned char ch) { - usart_putc(this->usart_device, ch); -} - -void HardwareSerial::flush(void) { - usart_reset_rx(this->usart_device); -} diff --git a/STM32F3/cores/maple/wirish/HardwareSerial.h b/STM32F3/cores/maple/wirish/HardwareSerial.h deleted file mode 100644 index 260a99e5b..000000000 --- a/STM32F3/cores/maple/wirish/HardwareSerial.h +++ /dev/null @@ -1,102 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/HardwareSerial.h - * @brief Wirish serial port interface. - */ - -#ifndef _WIRISH_HARDWARESERIAL_H_ -#define _WIRISH_HARDWARESERIAL_H_ - -#include - -#include -#include - -/* - * IMPORTANT: - * - * This class documented "by hand" (i.e., not using Doxygen) in the - * leaflabs-docs/ repository. - * - * If you alter the public HardwareSerial interface, you MUST update - * the documentation accordingly. - */ - -struct usart_dev; - -class HardwareSerial : public Print { -public: - HardwareSerial(struct usart_dev *usart_device, - uint8 tx_pin, - uint8 rx_pin); - - /* Set up/tear down */ - void begin(uint32 baud); - void end(void); - - /* I/O */ - uint32 available(void); - int read(void); - void flush(void); - virtual void write(unsigned char); - using Print::write; - - /* Pin accessors */ - int txPin(void) { return this->tx_pin; } - int rxPin(void) { return this->rx_pin; } - - /* Escape hatch into libmaple */ - /* FIXME [0.0.13] documentation */ - struct usart_dev* c_dev(void) { return this->usart_device; } -private: - struct usart_dev *usart_device; - uint8 tx_pin; - uint8 rx_pin; -}; - -#if BOARD_HAVE_USART1 -extern HardwareSerial Serial1; -#endif -#if BOARD_HAVE_USART2 -extern HardwareSerial Serial2; -#endif -#if BOARD_HAVE_USART3 -extern HardwareSerial Serial3; -#endif -#if BOARD_HAVE_UART4 -extern HardwareSerial Serial4; -#endif -#if BOARD_HAVE_UART5 -extern HardwareSerial Serial5; -#endif -#if BOARD_HAVE_USART6 -extern HardwareSerial Serial6; -#endif - -#endif diff --git a/STM32F3/cores/maple/wirish/HardwareTimer.cpp b/STM32F3/cores/maple/wirish/HardwareTimer.cpp deleted file mode 100644 index 4f68ad724..000000000 --- a/STM32F3/cores/maple/wirish/HardwareTimer.cpp +++ /dev/null @@ -1,156 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Bryan Newbold. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#include - -#include -#include // for noInterrupts(), interrupts() -#include -#include // for CYCLES_PER_MICROSECOND - -// TODO [0.1.0] Remove deprecated pieces - -/* - * Evil hack to infer this->dev from timerNum in the HardwareTimer - * constructor. See: - * - * http://www.parashift.com/c++-faq-lite/pointers-to-members.html#faq-33.2 - * http://yosefk.com/c++fqa/function.html#fqa-33.2 - */ - -extern "C" { - static timer_dev **this_devp; - static rcc_clk_id this_id; - static void set_this_dev(timer_dev *dev) { - if (dev->clk_id == this_id) { - *this_devp = dev; - } - } -} - -/* - * HardwareTimer routines - */ - -HardwareTimer::HardwareTimer(uint8 timerNum) { - rcc_clk_id timerID = (rcc_clk_id)(RCC_TIMER1 + (timerNum - 1)); - this->dev = NULL; - noInterrupts(); // Hack to ensure we're the only ones using - // set_this_dev() and friends. TODO: use a lock. - this_id = timerID; - this_devp = &this->dev; - timer_foreach(set_this_dev); - interrupts(); - ASSERT(this->dev != NULL); -} - -void HardwareTimer::pause(void) { - timer_pause(this->dev); -} - -void HardwareTimer::resume(void) { - timer_resume(this->dev); -} - -uint32 HardwareTimer::getPrescaleFactor(void) { - return timer_get_prescaler(this->dev) + 1; -} - -void HardwareTimer::setPrescaleFactor(uint32 factor) { - timer_set_prescaler(this->dev, (uint16)(factor - 1)); -} - -uint16 HardwareTimer::getOverflow() { - return timer_get_reload(this->dev); -} - -void HardwareTimer::setOverflow(uint16 val) { - timer_set_reload(this->dev, val); -} - -uint16 HardwareTimer::getCount(void) { - return timer_get_count(this->dev); -} - -void HardwareTimer::setCount(uint16 val) { - uint16 ovf = this->getOverflow(); - timer_set_count(this->dev, min(val, ovf)); -} - -#define MAX_RELOAD ((1 << 16) - 1) -uint16 HardwareTimer::setPeriod(uint32 microseconds) { - // Not the best way to handle this edge case? - if (!microseconds) { - this->setPrescaleFactor(1); - this->setOverflow(1); - return this->getOverflow(); - } - - uint32 period_cyc = microseconds * CYCLES_PER_MICROSECOND; - uint16 prescaler = (uint16)(period_cyc / MAX_RELOAD + 1); - uint16 overflow = (uint16)((period_cyc + (prescaler / 2)) / prescaler); - this->setPrescaleFactor(prescaler); - this->setOverflow(overflow); - return overflow; -} - -void HardwareTimer::setMode(int channel, timer_mode mode) { - timer_set_mode(this->dev, (uint8)channel, (timer_mode)mode); -} - -uint16 HardwareTimer::getCompare(int channel) { - return timer_get_compare(this->dev, (uint8)channel); -} - -void HardwareTimer::setCompare(int channel, uint16 val) { - uint16 ovf = this->getOverflow(); - timer_set_compare(this->dev, (uint8)channel, min(val, ovf)); -} - -void HardwareTimer::attachInterrupt(int channel, voidFuncPtr handler) { - timer_attach_interrupt(this->dev, (uint8)channel, handler); -} - -void HardwareTimer::detachInterrupt(int channel) { - timer_detach_interrupt(this->dev, (uint8)channel); -} - -void HardwareTimer::refresh(void) { - timer_generate_update(this->dev); -} - -/* -- Deprecated predefined instances -------------------------------------- */ - -HardwareTimer Timer1(1); -HardwareTimer Timer2(2); -HardwareTimer Timer3(3); -HardwareTimer Timer4(4); -#ifdef STM32_HIGH_DENSITY -HardwareTimer Timer5(5); -HardwareTimer Timer6(6); -HardwareTimer Timer7(7); -HardwareTimer Timer8(8); -#endif diff --git a/STM32F3/cores/maple/wirish/HardwareTimer.h b/STM32F3/cores/maple/wirish/HardwareTimer.h deleted file mode 100644 index 22aa01012..000000000 --- a/STM32F3/cores/maple/wirish/HardwareTimer.h +++ /dev/null @@ -1,337 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Bryan Newbold. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @brief Wirish timer class. - */ - -#ifndef _WIRISH_HARDWARETIMER_H_ -#define _WIRISH_HARDWARETIMER_H_ - -// TODO [0.1.0] Remove deprecated pieces, pick a better API - -#include - -/** Timer mode. */ -typedef timer_mode TimerMode; - -/** - * @brief Interface to one of the 16-bit timer peripherals. - */ -class HardwareTimer { -private: - timer_dev *dev; - -public: - /** - * @brief Construct a new HardwareTimer instance. - * @param timerNum number of the timer to control. - */ - HardwareTimer(uint8 timerNum); - - /** - * @brief Stop the counter, without affecting its configuration. - * - * @see HardwareTimer::resume() - */ - void pause(void); - - /** - * @brief Resume a paused timer, without affecting its configuration. - * - * The timer will resume counting and firing interrupts as - * appropriate. - * - * Note that there is some function call overhead associated with - * using this method, so using it in concert with - * HardwareTimer::pause() is not a robust way to align multiple - * timers to the same count value. - * - * @see HardwareTimer::pause() - */ - void resume(void); - - /** - * @brief Get the timer's prescale factor. - * @return Timer prescaler, from 1 to 65,536. - * @see HardwareTimer::setPrescaleFactor() - */ - uint32 getPrescaleFactor(); - - /** - * @brief Set the timer's prescale factor. - * - * The new value won't take effect until the next time the counter - * overflows. You can force the counter to reset using - * HardwareTimer::refresh(). - * - * @param factor The new prescale value to set, from 1 to 65,536. - * @see HardwareTimer::refresh() - */ - void setPrescaleFactor(uint32 factor); - - /** - * @brief Get the timer overflow value. - * @see HardwareTimer::setOverflow() - */ - uint16 getOverflow(); - - /** - * @brief Set the timer overflow (or "reload") value. - * - * The new value won't take effect until the next time the counter - * overflows. You can force the counter to reset using - * HardwareTimer::refresh(). - * - * @param val The new overflow value to set - * @see HardwareTimer::refresh() - */ - void setOverflow(uint16 val); - - /** - * @brief Get the current timer count. - * - * @return The timer's current count value - */ - uint16 getCount(void); - - /** - * @brief Set the current timer count. - * - * @param val The new count value to set. If this value exceeds - * the timer's overflow value, it is truncated to the - * overflow value. - */ - void setCount(uint16 val); - - /** - * @brief Set the timer's period in microseconds. - * - * Configures the prescaler and overflow values to generate a timer - * reload with a period as close to the given number of - * microseconds as possible. - * - * @param microseconds The desired period of the timer. This must be - * greater than zero. - * @return The new overflow value. - */ - uint16 setPeriod(uint32 microseconds); - - /** - * @brief Configure a timer channel's mode. - * @param channel Timer channel, from 1 to 4 - * @param mode Mode to set - */ - void setMode(int channel, timer_mode mode); - - /** - * @brief Get the compare value for the given channel. - * @see HardwareTimer::setCompare() - */ - uint16 getCompare(int channel); - - /** - * @brief Set the compare value for the given channel. - * - * @param channel the channel whose compare to set, from 1 to 4. - * @param compare The compare value to set. If greater than this - * timer's overflow value, it will be truncated to - * the overflow value. - * - * @see timer_mode - * @see HardwareTimer::setMode() - * @see HardwareTimer::attachInterrupt() - */ - void setCompare(int channel, uint16 compare); - - /** - * @brief Attach an interrupt handler to the given channel. - * - * This interrupt handler will be called when the timer's counter - * reaches the given channel compare value. - * - * @param channel the channel to attach the ISR to, from 1 to 4. - * @param handler The ISR to attach to the given channel. - * @see voidFuncPtr - */ - void attachInterrupt(int channel, voidFuncPtr handler); - - /** - * @brief Remove the interrupt handler attached to the given - * channel, if any. - * - * The handler will no longer be called by this timer. - * - * @param channel the channel whose interrupt to detach, from 1 to 4. - * @see HardwareTimer::attachInterrupt() - */ - void detachInterrupt(int channel); - - /** - * @brief Reset the counter, and update the prescaler and overflow - * values. - * - * This will reset the counter to 0 in upcounting mode (the - * default). It will also update the timer's prescaler and - * overflow, if you have set them up to be changed using - * HardwareTimer::setPrescaleFactor() or - * HardwareTimer::setOverflow(). - * - * @see HardwareTimer::setPrescaleFactor() - * @see HardwareTimer::setOverflow() - */ - void refresh(void); - - /* Escape hatch */ - - /** - * @brief Get a pointer to the underlying libmaple timer_dev for - * this HardwareTimer instance. - */ - timer_dev* c_dev(void) { return this->dev; } - -/* -- The rest of this file is deprecated. --------------------------------- */ - - /** @brief Deprecated; use setMode(channel, mode) instead. */ - void setChannelMode(int channel, timer_mode mode) { - setMode(channel, mode); - } - - /** @brief Deprecated; use setMode(TIMER_CH1, mode) instead. */ - void setChannel1Mode(timer_mode mode) { setMode(TIMER_CH1, mode); } - - /** @brief Deprecated; use setMode(TIMER_CH2, mode) instead. */ - void setChannel2Mode(timer_mode mode) { setMode(TIMER_CH2, mode); } - - /** @brief Deprecated; use setMode(TIMER_CH3, mode) instead. */ - void setChannel3Mode(timer_mode mode) { setMode(TIMER_CH3, mode); } - - /** @brief Deprecated; use setMode(TIMER_CH4, mode) instead. */ - void setChannel4Mode(timer_mode mode) { setMode(TIMER_CH4, mode); } - - /** @brief Deprecated; use return getCompare(TIMER_CH1) instead. */ - uint16 getCompare1() { return getCompare(TIMER_CH1); } - - /** @brief Deprecated; use return getCompare(TIMER_CH2) instead. */ - uint16 getCompare2() { return getCompare(TIMER_CH2); } - - /** @brief Deprecated; use return getCompare(TIMER_CH3) instead. */ - uint16 getCompare3() { return getCompare(TIMER_CH3); } - - /** @brief Deprecated; use return getCompare(TIMER_CH4) instead. */ - uint16 getCompare4() { return getCompare(TIMER_CH4); } - - /** @brief Deprecated; use setCompare(TIMER_CH1, compare) instead. */ - void setCompare1(uint16 compare) { setCompare(TIMER_CH1, compare); } - - /** @brief Deprecated; use setCompare(TIMER_CH2, compare) instead. */ - void setCompare2(uint16 compare) { setCompare(TIMER_CH2, compare); } - - /** @brief Deprecated; use setCompare(TIMER_CH3, compare) instead. */ - void setCompare3(uint16 compare) { setCompare(TIMER_CH3, compare); } - - /** @brief Deprecated; use setCompare(TIMER_CH4, compare) instead. */ - void setCompare4(uint16 compare) { setCompare(TIMER_CH4, compare); } - - /** @brief Deprecated; use attachInterrupt(TIMER_CH1, handler) instead. */ - void attachCompare1Interrupt(voidFuncPtr handler) { - attachInterrupt(TIMER_CH1, handler); - } - - /** @brief Deprecated; use attachInterrupt(TIMER_CH2, handler) instead. */ - void attachCompare2Interrupt(voidFuncPtr handler) { - attachInterrupt(TIMER_CH2, handler); - } - - /** @brief Deprecated; use attachInterrupt(TIMER_CH3, handler) instead. */ - void attachCompare3Interrupt(voidFuncPtr handler) { - attachInterrupt(TIMER_CH3, handler); - } - - /** @brief Deprecated; use attachInterrupt(TIMER_CH4, handler) instead. */ - void attachCompare4Interrupt(voidFuncPtr handler) { - attachInterrupt(TIMER_CH4, handler); - } - - /** @brief Deprecated; use detachInterrupt(TIMER_CH1) instead. */ - void detachCompare1Interrupt(void) { detachInterrupt(TIMER_CH1); } - - /** @brief Deprecated; use detachInterrupt(TIMER_CH2) instead. */ - void detachCompare2Interrupt(void) { detachInterrupt(TIMER_CH2); } - - /** @brief Deprecated; use detachInterrupt(TIMER_CH3) instead. */ - void detachCompare3Interrupt(void) { detachInterrupt(TIMER_CH3); } - - /** @brief Deprecated; use detachInterrupt(TIMER_CH4) instead. */ - void detachCompare4Interrupt(void) { detachInterrupt(TIMER_CH4); } - - /** @brief Deprecated; use refresh() instead. */ - void generateUpdate(void) { refresh(); } -}; - -/** @brief Deprecated; use TIMER_OUTPUT_COMPARE instead. */ -#define TIMER_OUTPUTCOMPARE TIMER_OUTPUT_COMPARE - -/** - * @brief Deprecated. - * - * Pre-instantiated timer. - */ -extern HardwareTimer Timer1; -/** - * @brief Deprecated. - * - * Pre-instantiated timer. - */ -extern HardwareTimer Timer2; -/** - * @brief Deprecated. - * - * Pre-instantiated timer. - */ -extern HardwareTimer Timer3; -/** - * @brief Deprecated. - * - * Pre-instantiated timer. - */ -extern HardwareTimer Timer4; -#if (STM32_MCU_SERIES == STM32_SERIES_F1) && defined(STM32_HIGH_DENSITY) -/** - * @brief Deprecated. - * - * Pre-instantiated timer. - */ -extern HardwareTimer Timer5; -/** - * @brief Deprecated. - * - * Pre-instantiated timer. - */ -extern HardwareTimer Timer8; -#endif - -#endif diff --git a/STM32F3/cores/maple/wirish/Print.cpp b/STM32F3/cores/maple/wirish/Print.cpp deleted file mode 100644 index 9a8808dd3..000000000 --- a/STM32F3/cores/maple/wirish/Print.cpp +++ /dev/null @@ -1,244 +0,0 @@ -/* - * Print.cpp - Base class that provides print() and println() - * Copyright (c) 2008 David A. Mellis. All right reserved. - * Copyright (c) 2011 LeafLabs, LLC. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA - * - * Modified 23 November 2006 by David A. Mellis - * Modified 12 April 2011 by Marti Bolivar - */ - -#include - -#include -#include - -#ifndef LLONG_MAX -/* - * Note: - * - * At time of writing (12 April 2011), the limits.h that came with the - * newlib we distributed didn't include LLONG_MAX. Because we're - * staying away from using templates (see /notes/coding_standard.rst, - * "Language Features and Compiler Extensions"), this value was - * copy-pasted from a println() of the value - * - * std::numeric_limits::max(). - */ -#define LLONG_MAX 9223372036854775807LL -#endif - -/* - * Public methods - */ - -void Print::write(const char *str) { - while (*str) { - write(*str++); - } -} - -void Print::write(const void *buffer, uint32 size) { - uint8 *ch = (uint8*)buffer; - while (size--) { - write(*ch++); - } -} - -void Print::print(uint8 b, int base) { - print((uint64)b, base); -} - -void Print::print(char c) { - write(c); -} - -void Print::print(const char str[]) { - write(str); -} - -void Print::print(int n, int base) { - print((long long)n, base); -} - -void Print::print(unsigned int n, int base) { - print((unsigned long long)n, base); -} - -void Print::print(long n, int base) { - print((long long)n, base); -} - -void Print::print(unsigned long n, int base) { - print((unsigned long long)n, base); -} - -void Print::print(long long n, int base) { - if (n < 0) { - print('-'); - n = -n; - } - printNumber(n, base); -} - -void Print::print(unsigned long long n, int base) { - printNumber(n, base); -} - -void Print::print(double n, int digits) { - printFloat(n, digits); -} - -void Print::println(void) { - print('\r'); - print('\n'); -} - -void Print::println(char c) { - print(c); - println(); -} - -void Print::println(const char c[]) { - print(c); - println(); -} - -void Print::println(uint8 b, int base) { - print(b, base); - println(); -} - -void Print::println(int n, int base) { - print(n, base); - println(); -} - -void Print::println(unsigned int n, int base) { - print(n, base); - println(); -} - -void Print::println(long n, int base) { - print((long long)n, base); - println(); -} - -void Print::println(unsigned long n, int base) { - print((unsigned long long)n, base); - println(); -} - -void Print::println(long long n, int base) { - print(n, base); - println(); -} - -void Print::println(unsigned long long n, int base) { - print(n, base); - println(); -} - -void Print::println(double n, int digits) { - print(n, digits); - println(); -} - -/* - * Private methods - */ - -void Print::printNumber(unsigned long long n, uint8 base) { - unsigned char buf[CHAR_BIT * sizeof(long long)]; - unsigned long i = 0; - - if (n == 0) { - print('0'); - return; - } - - while (n > 0) { - buf[i++] = n % base; - n /= base; - } - - for (; i > 0; i--) { - print((char)(buf[i - 1] < 10 ? - '0' + buf[i - 1] : - 'A' + buf[i - 1] - 10)); - } -} - -/* According to snprintf(), - * - * nextafter((double)numeric_limits::max(), 0.0) ~= 9.22337e+18 - * - * This slightly smaller value was picked semi-arbitrarily. */ -#define LARGE_DOUBLE_TRESHOLD (9.1e18) - -/* THIS FUNCTION SHOULDN'T BE USED IF YOU NEED ACCURATE RESULTS. - * - * This implementation is meant to be simple and not occupy too much - * code size. However, printing floating point values accurately is a - * subtle task, best left to a well-tested library function. - * - * See Steele and White 2003 for more details: - * - * http://kurtstephens.com/files/p372-steele.pdf - */ -void Print::printFloat(double number, uint8 digits) { - // Hackish fail-fast behavior for large-magnitude doubles - if (abs(number) >= LARGE_DOUBLE_TRESHOLD) { - if (number < 0.0) { - print('-'); - } - print(""); - return; - } - - // Handle negative numbers - if (number < 0.0) { - print('-'); - number = -number; - } - - // Simplistic rounding strategy so that e.g. print(1.999, 2) - // prints as "2.00" - double rounding = 0.5; - for (uint8 i = 0; i < digits; i++) { - rounding /= 10.0; - } - number += rounding; - - // Extract the integer part of the number and print it - long long int_part = (long long)number; - double remainder = number - int_part; - print(int_part); - - // Print the decimal point, but only if there are digits beyond - if (digits > 0) { - print("."); - } - - // Extract digits from the remainder one at a time - while (digits-- > 0) { - remainder *= 10.0; - int to_print = (int)remainder; - print(to_print); - remainder -= to_print; - } -} diff --git a/STM32F3/cores/maple/wirish/Print.h b/STM32F3/cores/maple/wirish/Print.h deleted file mode 100644 index 52203eae0..000000000 --- a/STM32F3/cores/maple/wirish/Print.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Print.h - Base class that provides print() and println() - * Copyright (c) 2008 David A. Mellis. All right reserved. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA - * 02110-1301 USA. - * - * Modified 12 April 2011 by Marti Bolivar - */ - -#ifndef _WIRISH_PRINT_H_ -#define _WIRISH_PRINT_H_ - -#include - -enum { - BIN = 2, - OCT = 8, - DEC = 10, - HEX = 16 -}; - -class Print { -public: - virtual void write(uint8 ch) = 0; - virtual void write(const char *str); - virtual void write(const void *buf, uint32 len); - void print(char); - void print(const char[]); - void print(uint8, int=DEC); - void print(int, int=DEC); - void print(unsigned int, int=DEC); - void print(long, int=DEC); - void print(unsigned long, int=DEC); - void print(long long, int=DEC); - void print(unsigned long long, int=DEC); - void print(double, int=2); - void println(void); - void println(char); - void println(const char[]); - void println(uint8, int=DEC); - void println(int, int=DEC); - void println(unsigned int, int=DEC); - void println(long, int=DEC); - void println(unsigned long, int=DEC); - void println(long long, int=DEC); - void println(unsigned long long, int=DEC); - void println(double, int=2); -private: - void printNumber(unsigned long long, uint8); - void printFloat(double, uint8); -}; - -#endif diff --git a/STM32F3/cores/maple/wirish/bit_constants.h b/STM32F3/cores/maple/wirish/bit_constants.h deleted file mode 100644 index 4638f7635..000000000 --- a/STM32F3/cores/maple/wirish/bit_constants.h +++ /dev/null @@ -1,579 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @brief BIT[n] and binary literal defines, for Arduino - * compatibility. - */ - -#ifndef _WIRISH_BIT_CONSTANTS_H_ -#define _WIRISH_BIT_CONSTANTS_H_ - -#define BIT0 (1 << 0) -#define BIT1 (1 << 1) -#define BIT2 (1 << 2) -#define BIT3 (1 << 3) -#define BIT4 (1 << 4) -#define BIT5 (1 << 5) -#define BIT6 (1 << 6) -#define BIT7 (1 << 7) -#define BIT8 (1 << 8) -#define BIT9 (1 << 9) -#define BIT10 (1 << 10) -#define BIT11 (1 << 11) -#define BIT12 (1 << 12) -#define BIT13 (1 << 13) -#define BIT14 (1 << 14) -#define BIT15 (1 << 15) -#define BIT16 (1 << 16) -#define BIT17 (1 << 17) -#define BIT18 (1 << 18) -#define BIT19 (1 << 19) -#define BIT20 (1 << 20) -#define BIT21 (1 << 21) -#define BIT22 (1 << 22) -#define BIT23 (1 << 23) -#define BIT24 (1 << 24) -#define BIT25 (1 << 25) -#define BIT26 (1 << 26) -#define BIT27 (1 << 27) -#define BIT28 (1 << 28) -#define BIT29 (1 << 29) -#define BIT30 (1 << 30) -#define BIT31 (1 << 31) - -#define B0 0 -#define B00 0 -#define B000 0 -#define B0000 0 -#define B00000 0 -#define B000000 0 -#define B0000000 0 -#define B00000000 0 -#define B1 1 -#define B01 1 -#define B001 1 -#define B0001 1 -#define B00001 1 -#define B000001 1 -#define B0000001 1 -#define B00000001 1 -#define B10 2 -#define B010 2 -#define B0010 2 -#define B00010 2 -#define B000010 2 -#define B0000010 2 -#define B00000010 2 -#define B11 3 -#define B011 3 -#define B0011 3 -#define B00011 3 -#define B000011 3 -#define B0000011 3 -#define B00000011 3 -#define B100 4 -#define B0100 4 -#define B00100 4 -#define B000100 4 -#define B0000100 4 -#define B00000100 4 -#define B101 5 -#define B0101 5 -#define B00101 5 -#define B000101 5 -#define B0000101 5 -#define B00000101 5 -#define B110 6 -#define B0110 6 -#define B00110 6 -#define B000110 6 -#define B0000110 6 -#define B00000110 6 -#define B111 7 -#define B0111 7 -#define B00111 7 -#define B000111 7 -#define B0000111 7 -#define B00000111 7 -#define B1000 8 -#define B01000 8 -#define B001000 8 -#define B0001000 8 -#define B00001000 8 -#define B1001 9 -#define B01001 9 -#define B001001 9 -#define B0001001 9 -#define B00001001 9 -#define B1010 10 -#define B01010 10 -#define B001010 10 -#define B0001010 10 -#define B00001010 10 -#define B1011 11 -#define B01011 11 -#define B001011 11 -#define B0001011 11 -#define B00001011 11 -#define B1100 12 -#define B01100 12 -#define B001100 12 -#define B0001100 12 -#define B00001100 12 -#define B1101 13 -#define B01101 13 -#define B001101 13 -#define B0001101 13 -#define B00001101 13 -#define B1110 14 -#define B01110 14 -#define B001110 14 -#define B0001110 14 -#define B00001110 14 -#define B1111 15 -#define B01111 15 -#define B001111 15 -#define B0001111 15 -#define B00001111 15 -#define B10000 16 -#define B010000 16 -#define B0010000 16 -#define B00010000 16 -#define B10001 17 -#define B010001 17 -#define B0010001 17 -#define B00010001 17 -#define B10010 18 -#define B010010 18 -#define B0010010 18 -#define B00010010 18 -#define B10011 19 -#define B010011 19 -#define B0010011 19 -#define B00010011 19 -#define B10100 20 -#define B010100 20 -#define B0010100 20 -#define B00010100 20 -#define B10101 21 -#define B010101 21 -#define B0010101 21 -#define B00010101 21 -#define B10110 22 -#define B010110 22 -#define B0010110 22 -#define B00010110 22 -#define B10111 23 -#define B010111 23 -#define B0010111 23 -#define B00010111 23 -#define B11000 24 -#define B011000 24 -#define B0011000 24 -#define B00011000 24 -#define B11001 25 -#define B011001 25 -#define B0011001 25 -#define B00011001 25 -#define B11010 26 -#define B011010 26 -#define B0011010 26 -#define B00011010 26 -#define B11011 27 -#define B011011 27 -#define B0011011 27 -#define B00011011 27 -#define B11100 28 -#define B011100 28 -#define B0011100 28 -#define B00011100 28 -#define B11101 29 -#define B011101 29 -#define B0011101 29 -#define B00011101 29 -#define B11110 30 -#define B011110 30 -#define B0011110 30 -#define B00011110 30 -#define B11111 31 -#define B011111 31 -#define B0011111 31 -#define B00011111 31 -#define B100000 32 -#define B0100000 32 -#define B00100000 32 -#define B100001 33 -#define B0100001 33 -#define B00100001 33 -#define B100010 34 -#define B0100010 34 -#define B00100010 34 -#define B100011 35 -#define B0100011 35 -#define B00100011 35 -#define B100100 36 -#define B0100100 36 -#define B00100100 36 -#define B100101 37 -#define B0100101 37 -#define B00100101 37 -#define B100110 38 -#define B0100110 38 -#define B00100110 38 -#define B100111 39 -#define B0100111 39 -#define B00100111 39 -#define B101000 40 -#define B0101000 40 -#define B00101000 40 -#define B101001 41 -#define B0101001 41 -#define B00101001 41 -#define B101010 42 -#define B0101010 42 -#define B00101010 42 -#define B101011 43 -#define B0101011 43 -#define B00101011 43 -#define B101100 44 -#define B0101100 44 -#define B00101100 44 -#define B101101 45 -#define B0101101 45 -#define B00101101 45 -#define B101110 46 -#define B0101110 46 -#define B00101110 46 -#define B101111 47 -#define B0101111 47 -#define B00101111 47 -#define B110000 48 -#define B0110000 48 -#define B00110000 48 -#define B110001 49 -#define B0110001 49 -#define B00110001 49 -#define B110010 50 -#define B0110010 50 -#define B00110010 50 -#define B110011 51 -#define B0110011 51 -#define B00110011 51 -#define B110100 52 -#define B0110100 52 -#define B00110100 52 -#define B110101 53 -#define B0110101 53 -#define B00110101 53 -#define B110110 54 -#define B0110110 54 -#define B00110110 54 -#define B110111 55 -#define B0110111 55 -#define B00110111 55 -#define B111000 56 -#define B0111000 56 -#define B00111000 56 -#define B111001 57 -#define B0111001 57 -#define B00111001 57 -#define B111010 58 -#define B0111010 58 -#define B00111010 58 -#define B111011 59 -#define B0111011 59 -#define B00111011 59 -#define B111100 60 -#define B0111100 60 -#define B00111100 60 -#define B111101 61 -#define B0111101 61 -#define B00111101 61 -#define B111110 62 -#define B0111110 62 -#define B00111110 62 -#define B111111 63 -#define B0111111 63 -#define B00111111 63 -#define B1000000 64 -#define B01000000 64 -#define B1000001 65 -#define B01000001 65 -#define B1000010 66 -#define B01000010 66 -#define B1000011 67 -#define B01000011 67 -#define B1000100 68 -#define B01000100 68 -#define B1000101 69 -#define B01000101 69 -#define B1000110 70 -#define B01000110 70 -#define B1000111 71 -#define B01000111 71 -#define B1001000 72 -#define B01001000 72 -#define B1001001 73 -#define B01001001 73 -#define B1001010 74 -#define B01001010 74 -#define B1001011 75 -#define B01001011 75 -#define B1001100 76 -#define B01001100 76 -#define B1001101 77 -#define B01001101 77 -#define B1001110 78 -#define B01001110 78 -#define B1001111 79 -#define B01001111 79 -#define B1010000 80 -#define B01010000 80 -#define B1010001 81 -#define B01010001 81 -#define B1010010 82 -#define B01010010 82 -#define B1010011 83 -#define B01010011 83 -#define B1010100 84 -#define B01010100 84 -#define B1010101 85 -#define B01010101 85 -#define B1010110 86 -#define B01010110 86 -#define B1010111 87 -#define B01010111 87 -#define B1011000 88 -#define B01011000 88 -#define B1011001 89 -#define B01011001 89 -#define B1011010 90 -#define B01011010 90 -#define B1011011 91 -#define B01011011 91 -#define B1011100 92 -#define B01011100 92 -#define B1011101 93 -#define B01011101 93 -#define B1011110 94 -#define B01011110 94 -#define B1011111 95 -#define B01011111 95 -#define B1100000 96 -#define B01100000 96 -#define B1100001 97 -#define B01100001 97 -#define B1100010 98 -#define B01100010 98 -#define B1100011 99 -#define B01100011 99 -#define B1100100 100 -#define B01100100 100 -#define B1100101 101 -#define B01100101 101 -#define B1100110 102 -#define B01100110 102 -#define B1100111 103 -#define B01100111 103 -#define B1101000 104 -#define B01101000 104 -#define B1101001 105 -#define B01101001 105 -#define B1101010 106 -#define B01101010 106 -#define B1101011 107 -#define B01101011 107 -#define B1101100 108 -#define B01101100 108 -#define B1101101 109 -#define B01101101 109 -#define B1101110 110 -#define B01101110 110 -#define B1101111 111 -#define B01101111 111 -#define B1110000 112 -#define B01110000 112 -#define B1110001 113 -#define B01110001 113 -#define B1110010 114 -#define B01110010 114 -#define B1110011 115 -#define B01110011 115 -#define B1110100 116 -#define B01110100 116 -#define B1110101 117 -#define B01110101 117 -#define B1110110 118 -#define B01110110 118 -#define B1110111 119 -#define B01110111 119 -#define B1111000 120 -#define B01111000 120 -#define B1111001 121 -#define B01111001 121 -#define B1111010 122 -#define B01111010 122 -#define B1111011 123 -#define B01111011 123 -#define B1111100 124 -#define B01111100 124 -#define B1111101 125 -#define B01111101 125 -#define B1111110 126 -#define B01111110 126 -#define B1111111 127 -#define B01111111 127 -#define B10000000 128 -#define B10000001 129 -#define B10000010 130 -#define B10000011 131 -#define B10000100 132 -#define B10000101 133 -#define B10000110 134 -#define B10000111 135 -#define B10001000 136 -#define B10001001 137 -#define B10001010 138 -#define B10001011 139 -#define B10001100 140 -#define B10001101 141 -#define B10001110 142 -#define B10001111 143 -#define B10010000 144 -#define B10010001 145 -#define B10010010 146 -#define B10010011 147 -#define B10010100 148 -#define B10010101 149 -#define B10010110 150 -#define B10010111 151 -#define B10011000 152 -#define B10011001 153 -#define B10011010 154 -#define B10011011 155 -#define B10011100 156 -#define B10011101 157 -#define B10011110 158 -#define B10011111 159 -#define B10100000 160 -#define B10100001 161 -#define B10100010 162 -#define B10100011 163 -#define B10100100 164 -#define B10100101 165 -#define B10100110 166 -#define B10100111 167 -#define B10101000 168 -#define B10101001 169 -#define B10101010 170 -#define B10101011 171 -#define B10101100 172 -#define B10101101 173 -#define B10101110 174 -#define B10101111 175 -#define B10110000 176 -#define B10110001 177 -#define B10110010 178 -#define B10110011 179 -#define B10110100 180 -#define B10110101 181 -#define B10110110 182 -#define B10110111 183 -#define B10111000 184 -#define B10111001 185 -#define B10111010 186 -#define B10111011 187 -#define B10111100 188 -#define B10111101 189 -#define B10111110 190 -#define B10111111 191 -#define B11000000 192 -#define B11000001 193 -#define B11000010 194 -#define B11000011 195 -#define B11000100 196 -#define B11000101 197 -#define B11000110 198 -#define B11000111 199 -#define B11001000 200 -#define B11001001 201 -#define B11001010 202 -#define B11001011 203 -#define B11001100 204 -#define B11001101 205 -#define B11001110 206 -#define B11001111 207 -#define B11010000 208 -#define B11010001 209 -#define B11010010 210 -#define B11010011 211 -#define B11010100 212 -#define B11010101 213 -#define B11010110 214 -#define B11010111 215 -#define B11011000 216 -#define B11011001 217 -#define B11011010 218 -#define B11011011 219 -#define B11011100 220 -#define B11011101 221 -#define B11011110 222 -#define B11011111 223 -#define B11100000 224 -#define B11100001 225 -#define B11100010 226 -#define B11100011 227 -#define B11100100 228 -#define B11100101 229 -#define B11100110 230 -#define B11100111 231 -#define B11101000 232 -#define B11101001 233 -#define B11101010 234 -#define B11101011 235 -#define B11101100 236 -#define B11101101 237 -#define B11101110 238 -#define B11101111 239 -#define B11110000 240 -#define B11110001 241 -#define B11110010 242 -#define B11110011 243 -#define B11110100 244 -#define B11110101 245 -#define B11110110 246 -#define B11110111 247 -#define B11111000 248 -#define B11111001 249 -#define B11111010 250 -#define B11111011 251 -#define B11111100 252 -#define B11111101 253 -#define B11111110 254 -#define B11111111 255 - -#endif /* _BIT_CONSTANTS_H_ */ diff --git a/STM32F3/cores/maple/wirish/bits.h b/STM32F3/cores/maple/wirish/bits.h deleted file mode 100644 index 0a63c58c0..000000000 --- a/STM32F3/cores/maple/wirish/bits.h +++ /dev/null @@ -1,35 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* Note: Use of this header file is deprecated. Use bit_constants.h - instead. */ - -#ifndef _WIRISH_BITS_H_ -#define _WIRISH_BITS_H_ - -#include - -#endif diff --git a/STM32F3/cores/maple/wirish/boards.cpp b/STM32F3/cores/maple/wirish/boards.cpp deleted file mode 100644 index a693fa60a..000000000 --- a/STM32F3/cores/maple/wirish/boards.cpp +++ /dev/null @@ -1,215 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/boards.cpp - * @brief init() and board routines. - * - * This file is mostly interesting for the init() function, which - * configures Flash, the core clocks, and a variety of other available - * peripherals on the board so the rest of Wirish doesn't have to turn - * things on before using them. - * - * Prior to returning, init() calls boardInit(), which allows boards - * to perform any initialization they need to. This file includes a - * weak no-op definition of boardInit(), so boards that don't need any - * special initialization don't have to define their own. - * - * How init() works is chip-specific. See the boards_setup.cpp files - * under e.g. wirish/stm32f1/, wirish/stmf32f2 for the details, but be - * advised: their contents are unstable, and can/will change without - * notice. - */ - -#include -#include -#include -#include -#include -#include "boards_private.h" - -static void setup_flash(void); -static void setup_clocks(void); -static void setup_nvic(void); -static void setup_adcs(void); -static void setup_timers(void); - -/* - * Exported functions - */ - -void init(void) { - setup_flash(); - setup_clocks(); - setup_nvic(); - systick_init(SYSTICK_RELOAD_VAL); - wirish::priv::board_setup_gpio(); - setup_adcs(); - setup_timers(); - wirish::priv::board_setup_usb(); - wirish::priv::series_init(); - boardInit(); -} - -/* Provide a default no-op boardInit(). */ -__weak void boardInit(void) { -} - -/* You could farm this out to the files in boards/ if e.g. it takes - * too long to test on boards with lots of pins. */ -bool boardUsesPin(uint8 pin) { - for (int i = 0; i < BOARD_NR_USED_PINS; i++) { - if (pin == boardUsedPins[i]) { - return true; - } - } - return false; -} - -/* - * Auxiliary routines - */ - -static void setup_flash(void) { - // Turn on as many Flash "go faster" features as - // possible. flash_enable_features() just ignores any flags it - // can't support. - flash_enable_features(FLASH_PREFETCH | FLASH_ICACHE | FLASH_DCACHE); - // Configure the wait states, assuming we're operating at "close - // enough" to 3.3V. - flash_set_latency(FLASH_SAFE_WAIT_STATES); -} - -static void setup_clocks(void) { - // Turn on HSI. We'll switch to and run off of this while we're - // setting up the main PLL. - rcc_turn_on_clk(RCC_CLK_HSI); - - // Turn off and reset the clock subsystems we'll be using, as well - // as the clock security subsystem (CSS). Note that resetting CFGR - // to its default value of 0 implies a switch to HSI for SYSCLK. - RCC_BASE->CFGR = 0x00000000; - rcc_disable_css(); - rcc_turn_off_clk(RCC_CLK_PLL); - rcc_turn_off_clk(RCC_CLK_HSE); - wirish::priv::board_reset_pll(); - // Clear clock readiness interrupt flags and turn off clock - // readiness interrupts. - RCC_BASE->CIR = 0x00000000; - - // Enable HSE, and wait until it's ready. - rcc_turn_on_clk(RCC_CLK_HSE); - while (!rcc_is_clk_ready(RCC_CLK_HSE)) - ; - - // Configure AHBx, APBx, etc. prescalers and the main PLL. - wirish::priv::board_setup_clock_prescalers(); - rcc_configure_pll(&wirish::priv::w_board_pll_cfg); - - // Enable the PLL, and wait until it's ready. - rcc_turn_on_clk(RCC_CLK_PLL); - while(!rcc_is_clk_ready(RCC_CLK_PLL)) - ; - - // Finally, switch to the now-ready PLL as the main clock source. - rcc_switch_sysclk(RCC_CLKSRC_PLL); -} - -/* - * These addresses are where usercode starts when a bootloader is - * present. If no bootloader is present, the user NVIC usually starts - * at the Flash base address, 0x08000000. - */ -#define USER_ADDR_ROM 0x08005000 -#define USER_ADDR_RAM 0x20000C00 -extern char __text_start__; - -static void setup_nvic(void) { -#ifdef VECT_TAB_FLASH - nvic_init(USER_ADDR_ROM, 0); -#elif defined VECT_TAB_RAM - nvic_init(USER_ADDR_RAM, 0); -#elif defined VECT_TAB_BASE - nvic_init((uint32)0x08000000, 0); -#elif defined VECT_TAB_ADDR - // A numerically supplied value - nvic_init((uint32)VECT_TAB_ADDR, 0); -#else - // Use the __text_start__ value from the linker script; this - // should be the start of the vector table. - nvic_init((uint32)&__text_start__, 0); -#endif -} - -static void adc_default_config(const adc_dev *dev) { - adc_enable_single_swstart(dev); - adc_set_sample_rate(dev, wirish::priv::w_adc_smp); -} - -static void setup_adcs(void) { - adc_set_prescaler(wirish::priv::w_adc_pre); - adc_foreach(adc_default_config); -} - -static void timer_default_config(timer_dev *dev) { - timer_adv_reg_map *regs = (dev->regs).adv; - const uint16 full_overflow = 0xFFFF; - const uint16 half_duty = 0x8FFF; - - timer_init(dev); - timer_pause(dev); - - regs->CR1 = TIMER_CR1_ARPE; - regs->PSC = 1; - regs->SR = 0; - regs->DIER = 0; - regs->EGR = TIMER_EGR_UG; - switch (dev->type) { - case TIMER_ADVANCED: - regs->BDTR = TIMER_BDTR_MOE | TIMER_BDTR_LOCK_OFF; - // fall-through - case TIMER_GENERAL: - timer_set_reload(dev, full_overflow); - for (uint8 channel = 1; channel <= 4; channel++) { - if (timer_has_cc_channel(dev, channel)) { - timer_set_compare(dev, channel, half_duty); - timer_oc_set_mode(dev, channel, TIMER_OC_MODE_PWM_1, - TIMER_OC_PE); - } - } - // fall-through - case TIMER_BASIC: - break; - } - - timer_generate_update(dev); - timer_resume(dev); -} - -static void setup_timers(void) { - timer_foreach(timer_default_config); -} diff --git a/STM32F3/cores/maple/wirish/boards.h b/STM32F3/cores/maple/wirish/boards.h deleted file mode 100644 index 6676a0272..000000000 --- a/STM32F3/cores/maple/wirish/boards.h +++ /dev/null @@ -1,173 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Bryan Newbold. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/boards.h - * @author Bryan Newbold , - * Marti Bolivar - * @brief init() and board-specific pin information. - */ - -#ifndef _WIRISH_BOARDS_H_ -#define _WIRISH_BOARDS_H_ - -#include -#include -#include - -/* Set of all possible pin names; not all boards have all these (note - * that we use the Dx convention since all of the Maple's pins are - * "digital" pins (e.g. can be used with digitalRead() and - * digitalWrite()), but not all of them are connected to ADCs. */ -enum { - D0, D1, D2, D3, D4, D5, D6, D7, D8, D9, D10, D11, D12, D13, D14, D15, D16, - D17, D18, D19, D20, D21, D22, D23, D24, D25, D26, D27, D28, D29, D30, D31, - D32, D33, D34, D35, D36, D37, D38, D39, D40, D41, D42, D43, D44, D45, D46, - D47, D48, D49, D50, D51, D52, D53, D54, D55, D56, D57, D58, D59, D60, D61, - D62, D63, D64, D65, D66, D67, D68, D69, D70, D71, D72, D73, D74, D75, D76, - D77, D78, D79, D80, D81, D82, D83, D84, D85, D86, D87, D88, D89, D90, D91, - D92, D93, D94, D95, D96, D97, D98, D99, D100, D101, D102, D103, D104, D105, - D106, D107, D108, D109, D110, D111, }; - -/** - * @brief Maps each Maple pin to a corresponding stm32_pin_info. - * @see stm32_pin_info - */ -extern const stm32_pin_info PIN_MAP[]; - -/** - * @brief Pins capable of PWM output. - * - * Its length is BOARD_NR_PWM_PINS. - */ -extern const uint8 boardPWMPins[]; - -/** - * @brief Array of pins capable of analog input. - * - * Its length is BOARD_NR_ADC_PINS. - */ -extern const uint8 boardADCPins[]; - -/** - * @brief Pins which are connected to external hardware. - * - * For example, on Maple boards, it always at least includes - * BOARD_LED_PIN. Its length is BOARD_NR_USED_PINS. - */ -extern const uint8 boardUsedPins[]; - -/** - * @brief Generic board initialization function. - * - * This function is called before main(). It ensures that the clocks - * and peripherals are configured properly for use with wirish, then - * calls boardInit(). - * - * @see boardInit() - */ -void init(void); - -/** - * @brief Board-specific initialization function. - * - * This function is called from init() after all generic board - * initialization has been performed. Each board is required to - * define its own. - * - * @see init() - */ -extern void boardInit(void); - -/** - * @brief Test if a pin is used for a special purpose on your board. - * @param pin Pin to test - * @return true if the given pin is in boardUsedPins, and false otherwise. - * @see boardUsedPins - */ -bool boardUsesPin(uint8 pin); - -/* - * Derived and default board definitions - */ - -#define CLOCK_SPEED_MHZ CYCLES_PER_MICROSECOND -#define CLOCK_SPEED_HZ (CLOCK_SPEED_MHZ * 1000000UL) - -#ifndef SYSTICK_RELOAD_VAL -#define SYSTICK_RELOAD_VAL (1000 * CYCLES_PER_MICROSECOND - 1) -#endif - -#ifndef BOARD_BUTTON_PRESSED_LEVEL -#define BOARD_BUTTON_PRESSED_LEVEL HIGH -#endif - -/** - * @brief Does the board break out a USART/UART's RX and TX pins? - * - * BOARD_HAVE_USART(n) is nonzero iff USARTn is available (n must be - * an integer literal, 1 through 6). Also see BOARD_HAVE_USART1, ..., - * BOARD_HAVE_UART4 (sic), etc. - */ -#define BOARD_HAVE_USART(n) (defined(BOARD_USART##n##_TX_PIN) && \ - defined(BOARD_USART##n##_RX_PIN)) -/** Feature test: nonzero iff the board has USART1. */ -#define BOARD_HAVE_USART1 BOARD_HAVE_USART(1) -/** Feature test: nonzero iff the board has USART2, 0 otherwise. */ -#define BOARD_HAVE_USART2 BOARD_HAVE_USART(2) -/** Feature test: nonzero iff the board has USART3, 0 otherwise. */ -#define BOARD_HAVE_USART3 BOARD_HAVE_USART(3) -/** Feature test: nonzero iff the board has UART4, 0 otherwise. */ -#define BOARD_HAVE_UART4 BOARD_HAVE_USART(4) -/** Feature test: nonzero iff the board has UART5, 0 otherwise. */ -#define BOARD_HAVE_UART5 BOARD_HAVE_USART(5) -/** Feature test: nonzero iff the board has USART6, 0 otherwise. */ -#define BOARD_HAVE_USART6 BOARD_HAVE_USART(6) - -/** - * @brief Does the board break out a SPI peripheral's pins? - * - * BOARD_HAVE_SPI(n) is nonzero iff SPIn is available (n must be an - * integer literal: 1, 2, or 3). Also see BOARD_HAVE_SPI1, - * BOARD_HAVE_SPI2, BOARD_HAVE_SPI3. */ -#define BOARD_HAVE_SPI(n) (defined(BOARD_SPI##n##_NSS_PIN) && \ - defined(BOARD_SPI##n##_SCK_PIN) && \ - defined(BOARD_SPI##n##_MISO_PIN) && \ - defined(BOARD_SPI##n##_MOSI_PIN)) -/** Feature test: nonzero iff the board has SPI1. */ -#define BOARD_HAVE_SPI1 BOARD_HAVE_SPI(1) -/** Feature test: nonzero iff the board has SPI2. */ -#define BOARD_HAVE_SPI2 BOARD_HAVE_SPI(2) -/** Feature test: nonzero iff the board has SPI3. */ -#define BOARD_HAVE_SPI3 BOARD_HAVE_SPI(3) - -/** - * @brief Feature test: nonzero iff the board has SerialUSB. - */ -#define BOARD_HAVE_SERIALUSB (defined(BOARD_USB_DISC_DEV) && \ - defined(BOARD_USB_DISC_BIT)) - -#endif diff --git a/STM32F3/cores/maple/wirish/boards_private.h b/STM32F3/cores/maple/wirish/boards_private.h deleted file mode 100644 index 49867ca77..000000000 --- a/STM32F3/cores/maple/wirish/boards_private.h +++ /dev/null @@ -1,71 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/boards_private.h - * @author Marti Bolivar - * @brief Private board support header. - * - * This file declares chip-specific variables and functions which - * determine how init() behaves. It is not part of the public Wirish - * API, and can change without notice. - */ - -#ifndef _WIRISH_BOARDS_PRIVATE_H_ -#define _WIRISH_BOARDS_PRIVATE_H_ - -#include -#include - -/* Makes the PIN_MAP rows more human-readable. */ -#define PMAP_ROW(gpio_dev, gpio_bit, timer_dev, timer_ch, adc_dev, adc_ch) \ - { gpio_dev, timer_dev, adc_dev, gpio_bit, timer_ch, adc_ch } - -namespace wirish { - namespace priv { - - /* - * Chip-specific initialization data - */ - - extern rcc_pll_cfg w_board_pll_cfg; - extern adc_prescaler w_adc_pre; - extern adc_smp_rate w_adc_smp; - - /* - * Chip-specific initialization routines and helper functions. - */ - - void board_reset_pll(void); - void board_setup_clock_prescalers(void); - void board_setup_gpio(void); - void board_setup_usb(void); - void series_init(void); - - } -} - -#endif diff --git a/STM32F3/cores/maple/wirish/cxxabi-compat.cpp b/STM32F3/cores/maple/wirish/cxxabi-compat.cpp deleted file mode 100644 index 516b112ac..000000000 --- a/STM32F3/cores/maple/wirish/cxxabi-compat.cpp +++ /dev/null @@ -1,6 +0,0 @@ -/* We compile with nodefaultlibs, so we need to provide an error - * handler for an empty pure virtual function */ -extern "C" void __cxa_pure_virtual(void) { - while(1) - ; -} diff --git a/STM32F3/cores/maple/wirish/ext_interrupts.cpp b/STM32F3/cores/maple/wirish/ext_interrupts.cpp deleted file mode 100644 index 1195ea9cc..000000000 --- a/STM32F3/cores/maple/wirish/ext_interrupts.cpp +++ /dev/null @@ -1,90 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/ext_interrupts.cpp - * @brief Wiring-like interface for external interrupts - */ - -#include - -#include -#include - -#include - -static inline exti_trigger_mode exti_out_mode(ExtIntTriggerMode mode); - -void attachInterrupt(uint8 pin, voidFuncPtr handler, ExtIntTriggerMode mode) { - if (pin >= BOARD_NR_GPIO_PINS || !handler) { - return; - } - - exti_trigger_mode outMode = exti_out_mode(mode); - - exti_attach_interrupt((exti_num)(PIN_MAP[pin].gpio_bit), - gpio_exti_port(PIN_MAP[pin].gpio_device), - handler, - outMode); -} - -void attachInterrupt(uint8 pin, voidArgumentFuncPtr handler, void *arg, - ExtIntTriggerMode mode) { - if (pin >= BOARD_NR_GPIO_PINS || !handler) { - return; - } - - exti_trigger_mode outMode = exti_out_mode(mode); - - exti_attach_callback((exti_num)(PIN_MAP[pin].gpio_bit), - gpio_exti_port(PIN_MAP[pin].gpio_device), - handler, - arg, - outMode); -} - -void detachInterrupt(uint8 pin) { - if (pin >= BOARD_NR_GPIO_PINS) { - return; - } - - exti_detach_interrupt((exti_num)(PIN_MAP[pin].gpio_bit)); -} - -static inline exti_trigger_mode exti_out_mode(ExtIntTriggerMode mode) { - switch (mode) { - case RISING: - return EXTI_RISING; - case FALLING: - return EXTI_FALLING; - case CHANGE: - return EXTI_RISING_FALLING; - } - // Can't happen - ASSERT(0); - return (exti_trigger_mode)0; -} diff --git a/STM32F3/cores/maple/wirish/ext_interrupts.h b/STM32F3/cores/maple/wirish/ext_interrupts.h deleted file mode 100644 index ce1ca0346..000000000 --- a/STM32F3/cores/maple/wirish/ext_interrupts.h +++ /dev/null @@ -1,128 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/ext_interrupts.h - * @brief Wiring-like external interrupt prototypes and types. - */ - -#ifndef _WIRISH_EXT_INTERRUPTS_H_ -#define _WIRISH_EXT_INTERRUPTS_H_ - -#include -#include - -/** - * The kind of transition on an external pin which should trigger an - * interrupt. - */ -typedef enum ExtIntTriggerMode { - RISING, /**< To trigger an interrupt when the pin transitions LOW - to HIGH */ - FALLING, /**< To trigger an interrupt when the pin transitions - HIGH to LOW */ - CHANGE /**< To trigger an interrupt when the pin transitions from - LOW to HIGH or HIGH to LOW (i.e., when the pin - changes). */ -} ExtIntTriggerMode; - -/** - * @brief Registers an interrupt handler on a pin. - * - * The interrupt will be triggered on a given transition on the pin, - * as specified by the mode parameter. The handler runs in interrupt - * context. The new handler will replace whatever handler is - * currently registered for the pin, if any. - * - * @param pin Pin number - * @param handler Function to run upon external interrupt trigger. - * The handler should take no arguments, and have void - * return type. - * @param mode Type of transition to trigger on, e.g. falling, rising, etc. - * - * @sideeffect Registers a handler - * @see detachInterrupt() - */ -void attachInterrupt(uint8 pin, voidFuncPtr handler, ExtIntTriggerMode mode); - -/** - * @brief Registers an interrupt handler on a pin. - * - * The interrupt will be triggered on a given transition on the pin, - * as specified by the mode parameter. The handler runs in interrupt - * context. The new handler will replace whatever handler is - * currently registered for the pin, if any. - * - * @param pin Pin number - * @param handler Static class member function to run upon external interrupt - * trigger. The handler should take 1 argument and return void - * @param arg Argument that the handler will be passed when it's called. One - * use of this is to pass the specific instance of the class that - * will handle the interrupt. - * @param mode Type of transition to trigger on, e.g. falling, rising, etc. - * - * @sideeffect Registers a handler - * @see detachInterrupt() - */ -void attachInterrupt(uint8 pin, voidArgumentFuncPtr handler, void *arg, - ExtIntTriggerMode mode); - -/** - * @brief Disable any registered external interrupt. - * @param pin Maple pin number - * @sideeffect unregisters external interrupt handler - * @see attachInterrupt() - */ -void detachInterrupt(uint8 pin); - -/** - * Re-enable interrupts. - * - * Call this after noInterrupts() to re-enable interrupt handling, - * after you have finished with a timing-critical section of code. - * - * @see noInterrupts() - */ -static __always_inline void interrupts() { - nvic_globalirq_enable(); -} - -/** - * Disable interrupts. - * - * After calling this function, all user-programmable interrupts will - * be disabled. You can call this function before a timing-critical - * section of code, then call interrupts() to re-enable interrupt - * handling. - * - * @see interrupts() - */ -static __always_inline void noInterrupts() { - nvic_globalirq_disable(); -} - -#endif - diff --git a/STM32F3/cores/maple/wirish/io.h b/STM32F3/cores/maple/wirish/io.h deleted file mode 100644 index 08bbc061d..000000000 --- a/STM32F3/cores/maple/wirish/io.h +++ /dev/null @@ -1,222 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/io.h - * @brief Wiring-style pin I/O interface. - */ - -#ifndef _WIRISH_IO_H_ -#define _WIRISH_IO_H_ - -#include -#include - -/** - * Specifies a GPIO pin behavior. - * @see pinMode() - */ -typedef enum WiringPinMode { - OUTPUT, /**< Basic digital output: when the pin is HIGH, the - voltage is held at +3.3v (Vcc) and when it is LOW, it - is pulled down to ground. */ - - OUTPUT_OPEN_DRAIN, /**< In open drain mode, the pin indicates - "low" by accepting current flow to ground - and "high" by providing increased - impedance. An example use would be to - connect a pin to a bus line (which is pulled - up to a positive voltage by a separate - supply through a large resistor). When the - pin is high, not much current flows through - to ground and the line stays at positive - voltage; when the pin is low, the bus - "drains" to ground with a small amount of - current constantly flowing through the large - resistor from the external supply. In this - mode, no current is ever actually sourced - from the pin. */ - - INPUT, /**< Basic digital input. The pin voltage is sampled; when - it is closer to 3.3v (Vcc) the pin status is high, and - when it is closer to 0v (ground) it is low. If no - external circuit is pulling the pin voltage to high or - low, it will tend to randomly oscillate and be very - sensitive to noise (e.g., a breath of air across the pin - might cause the state to flip). */ - - INPUT_ANALOG, /**< This is a special mode for when the pin will be - used for analog (not digital) reads. Enables ADC - conversion to be performed on the voltage at the - pin. */ - - INPUT_PULLUP, /**< The state of the pin in this mode is reported - the same way as with INPUT, but the pin voltage - is gently "pulled up" towards +3.3v. This means - the state will be high unless an external device - is specifically pulling the pin down to ground, - in which case the "gentle" pull up will not - affect the state of the input. */ - - INPUT_PULLDOWN, /**< The state of the pin in this mode is reported - the same way as with INPUT, but the pin voltage - is gently "pulled down" towards 0v. This means - the state will be low unless an external device - is specifically pulling the pin up to 3.3v, in - which case the "gentle" pull down will not - affect the state of the input. */ - - INPUT_FLOATING, /**< Synonym for INPUT. */ - - PWM, /**< This is a special mode for when the pin will be used for - PWM output (a special case of digital output). */ - - PWM_OPEN_DRAIN, /**< Like PWM, except that instead of alternating - cycles of LOW and HIGH, the voltage on the pin - consists of alternating cycles of LOW and - floating (disconnected). */ -} WiringPinMode; - -/** - * Configure behavior of a GPIO pin. - * - * @param pin Number of pin to configure. - * @param mode Mode corresponding to desired pin behavior. - * @see WiringPinMode - */ -void pinMode(uint8 pin, WiringPinMode mode); - -#define HIGH 0x1 -#define LOW 0x0 - -/** - * Writes a (digital) value to a pin. The pin must have its - * mode set to OUTPUT or OUTPUT_OPEN_DRAIN. - * - * @param pin Pin to write to. - * @param value Either LOW (write a 0) or HIGH (write a 1). - * @see pinMode() - */ -void digitalWrite(uint8 pin, uint8 value); - -/** - * Read a digital value from a pin. The pin must have its mode set to - * one of INPUT, INPUT_PULLUP, and INPUT_PULLDOWN. - * - * @param pin Pin to read from. - * @return LOW or HIGH. - * @see pinMode() - */ -uint32 digitalRead(uint8 pin); - -/** - * Read an analog value from pin. This function blocks during ADC - * conversion, and has 12 bits of resolution. The pin must have its - * mode set to INPUT_ANALOG. - * - * @param pin Pin to read from. - * @return Converted voltage, in the range 0--4095, (i.e. a 12-bit ADC - * conversion). - * @see pinMode() - */ -uint16 analogRead(uint8 pin); - -/** - * Toggles the digital value at the given pin. - * - * The pin must have its mode set to OUTPUT. - * - * @param pin the pin to toggle. If the pin is HIGH, set it LOW. If - * it is LOW, set it HIGH. - * - * @see pinMode() - */ -void togglePin(uint8 pin); - -/** - * Toggle the LED. - * - * If the LED is on, turn it off. If it is off, turn it on. - * - * The LED must its mode set to OUTPUT. This can be accomplished - * portably over all LeafLabs boards by calling pinMode(BOARD_LED_PIN, - * OUTPUT) before calling this function. - * - * @see pinMode() - */ -static inline void toggleLED() { - togglePin(BOARD_LED_PIN); -} - -/** - * If the button is currently pressed, waits until the button is no - * longer being pressed, and returns true. Otherwise, returns false. - * - * The button pin must have its mode set to INPUT. This can be - * accomplished portably over all LeafLabs boards by calling - * pinMode(BOARD_BUTTON_PIN, INPUT). - * - * @see pinMode() - */ -uint8 isButtonPressed(uint8 pin=BOARD_BUTTON_PIN, - uint32 pressedLevel=BOARD_BUTTON_PRESSED_LEVEL); - -/** - * Wait until the button is pressed and released, timing out if no - * press occurs. - * - * The button pin must have its mode set to INPUT. This can be - * accomplished portably over all LeafLabs boards by calling - * pinMode(BOARD_BUTTON_PIN, INPUT). - * - * @param timeout_millis Number of milliseconds to wait until the - * button is pressed. If timeout_millis is left out (or 0), wait - * forever. - * - * @return true, if the button was pressed; false, if the timeout was - * reached. - * - * @see pinMode() - */ -uint8 waitForButtonPress(uint32 timeout_millis=0); - -/** - * Shift out a byte of data, one bit at a time. - * - * This function starts at either the most significant or least - * significant bit in a byte value, and shifts out each byte in order - * onto a data pin. After each bit is written to the data pin, a - * separate clock pin is pulsed to indicate that the new bit is - * available. - * - * @param dataPin Pin to shift data out on - * @param clockPin Pin to pulse after each bit is shifted out - * @param bitOrder Either MSBFIRST (big-endian) or LSBFIRST (little-endian). - * @param value Value to shift out - */ -void shiftOut(uint8 dataPin, uint8 clockPin, uint8 bitOrder, uint8 value); - -#endif diff --git a/STM32F3/cores/maple/wirish/main.cxx b/STM32F3/cores/maple/wirish/main.cxx deleted file mode 100644 index 9c0b9cc08..000000000 --- a/STM32F3/cores/maple/wirish/main.cxx +++ /dev/null @@ -1,40 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 LeafLabs LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -// Force init to be called *first*, i.e. before static object allocation. -// Otherwise, statically allocated objects that need libmaple may fail. - __attribute__(( constructor )) void premain() { - init(); -} - -int main(void) { - setup(); - - while (1) { - loop(); - } - return 0; -} diff --git a/STM32F3/cores/maple/wirish/pwm.cpp b/STM32F3/cores/maple/wirish/pwm.cpp deleted file mode 100644 index 44884cd12..000000000 --- a/STM32F3/cores/maple/wirish/pwm.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/pwm.cpp - * @brief Wiring-style pwmWrite(). - */ - -#include - -#include -#include - -#include - -void pwmWrite(uint8 pin, uint16 duty_cycle) { - if (pin >= BOARD_NR_GPIO_PINS) { - return; - } - timer_dev *dev = PIN_MAP[pin].timer_device; - uint8 cc_channel = PIN_MAP[pin].timer_channel; - ASSERT(dev && cc_channel); - timer_set_compare(dev, cc_channel, duty_cycle); -} diff --git a/STM32F3/cores/maple/wirish/pwm.h b/STM32F3/cores/maple/wirish/pwm.h deleted file mode 100644 index 6631d4232..000000000 --- a/STM32F3/cores/maple/wirish/pwm.h +++ /dev/null @@ -1,56 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/pwm.h - * @brief Wiring-style PWM interface. - */ - -#ifndef _WIRISH_PWM_H_ -#define _WIRISH_PWM_H_ - -#include - -/** - * As a convenience, analogWrite is an alias of pwmWrite to ease - * porting Arduino code. However, period and duty will have to be - * recalibrated. - */ -#define analogWrite pwmWrite - -/** - * Set the PWM duty on the given pin. - * - * User code is expected to determine and honor the maximum value - * (based on the configured period). - * - * @param pin PWM output pin - * @param duty_cycle Duty cycle to set. - */ -void pwmWrite(uint8 pin, uint16 duty_cycle); - -#endif - diff --git a/STM32F3/cores/maple/wirish/rules.mk b/STM32F3/cores/maple/wirish/rules.mk deleted file mode 100644 index 539e96661..000000000 --- a/STM32F3/cores/maple/wirish/rules.mk +++ /dev/null @@ -1,66 +0,0 @@ -# Standard things -sp := $(sp).x -dirstack_$(sp) := $(d) -d := $(dir) -BUILDDIRS += $(BUILD_PATH)/$(d) - -# Add board directory and MCU-specific directory to BUILDDIRS. These -# are in subdirectories, but they're logically part of the Wirish -# submodule. -ifeq ($(MCU_SERIES), stm32f3) -WIRISH_BOARD_PATH := boards/$(MCU_F3_LINE) -else -WIRISH_BOARD_PATH := boards/$(BOARD) -endif -BUILDDIRS += $(BUILD_PATH)/$(d)/$(WIRISH_BOARD_PATH) -BUILDDIRS += $(BUILD_PATH)/$(d)/$(MCU_SERIES) - -# Safe includes for Wirish. -WIRISH_INCLUDES := -I$(d)/include -I$(d)/$(WIRISH_BOARD_PATH)/include - -# Local flags. Add -I$(d) to allow for private includes. -CFLAGS_$(d) := $(LIBMAPLE_INCLUDES) $(WIRISH_INCLUDES) -I$(d) - -# Local rules and targets -sSRCS_$(d) := start.S -cSRCS_$(d) := start_c.c -cSRCS_$(d) += syscalls.c -cSRCS_$(d) += $(MCU_SERIES)/util_hooks.c -cppSRCS_$(d) := boards.cpp -cppSRCS_$(d) += cxxabi-compat.cpp -cppSRCS_$(d) += ext_interrupts.cpp -cppSRCS_$(d) += HardwareSerial.cpp -cppSRCS_$(d) += HardwareTimer.cpp -cppSRCS_$(d) += Print.cpp -cppSRCS_$(d) += pwm.cpp -ifeq ($(MCU_SERIES),$(filter $(MCU_SERIES),stm32f1 stm32f3)) # TODO port USB serial to F2 -cppSRCS_$(d) += usb_serial.cpp -cppSRCS_$(d) += HardwareSPI.cpp -endif -cppSRCS_$(d) += wirish_analog.cpp -cppSRCS_$(d) += wirish_digital.cpp -cppSRCS_$(d) += wirish_math.cpp -cppSRCS_$(d) += wirish_shift.cpp -cppSRCS_$(d) += wirish_time.cpp -cppSRCS_$(d) += $(MCU_SERIES)/boards_setup.cpp -cppSRCS_$(d) += $(MCU_SERIES)/wirish_digital.cpp -cppSRCS_$(d) += $(MCU_SERIES)/wirish_debug.cpp -cppSRCS_$(d) += $(WIRISH_BOARD_PATH)/board.cpp - -sFILES_$(d) := $(sSRCS_$(d):%=$(d)/%) -cFILES_$(d) := $(cSRCS_$(d):%=$(d)/%) -cppFILES_$(d) := $(cppSRCS_$(d):%=$(d)/%) - -OBJS_$(d) := $(sFILES_$(d):%.S=$(BUILD_PATH)/%.o) \ - $(cFILES_$(d):%.c=$(BUILD_PATH)/%.o) \ - $(cppFILES_$(d):%.cpp=$(BUILD_PATH)/%.o) -DEPS_$(d) := $(OBJS_$(d):%.o=%.d) - -$(OBJS_$(d)): TGT_CFLAGS := $(CFLAGS_$(d)) - -TGT_BIN += $(OBJS_$(d)) - -# Standard things --include $(DEPS_$(d)) -d := $(dirstack_$(sp)) -sp := $(basename $(sp)) diff --git a/STM32F3/cores/maple/wirish/stm32f3/boards_setup.cpp b/STM32F3/cores/maple/wirish/stm32f3/boards_setup.cpp deleted file mode 100644 index 698441974..000000000 --- a/STM32F3/cores/maple/wirish/stm32f3/boards_setup.cpp +++ /dev/null @@ -1,92 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. -*****************************************************************************/ - -/** - * @file wirish/stm32f3/boards_setup.cpp - * @author Marti Bolivar , - * Hanspeter Portner - * @brief STM32F3 chip setup. - * - * This file controls how init() behaves on the STM32F3. Be very - * careful when changing anything here. Many of these values depend - * upon each other. - */ - -#include "boards_private.h" - -#include -#include - -#include -#include -#include -#include - -// Allow boards to provide a PLL multiplier. This is useful for -// e.g. STM32F300 value line MCUs, which use slower multipliers. -// (We're leaving the default to RCC_PLLMUL_9 for now, since that -// works for F303 performance line MCUs, which is all that LeafLabs -// currently officially supports). -#ifndef BOARD_RCC_PLLMUL -#define BOARD_RCC_PLLMUL RCC_PLLMUL_9 -#endif - -namespace wirish { - namespace priv { - - static stm32f3_rcc_pll_data pll_data = {.pll_mul=BOARD_RCC_PLLMUL, .pclk_prediv=RCC_PREDIV_PCLK_DIV_1}; - __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; - __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK_DIV_1; - __weak adc_smp_rate w_adc_smp = ADC_SMPR_181_5; - - __weak void board_reset_pll(void) { - // TODO - } - - __weak void board_setup_clock_prescalers(void) { - rcc_set_prescaler(RCC_PRESCALER_AHB, RCC_AHB_SYSCLK_DIV_1); - rcc_set_prescaler(RCC_PRESCALER_APB1, RCC_APB1_HCLK_DIV_2); - rcc_set_prescaler(RCC_PRESCALER_APB2, RCC_APB2_HCLK_DIV_1); - } - - __weak void board_setup_gpio(void) { - gpio_init_all(); - } - - __weak void board_setup_usb(void) { - SerialUSB.begin(); - } - - __weak void series_init(void) { - /* We need SYSCFG for external interrupts */ - syscfg_init(); - - /* enable floating point unit */ - fpu_enable(); - } - } -} diff --git a/STM32F3/cores/maple/wirish/stm32f3/f3_wirish_digital.cpp b/STM32F3/cores/maple/wirish/stm32f3/f3_wirish_digital.cpp deleted file mode 100644 index 50cda6019..000000000 --- a/STM32F3/cores/maple/wirish/stm32f3/f3_wirish_digital.cpp +++ /dev/null @@ -1,99 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* - * STM32F3 implementations for basic GPIO functionality. - */ - -#include - -#include -#include - -#include - -void pinMode(uint8 pin, WiringPinMode w_mode) { - if (pin >= BOARD_NR_GPIO_PINS) { - return; - } - - gpio_pin_mode mode; - // People always do the silly pin-toggle speed benchmark, so let's - // accomodate them: - unsigned flags = GPIO_MODEF_SPEED_HIGH; - bool pwm = false; - switch(w_mode) { - case OUTPUT: - mode = GPIO_MODE_OUTPUT; - break; - case OUTPUT_OPEN_DRAIN: - mode = GPIO_MODE_OUTPUT; - flags |= GPIO_MODEF_TYPE_OD; - break; - case INPUT: - case INPUT_FLOATING: - mode = GPIO_MODE_INPUT; - break; - case INPUT_ANALOG: - mode = GPIO_MODE_ANALOG; - break; - case INPUT_PULLUP: - mode = GPIO_MODE_INPUT; - flags |= GPIO_MODEF_PUPD_PU; - break; - case INPUT_PULLDOWN: - mode = GPIO_MODE_INPUT; - flags |= GPIO_MODEF_PUPD_PD; - break; - case PWM: - mode = GPIO_MODE_AF; - pwm = true; - break; - case PWM_OPEN_DRAIN: - mode = GPIO_MODE_AF; - flags |= GPIO_MODEF_TYPE_OD; - pwm = true; - break; - default: - ASSERT(0); // Can't happen - return; - } - - const stm32_pin_info *info = &PIN_MAP[pin]; - - if (pwm) { - /* If enabling PWM, tell the timer to do PWM, and tell the pin - * to listen to the right timer. */ - ASSERT(info->timer_device != NULL); - if (info->timer_device == NULL) { - return; - } - gpio_af timer_af = timer_get_af(info->timer_device); - timer_set_mode(info->timer_device, info->timer_channel, TIMER_PWM); - gpio_set_af(info->gpio_device, info->gpio_bit, timer_af); - } - gpio_set_modef(info->gpio_device, info->gpio_bit, mode, flags); -} diff --git a/STM32F3/cores/maple/wirish/stm32f3/util_hooks.c b/STM32F3/cores/maple/wirish/stm32f3/util_hooks.c deleted file mode 100644 index 2387cf7ae..000000000 --- a/STM32F3/cores/maple/wirish/stm32f3/util_hooks.c +++ /dev/null @@ -1,45 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* - * STM32F3 implementations for libmaple util.c hooks - * FIXME these are just minimal stubs - */ - -#include - -/* - * Disables all peripheral interrupts. Called by __error() with global - * interrupts disabled. - */ -void __lm_error(void) { - nvic_irq_disable_all(); -} - -/* - * Enable the error USART for writing. - */ -/* usart_dev* __lm_enable_error_usart(void) { (TODO) } */ diff --git a/STM32F3/cores/maple/wirish/stm32f3/wirish_debug.cpp b/STM32F3/cores/maple/wirish/stm32f3/wirish_debug.cpp deleted file mode 100644 index 6a6e1c180..000000000 --- a/STM32F3/cores/maple/wirish/stm32f3/wirish_debug.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/stm32f3/wirish_debug.cpp - * @brief High level debug port configuration - */ - -#include -#include -#include - -void disableDebugPorts(void) { - // BOARD_JTMS_SWDIO_PIN-BOARD_JTDI_PIN and BOARD_JTDO_PIN-BOARD_NJTRST_PIN are in system alternate function mode on - // reset, to support JTAG. Just put them in input mode to release - // them. - gpio_set_modef(PIN_MAP[BOARD_JTMS_SWDIO_PIN].gpio_device, PIN_MAP[BOARD_JTMS_SWDIO_PIN].gpio_bit, - GPIO_MODE_INPUT, GPIO_MODEF_PUPD_NONE); - gpio_set_modef(PIN_MAP[BOARD_JTCK_SWCLK_PIN].gpio_device, PIN_MAP[BOARD_JTCK_SWCLK_PIN].gpio_bit, - GPIO_MODE_INPUT, GPIO_MODEF_PUPD_NONE); - gpio_set_modef(PIN_MAP[BOARD_JTDI_PIN].gpio_device, PIN_MAP[BOARD_JTDI_PIN].gpio_bit, - GPIO_MODE_INPUT, GPIO_MODEF_PUPD_NONE); - gpio_set_modef(PIN_MAP[BOARD_JTDO_PIN].gpio_device, PIN_MAP[BOARD_JTDO_PIN].gpio_bit, - GPIO_MODE_INPUT, GPIO_MODEF_PUPD_NONE); - gpio_set_modef(PIN_MAP[BOARD_NJTRST_PIN].gpio_device, PIN_MAP[BOARD_NJTRST_PIN].gpio_bit, - GPIO_MODE_INPUT, GPIO_MODEF_PUPD_NONE); -} - -void enableDebugPorts(void) { - // Put BOARD_JTMS_SWDIO_PIN-BOARD_JTDI_PIN and BOARD_JTDO_PIN-BOARD_NJTRST_PIN back in system AF mode. - gpio_set_modef(PIN_MAP[BOARD_JTMS_SWDIO_PIN].gpio_device, PIN_MAP[BOARD_JTMS_SWDIO_PIN].gpio_bit, - GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(PIN_MAP[BOARD_JTCK_SWCLK_PIN].gpio_device, PIN_MAP[BOARD_JTCK_SWCLK_PIN].gpio_bit, - GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(PIN_MAP[BOARD_JTDI_PIN].gpio_device, PIN_MAP[BOARD_JTDI_PIN].gpio_bit, - GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(PIN_MAP[BOARD_JTDO_PIN].gpio_device, PIN_MAP[BOARD_JTDO_PIN].gpio_bit, - GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - gpio_set_modef(PIN_MAP[BOARD_NJTRST_PIN].gpio_device, PIN_MAP[BOARD_NJTRST_PIN].gpio_bit, - GPIO_MODE_AF, GPIO_MODEF_TYPE_PP); - - gpio_set_af(PIN_MAP[BOARD_JTMS_SWDIO_PIN].gpio_device, PIN_MAP[BOARD_JTMS_SWDIO_PIN].gpio_bit, GPIO_AF_0); - gpio_set_af(PIN_MAP[BOARD_JTCK_SWCLK_PIN].gpio_device, PIN_MAP[BOARD_JTCK_SWCLK_PIN].gpio_bit, GPIO_AF_0); - gpio_set_af(PIN_MAP[BOARD_JTDI_PIN].gpio_device, PIN_MAP[BOARD_JTDI_PIN].gpio_bit, GPIO_AF_0); - gpio_set_af(PIN_MAP[BOARD_JTDO_PIN].gpio_device, PIN_MAP[BOARD_JTDO_PIN].gpio_bit, GPIO_AF_0); - gpio_set_af(PIN_MAP[BOARD_NJTRST_PIN].gpio_device, PIN_MAP[BOARD_NJTRST_PIN].gpio_bit, GPIO_AF_0); -} diff --git a/STM32F3/cores/maple/wirish/syscalls.c b/STM32F3/cores/maple/wirish/syscalls.c deleted file mode 100644 index a3b6d2c85..000000000 --- a/STM32F3/cores/maple/wirish/syscalls.c +++ /dev/null @@ -1,175 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/syscalls.c - * @brief newlib stubs - * - * Low level system routines used by newlib for basic I/O and memory - * allocation. You can override most of these. - */ - -#include - -#include -#include - -/* If CONFIG_HEAP_START (or CONFIG_HEAP_END) isn't defined, then - * assume _lm_heap_start (resp. _lm_heap_end) is appropriately set by - * the linker */ -#ifndef CONFIG_HEAP_START -extern char _lm_heap_start; -#define CONFIG_HEAP_START ((caddr_t)&_lm_heap_start) -#endif -#ifndef CONFIG_HEAP_END -extern char _lm_heap_end; -#define CONFIG_HEAP_END ((caddr_t)&_lm_heap_end) -#endif - -/* - * _sbrk -- Increment the program break. - * - * Get incr bytes more RAM (for use by the heap). malloc() and - * friends call this function behind the scenes. - */ -caddr_t _sbrk(int incr) { - static caddr_t pbreak = NULL; /* current program break */ - caddr_t ret; - - if (pbreak == NULL) { - pbreak = CONFIG_HEAP_START; - } - - if ((CONFIG_HEAP_END - pbreak < incr) || - (pbreak - CONFIG_HEAP_START < -incr)) { - errno = ENOMEM; - return (caddr_t)-1; - } - - ret = pbreak; - pbreak += incr; - return ret; -} - -__weak int _open(const char *path, int flags, ...) { - return 1; -} - -__weak int _close(int fd) { - return 0; -} - -__weak int _fstat(int fd, struct stat *st) { - st->st_mode = S_IFCHR; - return 0; -} - -__weak int _isatty(int fd) { - return 1; -} - -__weak int isatty(int fd) { - return 1; -} - -__weak int _lseek(int fd, off_t pos, int whence) { - return -1; -} - -__weak unsigned char getch(void) { - return 0; -} - - -__weak int _read(int fd, char *buf, size_t cnt) { - *buf = getch(); - - return 1; -} - -__weak void putch(unsigned char c) { -} - -__weak void cgets(char *s, int bufsize) { - char *p; - int c; - int i; - - for (i = 0; i < bufsize; i++) { - *(s+i) = 0; - } -// memset(s, 0, bufsize); - - p = s; - - for (p = s; p < s + bufsize-1;) { - c = getch(); - switch (c) { - case '\r' : - case '\n' : - putch('\r'); - putch('\n'); - *p = '\n'; - return; - - case '\b' : - if (p > s) { - *p-- = 0; - putch('\b'); - putch(' '); - putch('\b'); - } - break; - - default : - putch(c); - *p++ = c; - break; - } - } - return; -} - -__weak int _write(int fd, const char *buf, size_t cnt) { - int i; - - for (i = 0; i < cnt; i++) - putch(buf[i]); - - return cnt; -} - -/* Override fgets() in newlib with a version that does line editing */ -__weak char *fgets(char *s, int bufsize, void *f) { - cgets(s, bufsize); - return s; -} - -__weak void _exit(int exitcode) { - while (1) - ; -} diff --git a/STM32F3/cores/maple/wirish/usb_serial.cpp b/STM32F3/cores/maple/wirish/usb_serial.cpp deleted file mode 100644 index d21766f50..000000000 --- a/STM32F3/cores/maple/wirish/usb_serial.cpp +++ /dev/null @@ -1,260 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @brief USB virtual serial terminal - */ - -#include - -#include -#include - -#include -#include -#include - -#include - -/* - * Hooks used for bootloader reset signalling - */ - -#if BOARD_HAVE_SERIALUSB -static void rxHook(unsigned, void*); -static void ifaceSetupHook(unsigned, void*); -#endif - -/* - * USBSerial interface - */ - -#define USB_TIMEOUT 50 - -USBSerial::USBSerial(void) { -#if !BOARD_HAVE_SERIALUSB - ASSERT(0); -#endif -} - -void USBSerial::begin(void) { -#if BOARD_HAVE_SERIALUSB - usb_cdcacm_enable(BOARD_USB_DISC_DEV, BOARD_USB_DISC_BIT); - usb_cdcacm_set_hooks(USB_CDCACM_HOOK_RX, rxHook); - usb_cdcacm_set_hooks(USB_CDCACM_HOOK_IFACE_SETUP, ifaceSetupHook); -#endif -} - -void USBSerial::end(void) { -#if BOARD_HAVE_SERIALUSB - usb_cdcacm_disable(BOARD_USB_DISC_DEV, BOARD_USB_DISC_BIT); - usb_cdcacm_remove_hooks(USB_CDCACM_HOOK_RX | USB_CDCACM_HOOK_IFACE_SETUP); -#endif -} - -void USBSerial::write(uint8 ch) { - this->write(&ch, 1); -} - -void USBSerial::write(const char *str) { - this->write(str, strlen(str)); -} - -void USBSerial::write(const void *buf, uint32 len) { - if (!this->isConnected() || !buf) { - return; - } - - uint32 txed = 0; - uint32 old_txed = 0; - uint32 start = millis(); - - uint32 sent = 0; - - while (txed < len && (millis() - start < USB_TIMEOUT)) { - sent = usb_cdcacm_tx((const uint8*)buf + txed, len - txed); - txed += sent; - if (old_txed != txed) { - start = millis(); - } - old_txed = txed; - } - - - if (sent == USB_CDCACM_TX_EPSIZE) { - while (usb_cdcacm_is_transmitting() != 0) { - } - /* flush out to avoid having the pc wait for more data */ - usb_cdcacm_tx(NULL, 0); - } -} - -uint32 USBSerial::available(void) { - return usb_cdcacm_data_available(); -} - -uint32 USBSerial::read(void *buf, uint32 len) { - if (!buf) { - return 0; - } - - uint32 rxed = 0; - while (rxed < len) { - rxed += usb_cdcacm_rx((uint8*)buf + rxed, len - rxed); - } - - return rxed; -} - -/* Blocks forever until 1 byte is received */ -uint8 USBSerial::read(void) { - uint8 b; - this->read(&b, 1); - return b; -} - -uint8 USBSerial::pending(void) { - return usb_cdcacm_get_pending(); -} - -uint8 USBSerial::isConnected(void) { - return usb_is_connected(USBLIB) && usb_is_configured(USBLIB); -} - -uint8 USBSerial::getDTR(void) { - return usb_cdcacm_get_dtr(); -} - -uint8 USBSerial::getRTS(void) { - return usb_cdcacm_get_rts(); -} - -#if BOARD_HAVE_SERIALUSB -USBSerial SerialUSB; -#endif - -/* - * Bootloader hook implementations - */ - -#if BOARD_HAVE_SERIALUSB - -enum reset_state_t { - DTR_UNSET, - DTR_HIGH, - DTR_NEGEDGE, - DTR_LOW -}; - -static reset_state_t reset_state = DTR_UNSET; - -static void ifaceSetupHook(unsigned hook, void *requestvp) { - uint8 request = *(uint8*)requestvp; - - // Ignore requests we're not interested in. - if (request != USB_CDCACM_SET_CONTROL_LINE_STATE) { - return; - } - - // We need to see a negative edge on DTR before we start looking - // for the in-band magic reset byte sequence. - uint8 dtr = usb_cdcacm_get_dtr(); - switch (reset_state) { - case DTR_UNSET: - reset_state = dtr ? DTR_HIGH : DTR_LOW; - break; - case DTR_HIGH: - reset_state = dtr ? DTR_HIGH : DTR_NEGEDGE; - break; - case DTR_NEGEDGE: - reset_state = dtr ? DTR_HIGH : DTR_LOW; - break; - case DTR_LOW: - reset_state = dtr ? DTR_HIGH : DTR_LOW; - break; - } -} - -#define RESET_DELAY 100000 -static void wait_reset(void) { - delay_us(RESET_DELAY); - nvic_sys_reset(); -} - -#define STACK_TOP 0x20000800 -#define EXC_RETURN 0xFFFFFFF9 -#define DEFAULT_CPSR 0x61000000 -static void rxHook(unsigned hook, void *ignored) { - /* FIXME this is mad buggy; we need a new reset sequence. E.g. NAK - * after each RX means you can't reset if any bytes are waiting. */ - if (reset_state == DTR_NEGEDGE) { - reset_state = DTR_LOW; - - if (usb_cdcacm_data_available() >= 4) { - // The magic reset sequence is "1EAF". - static const uint8 magic[4] = {'1', 'E', 'A', 'F'}; - uint8 chkBuf[4]; - - // Peek at the waiting bytes, looking for reset sequence, - // bailing on mismatch. - usb_cdcacm_peek(chkBuf, 4); - for (unsigned i = 0; i < sizeof(magic); i++) { - if (chkBuf[i] != magic[i]) { - return; - } - } - - // Got the magic sequence -> reset, presumably into the bootloader. - // Return address is wait_reset, but we must set the thumb bit. - uintptr_t target = (uintptr_t)wait_reset | 0x1; - asm volatile("mov r0, %[stack_top] \n\t" // Reset stack - "mov sp, r0 \n\t" - "mov r0, #1 \n\t" - "mov r1, %[target_addr] \n\t" - "mov r2, %[cpsr] \n\t" - "push {r2} \n\t" // Fake xPSR - "push {r1} \n\t" // PC target addr - "push {r0} \n\t" // Fake LR - "push {r0} \n\t" // Fake R12 - "push {r0} \n\t" // Fake R3 - "push {r0} \n\t" // Fake R2 - "push {r0} \n\t" // Fake R1 - "push {r0} \n\t" // Fake R0 - "mov lr, %[exc_return] \n\t" - "bx lr" - : - : [stack_top] "r" (STACK_TOP), - [target_addr] "r" (target), - [exc_return] "r" (EXC_RETURN), - [cpsr] "r" (DEFAULT_CPSR) - : "r0", "r1", "r2"); - /* Can't happen. */ - ASSERT_FAULT(0); - } - } -} - -#endif // BOARD_HAVE_SERIALUSB diff --git a/STM32F3/cores/maple/wirish/usb_serial.h b/STM32F3/cores/maple/wirish/usb_serial.h deleted file mode 100644 index f36671b77..000000000 --- a/STM32F3/cores/maple/wirish/usb_serial.h +++ /dev/null @@ -1,67 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @brief Wirish USB virtual serial port (SerialUSB). - */ - -#ifndef _WIRISH_USB_SERIAL_H_ -#define _WIRISH_USB_SERIAL_H_ - -#include -#include - -/** - * @brief Virtual serial terminal. - */ -class USBSerial : public Print { -public: - USBSerial(void); - - void begin(void); - void end(void); - - uint32 available(void); - - uint32 read(void *buf, uint32 len); - uint8 read(void); - - void write(uint8); - void write(const char *str); - void write(const void*, uint32); - - uint8 getRTS(); - uint8 getDTR(); - uint8 isConnected(); - uint8 pending(); -}; - -#if BOARD_HAVE_SERIALUSB -extern USBSerial SerialUSB; -#endif - -#endif - diff --git a/STM32F3/cores/maple/wirish/wirish.h b/STM32F3/cores/maple/wirish/wirish.h deleted file mode 100644 index f1884b537..000000000 --- a/STM32F3/cores/maple/wirish/wirish.h +++ /dev/null @@ -1,77 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @brief Main include file for the Wirish core. - * - * Includes most of Wirish, and (transitively or otherwise) - * substantial pieces of libmaple proper. - */ - -#ifndef _WIRISH_WIRISH_H_ -#define _WIRISH_WIRISH_H_ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#if (STM32_MCU_SERIES == STM32_SERIES_F1) || (STM32_MCU_SERIES == STM32_SERIES_F3) /* FIXME [0.0.13?] port to F2 */ -#include -#endif -#include -#include -#include -#include - -#include - -#include - -/* Wiring macros and bit defines */ - -#define true 0x1 -#define false 0x0 - -#define LSBFIRST 0 -#define MSBFIRST 1 - -#define lowByte(w) ((w) & 0xFF) -#define highByte(w) (((w) >> 8) & 0xFF) -#define bitRead(value, bit) (((value) >> (bit)) & 0x01) -#define bitSet(value, bit) ((value) |= (1UL << (bit))) -#define bitClear(value, bit) ((value) &= ~(1UL << (bit))) -#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : \ - bitClear(value, bit)) -#define bit(b) (1UL << (b)) - -#endif - diff --git a/STM32F3/cores/maple/wirish/wirish_analog.cpp b/STM32F3/cores/maple/wirish/wirish_analog.cpp deleted file mode 100644 index 91ca0e28e..000000000 --- a/STM32F3/cores/maple/wirish/wirish_analog.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2011, 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/wirish_analog.cpp - * @brief Wiring-style analogRead() implementation. - */ - -#include -#include -#include - -/* Unlike Wiring and Arduino, this assumes that the pin's mode is set - * to INPUT_ANALOG. That's faster, but it does require some extra work - * on the user's part. Not too much, we think ;). */ -uint16 analogRead(uint8 pin) { - const adc_dev *dev = PIN_MAP[pin].adc_device; - if (dev == NULL) { - return 0; - } - - return adc_read(dev, PIN_MAP[pin].adc_channel); -} diff --git a/STM32F3/cores/maple/wirish/wirish_debug.h b/STM32F3/cores/maple/wirish/wirish_debug.h deleted file mode 100644 index 4edfd2772..000000000 --- a/STM32F3/cores/maple/wirish/wirish_debug.h +++ /dev/null @@ -1,57 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/wirish_debug.h - * @brief High level debug port configuration - */ - -#ifndef _WIRISH_WIRISH_DEBUG_H_ -#define _WIRISH_WIRISH_DEBUG_H_ - -#include - -/** - * @brief Disable the JTAG and Serial Wire (SW) debug ports. - * - * You can call this function in order to use the JTAG and SW debug - * pins as ordinary GPIOs. - * - * @see enableDebugPorts() - */ -void disableDebugPorts(void); - -/** - * @brief Enable the JTAG and Serial Wire (SW) debug ports. - * - * After you call this function, the JTAG and SW debug pins will no - * longer be usable as GPIOs. - * - * @see disableDebugPorts() - */ -void enableDebugPorts(void); - -#endif diff --git a/STM32F3/cores/maple/wirish/wirish_digital.cpp b/STM32F3/cores/maple/wirish/wirish_digital.cpp deleted file mode 100644 index 2711a33ee..000000000 --- a/STM32F3/cores/maple/wirish/wirish_digital.cpp +++ /dev/null @@ -1,94 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* - * Arduino-compatible digital I/O implementation. - */ - -#include - -#include -#include - -#include -#include - -uint32 digitalRead(uint8 pin) { - if (pin >= BOARD_NR_GPIO_PINS) { - return 0; - } - - return gpio_read_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit) ? - HIGH : LOW; -} - -void digitalWrite(uint8 pin, uint8 val) { - if (pin >= BOARD_NR_GPIO_PINS) { - return; - } - - gpio_write_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit, val); -} - -void togglePin(uint8 pin) { - if (pin >= BOARD_NR_GPIO_PINS) { - return; - } - - gpio_toggle_bit(PIN_MAP[pin].gpio_device, PIN_MAP[pin].gpio_bit); -} - -#define BUTTON_DEBOUNCE_DELAY 1 - -uint8 isButtonPressed(uint8 pin, uint32 pressedLevel) { - if (digitalRead(pin) == pressedLevel) { - delay(BUTTON_DEBOUNCE_DELAY); - while (digitalRead(pin) == pressedLevel) - ; - return true; - } - return false; -} - -uint8 waitForButtonPress(uint32 timeout) { - uint32 start = millis(); - uint32 time; - if (timeout == 0) { - while (!isButtonPressed()) - ; - return true; - } - do { - time = millis(); - /* properly handle wrap-around */ - if ((start > time && time + (0xffffffffU - start) > timeout) || - time - start > timeout) { - return false; - } - } while (!isButtonPressed()); - return true; -} diff --git a/STM32F3/cores/maple/wirish/wirish_math.cpp b/STM32F3/cores/maple/wirish/wirish_math.cpp deleted file mode 100644 index 1443b3c7f..000000000 --- a/STM32F3/cores/maple/wirish/wirish_math.cpp +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Modified by LeafLabs, LLC. - * - * Part of the Wiring project - http://wiring.org.co Copyright (c) - * 2004-06 Hernando Barragan Modified 13 August 2006, David A. Mellis - * for Arduino - http://www.arduino.cc/ - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - * USA - */ - -#include -#include - -void randomSeed(unsigned int seed) { - if (seed != 0) { - srand(seed); - } -} - -long random(long howbig) { - if (howbig == 0) { - return 0; - } - - return rand() % howbig; -} - -long random(long howsmall, long howbig) { - if (howsmall >= howbig) { - return howsmall; - } - - long diff = howbig - howsmall; - return random(diff) + howsmall; -} - diff --git a/STM32F3/cores/maple/wirish/wirish_math.h b/STM32F3/cores/maple/wirish/wirish_math.h deleted file mode 100644 index 39f16a055..000000000 --- a/STM32F3/cores/maple/wirish/wirish_math.h +++ /dev/null @@ -1,151 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/wirish_math.h - * @brief Includes ; provides Wiring-compatible math routines. - */ - -#ifndef _WIRISH_WIRISH_MATH_H_ -#define _WIRISH_WIRISH_MATH_H_ - -#include - -/** - * @brief Initialize the pseudo-random number generator. - * @param seed the number used to initialize the seed; cannot be zero. - */ -void randomSeed(unsigned int seed); - -/** - * @brief Generate a pseudo-random number with upper bound. - * @param max An upper bound on the returned value, exclusive. - * @return A pseudo-random number in the range [0,max). - * @see randomSeed() - */ -long random(long max); - -/** - * @brief Generate a pseudo-random number with lower and upper bounds. - * @param min Lower bound on the returned value, inclusive. - * @param max Upper bound on the returned value, exclusive. - * @return A pseudo-random number in the range [min, max). - * @see randomSeed() - */ -long random(long min, long max); - -/** - * @brief Remap a number from one range to another. - * - * That is, a value equal to fromStart gets mapped to toStart, a value - * of fromEnd to toEnd, and other values are mapped proportionately. - * - * Does not constrain value to lie within [fromStart, fromEnd]. - * - * If a "start" value is larger than its corresponding "end", the - * ranges are reversed, so map(n, 1, 10, 10, 1) would reverse the - * range [1,10]. - * - * Negative numbers may appear as any argument. - * - * @param value the value to map. - * @param fromStart the beginning of the value's current range. - * @param fromEnd the end of the value's current range. - * @param toStart the beginning of the value's mapped range. - * @param toEnd the end of the value's mapped range. - * @return the mapped value. - */ -static inline long map(long value, long fromStart, long fromEnd, - long toStart, long toEnd) { - return (value - fromStart) * (toEnd - toStart) / (fromEnd - fromStart) + - toStart; -} - -#define PI 3.1415926535897932384626433832795 -#define HALF_PI 1.5707963267948966192313216916398 -#define TWO_PI 6.283185307179586476925286766559 -#define DEG_TO_RAD 0.017453292519943295769236907684886 -#define RAD_TO_DEG 57.295779513082320876798154814105 - -#define min(a,b) ((a)<(b)?(a):(b)) -#define max(a,b) ((a)>(b)?(a):(b)) -#define constrain(amt,low,high) ((amt)<(low)?(low):((amt)>(high)?(high):(amt))) -#define round(x) ((x)>=0?(long)((x)+0.5):(long)((x)-0.5)) -#define radians(deg) ((deg)*DEG_TO_RAD) -#define degrees(rad) ((rad)*RAD_TO_DEG) -#define sq(x) ((x)*(x)) - -/* undefine stdlib's abs if encountered */ -#ifdef abs -#undef abs -#endif -#define abs(x) (((x) > 0) ? (x) : -(x)) - -/* Following are duplicate declarations (with Doxygen comments) for - * some of the math.h functions; this is for the convenience of the - * Sphinx docs. - */ - -/** - * Compute the cosine of an angle, in radians. - * @param x The radian measure of the angle. - * @return The cosine of x. This value will be between -1 and 1. - */ -double cos(double x); - -/** - * Compute the sine of an angle, in radians. - * @param x The radian measure of the angle. - * @return The sine of x. This value will be between -1 and 1. - */ -double sin(double x); - -/** - * Compute the tangent of an angle, in radians. - * @param x The radian measure of the angle. - * @return The tangent of x. There are no limits on the return value - * of this function. - */ -double tan(double x); - -/** - * Compute the square root of a number. - * @param x The number whose square root to find. This value cannot - * be negative. - * @return The square root of x. The return value is never negative. - */ -double sqrt(double x); - -/** - * Compute an exponentiation. - * @param x the base. This value cannot be zero if y <= 0. This value - * cannot be negative if y is not an integral value. - * @param y the exponent. - * @return x raised to the power y. - */ -double pow(double x, double y); - -#endif diff --git a/STM32F3/cores/maple/wirish/wirish_shift.cpp b/STM32F3/cores/maple/wirish/wirish_shift.cpp deleted file mode 100644 index a032d50f2..000000000 --- a/STM32F3/cores/maple/wirish/wirish_shift.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2012 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#include - -void shiftOut(uint8 dataPin, uint8 clockPin, uint8 bitOrder, uint8 value) { - digitalWrite(clockPin, LOW); - for (int i = 0; i < 8; i++) { - int bit = bitOrder == LSBFIRST ? i : (7 - i); - digitalWrite(dataPin, (value >> bit) & 0x1); - togglePin(clockPin); - togglePin(clockPin); - } -} diff --git a/STM32F3/cores/maple/wirish/wirish_time.cpp b/STM32F3/cores/maple/wirish/wirish_time.cpp deleted file mode 100644 index 9ce934b7c..000000000 --- a/STM32F3/cores/maple/wirish/wirish_time.cpp +++ /dev/null @@ -1,45 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @brief Delay implementation. - */ - -#include - -#include -#include - -void delay(unsigned long ms) { - uint32 i; - for (i = 0; i < ms; i++) { - delayMicroseconds(1000); - } -} - -void delayMicroseconds(uint32 us) { - delay_us(us); -} diff --git a/STM32F3/cores/maple/wirish/wirish_time.h b/STM32F3/cores/maple/wirish/wirish_time.h deleted file mode 100644 index eb6c68fd2..000000000 --- a/STM32F3/cores/maple/wirish/wirish_time.h +++ /dev/null @@ -1,95 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2010 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/wirish_time.h - * @brief Timing and delay functions. - */ - -#ifndef _WIRISH_WIRISH_TIME_H_ -#define _WIRISH_WIRISH_TIME_H_ - -#include -#include - -#include - -/** - * Returns time (in milliseconds) since the beginning of program - * execution. On overflow, restarts at 0. - * @see micros() - */ -static inline uint32 millis(void) { - return systick_uptime(); -} - -/** - * Returns time (in microseconds) since the beginning of program - * execution. On overflow, restarts at 0. - * @see millis() - */ -static inline uint32 micros(void) { - uint32 ms; - uint32 cycle_cnt; - - do { - ms = millis(); - cycle_cnt = systick_get_count(); - } while (ms != millis()); - -#define US_PER_MS 1000 - /* SYSTICK_RELOAD_VAL is 1 less than the number of cycles it - * actually takes to complete a SysTick reload */ - return ((ms * US_PER_MS) + - (SYSTICK_RELOAD_VAL + 1 - cycle_cnt) / CYCLES_PER_MICROSECOND); -#undef US_PER_MS -} - -/** - * Delay for at least the given number of milliseconds. - * - * Interrupts, etc. may cause the actual number of milliseconds to - * exceed ms. However, this function will return no less than ms - * milliseconds from the time it is called. - * - * @param ms the number of milliseconds to delay. - * @see delayMicroseconds() - */ -void delay(unsigned long ms); - -/** - * Delay for at least the given number of microseconds. - * - * Interrupts, etc. may cause the actual number of microseconds to - * exceed us. However, this function will return no less than us - * microseconds from the time it is called. - * - * @param us the number of microseconds to delay. - * @see delay() - */ -void delayMicroseconds(uint32 us); - -#endif diff --git a/STM32F3/cores/maple/wirish/wirish_types.h b/STM32F3/cores/maple/wirish/wirish_types.h deleted file mode 100644 index fce895ef0..000000000 --- a/STM32F3/cores/maple/wirish/wirish_types.h +++ /dev/null @@ -1,68 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/include/wirish/wirish_types.h - * @author Marti Bolivar - * @brief Wirish library type definitions. - */ - -#ifndef _WIRISH_WIRISH_TYPES_H_ -#define _WIRISH_WIRISH_TYPES_H_ - -#include -#include -#include -#include - -/** - * Invalid stm32_pin_info adc_channel value. - * @see stm32_pin_info - */ -#define ADCx 0xFF - -/** - * @brief Stores STM32-specific information related to a given Maple pin. - * @see PIN_MAP - */ -typedef struct stm32_pin_info { - gpio_dev *gpio_device; /**< Maple pin's GPIO device */ - timer_dev *timer_device; /**< Pin's timer device, if any. */ - const adc_dev *adc_device; /**< ADC device, if any. */ - uint8 gpio_bit; /**< Pin's GPIO port bit. */ - uint8 timer_channel; /**< Timer channel, or 0 if none. */ - uint8 adc_channel; /**< Pin ADC channel, or ADCx if none. */ -} stm32_pin_info; - -/** - * Variable attribute, instructs the linker to place the marked - * variable in Flash instead of RAM. */ -#define __FLASH__ __attr_flash - -typedef uint8 boolean; -typedef uint8 byte; - -#endif diff --git a/STM32F3/examples/Blinkf3/Blinkf3.ino b/STM32F3/examples/Blinkf3/Blinkf3.ino deleted file mode 100644 index 2bcb9290a..000000000 --- a/STM32F3/examples/Blinkf3/Blinkf3.ino +++ /dev/null @@ -1,38 +0,0 @@ -/* - Blink - Turns on an LED on for one second, then off for one second, repeatedly. - - Most Arduinos have an on-board LED you can control. On the Uno and - Leonardo, it is attached to digital pin 13. If you're unsure what - pin the on-board LED is connected to on your Arduino model, check - the documentation at http://arduino.cc - - This example code is in the public domain. - - modified 8 May 2014 - by Scott Fitzgerald - - modified for stm32f3discovery - 2015/02 by Frank-Michael Krause - */ - - -// the setup function runs once when you press reset or power the board -void setup() { - // initialize pins PE8, PE9 as an output. - pinMode(PE8, OUTPUT); - pinMode(PE9, OUTPUT); - Serial2.begin(9600); - Serial2.println("Hello world"); - -} - -// the loop function runs over and over again forever -void loop() { - digitalWrite(PE8, HIGH); // turn the LED on (HIGH is the voltage level) - digitalWrite(PE9, LOW); // turn the LED off by making the voltage LOW - delay(100); // wait for a second - digitalWrite(PE8, LOW); // turn the LED off by making the voltage LOW - digitalWrite(PE9, HIGH); // turn the LED on (HIGH is the voltage level) - delay(300); // wait for a second -} diff --git a/STM32F3/examples/f3_buttondemo/f3_buttondemo.ino b/STM32F3/examples/f3_buttondemo/f3_buttondemo.ino deleted file mode 100644 index c6a9c0d78..000000000 --- a/STM32F3/examples/f3_buttondemo/f3_buttondemo.ino +++ /dev/null @@ -1,54 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - - -/* - * This demo shows how to handle the blue button of the stm32f3discovery board - * - * Dieses Beispiel zeigt, wie die blaue Taste des Boards abgefragt werden kann. - * Es wird eine LED ein- bzw. ausgeschaltet. - */ - - -void setup() // Init-Funktion -{ - // BOARD_LED_PIN ist PE10 - pinMode(BOARD_LED_PIN, OUTPUT); - - // BOARD_BUTTTON_PIN ist PA0 - pinMode(BOARD_BUTTON_PIN, INPUT); - -} - - -void loop() -{ - if (isButtonPressed()) - togglePin(BOARD_LED_PIN); -} - - - diff --git a/STM32F3/examples/f3_functionTimer/f3_functionTimer.ino b/STM32F3/examples/f3_functionTimer/f3_functionTimer.ino deleted file mode 100644 index ca8fce9a1..000000000 --- a/STM32F3/examples/f3_functionTimer/f3_functionTimer.ino +++ /dev/null @@ -1,144 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - - -#include -#include - -/* - * Demo program function timer - * - * You can define functions register those functions at the timer system - * to be called after the time in ms given at timer start - * - * - there are 10 timers with id from 0 to 9 - * - the id has to be given at timer start - * - there can only be running one instance of a timer id at one time - * - at each timer start another function can be registered - * - time resolution is 5ms - * - * The registered function will be executed in interrupt context. - * Therefore the timer funtion shall be execute very fast. - * - * If using functtion timer and ultrasonic sensors in parallel the measurement results of - * the sensors can be slightly wrong. - * - * This demo controls three LEDs with different blinking rythms - */ - - -/* - * Demoprogramm fuer Funktions-Timer - * - * Es koennen Funktionen definiert und dem Timersystem-uebergeben werden, - * die nach einer uebergebenen Zeit aufgerufen werden. - * - * - Jeder Timer hat eine id zwischen 0 und 9, die beim Start angegeben werden muss. - * - Es kann nur ein Timer pro Id zu gleichen Zeit laufen - * - Es kann bei jedem Start eines Timers eine andere Funktion uebergeben werden. - * - * Die uebergebene Funktion wird im Interrupt-Kontext ausgefuehrt und unterbricht das - * normal in setup/loop ausgefuehrte Programm an beliebiger Stelle. - * Es ist darauf zu achten, dass die Timerfuntion moeglichst kurz, d.h. schnell ausfuehrbar, ist. - * - * Die parallele Ausfuehrung von Funktionstimern kann die Messergebnisse von Ultraschallsensoren - * leicht verfaelschen! - * - * Das Demoprogramm steuert drei LEDs mit unterschiedlichen Blink-Zeiten an. - * - */ - - - -// 500ms Bink mit Steuerung ueber Timer-Id 0 -#define LED PE9 -int LEDState = 0; -void TimerFunction(int arg) -{ - if (LEDState) - LEDState = 0; - else - LEDState = 1; - digitalWrite(LED, LEDState); - timerStart(0, 500, TimerFunction, 0 ); // restart Timer -} - - -// 900ms Bink mit Steuerung ueber Timer-Id 1 -#define LED1 PE10 -int LED1State = 0; -void Timer1Function(int arg) -{ - if (LED1State) - LED1State = 0; - else - LED1State = 1; - digitalWrite(LED1, LED1State); - timerStart(1, 900, Timer1Function, 0 ); // restart Timer -} - - -// 1300ms Bink mit Steuerung ueber Timer-Id 2 -#define LED2 PE11 -int LED2State = 0; -void Timer2Function(int arg) -{ - if (LED2State) - LED2State = 0; - else - LED2State = 1; - digitalWrite(LED2, LED2State); - timerStart(2, 1300, Timer2Function, 0 ); // restart Timer -} - - - - -void setup() -{ - pinMode(LED, OUTPUT); - pinMode(LED1, OUTPUT); - pinMode(LED2, OUTPUT); - - // Timer-System initialisieren - timerInit(); - - // Timer starten - timerStart(0, 500, TimerFunction, 0 ); - timerStart(1, 900, Timer1Function, 0 ); - timerStart(2, 1300, Timer2Function, 0 ); -} - -void loop() -{ - // Die Programmabarbeitung erfolgt komplett im Interrupt, - // daher muss in loop nichts getan werden - while (1) - ; -} - - - diff --git a/STM32F3/examples/f3_gyrodemo/f3_gyrodemo.ino b/STM32F3/examples/f3_gyrodemo/f3_gyrodemo.ino deleted file mode 100644 index 8e3ca2b33..000000000 --- a/STM32F3/examples/f3_gyrodemo/f3_gyrodemo.ino +++ /dev/null @@ -1,100 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#include - -#include -#include - - - -/** - * Dieses Beispiel benutzt die Z-Achse des Gyro-Sensors, um eine Drehung des Boards - * zu messen und anzuzeigen. - * Wenn das Board um seine Z-Achse gedreht wird, so zeigt die jeweils aktive LED - * immer in die gleiche Richtung. - * Mit der Zeit ändert sich die angezeigte Richtung, da die Messwerte kleine - * Fehler haben, die sich mit der Zeit aufsummieren und das Programm keine - * Kalibrierung und Fehlerkorrektur enthält. Die Größe des Fehlers ist von - * Board zu Board unterschiedlich. - * - */ - -// Array mit den LED-Pins -int leds[] = { PE9, PE10, PE11, PE12, PE13, PE14, PE15, PE8 }; - - -void setup() // Init-Funktion -{ - // Die 8 LED-Pins auf Ausgang setzen - pinMode (leds[0], OUTPUT); - pinMode (leds[1], OUTPUT); - pinMode (leds[2], OUTPUT); - pinMode (leds[3], OUTPUT); - pinMode (leds[4], OUTPUT); - pinMode (leds[5], OUTPUT); - pinMode (leds[6], OUTPUT); - pinMode (leds[7], OUTPUT); - - // SPI1-Interface initialisieren - gyroSpiInit(); - - // den Gyrochip initialisieren - gyroInit(); - - // Gyro aktivieren - gyroStart(); -} - - -int led_idx; - -void loop() -{ - // Auslesen der Gyro-Messwerte und Berechnen des aktuellen Drehwinkels - gyroUpdate(); - - // Wenn der Winkel 360° überschreitet oder 0° unterschreitet - // werden 360° abgezogen bzw. addiert - if (winkelz>360) - winkelz -= 360; - else if (winkelz<0) - winkelz += 360; - - // aktuell aktive LED abschalten - digitalWrite(leds[led_idx], LOW); - - // anhand des Winkels die neue Aktive LED bestimmen. - // Dazu wird mit Dreisatz der Winkel (0..360) auf die LED (0..7) abgebildet - led_idx = (winkelz*8)/360; - - // aktive LED anschalten - digitalWrite(leds[led_idx], HIGH); - - delay(50); -} - - - diff --git a/STM32F3/examples/f3_lsm303demo/f3_lsm303demo.ino b/STM32F3/examples/f3_lsm303demo/f3_lsm303demo.ino deleted file mode 100644 index 63251aa1f..000000000 --- a/STM32F3/examples/f3_lsm303demo/f3_lsm303demo.ino +++ /dev/null @@ -1,111 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#include -#include -#include - -#include -#include - - -/** - * Dieses Beispiel wertet die x und y Werte des Beschleunigungssensors aus - * und zeigt über die 8 LEDs an, in welche Richtung das Board gekippt wurde. - * Die z-Komponente wird nicht ausgewertet. - */ - - -// Array mit den LED-Pins -int leds[] = { PE9, PE10, PE11, PE12, PE13, PE14, PE15, PE8 }; - - -void setup() // Init-Funktion -{ - // Die 8 LED-Pins auf Ausgang setzen - pinMode (leds[0], OUTPUT); - pinMode (leds[1], OUTPUT); - pinMode (leds[2], OUTPUT); - pinMode (leds[3], OUTPUT); - pinMode (leds[4], OUTPUT); - pinMode (leds[5], OUTPUT); - pinMode (leds[6], OUTPUT); - pinMode (leds[7], OUTPUT); - - // I2C-Interface initialisieren, mit dem der - // Beschleunigungssensor verbunden ist - i2c_master_enable(I2C1, 0); - - // Beschleunigungssensor initialisieren - lsm303Init(); - -} - -// Speicher für die aktuell aktive LED -int led_idx; - -void loop() -{ - float winkel; - - // Beschleunigungssensor lesen - readAccValues(); - - // Winkel entsprechend der gemessenen x und y Komponente - // berechnen - // atan2 gibt den Winkel im Bogenmass zurueck, 2*Pi entsprechen 360° - winkel = atan2(accy*-1.0,accx*1.0); - - // Umrechnung des Winkels auf die 8 LEDs, aus denen der Vollkreis (2*Pi) - // besteht (Dreisatz, Umrechnung mit 4 und Pi) - winkel = (winkel*4)/3.14; - - // Falls der Winkel negativ ist, eine Vollkreis-Wert hinzurechnen - // für unser Beispiel 8 - if (winkel<0) - winkel += 8; - - // alte aktive LED ausschalten - digitalWrite(leds[led_idx], LOW); - - // der Ganzzahl-Anteil des Winkels ist der Index der neuen LED - // Das (int) vor winkel führt die Umwandlung der Kommanzahl in einen Integer-Wert - // durch. Das nennt man einen Type-Cast. Der ist hier nötig, da eine - // float Variable nicht direkt einer Integervariable zugewiesen werden kann - led_idx = (int)winkel; - - // nochmal prüfen, ob der neue Led-Index nicht zu groß ist - // wenn ja auf maximalwert setzen - if (led_idx>7) - led_idx=7; - - // neue LED anschalten - digitalWrite(leds[led_idx], HIGH); - - delay(50); -} - - - diff --git a/STM32F3/examples/f3_ultrasonic/f3_ultrasonic.ino b/STM32F3/examples/f3_ultrasonic/f3_ultrasonic.ino deleted file mode 100644 index aa8bc5c56..000000000 --- a/STM32F3/examples/f3_ultrasonic/f3_ultrasonic.ino +++ /dev/null @@ -1,137 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#include -#include -#include - -/* - * Demoprogramm für den Betrieb von Ultraschallsensoren über Interrupts. - * - * Diese Betriebsart hat den Vorteil, dass während der Messung (die einige 10ms dauern kann) - * andere Dinge erledigt werden können. - * - * Es kann ständig im Hintergrund gemessen werden und der letzte gültige oder der aktuelle - * Messwert per Funktion abgefragt werden. - * - * Außerdem kann eine Callbackfunktion pro Sensor registriert werden, die nach einer erfolgten - * Messung aufgerufen wird. ZU beachten ist, dass diese Funktion im Interrupt-Kontext aufgerufen wird - * und daher möglichst kurz (d.h. schnell abarbeitbar) sein. - * Bei Debug-Ausgaben in der Handler-Funktion können sich die Ausgaben in Ausgaben aus loop() heraus "hineindrängeln" - * - */ - - -//----------------- Ultraschall ----------------------- -// 3x HC-SR04 - -#define US1_ECHO PD4 -#define US1_TRIGGER PB4 - -#define US2_ECHO PD5 -#define US2_TRIGGER PB5 - -#define US3_ECHO PD6 -#define US3_TRIGGER PB8 - - - -void UsHandler(int id, int entfernung) -{ - Print2Number("Sensor", id, entfernung); -} - - -void setup() -{ - delay(150); - debugInit(); - debugSetTimeStamp(DDEBUG_TIME_STAMP_ON); - - // Ultraschallsensoren definieren - addUSSensor(0, US1_TRIGGER, US1_ECHO, 220); - addUSSensor(1, US2_TRIGGER, US2_ECHO, 220); - addUSSensor(2, US3_TRIGGER, US3_ECHO); - - UsAttachHandler(0, UsHandler); - UsSetMessPause(100); // Pause von 100 ms nach jeder Messung - // damit die Ausgabe im Terminal nicht zu schnell wird - // Im Normalfall würde keine so lange Pause programmiert werden. - // Die Pause ist nur nötig, wenn festgestellt wird, dass sich - // die Sensoren gegenseitig durch nachfolgende mehrfache Echos beeinflussen. - // Das ist Umgebungsabhängig. - - debugPrint("activate Sensor 0 ---------------"); - aktiviereUSSensor(0); - PrintUsSensorList(); - debugPrint("activate Sensor 1 ---------------"); - aktiviereUSSensor(1); - PrintUsSensorList(); - - debugPrint("activate Sensor 2 ---------------"); - aktiviereUSSensor(2); - PrintUsSensorList(); - - // ab jetzt wird im Hintergrund gemessen - - delay(1000); - debugPrint("deactivate Sensor 2 ---------------"); - deaktiviereUSSensor(2); - PrintUsSensorList(); - - delay(1000); - debugPrint("deactivate Sensor 1 ---------------"); - deaktiviereUSSensor(1); - PrintUsSensorList(); - - delay(1000); - debugPrint("deactivate Sensor 0 ---------------"); - deaktiviereUSSensor(0); - PrintUsSensorList(); - - delay(1000); - debugPrint("activate Sensor 0 ---------------"); - aktiviereUSSensor(0); - PrintUsSensorList(); - - delay(1000); - debugPrint("activate Sensor 1 ---------------"); - aktiviereUSSensor(1); - PrintUsSensorList(); - - - debugPrint("Programm gestartet"); -} - -void loop() -{ - Print2Number("Sensor 1", UsLetzterGueltigerMesswert(1), UsLetzterGueltigerMesswertAlter(1)); - delay(300); -} - - - - diff --git a/STM32F3/libraries/gyro/gyro.cpp b/STM32F3/libraries/gyro/gyro.cpp deleted file mode 100644 index ef3722c6c..000000000 --- a/STM32F3/libraries/gyro/gyro.cpp +++ /dev/null @@ -1,337 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @brief functions for accessing l3g20 gyro on stm32f3discovery board - * - * SPI1 is set up to be a master - * at 9 MHz (SPI_1_125MHZ), - * 8 Bit - * MSB first in/out (MSBFIRST) - * MODE 0 // following the datasheet it should be MODE 3 but 0 is working too - * - * Pin PE3 is used as slave select, as defined for SPI1 in board.h - * - * There is no interrupt support because I was not able to get out any int2-output of the chip - * - */ - -#include -#include "l3gd20.h" -#include "../ringbuffer/ringbuffer.h" -#include "gyro.h" - - -#define NSS PE3 -#define GYRO_FIFO_WATERMARK 10 - -HardwareSPI spi1(1); -static uint8 gyroValuesSingle[6]; - -static int GYRO_BIAS_X = -75; -static int GYRO_BIAS_Y = 94; -static int GYRO_BIAS_Z = 0; - -float winkelx, winkely, winkelz; -int gyroxRaw, gyroyRaw, gyrozRaw; // bei jedem Update wird ein Datensatz der gelesenen - // Werte in den Raw-Variablen gespeichert um den Bias prfen zu - // knnen - -#define RB_SIZE 256 -#define GYRO_AVERAGE_X 120 -#define GYRO_AVERAGE_Y 120 -#define GYRO_AVERAGE_Z 120 - -static int rbvx[RB_SIZE]; -static int rbvy[RB_SIZE]; -static int rbvz[RB_SIZE]; -static RingBufferAverage rbx(RB_SIZE, rbvx, NULL, GYRO_AVERAGE_X); -static RingBufferAverage rby(RB_SIZE, rbvy, NULL, GYRO_AVERAGE_Y); -static RingBufferAverage rbz(RB_SIZE, rbvz, NULL, GYRO_AVERAGE_Z); - -static int averageActiveX = 0; -static int averageActiveY = 0; -static int averageActiveZ = 0; - -void readGyroValues() -{ - int j; - digitalWrite(NSS, LOW); - spi1.transfer(0xA8|0x40); - - for (j=0; j<6; j++) - gyroValuesSingle[j] = spi1.transfer(0); - - digitalWrite(NSS, HIGH); -} - -uint8 gyroReadRegister(uint8 reg) -{ - digitalWrite(NSS, LOW); - spi1.transfer(reg|0x80); - - uint8 val = spi1.transfer(0); - - digitalWrite(NSS, HIGH); - return val; -} - -void gyroWriteRegister(uint8 reg, uint8 val) -{ - digitalWrite(NSS, LOW); - spi1.transfer(reg); - spi1.transfer(val); - digitalWrite(NSS, HIGH); -} - -/** - * Initialisiert das spi1 interface des stm32f3discovery - */ -void gyroSpiInit() -{ - spi1.begin(SPI_9MHZ, MSBFIRST, 0); - /* NSS is usually active LOW, so initialize it HIGH */ - pinMode(NSS, OUTPUT); - digitalWrite(NSS, HIGH); -} - -#define GYRO_OP_PARAMS (GYRO_ODR_190|GYRO_LP_BW1|GYRO_ENABLE) - -/** - * konfiguriert den Gyro. - * der Gyro ist nach dem Aufruf der Funktion aktiv. Wird er nicht mehr benötigt, kann er - * mir gyroStop() wieder deaktiviert werden. Für eine Reaktivierung kann die Funktion - * gyroStart() verwendet werden. - * - * Im aktiven Zustand muss im Abstand von höchstens 120ms die Funktion gyroUpdate() - * aufgerufen werden. - * - * Die globalen Variablen winkelx, winkely und winkelz enthalten den jeweils aktuellen winkel. - * Die Funktion gyroResetWinkel setzt die globalen Variablen wieder auf 0. - */ -void gyroInit() -{ - /* Initialize SPI */ - // gyroSpiInit(); --> called aus dem Anwendungsmodul, - // da an SPI1 noch weitere Gerte betrieben werden - - // Initialize GyroChip - // 190Hz data Rate, 50Hz Bandwidth - gyroWriteRegister(GYRO_REG_CTRL_REG1, GYRO_OP_PARAMS); - - // CTRL_REG2 --> no High Pass --> nothing to change - - // enable Watermark interrupt on INT2 --> not working no int pulse - // gyroWriteRegister(GYRO_REG_CTRL_REG3, GYRO_I2_EN|GYRO_I2_WTM); - - // set resolution to 500 dps - gyroWriteRegister(GYRO_REG_CTRL_REG4, GYRO_FULL_SCALE_500); - - // enable FIFO, Output after second LP-Filter, no HP - gyroWriteRegister(GYRO_REG_CTRL_REG5, GYRO_FIFO_ENABLE|GYRO_OUT_SELECT2); - //gyroWriteRegister(GYRO_REG_CTRL_REG5, GYRO_OUT_SELECT2); - - //Fifomode and watermark - gyroWriteRegister(GYRO_REG_FIFO_CTRL, GYRO_FIFO_MODE_STREAM|GYRO_FIFO_WATERMARK); -} - -/** - * Es werden 1000 Werte eingelesen (ca. 5,5s) und aus den Werten die Drift-Kompensations- - * werte gemittelt. Der Gyro darf während der Zeit nicht bewegt werden. - */ -void gyroCalibrate() { - int count = 0; - int sumx=0,sumy=0,sumz=0; - - #ifdef DEBUG_GYRO - SerialUSB.print("Biaswerte ermitteln "); - #endif - while (count < 1000) - { - delay(100); - uint8 anz = gyroReadRegister(GYRO_REG_FIFO_SRC) & 0x1F; - for (int i=0; i -#include -#include "lsm303reg.h" -#include "../ringbuffer/ringbuffer.h" -#include "lsm303.h" - -#define ACC_FIFO_WATERMARK 10 - -static int ACC_BIAS_X; -static int ACC_BIAS_Y; -static int ACC_BIAS_Z; - - -int accx, accy, accz; - -#define RB_SIZE 64 -#define ACC_AVERAGE_X 60 -#define ACC_AVERAGE_Y 60 -#define ACC_AVERAGE_Z 60 - -static int rbvx[RB_SIZE]; -static long unsigned int rbtx[RB_SIZE]; -static int rbvy[RB_SIZE]; -static long unsigned int rbty[RB_SIZE]; -static int rbvz[RB_SIZE]; -static long unsigned int rbtz[RB_SIZE]; -static RingBuffer rbx(RB_SIZE, rbvx, rbtx); -static RingBuffer rby(RB_SIZE, rbvy, rbty); -static RingBuffer rbz(RB_SIZE, rbvz, rbtz); - -//static int averageActiveX = 0; -//static int averageActiveY = 0; -//static int averageActiveZ = 0; - - -static uint8 write_msg_data[3]; -static i2c_msg write_msg; - -static uint8 read_msg_data[7]; -static i2c_msg read_msg; - - -void readAccValues() -{ - int16 *p; - write_msg_data[0] = LSM303_REG_OUT_X_L_A|LSM303_READ_MULTI_BYTES; // 0x80 -> AutoIncrement address on read - write_msg.length = 1; - i2c_master_xfer(I2C1, &write_msg, 1, 0); - - read_msg.length = 6; - i2c_master_xfer(I2C1, &read_msg, 1, 2); - - p = (int16*)read_msg_data; - accx = *p++ - ACC_BIAS_X; - accy = *p++ - ACC_BIAS_Y; - accz = *p++ - ACC_BIAS_Z; -} - -uint8 accReadRegister(uint8 reg) -{ - write_msg_data[0] = reg; - write_msg.length = 1; - i2c_master_xfer(I2C1, &write_msg, 1, 0); - - read_msg.length = 1; - i2c_master_xfer(I2C1, &read_msg, 1, 2); - - return read_msg_data[0]; -} - -void accWriteRegister(uint8 reg, uint8 val) -{ - write_msg_data[0] = reg; - write_msg_data[1] = val; - write_msg.length = 2; - i2c_master_xfer(I2C1, &write_msg, 1, 0); -} - - -void lsm303I2CInit() -{ - //i2c_master_enable(I2C1, 0); - // Aktivierung des I2C-Busses muss im Hauptprogramm erfolgen, - // da mehrere Komponenten das I2C-Interface benutzen knnen - // und eine mehrfache Initialisierung nicht funktioniert - - write_msg.addr = LSM303_ADDR_A; - write_msg.flags = 0; // write, 7 bit address - write_msg.length = sizeof(write_msg_data); - write_msg.xferred = 0; - write_msg.data = write_msg_data; - - read_msg.addr = LSM303_ADDR_A; - read_msg.flags = I2C_MSG_READ; - read_msg.length = sizeof(read_msg_data); - read_msg.xferred = 0; - read_msg.data = read_msg_data; - -} - -/** - * Initialisiert und aktiviert den Beschleunigungssensor - * Aktivierung des I2C-Busses muss im Hauptprogramm erfolgen, - * da mehrere Komponenten das I2C-Interface benutzen knnen - * und eine mehrfache Initialisierung nicht funktioniert - */ -void lsm303Init() -{ - /* Initialize I2C Transfer-Strukturen fr den lsm303*/ - lsm303I2CInit(); - - // Initialize ACC-Chip - // 50Hz data Rate - accWriteRegister(LSM303_REG_CTRL_REG1_A, LSM303_A_ODR_50HZ|LSM303_A_ALL_AXIS_EN); - - // CTRL_REG2 --> no High Pass --> nothing to change - - // enable Watermark interrupt on INT2 --> not working no int pulse - // gyroWriteRegister(GYRO_REG_CTRL_REG3, GYRO_I2_EN|GYRO_I2_WTM); - - // sensitivity 2G is default - - // enable FIFO ? - - //Fifomode and watermark -} - - -void accCalibrate() { - int count = 0; - int sumx=0,sumy=0,sumz=0; - - #ifdef DEBUG_ACC - SerialUSB.print("Biaswerte ermitteln "); - #endif - while (count < 100) - { - delay(3); - readAccValues(); - sumx += accx; - sumy += accy; - sumz += accz; - #ifdef DEBUG_ACC - SerialUSB.print("*"); - #endif - count += 1; - } - ACC_BIAS_X = sumx/count; - ACC_BIAS_Y = sumy/count; - ACC_BIAS_Z = sumz/count; - - #ifdef DEBUG_ACC - SerialUSB.println(""); - SerialUSB.print("ACC-BIAS "); - SerialUSB.print(ACC_BIAS_X); SerialUSB.print(" "); - SerialUSB.print(ACC_BIAS_Y); SerialUSB.print(" "); - SerialUSB.println(ACC_BIAS_Z); - #endif -} - - - -void accUpdate() -{ - //uint8 gyroFifoStatus = gyroReadRegister(GYRO_REG_FIFO_SRC); - //uint8 anz = gyroFifoStatus & 0x1F; - - #ifdef DEBUG_ACC -// SerialUSB.print("fifo anz = "); -// SerialUSB.print(anz); -// SerialUSB.print(" "); - #endif - - readAccValues(); - - rbx.addValue(accx); - rby.addValue(accy); - rbz.addValue(accz); - - #ifdef DEBUG_ACC - SerialUSB.print(accx); SerialUSB.print(" "); - SerialUSB.print(accy); SerialUSB.print(" "); - SerialUSB.print(accz); SerialUSB.print(" "); - SerialUSB.println(""); - #endif -} - -void accStart() -{ - rbx.reset(); - rby.reset(); - rbz.reset(); -} - -void accStop() -{ -} - diff --git a/STM32F3/libraries/lsm303/lsm303.h b/STM32F3/libraries/lsm303/lsm303.h deleted file mode 100644 index 78a9d161a..000000000 --- a/STM32F3/libraries/lsm303/lsm303.h +++ /dev/null @@ -1,77 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#ifndef LSM303_H -#define LSM303_H - - -#define ACC_AXIS_X 1 -#define ACC_AXIS_Y 2 -#define ACC_AXIS_Z 3 - - -/** - * Initialisiert das spi1 interface des stm32f3discovery und konfiguriert den Gyro. - * der Gyro ist nach dem Aufruf der Funktion aktiv. Wird er nicht mehr benötigt, kann er - * mir gyroStop() wieder deaktiviert werden. Für eine Reaktivierung kann die Funktion - * gyroStart() verwendet werden. - * - * Im aktiven Zustand muss im Abstand von höchstens 120ms die Funktion gyroUpdate() - * aufgerufen werden. - * - * Die globalen Variablen winkelx, winkely und winkelz enthalten den jeweils aktuellen winkel. - * Die Funktion gyroResetWinkel setzt die globalen Variablen wieder auf 0. - */ -extern void lsm303Init(); - - -/** - */ -extern void lsm303Calibrate(); - - -/** - */ -extern void accUpdate(); - -/** - */ -extern void accStart(); - -/** - * Versetzt den Beschleunigungssensor in den Power Down mode - */ -extern void accStop(); - - -//---------------------------------------------------------------------------------- -// gobale Variablen - -extern int accx, accy, accz; - - -extern void readAccValues(); - -#endif diff --git a/STM32F3/libraries/lsm303/lsm303reg.h b/STM32F3/libraries/lsm303/lsm303reg.h deleted file mode 100644 index 7bf3f80b5..000000000 --- a/STM32F3/libraries/lsm303/lsm303reg.h +++ /dev/null @@ -1,131 +0,0 @@ -#ifndef __LSM303REG_H_ -#define __LSM303REG_H_ - -#define LSM303_ADDR_A (0x32>>1) -#define LSM303_ADDR_M (0x3C>>1) - -#define LSM303_REG_CTRL_REG1_A 0x20 -#define LSM303_REG_CTRL_REG2_A 0x21 -#define LSM303_REG_CTRL_REG3_A 0x22 -#define LSM303_REG_CTRL_REG4_A 0x23 -#define LSM303_REG_CTRL_REG5_A 0x24 -#define LSM303_REG_CTRL_REG6_A 0x25 -#define LSM303_REG_REFERENCE_A 0x26 -#define LSM303_REG_STATUS_A 0x27 -#define LSM303_REG_OUT_X_L_A 0x28 -#define LSM303_REG_OUT_X_H_A 0x29 -#define LSM303_REG_OUT_Y_L_A 0x2A -#define LSM303_REG_OUT_Y_H_A 0x2B -#define LSM303_REG_OUT_Z_L_A 0x2C -#define LSM303_REG_OUT_Z_H_A 0x2D -#define LSM303_REG_FIFO_CTRL_A 0x2E -#define LSM303_REG_FIFO_SRC_A 0x2F -#define LSM303_REG_INT1_CFG_A 0x30 -#define LSM303_REG_INT1_SRC_A 0x31 -#define LSM303_REG_INT1_THS_A 0x32 -#define LSM303_REG_INT1_DUARATION_A 0x33 -#define LSM303_REG_INT2_CFG_A 0x34 -#define LSM303_REG_INT2_SRC_A 0x35 -#define LSM303_REG_INT2_THS_A 0x36 -#define LSM303_REG_INT2_DURATION_A 0x37 -#define LSM303_REG_CLICK_CFG_A 0x38 -#define LSM303_REG_CLICK_SRC_A 0x39 -#define LSM303_REG_CLICK_THS_A 0x3A -#define LSM303_REG_TIME_LIMIT_A 0x3B -#define LSM303_REG_TIME_LATENCY_A 0x3C -#define LSM303_REG_TIME_WINDOW_A 0x3D - -#define LSM303_READ_MULTI_BYTES 0x80 - - -//================================================================== -// CTRL_REG1 - -#define LSM303_A_ODR_1HZ 0x10 -#define LSM303_A_ODR_10HZ 0x20 -#define LSM303_A_ODR_25HZ 0x30 -#define LSM303_A_ODR_50HZ 0x40 -#define LSM303_A_ODR_100HZ 0x50 -#define LSM303_A_ODR_200HZ 0x60 -#define LSM303_A_ODR_400HZ 0x70 -#define LSM303_A_ODR_1620HZ 0x80 -#define LSM303_A_ODR_1344Hz 0x90 - -#define LSM303_A_LOWPOWER_EN 0x08 -#define LSM303_A_X_EN 0x01 -#define LSM303_A_Y_EN 0x02 -#define LSM303_A_Z_EN 0x04 -#define LSM303_A_ALL_AXIS_EN 0x07 - - -//================================================================== -// CTRL_REG2 - HP-Filter config - -//================================================================== -// CTRL_REG3 - Int1 config - -#define LSM303_A_I1_CLICK 0x80 -#define LSM303_A_I1_AOI1 0x40 -#define LSM303_A_I1_AOI2 0x20 -#define LSM303_A_I1_DRDY1 0x10 -#define LSM303_A_I1_DRDY2 0x08 -#define LSM303_A_I1_WTM 0x04 -#define LSM303_A_I1_OVERRUN 0x02 - - -//================================================================== -// CTRL_REG4 - Sensitivity, Endianess and SPI config - -#define LSM303_A_FS_2G 0x00 // default -#define LSM303_A_FS_4G 0x10 -#define LSM303_A_FS_8G 0x20 -#define LSM303_A_FS_16G 0x30 - - - -//================================================================== -// CTRL_REG5 - Fifo and other - -#define LSM303_A_FIFO_EN 0x40 - -//================================================================== -// CTRL_REG6 - INT2 config - -//================================================================== -// FIFO_CTRL - -#define LSM303_A_FIFO_MODE_BYPASS 0b00000000 -#define LSM303_A_FIFO_MODE_FIFO 0b01000000 -#define LSM303_A_FIFO_MODE_STREAM 0b10000000 -#define LSM303_A_FIFO_MODE_TRIGGER 0b11000000 - -#define LSM303_A_FIFO_TR 0b00100000 - - -//================================================================== -//================================================================== -//================================================================== -// Magnetometer register -//================================================================== -//================================================================== -//================================================================== - -#define LSM303_REG_CRA_M 0x00 -#define LSM303_REG_CRB_M 0x01 -#define LSM303_REG_MR_M 0x02 -#define LSM303_REG_OUTX_H_M 0x03 -#define LSM303_REG_OUTX_L_M 0x04 -#define LSM303_REG_OUTY_H_M 0x05 -#define LSM303_REG_OUTY_L_M 0x06 -#define LSM303_REG_OUTZ_H_M 0x07 -#define LSM303_REG_OUTZ_L_M 0x08 -#define LSM303_REG_Mg_M 0x09 -#define LSM303_REG_IRA_M 0x0A -#define LSM303_REG_IRB_M 0x0B -#define LSM303_REG_IRC_M 0x0C -#define LSM303_REG_TEMP_H_M 0x31 -#define LSM303_REG_TEMP_L_M 0x32 - - -#endif - diff --git a/STM32F3/libraries/ringbuffer/ringbuffer.cpp b/STM32F3/libraries/ringbuffer/ringbuffer.cpp deleted file mode 100644 index 852b2de7b..000000000 --- a/STM32F3/libraries/ringbuffer/ringbuffer.cpp +++ /dev/null @@ -1,320 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#include "ringbuffer.h" - -#ifdef WIN32 - -int tmcnt=10; - -unsigned long millis() { return tmcnt++; } -#define NULL 0 - -#else -#include -#endif - - -RingBuffer::RingBuffer(int _size, int *_values, unsigned long *_timeStamps) -{ - size = _size; // muss ZweierPotenz sein - values = _values; // Pointer auf Speicher fr Werte - timeStamps = _timeStamps; // optional Pointer auf Speicher fr ms timestamps - mask = 0; - int t = size/2; - while (t) - { - mask = (mask<<1)|1; - t = t/2; - } - reset(); -} - - -void RingBuffer::addValue(int value) -{ - values[wrIdx] = value; - - if (timeStamps != NULL) - timeStamps[wrIdx] = millis(); - - if (anz < size) - anz++; - - wrIdx++; - wrIdx &= mask; -} - - -void RingBuffer::reset() -{ - anz = 0; - wrIdx = 0; - rdIdx = 0; - - for (int i=0; i anz) - return 0; - - rdIdx = (wrIdx - distance) & mask; - - lastRead = 0; - - return 1; -} - - -/* - * Setzt rdIdx auf den ersten Wert, fr den der zugehrige timeStamp mindestens zurckliegt, - * Es wird das Alter des betreffenden Wertes in ms zurckgegeben - * = wird zurckgegeben, wenn kein Wert mindestens so alt wie gefordert ist oder keine timestamps vorhanden sind - */ -int RingBuffer::setReadIdxDt(int ms) -{ - if (timeStamps == NULL) // keine timeStamps vorhanden - return 0; - - unsigned long aktTime = millis(); - unsigned long dt=0; - int count = 0; - rdIdx = (wrIdx - 1)&mask; // auf letzten eingetragenen Wert setzen - - lastRead = 0; - - while (count ms) - return dt; - count++; - - rdIdx = (rdIdx-1)&mask; - } - - return 0; -} - - -/* - * gibt Wert fr rdIdx zurck und incrementiert rdIdx, solange rdIdx < (wrIdx-1) - * ACHTUNG: wird wrPtr erreicht, so wird immer wieder der letzte Wert zurckgegeben! - */ -int RingBuffer::getValue() -{ - int ret = values[rdIdx]; - - if (((rdIdx+1)&mask) == wrIdx) - lastRead = 1; - else - rdIdx = (rdIdx+1)&mask; - - return ret; -} - -/* - * gibt Wert fr rdIdx zurck, trgt den zugehrigen timestamp - * in time ein und incrementiert rdIdx, solange rdIdx < wrIdx - * ACHTUNG: wird wrPtr erreicht, so wird immer wieder der letzte Wert zurckgegeben! - */ -int RingBuffer::getValue(unsigned long *time) -{ - int ret = values[rdIdx]; - if ((time != NULL) && (timeStamps!=NULL)) - *time = timeStamps[rdIdx]; - - if (((rdIdx+1)&mask) == wrIdx) - lastRead = 1; - else - rdIdx = (rdIdx+1)&mask; - - return ret; -} - - -/* - * gibt den Wert von rdIdx-1 zurck und decrementiert rdIdx wenn rdIdx-1 != wrIdx - * - */ -int RingBuffer::getPreviousValue() -{ - int idx = (rdIdx-1)&mask; - int ret = values[idx]; - if (idx != wrIdx) // rdIdx darf nicht kleiner als wrIdx werden - rdIdx = idx; - else - lastRead = 1; - return ret; -} - - -/* -`* decrementiert rdPtr und gibt den zugehrigen Wert zurck - */ -int RingBuffer::getPreviousValue(unsigned long *time) -{ - int idx = (rdIdx-1)&mask; - int ret = values[idx]; - rdIdx = (rdIdx-1)&mask; - if ((time != NULL) && (timeStamps!=NULL)) - *time = timeStamps[idx]; - if (idx != wrIdx) // rdIdx darf nicht kleiner als wrIdx werden - rdIdx = idx; - else - lastRead = 1; - return ret; -} - - -int RingBuffer::getPreviousValueDt(unsigned long *dt) -{ - int idx = (rdIdx-1)&mask; - int ret = values[idx]; - if ((dt != NULL) && (timeStamps!=NULL)) - { - unsigned long aktTime = millis(); - *dt = aktTime - timeStamps[idx]; - } - if (idx != wrIdx) // rdIdx darf nicht kleiner als wrIdx werden - rdIdx = idx; - else - lastRead = 1; - return ret; -} - - -/* - * gibt eins zurck, sobald der lteste Wert mit einer PreviousValue-Funktion - * gelesen wurde - * wird durch jeden Aufruf einer SetReadIdx-Funktion zurckgesetzt - */ -int RingBuffer::lastValueRead() -{ - return lastRead; -} - - -/* - * gibt 1 zurck, wenn rdPtr != wrPtr - * gibt 0 zurck, wenn rdPtr == wrPtr - * - * --> funktioniert nur, wenn zuvor SetReadIdx() aufgerufen wurde - */ -int RingBuffer::valueAvailable() -{ - return !lastRead; -} - - -int RingBuffer::getValueAt(int idx) -{ - return values[(wrIdx+idx)&mask]; -} - - -int RingBuffer::getValueAt(int idx, unsigned long *time) -{ - int valueIdx = (wrIdx+idx)&mask; - if ((time != NULL) && (timeStamps!=NULL)) - *time = timeStamps[valueIdx]; - return values[valueIdx]; -} - - -int RingBuffer::getPreviousValueAt(int idx) -{ - return values[(wrIdx-1-idx)&mask]; -} - - -int RingBuffer::getPreviousValueAt(int idx, unsigned long *time) -{ - int valueIdx = (wrIdx-1-idx)&mask; - if ((time != NULL) && (timeStamps!=NULL)) - *time = timeStamps[valueIdx]; - return values[valueIdx]; -} - -//***************************************************************** - - -RingBufferAverage::RingBufferAverage(int _size, int *_values, unsigned long *_timeStamps, int _averageSize):RingBuffer(_size, _values, _timeStamps) -{ - averageSize = _averageSize; - averageSum = 0; -} - -void RingBufferAverage::addValue(int val) -{ - RingBuffer::addValue(val); - averageSum += val; - if (anz > averageSize) - averageSum -= getPreviousValueAt(averageSize); -} - - -void RingBufferAverage::reset() -{ - RingBuffer::reset(); - averageSum = 0; -} - - -void RingBufferAverage::setAverageLen(int len) -{ - averageSize = len; - reset(); -} - -int RingBufferAverage::getAverage() -{ - if (anz>averageSize) - return averageSum/averageSize; - return averageSum/anz; -} - - -int RingBufferAverage::getAverageSum() -{ - return averageSum; -} - - diff --git a/STM32F3/libraries/ringbuffer/ringbuffer.h b/STM32F3/libraries/ringbuffer/ringbuffer.h deleted file mode 100644 index 3fce4c200..000000000 --- a/STM32F3/libraries/ringbuffer/ringbuffer.h +++ /dev/null @@ -1,155 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#ifndef RINGBUFFER_H_ -#define RINGBUFFER_H_ - -class RingBuffer { -public: - int size; // muss ZweierPotenz sein - int *values; // Pointer auf Speicher fr Werte - unsigned long *timeStamps; // optional Pointer auf Speicher fr ms timestamps - int rdIdx; // Leseindex - Benutzung optional - int wrIdx; // Schreibindex - int mask; - - int anz; // Aktuelle Anzahl an Werten im Puffer - int lastRead; // wird auf eins gesetz, wenn letzter vorhandener Wert gelesen wurde - - - RingBuffer(int _size, int *_values, unsigned long *_timeStamps); - - /* - * fgt einen Wert zum Ringpuffer hinzu und erzeugt einen zugehrigen Timestamp - * wenn timeStamps != NULL ist - */ - void addValue(int val); - - /* - * setzt rdIdx auf distance Werte vor den letzten Wert (wrPtr-1) - * Mit getValue knnen die letzten Werte bis zum letzten wert abgefragt werden - * - * gibt 1 zurck, wenn gengend Werte im Puffer sind - * gibt 0 zurck, wenn noch nicht gengend Werte im Puffer sind oder distance - * grer als die Pufferlnge ist - */ - int setReadIdx(int distance); - - /* - * Setzt rdIdx auf den ersten Wert, fr den der zugehrige timeStamp mindestens zurckliegt, - * Es wird das Alter des betreffenden Wertes in ms zurckgegeben - * = wird zurckgegeben, wenn kein Wert mindestens so alt wie gefordert ist oder keine timestamps vorhanden sind - */ - int setReadIdxDt(int ms); - - /* - * gibt Wert fr rdIdx zurck und incrementiert rdIdx, solange rdIdx < wrIdx - * ACHTUNG: wird wrPtr erreicht, so wird immer wieder der letzte Wert zurckgegeben! - */ - int getValue(); - - /* - * gibt Wert fr rdIdx zurck, trgt den zugehrigen timestamp - * in time ein und incrementiert rdIdx, solange rdIdx < wrIdx - * ACHTUNG: wird wrPtr erreicht, so wird immer wieder der letzte Wert zurckgegeben! - */ - int getValue(unsigned long *time); - - /* - * gibt 1 zurck, wenn rdPtr != wrPtr - * gibt 0 zurck, wenn rdPtr == wrPtr - * - * --> funktioniert nur, wenn zuvor SetReadIdx() aufgerufen wurde - */ - int valueAvailable(); - - /* - * Setzt den Ringbuffer zurck - */ - void reset(); - - /* - `* decrementiert rdPtr und gibt den zugehrigen Wert zurck - */ - int getPreviousValue(); - int getPreviousValue(unsigned long *time); - - /* - `* decrementiert rdPtr und gibt den zugehrigen Wert zurck - * schreibt Zeiitdifferenz zur aktuellen Zeit in dt - */ - int getPreviousValueDt(unsigned long *dt); - - - /* - * gibt eins zurck, sobald der lteste Wert mit einer PreviousValue-Funktion - * gelesen wurde - * wird durch jeden Aufruf einer SetReadIdx-Funktion zurckgesetzt - */ - int lastValueRead(); - - /* - * Diese Funktion erlaubt den Zugriff auf den Ringbuffer wie auf ein Array. - * Der lteste Wert hat immer den Index 0, der aktuellste Wert den Index size-1 - * Der rdIdx des Puffers wird nicht verndert. - */ - int getValueAt(int idx); - int getValueAt(int idx, unsigned long *time); - - /* - * Diese Funktion erlaubt den Zugriff auf den Ringbuffer wie auf ein Array. - * Der neueste Wert hat immer den Index 0, der lteste Wert den Index size-1 - * Der rdIdx des Puffers wird nicht verndert. - */ - int getPreviousValueAt(int idx); - int getPreviousValueAt(int idx, unsigned long *time); - - -}; - - - -class RingBufferAverage : public RingBuffer -{ -public: - int averageSize; - int averageSum; - - RingBufferAverage(int _size, int *_values, unsigned long *_timeStamps, int _averageSize); - - void setAverageLen(int len); - - void addValue(int val); - void reset(); - - int getAverage(); - int getAverageSum(); - - -}; - - -#endif /* RINGBUFFER_H_ */ diff --git a/STM32F3/libraries/roboter/debug.cpp b/STM32F3/libraries/roboter/debug.cpp deleted file mode 100644 index fa0a3e768..000000000 --- a/STM32F3/libraries/roboter/debug.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#include -#include "debug.h" - -#define DEBUG - -#ifndef DEBUGPORTID -#define DEBUGPORTID 2 -// TX-PIN ist PA2 -#endif - -#ifndef DEBUGPORT -#if DEBUGPORTID == 0 - #define DEBUGPORT SerialUSB -#endif -#if DEBUGPORTID == 1 - #define DEBUGPORT Serial1 -#endif -#if DEBUGPORTID == 2 - #define DEBUGPORT Serial2 -#endif -#if DEBUGPORTID == 3 - #define DEBUGPORT Serial3 -#endif -#endif - - -void debugInit() -{ -#ifdef DEBUG -#if (DEBUGPORTID != 0) - DEBUGPORT.begin(57600); -#endif - DEBUGPORT.println("Debug Init"); -#endif -} - - -static int printTimeStamp = 0; - -void debugSetTimeStamp(int OnOff) { - printTimeStamp = OnOff; -} - -static inline void addTimeStamp() { - if (printTimeStamp) { - DEBUGPORT.print(millis()); - DEBUGPORT.print(" "); - } -} - -void debugPrint(const char *s) -{ -#ifdef DEBUG - addTimeStamp(); - DEBUGPORT.println(s); -#endif -} - -void PrintNumber(const char *name, int num) -{ -#ifdef DEBUG - addTimeStamp(); - DEBUGPORT.print(name); - DEBUGPORT.print(" "); - DEBUGPORT.println(num); -#endif -} - -void PrintNumber(const char *name, byte num) -{ -#ifdef DEBUG - addTimeStamp(); - DEBUGPORT.print(name); - DEBUGPORT.print(" "); - DEBUGPORT.println(num); -#endif -} - -void PrintNumber(const char *name, float num) -{ -#ifdef DEBUG - addTimeStamp(); - DEBUGPORT.print(name); - DEBUGPORT.print(" "); - DEBUGPORT.println(num); -#endif -} - - - -void Print2Number(const char *name, int num1, int num2) -{ -#ifdef DEBUG - addTimeStamp(); - DEBUGPORT.print(name); - DEBUGPORT.print(" "); - DEBUGPORT.print(num1); - DEBUGPORT.print("\t"); - DEBUGPORT.println(num2); -#endif -} - -void Print2Number(const char *name, byte num1, byte num2) -{ -#ifdef DEBUG - addTimeStamp(); - DEBUGPORT.print(name); - DEBUGPORT.print(" "); - DEBUGPORT.print(num1); - DEBUGPORT.print("\t"); - DEBUGPORT.println(num2); -#endif -} - -void Print2Number(const char *name, float num1, float num2) -{ -#ifdef DEBUG - addTimeStamp(); - DEBUGPORT.print(name); - DEBUGPORT.print(" "); - DEBUGPORT.print(num1); - DEBUGPORT.print("\t"); - DEBUGPORT.println(num2); -#endif -} - -void PrintArray(const char *name, int len, int *arr) -{ -#ifdef DEBUG - int i; - addTimeStamp(); - DEBUGPORT.print(name); - for (i=0; i -#include -#include -#include "eeprom.h" -#include "debug.h" - - -/* - Source Code fuer 24C128 EEPROM (16Kbyte) -* - __ __ - A0 -| |- VCC - A1 -| |- WP --> unconnected low: write enabled - A2 -| |- SCL - VSS -|_____|- SDA - - -*/ - -#define EEPROM_I2C_BASE_ADDR (0xA0>>1) -#define EEPROM_I2C_ADDR(mem_addr) EEPROM_I2C_BASE_ADDR -#define EEPROM_I2C_CHANNEL I2C1 - -#define EEPROM_MAX_BUF 3 - -static uint8 msg_wr_data[EEPROM_MAX_BUF]; -static i2c_msg msg[2]; -static uint8 msg_rd_data[EEPROM_MAX_BUF]; - - -static void writeDataByte(int device_address, byte memory_address, byte data) -// write one byte of data 'data' to eeprom memory address 'memory_address' to chip with I2C address 'device_address' -{ -/* Arduino Code - Wire.beginTransmission(device_address); // device address - Wire.write(memory_address ); // memory address - Wire.write(data); // data to send - Wire.endTransmission(); // end - delay(10); -*/ - msg[0].addr = device_address; - msg[0].flags = 0; // write, 7 bit address - msg[0].xferred = 0; - msg[0].length = 3; - msg[0].data = msg_wr_data; - - msg_wr_data[0] = (memory_address>>8)&0xFF; - msg_wr_data[1] = memory_address&0xFF; - msg_wr_data[2] = data; - - i2c_master_xfer(EEPROM_I2C_CHANNEL, msg, 1, 10); - - delay(10); -} - - -static byte readDataByte(int device_address, byte memory_address) -// reads one byte of data from memory location 'memory_address' in chip at I2C address 'device_address' -{ - -/* Arduino Code - byte result; // return value - Wire.beginTransmission(device_address); // device address - Wire.write(memory_address); // memory address - Wire.endTransmission(); // end - Wire.requestFrom(device_address,1); // get one byte of data from device - if (Wire.available()) - result = Wire.read(); - return result; // return the read data byte - delay(10); -*/ - msg[0].addr = device_address; - msg[0].flags = 0; // write, 7 bit address - msg[0].xferred = 0; - msg[0].length = 2; - msg[0].data = msg_wr_data; - - msg_wr_data[0] = (memory_address>>8)&0xFF; - msg_wr_data[1] = memory_address&0xFF; - - msg[1].addr = device_address; - msg[1].flags = I2C_MSG_READ; - msg[1].xferred = 0; - msg[1].length = 1; - msg[1].data = msg_rd_data; - - i2c_master_xfer(EEPROM_I2C_CHANNEL, msg, 2, 10); - return msg_rd_data[0]; -} - -//--------------------------------------------------------------------------------- -int eepromWriteBytes(int addr, int len, unsigned char *pData) -{ - for (int i = 0; i -#include "functiontimer.h" -#include "debug.h" - - -//#define TMR_DEBUG - -typedef void (*tmrFuncPtr)(int arg); - - -typedef struct timerDaten { - struct timerDaten *pNext; - struct timerDaten *pPrev; - int time; - int state; - int arg; - int id; - tmrFuncPtr handler; -}TimerData_t; - - -TimerData_t timerArray[TIMER_ANZAHL]; -TimerData_t *pNextTimer = NULL; - - - -#define TIMEOUT_RATE 5000 // in microseconds - -HardwareTimer timer(2); - - -static void timeoutHandler() { - if (pNextTimer) { - pNextTimer->time -= 5; - if (pNextTimer->time <= 0) { -#ifdef TMR_DEBUG - PrintNumber("to", pNextTimer->id); -#endif - TimerData_t *p = pNextTimer; - pNextTimer = pNextTimer->pNext; - if (pNextTimer) - pNextTimer->pPrev = NULL; - p->state = 0; - //p->pNext = NULL; - //p->pPrev = NULL; - p->handler(p->arg); - } - } -} - -static bool timerInitialized = false; - -void timerInit() { - if (timerInitialized == false) { - for (int i=0; i= TIMER_ANZAHL) - return; - if (timerArray[id].state) // is already running? - return; - - TimerData_t *pNew = timerArray + id; - pNew->time = ms+5; - pNew->state = 1; - pNew->handler = handler; - pNew->pNext = NULL; - pNew->pPrev = NULL; - pNew->arg = arg; - if (pNextTimer == NULL) { - pNextTimer = pNew; -#ifdef TMR_DEBUG - PrintNumber("st", id); -#endif - } - else { -#ifdef TMR_DEBUG - Print2Number("sta", id, ms); -#endif - noInterrupts(); - TimerData_t *p = pNextTimer; - TimerData_t *last = NULL; - while (p) { - if (pNew->time < p->time) // vorher einhaengen - break; - else - pNew->time -= p->time; - last = p; - p = p->pNext; - } - - if (p==NULL) { - // hinter Last mit Restzeit einhngen - last->pNext = pNew; - pNew->pPrev = last; -#ifdef TMR_DEBUG - debugPrint("at end"); -#endif - } - else { // vor p einhngen und p->time um pNew->time verkleinern - p->time -= pNew->time; - pNew->pNext = p; - - if (p==pNextTimer) { - pNextTimer = pNew; - p->pPrev = pNew; -#ifdef TMR_DEBUG - PrintNumber("at begin", p->id); -#endif - } - else { - pNew->pPrev = p->pPrev; - p->pPrev = pNew; - if (pNew->pPrev) - pNew->pPrev->pNext = pNew; -#ifdef TMR_DEBUG - Print2Number("between", pNew->pPrev->id, pNew->pNext->id); -#endif - } - } - interrupts(); - } -#ifdef TMR_DEBUG - PrintTimerList(); -#endif -} - - -void timerStop(int id) { - if (id < 0) - return; - if (id>= TIMER_ANZAHL) - return; - if (timerArray[id].state==0) // is timer running? - return; - - TimerData_t *pTimer = timerArray + id; - noInterrupts(); - if (pTimer->pNext == NULL) { - // ist letzter in der queue - if (pTimer->pPrev == NULL) { - // ist einziger Timer - pTimer->state = 0; - pNextTimer = NULL; - } - else { - pTimer->pPrev->pNext = NULL; - pTimer->pPrev = NULL; - pTimer->state = 0; - } - } - else { - // Restzeit des zu lschenden Timers auf den nchsten in der Queue addieren - pTimer->pNext->time += pTimer->time; - if (pTimer == pNextTimer) {// erster Timer in der queue - pNextTimer = pTimer->pNext; - pTimer->pNext->pPrev = NULL; - pTimer->pNext = NULL; - } - else { - TimerData_t *pPrev = pTimer->pPrev; - pPrev->pNext = pTimer->pNext; - pTimer->pNext->pPrev = pPrev; - pTimer->pNext = NULL; - pTimer->pPrev = NULL; - } - } - interrupts(); - -} - - -void PrintTimerList() { - TimerData_t *p = pNextTimer; - - while (p) { - Print2Number("tmr",p->id, p->time); - if (p->pNext) - PrintNumber(" nxt", p->pNext->id); - if (p->pPrev) - PrintNumber(" prv", p->pPrev->id); - p = p->pNext; - } -} diff --git a/STM32F3/libraries/roboter/functiontimer.h b/STM32F3/libraries/roboter/functiontimer.h deleted file mode 100644 index 1a31f886c..000000000 --- a/STM32F3/libraries/roboter/functiontimer.h +++ /dev/null @@ -1,51 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - /* - * Das Timer-Modul stellt Funktionen bereit, mit denen andere Funktionen - * spter aufgerufen werden knnen. Diese Funktionen sollten eine - * kurze Laufzeit haben, da sie im Interrupt aufgerufen werden. - * - * - Die Timer arbeiten mit einer Auflsung von 5 ms. - * - Es knnen maximal 10 Timer gleichzeitig aktiv sein. - * - Stoppen eines Timers ist mglich - * - */ - -#ifndef FUNCTION_TIMER_H_ -#define FUNCTION_TIMER_H_ - -#define TIMER_ANZAHL 10 - -typedef void (*tmrFuncPtr)(int arg); - -extern void timerInit(); -extern void timerStart(int id, int ms, tmrFuncPtr handler, int arg); -extern void timerStop(int id); - - - - -#endif /* TIMER_H_ */ diff --git a/STM32F3/libraries/roboter/motor.cpp b/STM32F3/libraries/roboter/motor.cpp deleted file mode 100644 index 57b6171c5..000000000 --- a/STM32F3/libraries/roboter/motor.cpp +++ /dev/null @@ -1,259 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#include -#include "motor.h" -#include "../gyro/gyro.h" -#include "debug.h" - - -#define TB6612 - -#define MOTOR_ANZ 3 - - -typedef struct { - int dir; - int pwm; - int sensor; - int led; -} MotorPins_t; - -static MotorPins_t mpins[MOTOR_ANZ]; - -#define IDX_A 0 -#define IDX_B 1 -#define IDX_C 2 - -// Umwandlung MotorIds to Index, wenn nur ein Motor addressiert ist -#define MIDX(id) ((id&OUT_A)?IDX_A:(id&OUT_B)?IDX_B:IDX_C) - - -static volatile int RadCount0; -void CountRad0() -{ - RadCount0++; -} - -static volatile int RadCount1; -void CountRad1() -{ - RadCount1++; -} - -static volatile int RadCount2; -void CountRad2() -{ - RadCount2++; -} - - -void InitMotor(int id, int PinDir, int PinPWM, int PinSensor, int PinLED) -{ - MotorPins_t *p = mpins+MIDX(id); - p->dir = PinDir; - p->pwm = PinPWM; - p->sensor = PinSensor; - p->led = PinLED; - - pinMode (p->pwm, PWM); - pinMode (p->dir, OUTPUT); - analogWrite(p->pwm, 0); - - if (p->sensor != -1) - { - if (p->led != -1) - pinMode(p->led, OUTPUT); - - pinMode(p->sensor, INPUT); - } -} - - -static inline void RadSensorAn(int motor) -{ - MotorPins_t *p = mpins; - - for (int idx=0; idxled != -1) - digitalWrite(p->led, HIGH); - if (p->sensor != -1) { - if (idx == 0) - attachInterrupt(p->sensor, CountRad0, CHANGE); - else if (idx == 1) - attachInterrupt(p->sensor, CountRad1, CHANGE); - else - attachInterrupt(p->sensor, CountRad2, CHANGE); - } - } - p++; - } - delayMicroseconds(50); // Damit ggf. ein Interrupt beim Einschalten ausgefhrt wird -} - - -static inline void RadSensoren(int motor) -{ - MotorPins_t *p = mpins; - - for (int idx=0; idxled != -1) - digitalWrite(p->led, LOW); - if (p->sensor != -1) { - detachInterrupt(p->sensor); - } - } - p++; - } -} - - -void OnFwd(int Motor, int Geschwindigkeit) -{ - if(Geschwindigkeit>0) - Geschwindigkeit+=13; - else if(Geschwindigkeit<0) - Geschwindigkeit-=13; - - MotorPins_t *p = mpins; - Geschwindigkeit = constrain(Geschwindigkeit,-100, 100); // Geschwindigkeit auf Bereich -100 ... +100 begrenzen - Geschwindigkeit = (65535*Geschwindigkeit)/100; - PrintNumber("v ",Geschwindigkeit ); - - for (int i=0; i0) - { - digitalWrite(p->dir, HIGH); - v = Geschwindigkeit; - } - else - { - digitalWrite(p->dir, LOW); - v = -Geschwindigkeit; - } - analogWrite(p->pwm, v); - #endif - } - p++; - } -} - - -void OnRev(int m, int v) -{ - OnFwd(m, -v); -} - -void Off(int Motor) -{ - MotorPins_t *p = mpins; - for (int i=0; ipwm, 0); -#endif - } - p++; - } -} - - - -#if 0 - -// gyro-Funktionen nicht in diesem Modul - -void DreheRechts(int v, int Winkel) -{ - gyroResetWinkel(); - OnFwd(OUT_A, v); - OnFwd(OUT_B, -v); - while (winkelz>=-Winkel) - gyroUpdate(); - Off (OUT_AB); - -} - - -void DreheLinks(int v, int Winkel) -{ - gyroResetWinkel(); - OnFwd(OUT_A, -v); - OnFwd(OUT_B, v); - while (winkelz<=Winkel) - gyroUpdate(); - Off (OUT_AB); - -} - - -void FahreVor(int v, int Strecke) -{ - RadSensorenAn(); - RadCountR = 0; // 0 Setzen erst NACH Einschalten des Sensors, eventuell kommt schon ein Interrupt -// RadCountL = 0; - OnFwd(OUT_AB, v); - while (Strecke>RadCountR) - { -// PrintNumber("RC", RadCountR); -// delay (1); - } - Off(OUT_AB); - RadSensorenAus(); -} - -#endif - - -#if 0 -void TestRadSensoren() -{ - RadSensorenAn(); - RadCountR = 0; - RadCountL = 0; - OnFwd(OUT_AB,10); - while(1) - { - lcd.clear(); - lcd.setCursor(0,0); - lcd.print(RadCountL); - lcd.setCursor(4,0); - lcd.print(RadCountR); - delay(300); - } -} - -#endif diff --git a/STM32F3/libraries/roboter/motor.h b/STM32F3/libraries/roboter/motor.h deleted file mode 100644 index c63470e05..000000000 --- a/STM32F3/libraries/roboter/motor.h +++ /dev/null @@ -1,58 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - /* - * Das Modul Motor stellt Funktionen und Makros zur Steuerung der - * Fahrmotoren zur verfgung sowie Funktionen zur Steuerung und - * Abfrage der Wegsensoren. - */ - -#ifndef MOTOR_H_ -#define MOTOR_H_ - -#define OUT_A 1 -#define OUT_B 2 -#define OUT_C 4 -#define OUT_AB (OUT_A|OUT_B) -#define OUT_BC (OUT_B|OUT_C) -#define OUT_AC (OUT_A|OUT_C) -#define OUT_ABC (OUT_A|OUT_B|OUT_C) - - -extern void InitMotor(int id, int PinDir, int PinPWM, int PinSensor, int PinLED); - -extern void OnFwd(int Motor, int Geschwindigkeit); -extern void OnRev(int Motor, int Geschwindigkeit); -extern void Off (int Motor); - -#if 0 -extern void DreheRechts(int v, int Winkel); -extern void DreheLinks(int v, int Winkel); - -extern void FahreVor(int v, int Strecke); -#endif - - -#endif /* MOTOR_H_ */ diff --git a/STM32F3/libraries/roboter/sound.cpp b/STM32F3/libraries/roboter/sound.cpp deleted file mode 100644 index 09ca89489..000000000 --- a/STM32F3/libraries/roboter/sound.cpp +++ /dev/null @@ -1,30 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#include -#include "sound.h" - - -/* todo */ \ No newline at end of file diff --git a/STM32F3/libraries/roboter/sound.h b/STM32F3/libraries/roboter/sound.h deleted file mode 100644 index 54c572391..000000000 --- a/STM32F3/libraries/roboter/sound.h +++ /dev/null @@ -1,33 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#ifndef SOUND_H_ -#define SOUND_H_ - - - - -#endif /* SOUND_H_ */ diff --git a/STM32F3/libraries/roboter/ultraschall.cpp b/STM32F3/libraries/roboter/ultraschall.cpp deleted file mode 100644 index 871c6acdb..000000000 --- a/STM32F3/libraries/roboter/ultraschall.cpp +++ /dev/null @@ -1,536 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ -#include -#include "ultraschall.h" -#include "debug.h" - -/* - * Fr jeden Ultraschallsensor gibt es eine Struktur USSensor, die im Array USSensoren - * angelegt wird. - * Fr jeden Sensor muss einmal die Funktion addUSSensor() mit den richtigen Anschluss - * Pins aufgerufen werden. - * - * Zum Messen muss ein Sensor aktiviert werden. Es knnen alle Sensoren aktiv sein. - * Sie werden dann abwechselnd fr Messungen getriggert. Nicht mehr bentigte Sensoren - * sollten deaktiviert werden. - * Im aktiven Zustand wird durch die Funktion UltraschallMessen() die Messung - * jeweils eines aktiven Sensors gestartet, wenn keine Messung aktiv ist. - * UltraschallMessen() koordiniert nur die Messungen (es darf immer nur ein - * Ultraschallsensor aktiv sein) und wartet nicht, bis die Messung erfolgt ist. - * UltraschallMessen sollte alle 25ms oder krzer aufgerufen werden, - * wenn Ultraschallmesswerte bentigt werden. - * --> ggf. Aktivieren der nchsten Messung im Interrupt? --> testen - * - * Das Messen selbst erfolgt asynchron zur Programmausfhrung. Eine spezielle - * Messroutine wird aufgerufen, wenn der Echo-Pin des Sensors seinen Zustand ndert. - * Diese Routine trgt die gemessene Entfernung und einen Zeitstempel in die Sensor- - * struktur ein und setzt ein Flag in der Struktur, dass ein neuer Messwert zur - * Verfgung steht. - * - * Mit der Funktion UltraschallMessenFertig(id) kann abgefragt werden, ob ein neuer - * Messwert vorliegt. Dieser kann mit UltraschallMesswert(id) abgefragt werden. - * Mit UltraschallMesswertAlter(id) kann abgefragt werden, wie alt der ausgelesene - * Messwert ist. Alternativ zu den Funktionsaufrufen knnen die Werte auch direkt aus - * den Sensorstrukturen ausgelesen werden. - * - * Alternativ zum automatischen Messen im Hintergrund kann statt UltraschallMessen() - * die Funktion UltraschallMessenEinzel(id) aufgerufen werden. Diese Funktion blockiert - * solange bis ein Messwert vorliegt (max. 50ms falls kein Wert ermittelt werden kann) - * und gibt diesen zurck. Eine Aktivierung des Sensors ist nicht erforderlich. - * Eventuell laufende Messungen werden abgebrochen. Eine noch laufende Messung wird - * jedoch zu Ende gefhrt. - * - * Zeitberwachung: - * Es kann eine maximale Laufzeit fr das zu erwartende Echo gesetzt werden (z.B. 30ms). - * Fr diese Laufzeit wird ein Timer mit eigenem Interrupt gestartet. - * Gestoppt wird der Timer, wenn die Echo-Interrupt-Funktion vor Ablauf des Timers ausgefhrt wird - * (der Echo-Puls ist in diesem Fall innerhalb des zulssigen Zeitfensters gekommen. - * Luft der Timer ab, ist die aktuelle Messung ungltig und es wird versucht eine neue Messung - * mit dem nchsten Sensor zu starten. - * Eine Messung kann nur gestartet werden, wenn der Echo-Pin auf LOW ist. - * Gibt es keinen Sensor, der bei Startanforderung echo==LOW hat, so wird nichts unternommen und - * auf die nchste fallende Flanke einer Echo-Leitung (Interrupt) gewartet. Die fallende Flanke startet - * dann eine neue Messung per Interrupt. - * Gibt es einen Sensor, der bereit fr eine neue Messung ist, so wird bei diesem die Messung - * gestartet. - * Damit das funktioniert, muss fr jeden Echo-Pin eine eigene Interrupt-Funktion attached werden. - * - * Wenn auf die Zeitberwachung verzeichtet wird blockiert eine ungltige Messung weitere Messungen - * anderer Sensoren um die Zeit bis zum HIGH-LOW-bergang des Echopins - * --> bei nur einem Sensor ist eine Zeitberwachung nicht ntig, da kein Neustart einer Messung - * stattfinden kann bevor der Echo-Pin wieder Low ist. - * - * HC-SR04: Wenn kein Echo kommt, wird das ECHO-Signal nach ca. 235ms (entspricht ca. 4m) wieder nach - * LOW gezogen. - * - * Um das Suchen nach einem messbereiten Sensor zu vereinfachen werden die aktiven Sensorstrukturen in einer - * doppelt verketteten Liste verwaltet. - * - * Der Aufruf von micros() im Interrupt funktioniert nicht sicher, deshalb muss die Timing-Information auf anderm Wege - * beschafft werden: - * Eigener Hardwaretimer fr Ultraschallsensoren (ist auch schneller bei der Vewaltung) - * - */ - - -#define IDLE_CHECK_TMO 25 // ms - -// global state -#define US_GLOBAL_IDLE 0 -#define US_GLOBAL_MESSUNG_AKTIV 1 - -static int state = US_GLOBAL_IDLE; - -// Prototypen -static void TimerIntRangeTimeout(); -static void TimerIntWaitIdle(); -static inline void startMessung(); -static void USInt(); - -// globale Variablen -USSensor USSensoren[MAX_US_SENSOR]; - -// static Variablen -static USSensor *pAktiverSensor = NULL; -static int SensorAktivAnzahl=0; -static int MessPause = 0; - - -//-------------------------------------------------------------------------- -// Timer-Funktionen -//-------------------------------------------------------------------------- - -static HardwareTimer usTimer(15); -static int usTimerCount; // Beim Starten wird sofort ein Interrupt ausgelst, - // der ausgeblendet werden muss - - -static void startUsTimer(int ms, voidFuncPtr handler) -{ - usTimer.pause(); - - // Set up period - usTimer.setPeriod(ms*1000); // in microseconds - - usTimerCount = 1; - - // Set up an interrupt on channel 1S - usTimer.setChannel1Mode(TIMER_OUTPUT_COMPARE); - usTimer.setCompare(TIMER_CH1, 1); // Interrupt 1 count after each update - usTimer.attachCompare1Interrupt(handler); - - // Refresh the timer's count, prescale, and overflow - usTimer.refresh(); - - // Start the timer counting - usTimer.resume(); -} - - -static void stopUsTimer() { - usTimer.pause(); -} - -//-------------------------------------------------------------------------- - - - -/** - * Startet die Messung beim nchsten IDLE-Sensor. - * Wenn keine Messung aktiv ist (US_GLOBAL_IDLE) und kein Sensor gefunden wird, - * wird der IDLE-Wait-Timer gestartet - */ -static inline void startMessung() -{ - if (state != US_GLOBAL_IDLE) - return; // Es kann keine Messung gestartet werden - - int anz = SensorAktivAnzahl; - - while (anz) { - pAktiverSensor = pAktiverSensor->pNext; // erstmal auf den nchsten Sensor stellen - if (pAktiverSensor->state==US_IDLE) - { - //PrintNumber(" nis", pAktiverSensor->id); - // nur wenn EchoPin Low ist, kann die nchste Messung erfolgen - if (digitalRead(pAktiverSensor->echoPin) == LOW) { - state = US_GLOBAL_MESSUNG_AKTIV; // globalen Zustand setzen - pAktiverSensor->state = US_ACTIVE; - //PrintNumber("sel", pAktiverSensor->id); - digitalWrite(pAktiverSensor->triggerPin, HIGH); - delayMicroseconds(10); // FIXME: funktioniert das im Interrupt ??? - // sollte gehen, ist eine Assemblerschleife - // muss aber mal gemessen werden!! - digitalWrite(pAktiverSensor->triggerPin, LOW); - attachInterrupt(pAktiverSensor->echoPin, USInt, CHANGE); - return; - } - //else - //PrintNumber("ns2", pAktiverSensor->id); - } - //else - // PrintNumber("ns1", pAktiverSensor->id); - - anz--; - } - startUsTimer(IDLE_CHECK_TMO, TimerIntWaitIdle); -} - -// Interrupt-Routinen - -/** - * Interrupt-Routine fr Echo-Pin - */ -static void USInt() -{ - int time = usTimer.getCount(); - int pin = digitalRead(pAktiverSensor->echoPin); - if (pin==HIGH) - { - if (pAktiverSensor->state == US_ACTIVE) { - startUsTimer(pAktiverSensor->maxTime, TimerIntRangeTimeout); - //PrintNumber(" eh",pSensor->id); - } - } - else - { - stopUsTimer(); - detachInterrupt(pAktiverSensor->echoPin); - pAktiverSensor->entfernung = time/pAktiverSensor->timerTicksPerCm; - //Print2Number("usi", pAktiverSensor->id, pAktiverSensor->entfernung); - pAktiverSensor->messZeit = millis(); - pAktiverSensor->lastValidRange = pAktiverSensor->entfernung; - pAktiverSensor->lastValidTime = pAktiverSensor->messZeit; - pAktiverSensor->neuerMesswert = 1; - pAktiverSensor->state = US_IDLE; - state = US_GLOBAL_IDLE; - if (pAktiverSensor->handler) - pAktiverSensor->handler(pAktiverSensor->id, pAktiverSensor->entfernung); - if (MessPause) - startUsTimer(MessPause, TimerIntWaitIdle); - else - startMessung(); - } -} - -static void TimerIntWaitIdle() { - if (usTimerCount) - usTimerCount--; - else { - //debugPrint("twi"); - stopUsTimer(); - startMessung(); - } -} - -static void TimerIntRangeTimeout() { - if (usTimerCount) - usTimerCount--; - else { - stopUsTimer(); - if (pAktiverSensor) { - detachInterrupt(pAktiverSensor->echoPin); - //debugPrint(" tmo"); - if (pAktiverSensor->state == US_ACTIVE) { - pAktiverSensor->state = US_IDLE; - state = US_GLOBAL_IDLE; // Es kann eine Messung mit einem anderen Sensor gestartet werden - pAktiverSensor->entfernung = ENTFERNUNG_INVALID; - pAktiverSensor->messZeit = millis(); - if (pAktiverSensor->handler) - pAktiverSensor->handler(pAktiverSensor->id, pAktiverSensor->entfernung); - startMessung(); - } - else - { - if (state == US_GLOBAL_IDLE) - startMessung(); - } - } - } -} - - -//----------------------------------------------------------------- -// extern aufrufbare Funktionen -//----------------------------------------------------------------- - -/** - * Definiert und initialisiert einen Ultraschallsensor - * maxRange in cm - */ -void addUSSensor(int id, int trigger, int echo, int maxRange) -{ - if ((id < 0) || (id >= MAX_US_SENSOR)) - return; - USSensor *pSensor = &USSensoren[id]; - pSensor->triggerPin = trigger; - pSensor->echoPin = echo; - pSensor->enabled = 0; - pSensor->state = US_IDLE; - pSensor->id = id; - pSensor->maxTime = (maxRange*US_ROUNDTRIP_CM)/1000; - - // Timer-Wertebereich fr maxRange ermitteln - usTimer.setPeriod(pSensor->maxTime*1000); // in microseconds - pSensor->timerTicksPerCm = usTimer.getOverflow()/maxRange; - - // pins initialisieren - pinMode(trigger, OUTPUT); - pinMode(echo, INPUT); -} - -/** - * aktiviert einen Sensor zum Messen im Hintergrund - */ -void aktiviereUSSensor(int id) -{ - if (USSensoren[id].enabled) // ist bereits enabled - return; - - USSensoren[id].enabled = 1; - - if (pAktiverSensor == NULL) { // ist der erste Sensor - pAktiverSensor = USSensoren + id; - pAktiverSensor->pNext = pAktiverSensor; // zeigt auf sich selbst! - pAktiverSensor->pPrev = pAktiverSensor; - SensorAktivAnzahl = 1; - // ber den Timer wird erreicht, dass die Messung gestartet wird. - startUsTimer(IDLE_CHECK_TMO, TimerIntWaitIdle); - } - else { - noInterrupts(); - USSensor *pSensor = USSensoren + id; - pSensor->state = US_IDLE; - - pSensor->pNext = pAktiverSensor->pNext; - pSensor->pPrev = pAktiverSensor; - pAktiverSensor->pNext->pPrev = pSensor; - pAktiverSensor->pNext = pSensor; - - SensorAktivAnzahl++; - interrupts(); - } -} - - -void UsAttachHandler(int id, usFuncPtr fkt){ - USSensoren[id].handler = fkt; -} - - -void UsSetMessPause(int ms) { - MessPause = ms; -} - - -/** - * deaktiviert einen Sensor - */ -void deaktiviereUSSensor(int id) -{ - /* - * Problem: - * fr den aktuellen Sensor knnte aktuell eine Messung laufen! - */ - if (!USSensoren[id].enabled) - return; - - noInterrupts(); - USSensor *pSensor = USSensoren + id; - pSensor->enabled = 0; - pSensor->neuerMesswert = 0; - - if (SensorAktivAnzahl>1) { - pSensor->pPrev->pNext = pSensor->pNext; - pSensor->pNext->pPrev = pSensor->pPrev; - if (pAktiverSensor == pSensor) - pAktiverSensor = pSensor->pNext; - } - else - pAktiverSensor = NULL; - - SensorAktivAnzahl--; - - if (pSensor->state == US_ACTIVE) { - detachInterrupt(pSensor->echoPin); - pSensor->state = US_IDLE; - state = US_GLOBAL_IDLE; - - if (SensorAktivAnzahl) - // ber den Timer wird erreicht, dass eine neue Messung gestartet wird. - startUsTimer(IDLE_CHECK_TMO, TimerIntWaitIdle); - } - interrupts(); -} - -/** - * gibt 1 zurck, wenn ein neuer Messwert vorliegt. - * Es wird nur einmal eine 1 zurckgegeben, das Flag wird beim Auslesen zurckgesetzt - */ -int UltraschallMessenFertig(int id) -{ - if (USSensoren[id].neuerMesswert) - { - USSensoren[id].neuerMesswert = 0; - return 1; - } - return 0; -} - - -/** - * gibt aktuellstes Messergebnis zurck - */ -int16 UsAktuellerMesswert(int id) -{ - return USSensoren[id].entfernung; -} - -/** - * Gibt das Alter der aktuellsten Messung in ms zurck - */ -int UsAktuellerMesswertAlter(int id) -{ - return (millis() - USSensoren[id].messZeit); -} - -/** - * gibt den letzten gueltigen Wert zurck - */ -int16 UsLetzterGueltigerMesswert(int id) -{ - return USSensoren[id].lastValidRange; -} - -/** - * Gibt das Alter der letzten Messung in ms zurck - */ -int UsLetzterGueltigerMesswertAlter(int id) -{ - return (millis() - USSensoren[id].lastValidTime); -} - - -/** - * ----------------------------------------------------------- - * blockierende Messung - * ----------------------------------------------------------- - */ -int16 UltraschallMessenEinzel(int id) -{ - uint32 t1; - uint32 t2=0; - if ((id<0) || (id >= MAX_US_SENSOR)) - return ENTFERNUNG_INVALID; - - // alle Sensoren deaktivieren - for (int i=0; iechoPin) == HIGH ) - { - t2 = micros(); - if (t2-t1 > 100000) // Wenn 100ms lang kein LOW am Echo-Pin Fehler zurckgeben - return ERROR_SENSOR_BUSY; - } - - // trigger-Impuls generieren - digitalWrite(pSensor->triggerPin, HIGH); - delayMicroseconds(10); - digitalWrite(pSensor->triggerPin, LOW); - - // auf HIGH am Echo-Pin warten - t1 = micros(); - - while (digitalRead(pSensor->echoPin) == LOW ) - { - t2 = micros(); - if (t2-t1 > 1000) - return ERROR_NO_SENSOR; // kein LOW-HIGH-bergang innerhalb 1ms detektiert -> Fehler - } - t1 = micros(); - - // auf LOW am Echo-Pin warten - while (digitalRead(pSensor->echoPin) == HIGH ) - { - t2 = micros(); - if ((t2-t1) > (uint32)(pSensor->maxTime*1000)) - return ENTFERNUNG_INVALID; // Messentfernung grer maxRange - } - - return (t2-t1)/US_ROUNDTRIP_CM; -} - - -//------------------------------------------------------------------------ -void PrintUsSensorList() { - USSensor *pSensor = pAktiverSensor; - - for (int i = 0; i < SensorAktivAnzahl; i++){ - if (pSensor == NULL) - return; - PrintNumber("Sensor", pSensor->id); - if (pSensor->pNext == NULL) - debugPrint(" next NULL"); - else - PrintNumber(" next", pSensor->pNext->id); - if (pSensor->pPrev == NULL) - debugPrint(" prev NULL"); - else - PrintNumber(" prev", pSensor->pPrev->id); - pSensor = pSensor->pNext; - } -} - -#if 0 -// Timer Test-Funktionen - -static void testHandler() { - debugPrint("usi"); - - if (usTimerCount) - usTimerCount--; - else { - stopUsTimer(); - debugPrint("---"); - startUsTimer(300, testHandler); - } -} - -void TestUsTimer() { - startUsTimer(100, testHandler); -} - -int GetUsTimerCount() { - return usTimer.getCount(); -} -#endif - diff --git a/STM32F3/libraries/roboter/ultraschall.h b/STM32F3/libraries/roboter/ultraschall.h deleted file mode 100644 index a03af40ab..000000000 --- a/STM32F3/libraries/roboter/ultraschall.h +++ /dev/null @@ -1,156 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2015 Frank-Michael Krause - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -#ifndef ULTRASCHALL_H_ -#define ULTRASCHALL_H_ - -#define US_IDLE 0 -#define US_ACTIVE 1 - - -#define US_ROUNDTRIP_CM 57 // Microseconds (uS) it takes sound to travel round-trip 1cm (2cm total), uses integer to save compiled code space. - -typedef void (*usFuncPtr)(int id, int entfernung); - -typedef struct USSensor_s { - int8 id; - int triggerPin; - int echoPin; - int8 enabled; - int8 state; // IDLE, ACTIVE - int8 neuerMesswert; - int16 maxTime; //Zeit fr maximal zu messende Entfernung in ms - int timerTicksPerCm; - int16 entfernung; // in cm - uint32 messZeit; // Systemzeit der Messung in ms - int16 lastValidRange; - uint32 lastValidTime; -// uint32 startZeit; // Startzeit der aktuellen Messung - usFuncPtr handler; - struct USSensor_s *pNext; - struct USSensor_s *pPrev; -} USSensor; - -#define MAX_US_SENSOR 4 - -#define ENTFERNUNG_INVALID -1 -#define ERROR_NO_SENSOR -2 -#define ERROR_SENSOR_BUSY -3 - -extern USSensor USSensoren[MAX_US_SENSOR]; - - -/***************************************************** - * Funktionen zur Initialisierung - ****************************************************/ - -/** - * id: Index zwischen 0 und MAX_US_SENSOR-1 - * trigger: IO-Pin, der mit dem Trigger-Eingang des Sensors verbunden ist - * echo: IO-Pin, der mit dem Echo-Ausgang des Sensors verbunden ist. - * !!! der Echo-IO-Pin muss 5V tolerant sein oder mit einem - * Spannungsteiler versehen werden. - * maxRange: Maximal zu messende Entfernung in cm; optional - */ -extern void addUSSensor(int id, int trigger, int echo, int maxRange=150); - -/** - * setzt die Zeit der Pause, die nach erfolgreicher Messung vor der nchsten - * Messung eingefgt wird. - * Default ist 0, d.h. keine Pause - */ -extern void UsSetMessPause(int ms); - - - -/***************************************************** - * Funktionen fr blockierende Messung - * Bei Aufruf der blockierenden Einzelmessfunktion werden - * alle ber Interrupt akktivierten Sensoren deaktiviert - * - * gibt Entfernung in cm zurck - * bzw. die Fehlerwerte - * ENTFERNUNG_INVALID -1 - * ERROR_NO_SENSOR -2 - * ERROR_SENSOR_BUSY -3 - *****************************************************/ -extern int16 UltraschallMessenEinzel(int id); - - - - -/***************************************************** - * Funktionen fr nicht blockierende, interrupt-basierte Messung - * - * Durch Zustandsvariablen gesteuert werden auf allen aktiven Sensoren - * immer wieder abwechselnd Messungen angestossen. - * Die Messergebnisse werden in Variablen der Sensorstruktur abgelegt - * und knnen ber Funktionen aus dem Hauptptogramm abgefragt werden. - * - * Es kann pro Sensor eine Handler-Funktion registriert werden, - * die aufgerufen wird, sobald ein neuer Messwert vorliegt. - *****************************************************/ - - -extern void aktiviereUSSensor(int id); -extern void deaktiviereUSSensor(int id); - -extern void UsAttachHandler(int id, usFuncPtr fkt); - - -/** - * gibt das Ergebnis der letzten Messung zurck. - * Kann ENTFERNUNG_INVALID sein. - */ -extern int16 UsAktuellerMesswert(int id); - -/** - * gibt das Alter des letzen Messergebnisses in ms an. - */ -extern int UsAktuellerMesswertAlter(int id); - -/** - * gibt den letzten Messwert des Sensors zurck, der nicht - * ENTFERNUNG_INVALID ist. - */ -extern int16 UsLetzterGueltigerMesswert(int id); - - -/** - * gibt das Alter des letzen gltigen Messergebnisses in ms an. - */ -extern int UsLetzterGueltigerMesswertAlter(int id); - - - -/***************************************************** - * Debug-Funktionen - ****************************************************/ - -extern void PrintUsSensorList(); - - -#endif /* ULTRASCHALL_H_ */ diff --git a/STM32F3/platform.txt b/STM32F3/platform.txt deleted file mode 100644 index 60d40428c..000000000 --- a/STM32F3/platform.txt +++ /dev/null @@ -1,144 +0,0 @@ -# -# -# For more info: -# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification - -name=STM32F3 boards -version=0.1.0 - -# compiler variables -# ---------------------- -#build.gcc_ver=gcc-arm-none-eabi-4.8.3-2014q1 - -compiler.path={runtime.tools.arm-none-eabi-gcc.path}/bin/ -compiler.c.cmd=arm-none-eabi-gcc -compiler.c.flags=-c -g {build.flags.optimize} -w -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin} -compiler.c.elf.cmd=arm-none-eabi-g++ -compiler.c.elf.flags={build.flags.optimize} -Wl,--gc-sections {build.flags.ldspecs} -compiler.S.cmd=arm-none-eabi-gcc -compiler.S.flags=-c -g -x assembler-with-cpp -MMD -compiler.cpp.cmd=arm-none-eabi-g++ -compiler.cpp.flags=-c -g {build.flags.optimize} -w -MMD -ffunction-sections -fdata-sections -nostdlib --param max-inline-insns-single=500 -fno-rtti -fno-exceptions -DBOARD_{build.variant} -D{build.vect} -DERROR_LED_PORT={build.error_led_port} -DERROR_LED_PIN={build.error_led_pin} -compiler.ar.cmd=arm-none-eabi-ar -compiler.ar.flags=rcs -compiler.objcopy.cmd=arm-none-eabi-objcopy -compiler.objcopy.eep.flags=-O ihex -j .eeprom --set-section-flags=.eeprom=alloc,load --no-change-warnings --change-section-lma .eeprom=0 -compiler.elf2hex.flags=-O binary -compiler.elf2hex.cmd=arm-none-eabi-objcopy -compiler.ldflags={build.flags.ldspecs} -compiler.size.cmd=arm-none-eabi-size -compiler.define=-DARDUINO= - -# this can be overriden in boards.txt -build.cpu_flags= -build.hs_flag= -build.common_flags= -build.extra_flags= {build.cpu_flags} {build.hs_flag} {build.common_flags} - -# These can be overridden in platform.local.txt -compiler.c.extra_flags= -compiler.c.elf.extra_flags="-L{build.variant.path}/ld" -compiler.cpp.extra_flags= -compiler.S.extra_flags= -compiler.ar.extra_flags= -compiler.elf2hex.extra_flags= - - - -compiler.libs.c.flags="-I{build.core.path}/libmaple" "-I{build.core.path}/libmaple/include" "-I{build.core.path}/libmaple/stm32f3/include" "-I{build.core.path}/libmaple/usb" "-I{build.core.path}/libmaple/usb/usb_lib" "-I{build.core.path}/wirish/include" "-I{build.core.path}/wirish" -#compiler.libs.c.flags="-I{build.system.path}/libmaple" "-I{build.system.path}/libmaple/include" "-I{build.system.path}/libmaple/stm32f1/include" "-I{build.system.path}/libmaple/usb/stm32f1" "-I{build.system.path}/libmaple/usb/usb_lib" "-I{build.system.path}/wirish/include" - - -#compiler.libs.c.flags="-I{build.core.path}/libmaple" -I{build.core.path}/libmaple/usbF4 -I{build.core.path}/libmaple/usbF4/STM32_USB_Device_Library/Core/inc -I{build.core.path}/libmaple/usbF4/STM32_USB_Device_Library/Class/cdc/inc -I{build.core.path}/libmaple/usbF4/STM32_USB_OTG_Driver/inc -I{build.core.path}/libmaple/usbF4/VCP - - - -# USB Flags -# --------- -## build.usb_flags=-DUSB_VID={build.vid} -DUSB_PID={build.pid} -DUSBCON '-DUSB_MANUFACTURER={build.usb_manufacturer}' '-DUSB_PRODUCT={build.usb_product}' - -# Default usb manufacturer will be replaced at compile time using -# numeric vendor ID if available or by board's specific value. -## build.usb_manufacturer="Unknown" - - -# build patterns -# --------------------- - -## Compile c files -recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.c.flags} -mcpu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.c.extra_flags} {build.extra_flags} {compiler.libs.c.flags} {includes} "{source_file}" -o "{object_file}" - -## Compile c++ files -recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpp.flags} -mcpu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.cpp.extra_flags} {build.extra_flags} {build.cpu_flags} {build.hs_flag} {build.common_flags} {compiler.libs.c.flags} {includes} "{source_file}" -o "{object_file}" - -## Compile S files -recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.S.flags} -mcpu={build.mcu} -DF_CPU={build.f_cpu} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} {compiler.S.extra_flags} {build.extra_flags} {build.cpu_flags} {build.hs_flag} {build.common_flags} {compiler.libs.c.flags} {includes} "{source_file}" -o "{object_file}" -#recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" "{source_file}" -o "{object_file}" - -## Create archives -recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{archive_file_path}" "{object_file}" - -## Combine gc-sections, archives, and objects -##recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--entry=Reset_Handler -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group "{build.path}/syscalls_sam3.c.o" {object_files} "{build.variant.path}/{build.variant_system_lib}" "{archive_file_path}" -Wl,--end-group -#-Wl,--entry=__start__ -#recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} "{build.variant.path}/{build.variant_system_lib}" "{archive_file_path}" -Wl,--end-group -recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} -mcpu={build.mcu} "-T{build.variant.path}/{build.ldscript}" "-Wl,-Map,{build.path}/{build.project_name}.map" {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" "-L{build.path}" -lm -lgcc -mthumb -Wl,--cref -Wl,--check-sections -Wl,--gc-sections -Wl,--unresolved-symbols=report-all -Wl,--warn-common -Wl,--warn-section-align -Wl,--warn-unresolved-symbols -Wl,--start-group {object_files} -Wl,--whole-archive "{archive_file_path}" -Wl,--no-whole-archive -Wl,--end-group - -## Create eeprom -recipe.objcopy.eep.pattern= - -## Create hex -recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.bin" - -## Compute size -recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" -#recipe.size.regex=\.text\s+([0-9]+).* -recipe.size.regex=^(?:\.text|\.rodata|\.ARM.exidx)\s+([0-9]+).* -recipe.size.regex.data=^(?:\.data|\.bss|\.noinit)\s+([0-9]+).* - -# Uploader tools -# ------------------- - -# Upload using Maple bootloader over DFU -tools.maple_upload.cmd=maple_upload -tools.maple_upload.cmd.windows=maple_upload.bat -#tools.maple_upload.cmd.linux= -tools.maple_upload.path={runtime.hardware.path}/tools/win -tools.maple_upload.path.macosx={runtime.hardware.path}/tools/macosx - -tools.maple_upload.upload.params.verbose=-d -tools.maple_upload.upload.params.quiet= -tools.maple_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" - -# Generic STM32 upload via serial to Serial Port 1 (pins PA9 and PA10) - note. Boot0 line needs to high on board reset to enable upload via serial -# at the end of the upload the program is automatically run, without the board being reset - -tools.serial_upload.cmd=serial_upload -tools.serial_upload.cmd.windows=serial_upload.bat -#tools.serial_upload.cmd.linux= -tools.serial_upload.path={runtime.hardware.path}/tools/win - -tools.serial_upload.upload.params.verbose=-d -tools.serial_upload.upload.params.quiet= -tools.serial_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" - -# -tools.upload_router.cmd=upload_router -tools.upload_router.cmd.windows=upload_router.bat -#tools.upload_router.cmd.linux= -tools.upload_router.path={runtime.hardware.path}/tools/win - -tools.upload_router.upload.params.verbose=-d -tools.upload_router.upload.params.quiet= -tools.upload_router.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}" {upload.protocol} {build.debuggingMode} "{runtime.ide.path}/hardware/tools/{build.gcc_ver}/bin/" - -# STLINK/V2 - -tools.stlink.cmd=stlink -tools.stlink.cmd.windows=stlink_upload.bat -#tools.stlink.cmd.linux= -tools.stlink.path={runtime.hardware.path}/tools/win -tools.stlink.upload.params.verbose=-d -tools.stlink.upload.params.quiet= -tools.stlink.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" - diff --git a/STM32F3/variants/discovery_f3/board/board.h b/STM32F3/variants/discovery_f3/board/board.h deleted file mode 100644 index 6b04a8be1..000000000 --- a/STM32F3/variants/discovery_f3/board/board.h +++ /dev/null @@ -1,138 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/boards/48F3/include/board/board.h - * @author F3-port: Hanspeter Portner - * @brief F303xx board header (F303CB, F303CC, F303RB, F303RC, F303VB, F303VC). - * - * See wirish/boards/maple/include/board/board.h for more information - * on these definitions. - */ - -#ifndef _BOARD_F303xx_H_ -#define _BOARD_F303xx_H_ - -#include - -#define CYCLES_PER_MICROSECOND (F_CPU / 1000000U) -#define SYSTICK_RELOAD_VAL (F_CPU/1000) - 1 /* takes a cycle to reload */ - -enum { - PC13, PC14, PC15, - PF0, PF1, - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, - PB0, PB1, PB2, - PB10, PB11, PB12, PB13, PB14, PB15, - PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, - PB3, PB4, PB5, PB6, PB7, PB8, PB9, -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) - PC0, PC1, PC2, PC3, - PF4, - PC4, PC5, PC6, PC7, PC8, PC9, PC10, PC11, PC12, - PD2, -# if defined(STM32_XL_DENSITY) - PE2, PE3, PE4, PE5, PE6, - PF9, PF10, - PF2, - PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, - PD8, PD9, PD10, PD11, PD12, PD13, PD14, PD15, - PF6, - PD0, PD1, - PD3, PD4, PD5, PD6, PD7, - PE0, PE1, -# endif -#endif -}; - -#define BOARD_USART1_TX_PIN PA9 /* also PB6 */ -#define BOARD_USART1_RX_PIN PA10 /* also PB7 */ - -#define BOARD_USART2_TX_PIN PA2 /* also PA14, PB3 */ -#define BOARD_USART2_RX_PIN PA3 /* also PA15, PB4 */ - -#define BOARD_USART3_TX_PIN PB10 -#define BOARD_USART3_RX_PIN PB11 - -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) -# define BOARD_UART4_TX_PIN PC10 -# define BOARD_UART4_RX_PIN PC11 - -# define BOARD_UART5_TX_PIN PC12 -# define BOARD_UART5_RX_PIN PD2 -#endif - -#define BOARD_NR_SPI 3 - -#define BOARD_SPI1_NSS_PIN PA4 -#define BOARD_SPI1_SCK_PIN PA5 -#define BOARD_SPI1_MISO_PIN PA6 -#define BOARD_SPI1_MOSI_PIN PA7 - -#define BOARD_SPI2_NSS_PIN PB12 -#define BOARD_SPI2_SCK_PIN PB13 -#define BOARD_SPI2_MISO_PIN PB14 -#define BOARD_SPI2_MOSI_PIN PB15 - -#define BOARD_SPI3_NSS_PIN PA15 -#define BOARD_SPI3_SCK_PIN PB3 -#define BOARD_SPI3_MISO_PIN PB4 -#define BOARD_SPI3_MOSI_PIN PB5 - -#define BOARD_JTMS_SWDIO_PIN PA13 -#define BOARD_JTCK_SWCLK_PIN PA14 -#define BOARD_JTDI_PIN PA15 -#define BOARD_JTDO_PIN PB3 -#define BOARD_NJTRST_PIN PB4 - -#if defined(STM32_MEDIUM_DENSITY) -# define BOARD_NR_USARTS 3 -# define BOARD_NR_GPIO_PINS 37 -# define BOARD_NR_PWM_PINS 28 -# define BOARD_NR_ADC_PINS 15 -# define BOARD_NR_USED_PINS 4 -#elif defined(STM32_HIGH_DENSITY) -# define BOARD_NR_USARTS 5 -# define BOARD_NR_GPIO_PINS 52 -# define BOARD_NR_PWM_PINS 32 -# define BOARD_NR_ADC_PINS 22 -# define BOARD_NR_USED_PINS 4 -#elif defined(STM32_XL_DENSITY) -# define BOARD_NR_USARTS 5 -# define BOARD_NR_GPIO_PINS 87 -# define BOARD_NR_PWM_PINS 53 -# define BOARD_NR_ADC_PINS 39 -# define BOARD_NR_USED_PINS 7 -#endif - -/* redefine the following ones to match your hardware design */ -#define BOARD_BUTTON_PIN PA0 -#define BOARD_LED_PIN PE10 - -#define BOARD_USB_DISC_DEV GPIOA -#define BOARD_USB_DISC_BIT 13 - -#endif diff --git a/STM32F3/variants/discovery_f3/discovery_f3.cpp b/STM32F3/variants/discovery_f3/discovery_f3.cpp deleted file mode 100644 index c3c254263..000000000 --- a/STM32F3/variants/discovery_f3/discovery_f3.cpp +++ /dev/null @@ -1,193 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2013 OpenMusicKontrollers. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/** - * @file wirish/boards/48F3/board.c - * @author F3-port: Hanspeter Portner - * @brief F303xx board file (F303CB, F303CC, F303RB, F303RC, F303VB, F303VC). - */ - -#include "board/board.h" - -#include "libmaple/gpio.h" -#include "libmaple/timer.h" - -#include "wirish/wirish_debug.h" -#include "wirish/wirish_types.h" - -/* Since we want the Serial Wire/JTAG pins as GPIOs, disable both SW - * and JTAG debug support on the packages with low pin-count (e.g. MEDIUM_DENSITY), - * unless configured otherwise. */ -void boardInit(void) { -#if defined(STM32_MEDIUM_DENSITY) - //disableDebugPorts(); -#endif - enableDebugPorts(); - -} - -extern const stm32_pin_info PIN_MAP[BOARD_NR_GPIO_PINS] = { - [PC13]= {GPIOC, NULL, NULL, 13, 0, ADCx}, /* PC13 */ - [PC14]= {GPIOC, NULL, NULL, 14, 0, ADCx}, /* PC14 */ /* OSC32_IN */ - [PC15]= {GPIOC, NULL, NULL, 15, 0, ADCx}, /* PC15 */ /* OSC32_OUT */ - - [PF0] = {GPIOF, NULL, NULL, 0, 0, ADCx}, /* PF0 */ /* OSC_IN */ - [PF1] = {GPIOF, NULL, NULL, 1, 0, ADCx}, /* PF1 */ /* OSC_OUT */ - - [PA0] = {GPIOA, TIMER2, ADC1, 0, 1, 1}, /* PA0 */ - [PA1] = {GPIOA, TIMER2, ADC1, 1, 2, 2}, /* PA1 */ - [PA2] = {GPIOA, TIMER2, ADC1, 2, 3, 3}, /* PA2 */ /* also TIMER15 CH1 */ - [PA3] = {GPIOA, TIMER2, ADC1, 3, 4, 4}, /* PA3 */ /* also TIMER15 CH2 */ - [PA4] = {GPIOA, TIMER3, ADC2, 4, 2, 1}, /* PA4 */ - [PA5] = {GPIOA, NULL, ADC2, 5, 0, 2}, /* PA5 */ - [PA6] = {GPIOA, TIMER3, ADC2, 6, 1, 3}, /* PA6 */ /* also TIMER16 CH1 */ - [PA7] = {GPIOA, TIMER3, ADC2, 7, 2, 4}, /* PA7 */ /* also TIMER17 CH1 */ - - [PB0] = {GPIOB, TIMER3, ADC3, 0, 3, 12}, /* PB0 */ - [PB1] = {GPIOB, TIMER3, ADC3, 1, 4, 1}, /* PB1 */ - [PB2] = {GPIOB, NULL, ADC2, 2, 0, 12}, /* PB2 */ - - [PB10]= {GPIOB, TIMER2, NULL, 10, 3, ADCx}, /* PB10 */ - [PB11]= {GPIOB, TIMER2, NULL, 11, 4, ADCx}, /* PB11 */ - [PB12]= {GPIOB, NULL, ADC4, 12, 0, 3}, /* PB12 */ - [PB13]= {GPIOB, NULL, ADC3, 13, 0, 5}, /* PB13 */ - [PB14]= {GPIOB, TIMER15,ADC4, 14, 1, 4}, /* PB14 */ - [PB15]= {GPIOB, TIMER15,ADC4, 15, 2, 5}, /* PB15 */ - - [PA8] = {GPIOA, TIMER1, NULL, 8, 1, ADCx}, /* PA8 */ - [PA9] = {GPIOA, TIMER1, NULL, 9, 2, ADCx}, /* PA9 */ /* also TIMER2_CH3 */ - [PA10]= {GPIOA, TIMER1, NULL, 10, 3, ADCx}, /* PA10 */ /* also TIMER2 CH4 */ - [PA11]= {GPIOA, TIMER4, NULL, 11, 1, ADCx}, /* PA11 */ /* also TIMER1 CH4 */ - [PA12]= {GPIOA, TIMER4, NULL, 12, 2, ADCx}, /* PA12 */ /* also TIMER16 CH1 */ - [PA13]= {GPIOA, TIMER4, NULL, 13, 3, ADCx}, /* PA13 */ - [PA14]= {GPIOA, TIMER8, NULL, 14, 2, ADCx}, /* PA14 */ - [PA15]= {GPIOA, TIMER8, NULL, 15, 1, ADCx}, /* PA15 */ - - [PB3] = {GPIOB, TIMER2, NULL, 3, 2, ADCx}, /* PB3 */ - [PB4] = {GPIOB, TIMER3, NULL, 4, 1, ADCx}, /* PB4 */ /* also TIMER16 CH1 */ - [PB5] = {GPIOB, TIMER3, NULL, 5, 2, ADCx}, /* PB5 */ /* also TIMER17 CH1 */ - [PB6] = {GPIOB, TIMER4, NULL, 6, 1, ADCx}, /* PB6 */ /* also TIMER8 CH1 */ - [PB7] = {GPIOB, TIMER4, NULL, 7, 2, ADCx}, /* PB7 */ /* also TIMER3 CH4 */ - [PB8] = {GPIOB, TIMER4, NULL, 8, 3, ADCx}, /* PB8 */ /* also TIMER16 CH1 */ - [PB9] = {GPIOB, TIMER4, NULL, 9, 4, ADCx}, /* PB9 */ /* also TIMER17 CH1 */ - -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) - [PC0] = {GPIOC, NULL, ADC1, 0, 0, 6}, /* PC0 */ - [PC1] = {GPIOC, NULL, ADC1, 1, 0, 7}, /* PC1 */ - [PC2] = {GPIOC, NULL, ADC1, 2, 0, 8}, /* PC2 */ - [PC3] = {GPIOC, NULL, ADC1, 3, 0, 9}, /* PC3 */ - - [PF4] = {GPIOF, NULL, ADC1, 4, 0, 5}, /* PF4 */ - - [PC4] = {GPIOC, NULL, ADC2, 4, 0, 5}, /* PC4 */ - [PC5] = {GPIOC, NULL, ADC2, 5, 0, 11}, /* PC5 */ - [PC6] = {GPIOC, TIMER8, NULL, 6, 1, ADCx}, /* PC6 */ /* also TIMER3_CH1 */ - [PC7] = {GPIOC, TIMER8, NULL, 7, 2, ADCx}, /* PC7 */ /* also TIMER3_CH2 */ - [PC8] = {GPIOC, TIMER8, NULL, 8, 3, ADCx}, /* PC8 */ /* also TIMER3_CH3 */ - [PC9] = {GPIOC, TIMER8, NULL, 9, 4, ADCx}, /* PC9 */ /* also TIMER3_CH4 */ - [PC10]= {GPIOC, NULL, NULL, 10, 0, ADCx}, /* PC10 */ - [PC11]= {GPIOC, NULL, NULL, 11, 0, ADCx}, /* PC11 */ - [PC12]= {GPIOC, NULL, NULL, 12, 0, ADCx}, /* PC12 */ - - [PD2] = {GPIOD, NULL, NULL, 2, 0, ADCx}, /* PD2 */ - -# if defined(STM32_XL_DENSITY) - [PE2] = {GPIOE, TIMER3, NULL, 2, 1, ADCx}, /* PE2 */ - [PE3] = {GPIOE, TIMER3, NULL, 3, 2, ADCx}, /* PE3 */ - [PE4] = {GPIOE, TIMER3, NULL, 4, 3, ADCx}, /* PE4 */ - [PE5] = {GPIOE, TIMER3, NULL, 5, 4, ADCx}, /* PE5 */ - [PE6] = {GPIOE, NULL, NULL, 6, 0, ADCx}, /* PE6 */ - - [PF9] = {GPIOF,TIMER15, NULL, 9, 1, ADCx}, /* PF9 */ - [PF10]= {GPIOF,TIMER15, NULL, 10, 2, ADCx}, /* PF10 */ - - [PF2] = {GPIOF, NULL, ADC1, 2, 0, 10}, /* PF2 */ - - [PE7] = {GPIOE, NULL, ADC3, 7, 0, 13}, /* PE7 */ - [PE8] = {GPIOE, NULL, ADC3, 8, 0, 6}, /* PE8 */ - [PE9] = {GPIOE, TIMER1, ADC3, 9, 1, 2}, /* PE9 */ - [PE10]= {GPIOE, NULL, ADC3, 10, 0, 14}, /* PE10 */ - [PE11]= {GPIOE, TIMER1, ADC3, 11, 2, 15}, /* PE11 */ - [PE12]= {GPIOE, NULL, ADC3, 12, 0, 15}, /* PE12 */ - [PE13]= {GPIOE, TIMER1, ADC3, 13, 3, 3}, /* PE13 */ - [PE14]= {GPIOE, TIMER1, ADC4, 14, 4, 1}, /* PE14 */ - [PE15]= {GPIOE, NULL, ADC4, 15, 0, 2}, /* PE15 */ - - [PD8] = {GPIOD, NULL, ADC4, 8, 0, 12}, /* PD8 */ - [PD9] = {GPIOD, NULL, ADC4, 9, 0, 13}, /* PD0 */ - [PD10]= {GPIOD, NULL, ADC3, 10, 0, 7}, /* PD10 */ - [PD11]= {GPIOD, NULL, ADC3, 11, 0, 8}, /* PD11 */ - [PD12]= {GPIOD, TIMER4, ADC3, 12, 1, 9}, /* PD12 */ - [PD13]= {GPIOD, TIMER4, ADC3, 13, 2, 10}, /* PD13 */ - [PD14]= {GPIOD, TIMER4, ADC3, 14, 3, 11}, /* PD14 */ - [PD15]= {GPIOD, TIMER4, NULL, 15, 4, ADCx}, /* PD15 */ - - [PF6] = {GPIOF, TIMER4, NULL, 6, 4, ADCx}, /* PF6 */ - - [PD0] = {GPIOD, NULL, NULL, 0, 0, ADCx}, /* PD0 */ - [PD1] = {GPIOD, TIMER8, NULL, 1, 4, ADCx}, /* PD1 */ - - [PD3] = {GPIOD, NULL, NULL, 3, 0, ADCx}, /* PD3 */ - [PD4] = {GPIOD, TIMER2, NULL, 4, 2, ADCx}, /* PD4 */ - [PD5] = {GPIOD, NULL, NULL, 5, 0, ADCx}, /* PD5 */ - [PD6] = {GPIOD, TIMER2, NULL, 6, 4, ADCx}, /* PD6 */ - [PD7] = {GPIOD, TIMER2, NULL, 7, 3, ADCx}, /* PD7 */ - - [PE0] = {GPIOE,TIMER16, NULL, 0, 1, ADCx}, /* PE0 */ - [PE1] = {GPIOE,TIMER17, NULL, 1, 1, ADCx}, /* PE1 */ -# endif -#endif -}; - -extern const uint8 boardPWMPins[BOARD_NR_PWM_PINS] __FLASH__ = { - PA0, PA1, PA2, PA3, PA4, PA6, PA7, PB0, PB1, PB10, PB11, PB14, PB15, PA8, PA9, PA10, PA11, PA12, PA13, PA14, PA15, PB3, PB4, PB5, PB6, PB7, PB8, PB9, -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) - PC6, PC7, PC8, PC9, -# if defined(STM32_XL_DENSITY) - PE2, PE3, PE4, PE5, PF9, PF10, PE9, PE11, PE13, PE14, PD12, PD13, PD14, PD15, PF6, PD1, PD4, PD6, PD7, PE0, PE1, -# endif -#endif -}; - -extern const uint8 boardADCPins[BOARD_NR_ADC_PINS] __FLASH__ = { - PA0, PA1, PA2, PA3, PA4, PA5, PA6, PA7, PB0, PB1, PB2, PB12, PB13, PB14, PB15, -#if defined(STM32_HIGH_DENSITY) || defined(STM32_XL_DENSITY) - PC0, PC1, PC2, PC3, PF4, PC4, PC5, -# if defined(STM32_XL_DENSITY) - PF2, PE7, PE8, PE9, PE10, PE11, PE12, PE13, PE14, PE15, PD8, PD9, PD10, PD11, PD12, PD13, PD14, -# endif -#endif -}; - -#define OSC_IN PF0 -#define OSC_OUT PF1 - -#define USB_DM PA11 -#define USB_DP PA12 - -extern const uint8 boardUsedPins[BOARD_NR_USED_PINS] __FLASH__ = { - OSC_IN, OSC_OUT, USB_DP, USB_DM,PB3, PA13, PA14 -}; diff --git a/STM32F3/variants/discovery_f3/ld/common.inc b/STM32F3/variants/discovery_f3/ld/common.inc deleted file mode 100644 index 49aaf6fc4..000000000 --- a/STM32F3/variants/discovery_f3/ld/common.inc +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Linker script for libmaple. - * - * Original author "lanchon" from ST forums, with modifications by LeafLabs. - */ - -OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") - -/* - * Configure other libraries we want in the link. - * - * libgcc, libc, and libm are common across supported toolchains. - * However, some toolchains require additional archives which aren't - * present everywhere (e.g. ARM's gcc-arm-embedded releases). - * - * To hack around this, we let the build system specify additional - * archives by putting the right extra_libs.inc (in a directory under - * toolchains/) in our search path. - */ -GROUP(libgcc.a libc.a libm.a) -INCLUDE extra_libs.inc - -/* - * These force the linker to search for vector table symbols. - * - * These symbols vary by STM32 family (and also within families). - * It's up to the build system to configure the link's search path - * properly for the target MCU. - */ -INCLUDE vector_symbols.inc - -/* STM32 vector table. */ -EXTERN(__stm32_vector_table) - -/* C runtime initialization function. */ -EXTERN(start_c) - -/* main entry point */ -EXTERN(main) - -/* Initial stack pointer value. */ -EXTERN(__msp_init) -PROVIDE(__msp_init = ORIGIN(ram) + LENGTH(ram)); - -/* Reset vector and chip reset entry point */ -EXTERN(__start__) -ENTRY(__start__) -PROVIDE(__exc_reset = __start__); - -/* Heap boundaries, for libmaple */ -EXTERN(_lm_heap_start); -EXTERN(_lm_heap_end); - -SECTIONS -{ - .text : - { - __text_start__ = .; - /* - * STM32 vector table. Leave this here. Yes, really. - */ - *(.stm32.interrupt_vector) - - /* - * Program code and vague linking - */ - *(.text .text.* .gnu.linkonce.t.*) - *(.plt) - *(.gnu.warning) - *(.glue_7t) *(.glue_7) *(.vfp11_veneer) - - *(.ARM.extab* .gnu.linkonce.armextab.*) - *(.gcc_except_table) - *(.eh_frame_hdr) - *(.eh_frame) - - . = ALIGN(4); - KEEP(*(.init)) - - . = ALIGN(4); - __preinit_array_start = .; - KEEP (*(.preinit_array)) - __preinit_array_end = .; - - . = ALIGN(4); - __init_array_start = .; - KEEP (*(SORT(.init_array.*))) - KEEP (*(.init_array)) - __init_array_end = .; - - . = ALIGN(0x4); - KEEP (*crtbegin.o(.ctors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .ctors)) - KEEP (*(SORT(.ctors.*))) - KEEP (*crtend.o(.ctors)) - - . = ALIGN(4); - KEEP(*(.fini)) - - . = ALIGN(4); - __fini_array_start = .; - KEEP (*(.fini_array)) - KEEP (*(SORT(.fini_array.*))) - __fini_array_end = .; - - KEEP (*crtbegin.o(.dtors)) - KEEP (*(EXCLUDE_FILE (*crtend.o) .dtors)) - KEEP (*(SORT(.dtors.*))) - KEEP (*crtend.o(.dtors)) - } > REGION_TEXT - - /* - * End of text - */ - .text.align : - { - . = ALIGN(8); - __text_end__ = .; - } > REGION_TEXT - - /* - * .ARM.exidx exception unwinding; mandated by ARM's C++ ABI - */ - __exidx_start = .; - .ARM.exidx : - { - *(.ARM.exidx* .gnu.linkonce.armexidx.*) - } > REGION_RODATA - __exidx_end = .; - - /* - * .data - */ - .data : - { - . = ALIGN(8); - __data_start__ = .; - - *(.got.plt) *(.got) - *(.data .data.* .gnu.linkonce.d.*) - - . = ALIGN(8); - __data_end__ = .; - } > REGION_DATA AT> REGION_RODATA - - /* - * Read-only data - */ - .rodata : - { - *(.rodata .rodata.* .gnu.linkonce.r.*) - /* .USER_FLASH: We allow users to allocate into Flash here */ - *(.USER_FLASH) - /* ROM image configuration; for C startup */ - . = ALIGN(4); - _lm_rom_img_cfgp = .; - LONG(LOADADDR(.data)); - /* - * Heap: Linker scripts may choose a custom heap by overriding - * _lm_heap_start and _lm_heap_end. Otherwise, the heap is in - * internal SRAM, beginning after .bss, and growing towards - * the stack. - * - * I'm shoving these here naively; there's probably a cleaner way - * to go about this. [mbolivar] - */ - _lm_heap_start = DEFINED(_lm_heap_start) ? _lm_heap_start : _end; - _lm_heap_end = DEFINED(_lm_heap_end) ? _lm_heap_end : __msp_init; - } > REGION_RODATA - - /* - * .bss - */ - .bss : - { - . = ALIGN(8); - __bss_start__ = .; - *(.bss .bss.* .gnu.linkonce.b.*) - *(COMMON) - . = ALIGN (8); - __bss_end__ = .; - _end = __bss_end__; - } > REGION_BSS - - /* - * .ccm - */ - .ccm (NOLOAD) : - { - . = ALIGN(4); - *(.CCM) - . = ALIGN(4); - } > REGION_CCM - - /* - * Debugging sections - */ - .stab 0 (NOLOAD) : { *(.stab) } - .stabstr 0 (NOLOAD) : { *(.stabstr) } - /* DWARF debug sections. - * Symbols in the DWARF debugging sections are relative to the beginning - * of the section so we begin them at 0. */ - /* DWARF 1 */ - .debug 0 : { *(.debug) } - .line 0 : { *(.line) } - /* GNU DWARF 1 extensions */ - .debug_srcinfo 0 : { *(.debug_srcinfo) } - .debug_sfnames 0 : { *(.debug_sfnames) } - /* DWARF 1.1 and DWARF 2 */ - .debug_aranges 0 : { *(.debug_aranges) } - .debug_pubnames 0 : { *(.debug_pubnames) } - /* DWARF 2 */ - .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } - .debug_abbrev 0 : { *(.debug_abbrev) } - .debug_line 0 : { *(.debug_line) } - .debug_frame 0 : { *(.debug_frame) } - .debug_str 0 : { *(.debug_str) } - .debug_loc 0 : { *(.debug_loc) } - .debug_macinfo 0 : { *(.debug_macinfo) } - /* SGI/MIPS DWARF 2 extensions */ - .debug_weaknames 0 : { *(.debug_weaknames) } - .debug_funcnames 0 : { *(.debug_funcnames) } - .debug_typenames 0 : { *(.debug_typenames) } - .debug_varnames 0 : { *(.debug_varnames) } - - .note.gnu.arm.ident 0 : { KEEP (*(.note.gnu.arm.ident)) } - .ARM.attributes 0 : { KEEP (*(.ARM.attributes)) } - /DISCARD/ : { *(.note.GNU-stack) } -} diff --git a/STM32F3/variants/discovery_f3/ld/extra_libs.inc b/STM32F3/variants/discovery_f3/ld/extra_libs.inc deleted file mode 100644 index dd2c84fa4..000000000 --- a/STM32F3/variants/discovery_f3/ld/extra_libs.inc +++ /dev/null @@ -1,7 +0,0 @@ -/* - * Extra archives needed by ARM's GCC ARM Embedded arm-none-eabi- - * releases (https://launchpad.net/gcc-arm-embedded/). - */ - -/* This is for the provided newlib. */ -GROUP(libnosys.a) diff --git a/STM32F3/variants/discovery_f3/ld/flash.ld b/STM32F3/variants/discovery_f3/ld/flash.ld deleted file mode 100644 index 2fa903538..000000000 --- a/STM32F3/variants/discovery_f3/ld/flash.ld +++ /dev/null @@ -1,28 +0,0 @@ -/* - * libmaple linker script for "Flash" builds. - * - * A Flash build puts .text (and .rodata) in Flash, and - * .data/.bss/heap (of course) in SRAM, but offsets the sections by - * enough space to store the Maple bootloader, which lives in low - * Flash and uses low memory. - */ - -/* - * This pulls in the appropriate MEMORY declaration from the right - * subdirectory of stm32/mem/ (the environment must call ld with the - * right include directory flags to make this happen). Boards can also - * use this file to use any of libmaple's memory-related hooks (like - * where the heap should live). - */ - -INCLUDE mem-flash.inc - -/* Provide memory region aliases for common.inc */ -REGION_ALIAS("REGION_TEXT", rom); -REGION_ALIAS("REGION_DATA", ram); -REGION_ALIAS("REGION_BSS", ram); -REGION_ALIAS("REGION_RODATA", rom); -REGION_ALIAS("REGION_CCM", ccm); - -/* Let common.inc handle the real work. */ -INCLUDE common.inc diff --git a/STM32F3/variants/discovery_f3/ld/jtag.ld b/STM32F3/variants/discovery_f3/ld/jtag.ld deleted file mode 100644 index cf08b20c0..000000000 --- a/STM32F3/variants/discovery_f3/ld/jtag.ld +++ /dev/null @@ -1,33 +0,0 @@ -/* - * libmaple linker script for "JTAG" builds. - * - * A "JTAG" build puts .text (and .rodata) in Flash, and - * .data/.bss/heap (of course) in SRAM, but links starting at the - * Flash and SRAM starting addresses (0x08000000 and 0x20000000 - * respectively). This will wipe out a Maple bootloader if there's one - * on the board, so only use this if you know what you're doing. - * - * Of course, a "JTAG" build is perfectly usable for upload over SWD, - * the system memory bootloader, etc. The name is just a historical - * artifact. - */ - -/* - * This pulls in the appropriate MEMORY declaration from the right - * subdirectory of stm32/mem/ (the environment must call ld with the - * right include directory flags to make this happen). Boards can also - * use this file to use any of libmaple's memory-related hooks (like - * where the heap should live). - */ - -INCLUDE mem-jtag.inc - -/* Provide memory region aliases for common.inc */ -REGION_ALIAS("REGION_TEXT", rom); -REGION_ALIAS("REGION_DATA", ram); -REGION_ALIAS("REGION_BSS", ram); -REGION_ALIAS("REGION_RODATA", rom); -REGION_ALIAS("REGION_CCM", ccm); - -/* Let common.inc handle the real work. */ -INCLUDE common.inc diff --git a/STM32F3/variants/discovery_f3/ld/mem-flash.inc b/STM32F3/variants/discovery_f3/ld/mem-flash.inc deleted file mode 100644 index a6838084d..000000000 --- a/STM32F3/variants/discovery_f3/ld/mem-flash.inc +++ /dev/null @@ -1,6 +0,0 @@ -MEMORY -{ - ccm (rwx) : ORIGIN = 0x10000000, LENGTH = 8K - ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 37K - rom (rx) : ORIGIN = 0x08005000, LENGTH = 236K -} diff --git a/STM32F3/variants/discovery_f3/ld/mem-jtag.inc b/STM32F3/variants/discovery_f3/ld/mem-jtag.inc deleted file mode 100644 index 9fb445247..000000000 --- a/STM32F3/variants/discovery_f3/ld/mem-jtag.inc +++ /dev/null @@ -1,6 +0,0 @@ -MEMORY -{ - ccm (rwx) : ORIGIN = 0x10000000, LENGTH = 8K - ram (rwx) : ORIGIN = 0x20000000, LENGTH = 40K - rom (rx) : ORIGIN = 0x08000000, LENGTH = 256K -} diff --git a/STM32F3/variants/discovery_f3/ld/mem-ram.inc b/STM32F3/variants/discovery_f3/ld/mem-ram.inc deleted file mode 100644 index 08d76083c..000000000 --- a/STM32F3/variants/discovery_f3/ld/mem-ram.inc +++ /dev/null @@ -1,6 +0,0 @@ -MEMORY -{ - ccm (rwx) : ORIGIN = 0x10000000, LENGTH = 8K - ram (rwx) : ORIGIN = 0x20000C00, LENGTH = 37K - rom (rx) : ORIGIN = 0x08005000, LENGTH = 0K -} diff --git a/STM32F3/variants/discovery_f3/ld/names.inc b/STM32F3/variants/discovery_f3/ld/names.inc deleted file mode 100644 index 6d7ff6e94..000000000 --- a/STM32F3/variants/discovery_f3/ld/names.inc +++ /dev/null @@ -1,78 +0,0 @@ -EXTERN(__cs3_stack) -EXTERN(__cs3_reset) -EXTERN(__exc_nmi) -EXTERN(__exc_hardfault) -EXTERN(__exc_memmanage) -EXTERN(__exc_busfault) -EXTERN(__exc_usagefault) -EXTERN(__stm32reservedexception7) -EXTERN(__stm32reservedexception8) -EXTERN(__stm32reservedexception9) -EXTERN(__stm32reservedexception10) -EXTERN(__exc_svc) -EXTERN(__exc_debug_monitor) -EXTERN(__stm32reservedexception13) -EXTERN(__exc_pendsv) -EXTERN(__exc_systick) - -EXTERN(__irq_wwdg) -EXTERN(__irq_pvd) -EXTERN(__irq_tamper) -EXTERN(__irq_rtc) -EXTERN(__irq_flash) -EXTERN(__irq_rcc) -EXTERN(__irq_exti0) -EXTERN(__irq_exti1) -EXTERN(__irq_exti2) -EXTERN(__irq_exti3) -EXTERN(__irq_exti4) -EXTERN(__irq_dma1_channel1) -EXTERN(__irq_dma1_channel2) -EXTERN(__irq_dma1_channel3) -EXTERN(__irq_dma1_channel4) -EXTERN(__irq_dma1_channel5) -EXTERN(__irq_dma1_channel6) -EXTERN(__irq_dma1_channel7) -EXTERN(__irq_adc) -EXTERN(__irq_usb_hp_can_tx) -EXTERN(__irq_usb_lp_can_rx0) -EXTERN(__irq_can_rx1) -EXTERN(__irq_can_sce) -EXTERN(__irq_exti9_5) -EXTERN(__irq_tim1_brk) -EXTERN(__irq_tim1_up) -EXTERN(__irq_tim1_trg_com) -EXTERN(__irq_tim1_cc) -EXTERN(__irq_tim2) -EXTERN(__irq_tim3) -EXTERN(__irq_tim4) -EXTERN(__irq_i2c1_ev) -EXTERN(__irq_i2c1_er) -EXTERN(__irq_i2c2_ev) -EXTERN(__irq_i2c2_er) -EXTERN(__irq_spi1) -EXTERN(__irq_spi2) -EXTERN(__irq_usart1) -EXTERN(__irq_usart2) -EXTERN(__irq_usart3) -EXTERN(__irq_exti15_10) -EXTERN(__irq_rtcalarm) -EXTERN(__irq_usbwakeup) - -EXTERN(__irq_tim8_brk) -EXTERN(__irq_tim8_up) -EXTERN(__irq_tim8_trg_com) -EXTERN(__irq_tim8_cc) -EXTERN(__irq_adc3) -EXTERN(__irq_fsmc) -EXTERN(__irq_sdio) -EXTERN(__irq_tim5) -EXTERN(__irq_spi3) -EXTERN(__irq_uart4) -EXTERN(__irq_uart5) -EXTERN(__irq_tim6) -EXTERN(__irq_tim7) -EXTERN(__irq_dma2_channel1) -EXTERN(__irq_dma2_channel2) -EXTERN(__irq_dma2_channel3) -EXTERN(__irq_dma2_channel4_5) diff --git a/STM32F3/variants/discovery_f3/ld/ram.ld b/STM32F3/variants/discovery_f3/ld/ram.ld deleted file mode 100644 index 0484423b0..000000000 --- a/STM32F3/variants/discovery_f3/ld/ram.ld +++ /dev/null @@ -1,27 +0,0 @@ -/* - * libmaple linker script for RAM builds. - * - * A Flash build puts .text, .rodata, and .data/.bss/heap (of course) - * in SRAM, but offsets the sections by enough space to store the - * Maple bootloader, which uses low memory. - */ - -/* - * This pulls in the appropriate MEMORY declaration from the right - * subdirectory of stm32/mem/ (the environment must call ld with the - * right include directory flags to make this happen). Boards can also - * use this file to use any of libmaple's memory-related hooks (like - * where the heap should live). - */ - -INCLUDE mem-ram.inc - -/* Provide memory region aliases for common.inc */ -REGION_ALIAS("REGION_TEXT", ram); -REGION_ALIAS("REGION_DATA", ram); -REGION_ALIAS("REGION_BSS", ram); -REGION_ALIAS("REGION_RODATA", ram); -REGION_ALIAS("REGION_CCM", ccm); - -/* Let common.inc handle the real work. */ -INCLUDE common.inc diff --git a/STM32F3/variants/discovery_f3/ld/vector_symbols.inc b/STM32F3/variants/discovery_f3/ld/vector_symbols.inc deleted file mode 100644 index a9d18f447..000000000 --- a/STM32F3/variants/discovery_f3/ld/vector_symbols.inc +++ /dev/null @@ -1,98 +0,0 @@ -EXTERN(__msp_init) -EXTERN(__exc_reset) -EXTERN(__exc_nmi) -EXTERN(__exc_hardfault) -EXTERN(__exc_memmanage) -EXTERN(__exc_busfault) -EXTERN(__exc_usagefault) -EXTERN(__stm32reservedexception7) -EXTERN(__stm32reservedexception8) -EXTERN(__stm32reservedexception9) -EXTERN(__stm32reservedexception10) -EXTERN(__exc_svc) -EXTERN(__exc_debug_monitor) -EXTERN(__stm32reservedexception13) -EXTERN(__exc_pendsv) -EXTERN(__exc_systick) -EXTERN(__irq_wwdg) -EXTERN(__irq_pvd) -EXTERN(__irq_tamp_stamp) -EXTERN(__irq_rtc_wkup) -EXTERN(__irq_flash) -EXTERN(__irq_rcc) -EXTERN(__irq_exti0) -EXTERN(__irq_exti1) -EXTERN(__irq_exti2) -EXTERN(__irq_exti3) -EXTERN(__irq_exti4) -EXTERN(__irq_dma1_ch1) -EXTERN(__irq_dma1_ch2) -EXTERN(__irq_dma1_ch3) -EXTERN(__irq_dma1_ch4) -EXTERN(__irq_dma1_ch5) -EXTERN(__irq_dma1_ch6) -EXTERN(__irq_dma1_ch7) -EXTERN(__irq_adc1_2) -EXTERN(__irq_usb_hp_can_tx) -EXTERN(__irq_usb_lp_can_rx0) -EXTERN(__irq_can_rx1) -EXTERN(__irq_can_sce) -EXTERN(__irq_exti9_5) -EXTERN(__irq_tim1_brk_tim15) -EXTERN(__irq_tim1_up_tim16) -EXTERN(__irq_tim1_trg_com_tim17) -EXTERN(__irq_tim1_cc) -EXTERN(__irq_tim2) -EXTERN(__irq_tim3) -EXTERN(__irq_tim4) -EXTERN(__irq_i2c1_ev) -EXTERN(__irq_i2c1_er) -EXTERN(__irq_i2c2_ev) -EXTERN(__irq_i2c2_er) -EXTERN(__irq_spi1) -EXTERN(__irq_spi2) -EXTERN(__irq_usart1) -EXTERN(__irq_usart2) -EXTERN(__irq_usart3) -EXTERN(__irq_exti15_10) -EXTERN(__irq_rtc_alarm) -EXTERN(__irq_usb_wkup) -EXTERN(__irq_tim8_brk) -EXTERN(__irq_tim8_up) -EXTERN(__irq_tim8_trg_com) -EXTERN(__irq_tim8_cc) -EXTERN(__irq_adc3) -EXTERN(__stm32reservedexception48) -EXTERN(__stm32reservedexception49) -EXTERN(__stm32reservedexception50) -EXTERN(__irq_spi3) -EXTERN(__irq_uart4) -EXTERN(__irq_uart5) -EXTERN(__irq_tim6_dacunder) -EXTERN(__irq_tim7) -EXTERN(__irq_dma2_ch1) -EXTERN(__irq_dma2_ch2) -EXTERN(__irq_dma2_ch3) -EXTERN(__irq_dma2_ch4) -EXTERN(__irq_dma2_ch5) -EXTERN(__irq_adc4) -EXTERN(__stm32reservedexception62) -EXTERN(__stm32reservedexception63) -EXTERN(__irq_comp123) -EXTERN(__irq_comp456) -EXTERN(__irq_comp7) -EXTERN(__stm32reservedexception67) -EXTERN(__stm32reservedexception68) -EXTERN(__stm32reservedexception69) -EXTERN(__stm32reservedexception70) -EXTERN(__stm32reservedexception71) -EXTERN(__stm32reservedexception72) -EXTERN(__stm32reservedexception73) -EXTERN(__irq_usb_hp) -EXTERN(__irq_usb_lp) -EXTERN(__irq_usb_wkup2) -EXTERN(__stm32reservedexception77) -EXTERN(__stm32reservedexception78) -EXTERN(__stm32reservedexception79) -EXTERN(__stm32reservedexception80) -EXTERN(__irq_fpu) diff --git a/STM32F3/variants/discovery_f3/stm32_isrs.S b/STM32F3/variants/discovery_f3/stm32_isrs.S deleted file mode 100644 index f236387aa..000000000 --- a/STM32F3/variants/discovery_f3/stm32_isrs.S +++ /dev/null @@ -1,331 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* STM32F3 performance line ISR weak declarations */ - -#include - - .thumb - -/* Default handler for all non-overridden interrupts and exceptions */ - .globl __default_handler - .type __default_handler, %function - -__default_handler: - b . - - .weak __exc_nmi - .globl __exc_nmi - .set __exc_nmi, __default_handler - .weak __exc_hardfault - .globl __exc_hardfault - .set __exc_hardfault, __default_handler - .weak __exc_memmanage - .globl __exc_memmanage - .set __exc_memmanage, __default_handler - .weak __exc_busfault - .globl __exc_busfault - .set __exc_busfault, __default_handler - .weak __exc_usagefault - .globl __exc_usagefault - .set __exc_usagefault, __default_handler - .weak __stm32reservedexception7 - .globl __stm32reservedexception7 - .set __stm32reservedexception7, __default_handler - .weak __stm32reservedexception8 - .globl __stm32reservedexception8 - .set __stm32reservedexception8, __default_handler - .weak __stm32reservedexception9 - .globl __stm32reservedexception9 - .set __stm32reservedexception9, __default_handler - .weak __stm32reservedexception10 - .globl __stm32reservedexception10 - .set __stm32reservedexception10, __default_handler - .weak __exc_svc - .globl __exc_svc - .set __exc_svc, __default_handler - .weak __exc_debug_monitor - .globl __exc_debug_monitor - .set __exc_debug_monitor, __default_handler - .weak __stm32reservedexception13 - .globl __stm32reservedexception13 - .set __stm32reservedexception13, __default_handler - .weak __exc_pendsv - .globl __exc_pendsv - .set __exc_pendsv, __default_handler - .weak __exc_systick - .globl __exc_systick - .set __exc_systick, __default_handler - .weak __irq_wwdg - .globl __irq_wwdg - .set __irq_wwdg, __default_handler - .weak __irq_pvd - .globl __irq_pvd - .set __irq_pvd, __default_handler - .weak __irq_tamp_stamp - .globl __irq_tamp_stamp - .set __irq_tamp_stamp, __default_handler - .weak __irq_rtc_wkup - .globl __irq_rtc_wkup - .set __irq_rtc_wkup, __default_handler - .weak __irq_flash - .globl __irq_flash - .set __irq_flash, __default_handler - .weak __irq_rcc - .globl __irq_rcc - .set __irq_rcc, __default_handler - .weak __irq_exti0 - .globl __irq_exti0 - .set __irq_exti0, __default_handler - .weak __irq_exti1 - .globl __irq_exti1 - .set __irq_exti1, __default_handler - .weak __irq_exti2 - .globl __irq_exti2 - .set __irq_exti2, __default_handler - .weak __irq_exti3 - .globl __irq_exti3 - .set __irq_exti3, __default_handler - .weak __irq_exti4 - .globl __irq_exti4 - .set __irq_exti4, __default_handler - .weak __irq_dma1_ch1 - .globl __irq_dma1_ch1 - .set __irq_dma1_ch1, __default_handler - .weak __irq_dma1_ch2 - .globl __irq_dma1_ch2 - .set __irq_dma1_ch2, __default_handler - .weak __irq_dma1_ch3 - .globl __irq_dma1_ch3 - .set __irq_dma1_ch3, __default_handler - .weak __irq_dma1_ch4 - .globl __irq_dma1_ch4 - .set __irq_dma1_ch4, __default_handler - .weak __irq_dma1_ch5 - .globl __irq_dma1_ch5 - .set __irq_dma1_ch5, __default_handler - .weak __irq_dma1_ch6 - .globl __irq_dma1_ch6 - .set __irq_dma1_ch6, __default_handler - .weak __irq_dma1_ch7 - .globl __irq_dma1_ch7 - .set __irq_dma1_ch7, __default_handler - .weak __irq_adc1_2 - .globl __irq_adc1_2 - .set __irq_adc1_2, __default_handler - .weak __irq_usb_hp_can_tx - .globl __irq_usb_hp_can_tx - .set __irq_usb_hp_can_tx, __default_handler - .weak __irq_usb_lp_can_rx0 - .globl __irq_usb_lp_can_rx0 - .set __irq_usb_lp_can_rx0, __default_handler - .weak __irq_can_rx1 - .globl __irq_can_rx1 - .set __irq_can_rx1, __default_handler - .weak __irq_can_sce - .globl __irq_can_sce - .set __irq_can_sce, __default_handler - .weak __irq_exti9_5 - .globl __irq_exti9_5 - .set __irq_exti9_5, __default_handler - .weak __irq_tim1_brk_tim15 - .globl __irq_tim1_brk_tim15 - .set __irq_tim1_brk_tim15, __default_handler - .weak __irq_tim1_up_tim16 - .globl __irq_tim1_up_tim16 - .set __irq_tim1_up_tim16, __default_handler - .weak __irq_tim1_trg_com_tim17 - .globl __irq_tim1_trg_com_tim17 - .set __irq_tim1_trg_com_tim17, __default_handler - .weak __irq_tim1_cc - .globl __irq_tim1_cc - .set __irq_tim1_cc, __default_handler - .weak __irq_tim2 - .globl __irq_tim2 - .set __irq_tim2, __default_handler - .weak __irq_tim3 - .globl __irq_tim3 - .set __irq_tim3, __default_handler - .weak __irq_tim4 - .globl __irq_tim4 - .set __irq_tim4, __default_handler - .weak __irq_i2c1_ev - .globl __irq_i2c1_ev - .set __irq_i2c1_ev, __default_handler - .weak __irq_i2c1_er - .globl __irq_i2c1_er - .set __irq_i2c1_er, __default_handler - .weak __irq_i2c2_ev - .globl __irq_i2c2_ev - .set __irq_i2c2_ev, __default_handler - .weak __irq_i2c2_er - .globl __irq_i2c2_er - .set __irq_i2c2_er, __default_handler - .weak __irq_spi1 - .globl __irq_spi1 - .set __irq_spi1, __default_handler - .weak __irq_spi2 - .globl __irq_spi2 - .set __irq_spi2, __default_handler - .weak __irq_usart1 - .globl __irq_usart1 - .set __irq_usart1, __default_handler - .weak __irq_usart2 - .globl __irq_usart2 - .set __irq_usart2, __default_handler - .weak __irq_usart3 - .globl __irq_usart3 - .set __irq_usart3, __default_handler - .weak __irq_exti15_10 - .globl __irq_exti15_10 - .set __irq_exti15_10, __default_handler - .weak __irq_rtc_alarm - .globl __irq_rtc_alarm - .set __irq_rtc_alarm, __default_handler - .weak __irq_usb_wkup - .globl __irq_usb_wkup - .set __irq_usb_wkup, __default_handler - - .weak __irq_tim8_brk - .globl __irq_tim8_brk - .set __irq_tim8_brk, __default_handler - .weak __irq_tim8_up - .globl __irq_tim8_up - .set __irq_tim8_up, __default_handler - .weak __irq_tim8_trg_com - .globl __irq_tim8_trg_com - .set __irq_tim8_trg_com, __default_handler - .weak __irq_tim8_cc - .globl __irq_tim8_cc - .set __irq_tim8_cc, __default_handler - .weak __irq_adc3 - .globl __irq_adc3 - .set __irq_adc3, __default_handler - .weak __stm32reservedexception48 - .globl __stm32reservedexception48 - .set __stm32reservedexception48, __default_handler - .weak __stm32reservedexception49 - .globl __stm32reservedexception49 - .set __stm32reservedexception49, __default_handler - .weak __stm32reservedexception50 - .globl __stm32reservedexception50 - .set __stm32reservedexception50, __default_handler - .weak __irq_spi3 - .globl __irq_spi3 - .set __irq_spi3, __default_handler - .weak __irq_uart4 - .globl __irq_uart4 - .set __irq_uart4, __default_handler - .weak __irq_uart5 - .globl __irq_uart5 - .set __irq_uart5, __default_handler - .weak __irq_tim6_dacunder - .globl __irq_tim6_dacunder - .set __irq_tim6_dac, __default_handler - .weak __irq_tim7 - .globl __irq_tim7 - .set __irq_tim7, __default_handler - .weak __irq_dma2_ch1 - .globl __irq_dma2_ch1 - .set __irq_dma2_ch1, __default_handler - .weak __irq_dma2_ch2 - .globl __irq_dma2_ch2 - .set __irq_dma2_ch2, __default_handler - .weak __irq_dma2_ch3 - .globl __irq_dma2_ch3 - .set __irq_dma2_ch3, __default_handler - .weak __irq_dma2_ch4 - .globl __irq_dma2_ch4 - .set __irq_dma2_ch4, __default_handler - .weak __irq_dma2_ch5 - .globl __irq_dma2_ch5 - .set __irq_dma2_ch5, __default_handler - .weak __irq_adc4 - .globl __irq_adc4 - .set __irq_adc4, __default_handler - .weak __stm32reservedexception62 - .globl __stm32reservedexception62 - .set __stm32reservedexception62, __default_handler - .weak __stm32reservedexception63 - .globl __stm32reservedexception63 - .set __stm32reservedexception63, __default_handler - .weak __irq_comp123 - .globl __irq_comp123 - .set __irq_comp123, __default_handler - .weak __irq_comp456 - .globl __irq_comp456 - .set __irq_comp456, __default_handler - .weak __irq_comp7 - .globl __irq_comp7 - .set __irq_comp7, __default_handler - .weak __stm32reservedexception67 - .globl __stm32reservedexception67 - .set __stm32reservedexception67, __default_handler - .weak __stm32reservedexception68 - .globl __stm32reservedexception68 - .set __stm32reservedexception68, __default_handler - .weak __stm32reservedexception69 - .globl __stm32reservedexception69 - .set __stm32reservedexception69, __default_handler - .weak __stm32reservedexception70 - .globl __stm32reservedexception70 - .set __stm32reservedexception70, __default_handler - .weak __stm32reservedexception71 - .globl __stm32reservedexception71 - .set __stm32reservedexception71, __default_handler - .weak __stm32reservedexception72 - .globl __stm32reservedexception72 - .set __stm32reservedexception72, __default_handler - .weak __stm32reservedexception73 - .globl __stm32reservedexception73 - .set __stm32reservedexception73, __default_handler - .weak __irq_usb_hp - .globl __irq_usb_hp - .set __irq_usb_hp, __default_handler - .weak __irq_usb_lp - .globl __irq_usb_lp - .set __irq_usb_lp, __default_handler - .weak __irq_usb_wkup2 - .globl __irq_usb_wkup2 - .set __irq_usb_wkup2, __default_handler - .weak __stm32reservedexception77 - .globl __stm32reservedexception77 - .set __stm32reservedexception77, __default_handler - .weak __stm32reservedexception78 - .globl __stm32reservedexception78 - .set __stm32reservedexception78, __default_handler - .weak __stm32reservedexception79 - .globl __stm32reservedexception79 - .set __stm32reservedexception79, __default_handler - .weak __stm32reservedexception80 - .globl __stm32reservedexception80 - .set __stm32reservedexception80, __default_handler - .weak __irq_fpu - .globl __irq_fpu - .set __irq_fpu, __default_handler - .weak __reserved - .globl __reserved - .set __reserved, __default_handler diff --git a/STM32F3/variants/discovery_f3/stm32_vector_table.S b/STM32F3/variants/discovery_f3/stm32_vector_table.S deleted file mode 100644 index f68fa4bcc..000000000 --- a/STM32F3/variants/discovery_f3/stm32_vector_table.S +++ /dev/null @@ -1,134 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 Perry Hung. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ /* STM32F3 performance line vector table */ #include - .section ".stm32.interrupt_vector" - - .globl __stm32_vector_table - .type __stm32_vector_table, %object - -__stm32_vector_table: -/* CM4 core interrupts */ - .long __msp_init - .long __exc_reset - .long __exc_nmi - .long __exc_hardfault - .long __exc_memmanage - .long __exc_busfault - .long __exc_usagefault - .long __stm32reservedexception7 - .long __stm32reservedexception8 - .long __stm32reservedexception9 - .long __stm32reservedexception10 - .long __exc_svc - .long __exc_debug_monitor - .long __stm32reservedexception13 - .long __exc_pendsv - .long __exc_systick -/* Peripheral interrupts */ - .long __irq_wwdg - .long __irq_pvd - .long __irq_tamp_stamp - .long __irq_rtc_wkup - .long __irq_flash - .long __irq_rcc - .long __irq_exti0 - .long __irq_exti1 - .long __irq_exti2 - .long __irq_exti3 - .long __irq_exti4 - .long __irq_dma1_ch1 - .long __irq_dma1_ch2 - .long __irq_dma1_ch3 - .long __irq_dma1_ch4 - .long __irq_dma1_ch5 - .long __irq_dma1_ch6 - .long __irq_dma1_ch7 - .long __irq_adc1_2 - .long __irq_usb_hp_can_tx - .long __irq_usb_lp_can_rx0 - .long __irq_can_rx1 - .long __irq_can_sce - .long __irq_exti9_5 - .long __irq_tim1_brk_tim15 - .long __irq_tim1_up_tim16 - .long __irq_tim1_trg_com_tim17 - .long __irq_tim1_cc - .long __irq_tim2 - .long __irq_tim3 - .long __irq_tim4 - .long __irq_i2c1_ev - .long __irq_i2c1_er - .long __irq_i2c2_ev - .long __irq_i2c2_er - .long __irq_spi1 - .long __irq_spi2 - .long __irq_usart1 - .long __irq_usart2 - .long __irq_usart3 - .long __irq_exti15_10 - .long __irq_rtc_alarm - .long __irq_usb_wkup - - .long __irq_tim8_brk - .long __irq_tim8_up - .long __irq_tim8_trg_com - .long __irq_tim8_cc - .long __irq_adc3 - .long __stm32reservedexception48 - .long __stm32reservedexception49 - .long __stm32reservedexception50 - .long __irq_spi3 - .long __irq_uart4 - .long __irq_uart5 - .long __irq_tim6_dacunder - .long __irq_tim7 - .long __irq_dma2_ch1 - .long __irq_dma2_ch2 - .long __irq_dma2_ch3 - .long __irq_dma2_ch4 - .long __irq_dma2_ch5 - .long __irq_adc4 - .long __stm32reservedexception62 - .long __stm32reservedexception63 - .long __irq_comp123 - .long __irq_comp456 - .long __irq_comp7 - .long __stm32reservedexception67 - .long __stm32reservedexception68 - .long __stm32reservedexception69 - .long __stm32reservedexception70 - .long __stm32reservedexception71 - .long __stm32reservedexception72 - .long __stm32reservedexception73 - .long __irq_usb_hp - .long __irq_usb_lp - .long __irq_usb_wkup2 - .long __stm32reservedexception77 - .long __stm32reservedexception78 - .long __stm32reservedexception79 - .long __stm32reservedexception80 - .long __irq_fpu - - .size __stm32_vector_table, . - __stm32_vector_table diff --git a/STM32F3/variants/discovery_f3/wirish/start.S b/STM32F3/variants/discovery_f3/wirish/start.S deleted file mode 100644 index 8b181aa99..000000000 --- a/STM32F3/variants/discovery_f3/wirish/start.S +++ /dev/null @@ -1,57 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* - * This file is a modified version of a file obtained from - * CodeSourcery Inc. (now part of Mentor Graphics Corp.), in which the - * following text appeared: - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - - .text - .code 16 - .thumb_func - - .globl __start__ - .type __start__, %function -__start__: - .fnstart - ldr r1,=__msp_init - mov sp,r1 - ldr r1,=start_c - bx r1 - .pool - .cantunwind - .fnend diff --git a/STM32F3/variants/discovery_f3/wirish/start_c.c b/STM32F3/variants/discovery_f3/wirish/start_c.c deleted file mode 100644 index 655fefb88..000000000 --- a/STM32F3/variants/discovery_f3/wirish/start_c.c +++ /dev/null @@ -1,95 +0,0 @@ -/****************************************************************************** - * The MIT License - * - * Copyright (c) 2011 LeafLabs, LLC. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be - * included in all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS - * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN - * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - *****************************************************************************/ - -/* - * This file is a modified version of a file obtained from - * CodeSourcery Inc. (now part of Mentor Graphics Corp.), in which the - * following text appeared: - * - * Copyright (c) 2006, 2007 CodeSourcery Inc - * - * The authors hereby grant permission to use, copy, modify, distribute, - * and license this software and its documentation for any purpose, provided - * that existing copyright notices are retained in all copies and that this - * notice is included verbatim in any distributions. No written agreement, - * license, or royalty fee is required for any of the authorized uses. - * Modifications to this software may be copyrighted by their authors - * and need not follow the licensing terms described here, provided that - * the new terms are clearly indicated on the first page of each file where - * they apply. - */ - -#include - -extern void __libc_init_array(void); - -extern int main(int, char**, char**); - -extern void exit(int) __attribute__((noreturn, weak)); - -/* The linker must ensure that these are at least 4-byte aligned. */ -extern char __data_start__, __data_end__; -extern char __bss_start__, __bss_end__; - -struct rom_img_cfg { - int *img_start; -}; - -extern char _lm_rom_img_cfgp; - -void __attribute__((noreturn)) start_c(void) { - struct rom_img_cfg *img_cfg = (struct rom_img_cfg*)&_lm_rom_img_cfgp; - int *src = img_cfg->img_start; - int *dst = (int*)&__data_start__; - int exit_code; - - /* Initialize .data, if necessary. */ - if (src != dst) { - int *end = (int*)&__data_end__; - while (dst < end) { - *dst++ = *src++; - } - } - - /* Zero .bss. */ - dst = (int*)&__bss_start__; - while (dst < (int*)&__bss_end__) { - *dst++ = 0; - } - - /* Run initializers. */ - __libc_init_array(); - - /* Jump to main. */ - exit_code = main(0, 0, 0); - if (exit) { - exit(exit_code); - } - - /* If exit is NULL, make sure we don't return. */ - for (;;) - continue; -} From 45b51dea1208fec87077ce48808481b1d7a02406 Mon Sep 17 00:00:00 2001 From: Victor Lamoine Date: Fri, 20 Apr 2018 14:38:57 +0200 Subject: [PATCH 107/373] Add simple SPI slave example --- .../SPI/examples/spi_slave/spi_slave.ino | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino diff --git a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino new file mode 100644 index 000000000..f0122d676 --- /dev/null +++ b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino @@ -0,0 +1,46 @@ +// SPI slave example +// STM32 acts as a SPI slave an reads 8 bit data frames over SPI +// The data sent to the master is a simple count (0, 1, 2, 3) that is incremented +// each time a data frame is received. +// Serial output is here for debug + +#include +#include + +void setupSPI(void) +{ + pinMode(PA7, INPUT); // MOSI1 + pinMode(PA6, INPUT); // MISO1 + pinMode(PA5, INPUT); // SCK + pinMode(BOARD_SPI_DEFAULT_SS, INPUT); // SS + + // Select SPI1 + SPI.setModule(1); + // The clock value is not used + SPI.beginTransactionSlave(SPISettings(18000000, MSBFIRST, SPI_MODE0, DATA_SIZE_8BIT)); +} + +void setup() +{ + Serial.begin(115200); + delay(100); + + // Data that master will receive when transferring a data frame over SPI + SPI.dev()->regs->DR = 0; + setupSPI(); +} + +uint8_t count(0); +void loop() +{ + // Blocking call to read SPI message + uint8_t msg(SPI.read()); + Serial.print("Received = 0b"); + Serial.print(msg, BIN); + Serial.print(", 0x"); + Serial.print(msg, HEX); + Serial.print(", "); + Serial.println(msg); + // Next data frame that will be received by master + SPI.dev()->regs->DR = ++count; +} From 6e814ad5ca0b34e5f21e85cecb51e8df0f11e34f Mon Sep 17 00:00:00 2001 From: Victor Lamoine Date: Fri, 20 Apr 2018 17:27:45 +0200 Subject: [PATCH 108/373] Add simple SPI slave example --- .../SPI/examples/spi_slave/spi_slave.ino | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino index f0122d676..2a26c8b3b 100644 --- a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino +++ b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino @@ -9,14 +9,11 @@ void setupSPI(void) { - pinMode(PA7, INPUT); // MOSI1 - pinMode(PA6, INPUT); // MISO1 - pinMode(PA5, INPUT); // SCK + // MOSI, MISO, SCK PINs are set by the library pinMode(BOARD_SPI_DEFAULT_SS, INPUT); // SS - // Select SPI1 - SPI.setModule(1); // The clock value is not used + // SPI1 is selected by default SPI.beginTransactionSlave(SPISettings(18000000, MSBFIRST, SPI_MODE0, DATA_SIZE_8BIT)); } @@ -24,9 +21,6 @@ void setup() { Serial.begin(115200); delay(100); - - // Data that master will receive when transferring a data frame over SPI - SPI.dev()->regs->DR = 0; setupSPI(); } @@ -34,13 +28,12 @@ uint8_t count(0); void loop() { // Blocking call to read SPI message - uint8_t msg(SPI.read()); - Serial.print("Received = 0b"); + uint8_t msg = SPI.transfer(++count); + Serial.print("a Received = 0b"); Serial.print(msg, BIN); Serial.print(", 0x"); Serial.print(msg, HEX); Serial.print(", "); Serial.println(msg); - // Next data frame that will be received by master - SPI.dev()->regs->DR = ++count; } + From a3ae580d192e7e53f6a5023fcac75253ef0cc050 Mon Sep 17 00:00:00 2001 From: Victor Lamoine Date: Fri, 20 Apr 2018 17:42:31 +0200 Subject: [PATCH 109/373] Add simple SPI slave example --- STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino index 2a26c8b3b..64f8d5055 100644 --- a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino +++ b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino @@ -29,7 +29,7 @@ void loop() { // Blocking call to read SPI message uint8_t msg = SPI.transfer(++count); - Serial.print("a Received = 0b"); + Serial.print("Received = 0b"); Serial.print(msg, BIN); Serial.print(", 0x"); Serial.print(msg, HEX); From 652569c079dbe9230e30ebd445a04d67dec6c4d8 Mon Sep 17 00:00:00 2001 From: Victor Lamoine Date: Fri, 20 Apr 2018 19:01:32 +0200 Subject: [PATCH 110/373] Add simple SPI slave example --- STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino index 64f8d5055..71865c56c 100644 --- a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino +++ b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino @@ -1,7 +1,7 @@ -// SPI slave example -// STM32 acts as a SPI slave an reads 8 bit data frames over SPI -// The data sent to the master is a simple count (0, 1, 2, 3) that is incremented -// each time a data frame is received. +// SPI full-duplex slave example +// STM32 acts as a SPI slave and reads 8 bit data frames over SPI. +// Master also gets a reply from the slave, which is a a simple count (0, 1, 2, 3) +// that is incremented each time a data frame is received. // Serial output is here for debug #include From 5664dbc7aa32667a836b1c09b121ad7fa6e194e6 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 22 Apr 2018 14:31:56 +1000 Subject: [PATCH 111/373] Add hold in bootloader using bkp register 10 --- STM32F1/cores/maple/usb_serial.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/usb_serial.cpp b/STM32F1/cores/maple/usb_serial.cpp index e6d5cb0e5..40eaa6555 100644 --- a/STM32F1/cores/maple/usb_serial.cpp +++ b/STM32F1/cores/maple/usb_serial.cpp @@ -37,7 +37,7 @@ #include #include #include - +#include #include "wirish.h" /* @@ -322,6 +322,11 @@ static void rxHook(unsigned hook __attribute__((unused)), void *ignored __attrib #ifdef SERIAL_USB // Got the magic sequence -> reset, presumably into the bootloader. // Return address is wait_reset, but we must set the thumb bit. + bkp_init(); + bkp_enable_writes(); + bkp_write(10, 0x424C); + bkp_disable_writes(); + uintptr_t target = (uintptr_t)wait_reset | 0x1; asm volatile("mov r0, %[stack_top] \n\t" // Reset stack "mov sp, r0 \n\t" From cb8b30bd6fe91964a0e7461d144977434f555c0b Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 22 Apr 2018 17:06:22 +1000 Subject: [PATCH 112/373] add partial support for the new USB HID bootloader --- STM32F1/platform.txt | 12 ++++++++++++ tools/win/hid_flash/hid-flash.exe | Bin 0 -> 75156 bytes 2 files changed, 12 insertions(+) create mode 100644 tools/win/hid_flash/hid-flash.exe diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index 627e5da42..b1cf69d92 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -161,3 +161,15 @@ tools.jlink_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.jlink_upload.upload.params.verbose=-d tools.jlink_upload.upload.params.quiet=n tools.jlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" + +# HID upload +tools.hid_upload.cmd=hid_upload +tools.hid_upload.cmd.windows=hid_upload.bat +tools.hid_upload.cmd.macosx=hid_upload +tools.hid_upload.path={runtime.hardware.path}/tools/win +tools.hid_upload.path.macosx={runtime.hardware.path}/tools/macosx +tools.hid_upload.path.linux={runtime.hardware.path}/tools/linux +tools.hid_upload.path.linux64={runtime.hardware.path}/tools/linux64 +tools.hid_upload.upload.params.verbose=-d +tools.hid_upload.upload.params.quiet=n +tools.hid_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" \ No newline at end of file diff --git a/tools/win/hid_flash/hid-flash.exe b/tools/win/hid_flash/hid-flash.exe new file mode 100644 index 0000000000000000000000000000000000000000..9808b20284a485f8f941adf0ff422adbc0ccebf3 GIT binary patch literal 75156 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 g*f|?LrW#fYdRSG31X~0{D{Q^#A|> literal 0 HcmV?d00001 From 6e4a80f1068fd88aa27ad33237cfd3d2c2db72f5 Mon Sep 17 00:00:00 2001 From: Victor Lamoine Date: Mon, 23 Apr 2018 19:27:37 +0200 Subject: [PATCH 113/373] Add simple SPI slave example --- STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino index 71865c56c..fa2930a46 100644 --- a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino +++ b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino @@ -9,11 +9,9 @@ void setupSPI(void) { - // MOSI, MISO, SCK PINs are set by the library - pinMode(BOARD_SPI_DEFAULT_SS, INPUT); // SS - // The clock value is not used // SPI1 is selected by default + // MOSI, MISO, SCK and NSS PINs are set by the library SPI.beginTransactionSlave(SPISettings(18000000, MSBFIRST, SPI_MODE0, DATA_SIZE_8BIT)); } From 1abb3f1ca53bb4a7cd8738d3a6d2676589b4a22e Mon Sep 17 00:00:00 2001 From: stevstrong Date: Wed, 25 Apr 2018 23:22:17 +0200 Subject: [PATCH 114/373] Update Wire.cpp bugfix hw I2C unrecognized addresses 0x76, 0x77 --- STM32F1/libraries/Wire/Wire.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/Wire/Wire.cpp b/STM32F1/libraries/Wire/Wire.cpp index dbf4c663b..192b13322 100644 --- a/STM32F1/libraries/Wire/Wire.cpp +++ b/STM32F1/libraries/Wire/Wire.cpp @@ -50,7 +50,7 @@ uint8 TwoWire::process(uint8 stop) { res = EOTHER; } i2c_disable(sel_hard); - i2c_master_enable(sel_hard, (I2C_BUS_RESET | dev_flags)); + i2c_master_enable(sel_hard, dev_flags); } return res; } From e1ae43c826af67e45207414ddd67769738ec1d76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9?= Date: Fri, 27 Apr 2018 14:48:41 +0100 Subject: [PATCH 115/373] Fixed missing return value. --- STM32F1/libraries/Wire/utility/WireBase.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/Wire/utility/WireBase.cpp b/STM32F1/libraries/Wire/utility/WireBase.cpp index 220d845d7..02c8ed39e 100644 --- a/STM32F1/libraries/Wire/utility/WireBase.cpp +++ b/STM32F1/libraries/Wire/utility/WireBase.cpp @@ -71,7 +71,7 @@ uint8 WireBase::endTransmission(bool stop) { } uint8 WireBase::endTransmission(){ - endTransmission(true); + return endTransmission(true); } //TODO: Add the ability to queue messages (adding a boolean to end of function From 6c33d73f63418b46a0c71385fdd6c67e60ce416a Mon Sep 17 00:00:00 2001 From: victorpv Date: Thu, 3 May 2018 11:39:17 -0500 Subject: [PATCH 116/373] Add SDIO pin definitions to the Maple RET6 variant It was missing, but needed since that variant (RET6) includes the SDIO peripheral, so the files are included in the compilation. --- STM32F1/variants/maple_ret6/board/board.h | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/STM32F1/variants/maple_ret6/board/board.h b/STM32F1/variants/maple_ret6/board/board.h index 86d94f07c..4f6fae753 100644 --- a/STM32F1/variants/maple_ret6/board/board.h +++ b/STM32F1/variants/maple_ret6/board/board.h @@ -102,6 +102,16 @@ #define BOARD_USB_DISC_DEV GPIOC #define BOARD_USB_DISC_BIT 12 +/* + * SDIO Pins + */ +#define BOARD_SDIO_D0 PC8 +#define BOARD_SDIO_D1 PC9 +#define BOARD_SDIO_D2 PC10 +#define BOARD_SDIO_D3 PC11 +#define BOARD_SDIO_CLK PC12 +#define BOARD_SDIO_CMD PD2 + /* Pin aliases: these give the GPIO port/bit for each pin as an * enum. These are optional, but recommended. They make it easier to * write code using low-level GPIO functionality. */ @@ -117,4 +127,4 @@ enum { //15 16 17 18 19 20 21 22 23 24 25 26 27 28 -//29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 \ No newline at end of file +//29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 From 4ec1b0f0cd3835e743ecc1835ba144f4230f5534 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Thu, 10 May 2018 20:25:02 +1000 Subject: [PATCH 117/373] Removed references to robotis bootloader, and also redundant usb reset code that used the wdt (possibly used by the robotis bootloader) --- STM32F1/cores/maple/usb_serial.cpp | 50 ++++++------------- STM32F1/variants/STM32VLD/wirish/boards.cpp | 6 +-- .../generic_gd32f103c/wirish/boards.cpp | 6 +-- .../generic_stm32f103c/wirish/boards.cpp | 6 +-- .../generic_stm32f103r/wirish/boards.cpp | 6 +-- .../generic_stm32f103r8/wirish/boards.cpp | 6 +-- .../generic_stm32f103t/wirish/boards.cpp | 6 +-- .../generic_stm32f103v/wirish/boards.cpp | 6 +-- .../generic_stm32f103vb/wirish/boards.cpp | 6 +-- .../generic_stm32f103z/wirish/boards.cpp | 6 +-- .../hytiny_stm32f103t/wirish/boards.cpp | 6 +-- STM32F1/variants/maple/wirish/boards.cpp | 6 +-- STM32F1/variants/maple_mini/wirish/boards.cpp | 6 +-- STM32F1/variants/maple_ret6/wirish/boards.cpp | 6 +-- STM32F1/variants/microduino/wirish/boards.cpp | 6 +-- .../variants/nucleo_f103rb/wirish/boards.cpp | 6 +-- 16 files changed, 30 insertions(+), 110 deletions(-) diff --git a/STM32F1/cores/maple/usb_serial.cpp b/STM32F1/cores/maple/usb_serial.cpp index 40eaa6555..9f521775a 100644 --- a/STM32F1/cores/maple/usb_serial.cpp +++ b/STM32F1/cores/maple/usb_serial.cpp @@ -263,20 +263,12 @@ static void ifaceSetupHook(unsigned hook __attribute__((unused)), void *requestv break; } #endif - -#if defined(BOOTLOADER_robotis) - uint8 dtr = usb_cdcacm_get_dtr(); - uint8 rts = usb_cdcacm_get_rts(); - - if (rts && !dtr) { - reset_state = DTR_NEGEDGE; - } -#endif - +#if false if ((usb_cdcacm_get_baud() == 1200) && (reset_state == DTR_NEGEDGE)) { iwdg_init(IWDG_PRE_4, 10); while (1); } +#endif } #define RESET_DELAY 100000 @@ -287,45 +279,39 @@ static void wait_reset(void) { } #endif + #define STACK_TOP 0x20000800 #define EXC_RETURN 0xFFFFFFF9 #define DEFAULT_CPSR 0x61000000 static void rxHook(unsigned hook __attribute__((unused)), void *ignored __attribute__((unused))) { +static const uint8 magic[4] = {'1', 'E', 'A', 'F'}; /* FIXME this is mad buggy; we need a new reset sequence. E.g. NAK * after each RX means you can't reset if any bytes are waiting. */ if (reset_state == DTR_NEGEDGE) { - reset_state = DTR_LOW; - - if (usb_cdcacm_data_available() >= 4) { - // The magic reset sequence is "1EAF". -#ifdef SERIAL_USB - static const uint8 magic[4] = {'1', 'E', 'A', 'F'}; -#else - #if defined(BOOTLOADER_robotis) - static const uint8 magic[4] = {'C', 'M', '9', 'X'}; - #else - static const uint8 magic[4] = {'1', 'E', 'A', 'F'}; - #endif -#endif + if (usb_cdcacm_data_available() >= 4) + { uint8 chkBuf[4]; // Peek at the waiting bytes, looking for reset sequence, // bailing on mismatch. usb_cdcacm_peek_ex(chkBuf, usb_cdcacm_data_available() - 4, 4); for (unsigned i = 0; i < sizeof(magic); i++) { - if (chkBuf[i] != magic[i]) { + if (chkBuf[i] != magic[i]) + { + reset_state = DTR_LOW; return; } } #ifdef SERIAL_USB + // The magic reset sequence is "1EAF". // Got the magic sequence -> reset, presumably into the bootloader. // Return address is wait_reset, but we must set the thumb bit. - bkp_init(); - bkp_enable_writes(); - bkp_write(10, 0x424C); - bkp_disable_writes(); + bkp_init(); + bkp_enable_writes(); + bkp_write(10, 0x424C); + bkp_disable_writes(); uintptr_t target = (uintptr_t)wait_reset | 0x1; asm volatile("mov r0, %[stack_top] \n\t" // Reset stack @@ -350,15 +336,9 @@ static void rxHook(unsigned hook __attribute__((unused)), void *ignored __attrib [cpsr] "r" (DEFAULT_CPSR) : "r0", "r1", "r2"); #endif - -#if defined(BOOTLOADER_robotis) - iwdg_init(IWDG_PRE_4, 10); -#endif - /* Can't happen. */ ASSERT_FAULT(0); } } } - -#endif // BOARD_HAVE_SERIALUSB +#endif // BOARD_HAVE_SERIALUSB \ No newline at end of file diff --git a/STM32F1/variants/STM32VLD/wirish/boards.cpp b/STM32F1/variants/STM32VLD/wirish/boards.cpp index 5274e7a93..7b7e9a685 100644 --- a/STM32F1/variants/STM32VLD/wirish/boards.cpp +++ b/STM32F1/variants/STM32VLD/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp b/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp index fcb85b2ab..ef1f2ad28 100644 --- a/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp +++ b/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp index 36fcb3e84..08c34d1a3 100644 --- a/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp index fcb85b2ab..ef1f2ad28 100644 --- a/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp index 5274e7a93..7b7e9a685 100644 --- a/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp index 5274e7a93..7b7e9a685 100644 --- a/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp index ddeaa57e8..fc90f36bb 100644 --- a/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp @@ -153,11 +153,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp index ddeaa57e8..fc90f36bb 100644 --- a/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp @@ -153,11 +153,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp index fcb85b2ab..ef1f2ad28 100644 --- a/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/hytiny_stm32f103t/wirish/boards.cpp b/STM32F1/variants/hytiny_stm32f103t/wirish/boards.cpp index 0a358ee19..d7b6edca3 100644 --- a/STM32F1/variants/hytiny_stm32f103t/wirish/boards.cpp +++ b/STM32F1/variants/hytiny_stm32f103t/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/maple/wirish/boards.cpp b/STM32F1/variants/maple/wirish/boards.cpp index fcb85b2ab..ef1f2ad28 100644 --- a/STM32F1/variants/maple/wirish/boards.cpp +++ b/STM32F1/variants/maple/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/maple_mini/wirish/boards.cpp b/STM32F1/variants/maple_mini/wirish/boards.cpp index 5274e7a93..7b7e9a685 100644 --- a/STM32F1/variants/maple_mini/wirish/boards.cpp +++ b/STM32F1/variants/maple_mini/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/maple_ret6/wirish/boards.cpp b/STM32F1/variants/maple_ret6/wirish/boards.cpp index fcb85b2ab..ef1f2ad28 100644 --- a/STM32F1/variants/maple_ret6/wirish/boards.cpp +++ b/STM32F1/variants/maple_ret6/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/microduino/wirish/boards.cpp b/STM32F1/variants/microduino/wirish/boards.cpp index fcb85b2ab..ef1f2ad28 100644 --- a/STM32F1/variants/microduino/wirish/boards.cpp +++ b/STM32F1/variants/microduino/wirish/boards.cpp @@ -147,11 +147,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; diff --git a/STM32F1/variants/nucleo_f103rb/wirish/boards.cpp b/STM32F1/variants/nucleo_f103rb/wirish/boards.cpp index f38cbf6a8..61368ce0a 100644 --- a/STM32F1/variants/nucleo_f103rb/wirish/boards.cpp +++ b/STM32F1/variants/nucleo_f103rb/wirish/boards.cpp @@ -149,11 +149,7 @@ static void setup_clocks(void) { #if defined(BOOTLOADER_maple) #define USER_ADDR_ROM 0x08005000 #else - #if defined(BOOTLOADER_robotis) - #define USER_ADDR_ROM 0x08003000 - #else - #define USER_ADDR_ROM 0x08000000 - #endif + #define USER_ADDR_ROM 0x08000000 #endif #define USER_ADDR_RAM 0x20000C00 extern char __text_start__; From 8fa6bb45960097be75b6df6fc08705c85d4e4a09 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Fri, 11 May 2018 09:03:04 +1000 Subject: [PATCH 118/373] Remove redundant #if'ed out code from maple hardware_serial.cpp --- STM32F1/cores/maple/HardwareSerial.cpp | 53 -------------------------- 1 file changed, 53 deletions(-) diff --git a/STM32F1/cores/maple/HardwareSerial.cpp b/STM32F1/cores/maple/HardwareSerial.cpp index 024efbc7d..b25dafc1d 100644 --- a/STM32F1/cores/maple/HardwareSerial.cpp +++ b/STM32F1/cores/maple/HardwareSerial.cpp @@ -37,59 +37,6 @@ #include #include -#if 0 - - #define DEFINE_HWSERIAL(name, n) \ - HardwareSerial name(USART##n, \ - BOARD_USART##n##_TX_PIN, \ - BOARD_USART##n##_RX_PIN) - - #define DEFINE_HWSERIAL_UART(name, n) \ - HardwareSerial name(UART##n, \ - BOARD_USART##n##_TX_PIN, \ - BOARD_USART##n##_RX_PIN) - - #ifdef SERIAL_USB - #if BOARD_HAVE_USART1 - DEFINE_HWSERIAL(Serial1, 1); - #endif - #if BOARD_HAVE_USART2 - DEFINE_HWSERIAL(Serial2, 2); - #endif - #if BOARD_HAVE_USART3 - DEFINE_HWSERIAL(Serial3, 3); - #endif - #if BOARD_HAVE_UART4 - DEFINE_HWSERIAL_UART(Serial4, 4); - #endif - #if BOARD_HAVE_UART5 - DEFINE_HWSERIAL_UART(Serial5, 5); - #endif - #if BOARD_HAVE_USART6 - DEFINE_HWSERIAL_UART(Serial6, 6); - #endif - #else - #if BOARD_HAVE_USART1 - DEFINE_HWSERIAL(Serial, 1); - #endif - #if BOARD_HAVE_USART2 - DEFINE_HWSERIAL(Serial1, 2); - #endif - #if BOARD_HAVE_USART3 - DEFINE_HWSERIAL(Serial2, 3); - #endif - #if BOARD_HAVE_UART4 - DEFINE_HWSERIAL_UART(Serial3, 4); - #endif - #if BOARD_HAVE_UART5 - DEFINE_HWSERIAL_UART(Serial4, 5); - #endif - #if BOARD_HAVE_USART6 - DEFINE_HWSERIAL_UART(Serial5, 6); - #endif - #endif - -#endif HardwareSerial::HardwareSerial(usart_dev *usart_device, uint8 tx_pin, uint8 rx_pin) { From de1141d41a455a70f742f6d4d2dfef5d4872b260 Mon Sep 17 00:00:00 2001 From: "Jose J. Valdiande" Date: Mon, 14 May 2018 17:46:41 +0200 Subject: [PATCH 119/373] Add frequency to hardware i2c Tested with Naze32 @72Mhz & BMP280 working at 1.2Mhz It doesn't break existing code --- STM32F1/cores/maple/libmaple/i2c.c | 17 +++++------ STM32F1/libraries/Wire/Wire.cpp | 29 +++++++++---------- STM32F1/libraries/Wire/Wire.h | 13 ++++++--- .../system/libmaple/include/libmaple/i2c.h | 2 +- 4 files changed, 32 insertions(+), 29 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/i2c.c b/STM32F1/cores/maple/libmaple/i2c.c index 6724d162f..a810b5edf 100644 --- a/STM32F1/cores/maple/libmaple/i2c.c +++ b/STM32F1/cores/maple/libmaple/i2c.c @@ -47,7 +47,7 @@ static inline int32 wait_for_state_change(i2c_dev *dev, i2c_state state, uint32 timeout); -static void set_ccr_trise(i2c_dev *dev, uint32 flags); +static void set_ccr_trise(i2c_dev *dev, uint32 flags, uint32 freq); /** * @brief Fill data register with slave address @@ -165,7 +165,6 @@ void i2c_init(i2c_dev *dev) { * @brief Initialize an I2C device as bus master * @param dev Device to enable * @param flags Bitwise or of the following I2C options: - * I2C_FAST_MODE: 400 khz operation, * I2C_DUTY_16_9: 16/9 Tlow/Thigh duty cycle (only applicable for * fast mode), * I2C_BUS_RESET: Reset the bus and clock out any hung slaves on @@ -174,7 +173,7 @@ void i2c_init(i2c_dev *dev) { * I2C_REMAP: (deprecated, STM32F1 only) Remap I2C1 to SCL/PB8 * SDA/PB9. */ -void i2c_master_enable(i2c_dev *dev, uint32 flags) { +void i2c_master_enable(i2c_dev *dev, uint32 flags, uint32 freq) { /* PE must be disabled to configure the device */ ASSERT(!(dev->regs->CR1 & I2C_CR1_PE)); @@ -191,7 +190,7 @@ void i2c_master_enable(i2c_dev *dev, uint32 flags) { i2c_config_gpios(dev); /* Configure clock and rise time */ - set_ccr_trise(dev, flags); + set_ccr_trise(dev, flags, freq); /* Enable event and buffer interrupts */ nvic_irq_enable(dev->ev_nvic_line); @@ -483,7 +482,7 @@ void _i2c_irq_error_handler(i2c_dev *dev) { /* * CCR/TRISE configuration helper */ -static void set_ccr_trise(i2c_dev *dev, uint32 flags) { +static void set_ccr_trise(i2c_dev *dev, uint32 flags, uint32 freq) { uint32 ccr = 0; uint32 trise = 0; uint32 clk_mhz = _i2c_bus_clk(dev); @@ -491,22 +490,22 @@ static void set_ccr_trise(i2c_dev *dev, uint32 flags) { i2c_set_input_clk(dev, clk_mhz); - if (flags & I2C_FAST_MODE) { + if (freq > 100000) { //FAST MODE & FAST MODE+ ccr |= I2C_CCR_FS; if (flags & I2C_DUTY_16_9) { /* Tlow/Thigh = 16/9 */ ccr |= I2C_CCR_DUTY_16_9; - ccr |= clk_hz / (400000 * 25); + ccr |= clk_hz / (freq * 25); } else { /* Tlow/Thigh = 2 */ - ccr |= clk_hz / (400000 * 3); + ccr |= clk_hz / (freq * 3); } trise = (300 * clk_mhz / 1000) + 1; } else { /* Tlow/Thigh = 1 */ - ccr = clk_hz / (100000 * 2); + ccr = clk_hz / (freq * 2); trise = clk_mhz + 1; } diff --git a/STM32F1/libraries/Wire/Wire.cpp b/STM32F1/libraries/Wire/Wire.cpp index 192b13322..3c62a97dc 100644 --- a/STM32F1/libraries/Wire/Wire.cpp +++ b/STM32F1/libraries/Wire/Wire.cpp @@ -50,7 +50,7 @@ uint8 TwoWire::process(uint8 stop) { res = EOTHER; } i2c_disable(sel_hard); - i2c_master_enable(sel_hard, dev_flags); + i2c_master_enable(sel_hard, dev_flags, frequency); } return res; } @@ -60,8 +60,9 @@ uint8 TwoWire::process(){ } // TODO: Add in Error Handling if devsel is out of range for other Maples -TwoWire::TwoWire(uint8 dev_sel, uint8 flags) { - if (dev_sel == 1) { +TwoWire::TwoWire(uint8 dev_sel, uint8 flags, uint32 freq) { + + if (dev_sel == 1) { sel_hard = I2C1; } else if (dev_sel == 2) { sel_hard = I2C2; @@ -69,6 +70,12 @@ TwoWire::TwoWire(uint8 dev_sel, uint8 flags) { ASSERT(1); } dev_flags = flags; + + if (freq == 100000 && (flags & I2C_FAST_MODE)) // compatibility patch + frequency = 400000; + else + frequency = freq; + } TwoWire::~TwoWire() { @@ -77,7 +84,7 @@ TwoWire::~TwoWire() { } void TwoWire::begin(uint8 self_addr) { - i2c_master_enable(sel_hard, dev_flags); + i2c_master_enable(sel_hard, dev_flags, frequency); } void TwoWire::end() { @@ -87,19 +94,11 @@ void TwoWire::end() { void TwoWire::setClock(uint32_t frequencyHz) { - switch(frequencyHz) - { - case 400000: - dev_flags |= I2C_FAST_MODE;// set FAST_MODE bit - break; - case 100000: - default: - dev_flags &= ~I2C_FAST_MODE;// clear FAST_MODE bit - break; - } + if (sel_hard->regs->CR1 & I2C_CR1_PE){ + frequency = frequencyHz; i2c_disable(sel_hard); - i2c_master_enable(sel_hard, dev_flags); + i2c_master_enable(sel_hard, dev_flags, frequency); } } diff --git a/STM32F1/libraries/Wire/Wire.h b/STM32F1/libraries/Wire/Wire.h index ab05d4216..a2890c196 100644 --- a/STM32F1/libraries/Wire/Wire.h +++ b/STM32F1/libraries/Wire/Wire.h @@ -47,32 +47,37 @@ class TwoWire : public WireBase { private: i2c_dev* sel_hard; uint8 dev_flags; + uint32 frequency; //new variable to store i2c frequency protected: /* * Processes the incoming I2C message defined by WireBase to the * hardware. If an error occured, restart the I2C device. */ - uint8 process(uint8); + uint8 process(uint8 stop); uint8 process(); public: /* * Check if devsel is within range and enable selected I2C interface with - * passed flags + * passed flags and frequency. + *(frequency tested go up to 1.2Mhz @F_CPU 72Mhz with capable slaves) */ - TwoWire(uint8, uint8 = 0); + TwoWire(uint8 dev_sel, uint8 flags = 0, uint32 freq = 100000); /* * Shuts down (disables) the hardware I2C */ void end(); + /* + * Sets the hardware I2C clock + */ void setClock(uint32_t frequencyHz); /* * Disables the I2C device and remove the device address. */ ~TwoWire(); - void begin(uint8 = 0x00); + void begin(uint8 self_addr = 0x00); }; extern TwoWire Wire; #endif // _TWOWIRE_H_ diff --git a/STM32F1/system/libmaple/include/libmaple/i2c.h b/STM32F1/system/libmaple/include/libmaple/i2c.h index a44f6af3e..b629b94c1 100644 --- a/STM32F1/system/libmaple/include/libmaple/i2c.h +++ b/STM32F1/system/libmaple/include/libmaple/i2c.h @@ -198,7 +198,7 @@ typedef struct i2c_msg { #define I2C_DUTY_16_9 0x2 // 16/9 duty ratio /* Flag 0x4 is reserved; DO NOT USE. */ #define I2C_BUS_RESET 0x8 // Perform a bus reset -void i2c_master_enable(i2c_dev *dev, uint32 flags); +void i2c_master_enable(i2c_dev *dev, uint32 flags, uint32 freq); #define I2C_ERROR_PROTOCOL (-1) #define I2C_ERROR_TIMEOUT (-2) From 84c5a86109c085cf2d4a5a325273351a9078ee28 Mon Sep 17 00:00:00 2001 From: Alexandr Zarubkin Date: Mon, 21 May 2018 11:47:38 +0300 Subject: [PATCH 120/373] Changed prescaler variable type to uint32. Fixes #520. Signed-off-by: Alexandr Zarubkin --- STM32F1/libraries/RTClock/src/RTClock.cpp | 2 +- STM32F1/libraries/RTClock/src/RTClock.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/libraries/RTClock/src/RTClock.cpp b/STM32F1/libraries/RTClock/src/RTClock.cpp index f6907edd1..8d65c1c18 100755 --- a/STM32F1/libraries/RTClock/src/RTClock.cpp +++ b/STM32F1/libraries/RTClock/src/RTClock.cpp @@ -39,7 +39,7 @@ }//end RTC - RTClock::RTClock(rtc_clk_src src, uint16 prescaler ) { + RTClock::RTClock(rtc_clk_src src, uint32 prescaler ) { switch (src) { case RTCSEL_LSE : { diff --git a/STM32F1/libraries/RTClock/src/RTClock.h b/STM32F1/libraries/RTClock/src/RTClock.h index a225c949a..7e758dbc7 100755 --- a/STM32F1/libraries/RTClock/src/RTClock.h +++ b/STM32F1/libraries/RTClock/src/RTClock.h @@ -41,7 +41,7 @@ class RTClock { public: RTClock(); RTClock(rtc_clk_src src ); - RTClock(rtc_clk_src src, uint16 prescaler ); + RTClock(rtc_clk_src src, uint32 prescaler ); //~RTClock(); //to implement void breakTime(time_t epoch_time, tm_t & tmm); From 134dad770c4da01557366f40cdd29c727b24cb37 Mon Sep 17 00:00:00 2001 From: Alexandr Zarubkin Date: Mon, 21 May 2018 17:02:24 +0300 Subject: [PATCH 121/373] Added preprocessor symbol USE_HSI_CLOCK which enables HSI clocking for generic variants. By default, HSE clocking scheme is used, as before this change. Signed-off-by: Alexandr Zarubkin --- STM32F1/variants/generic_gd32f103c/wirish/boards.cpp | 4 ++-- .../variants/generic_gd32f103c/wirish/boards_setup.cpp | 9 ++++++++- STM32F1/variants/generic_stm32f103c/wirish/boards.cpp | 4 ++-- .../variants/generic_stm32f103c/wirish/boards_setup.cpp | 8 ++++++++ STM32F1/variants/generic_stm32f103r/wirish/boards.cpp | 4 ++-- .../variants/generic_stm32f103r/wirish/boards_setup.cpp | 8 ++++++++ STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp | 4 ++-- .../variants/generic_stm32f103r8/wirish/boards_setup.cpp | 8 ++++++++ STM32F1/variants/generic_stm32f103t/wirish/boards.cpp | 4 ++-- .../variants/generic_stm32f103t/wirish/boards_setup.cpp | 8 ++++++++ STM32F1/variants/generic_stm32f103v/wirish/boards.cpp | 4 ++-- .../variants/generic_stm32f103v/wirish/boards_setup.cpp | 8 ++++++++ STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp | 4 ++-- .../variants/generic_stm32f103vb/wirish/boards_setup.cpp | 8 ++++++++ STM32F1/variants/generic_stm32f103z/wirish/boards.cpp | 4 ++-- .../variants/generic_stm32f103z/wirish/boards_setup.cpp | 8 ++++++++ 16 files changed, 80 insertions(+), 17 deletions(-) diff --git a/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp b/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp index ef1f2ad28..93ae23151 100644 --- a/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp +++ b/STM32F1/variants/generic_gd32f103c/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_gd32f103c/wirish/boards_setup.cpp b/STM32F1/variants/generic_gd32f103c/wirish/boards_setup.cpp index 3df1fe784..a297de1e6 100644 --- a/STM32F1/variants/generic_gd32f103c/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_gd32f103c/wirish/boards_setup.cpp @@ -46,6 +46,7 @@ // Additionally the GD32 has a 4 USB PLL divider settings, rather than the 2 settings in the STM32, which allow it to operate on frequencies of 48,72,96 and 120Mhz and still have USB functioning #ifndef BOARD_RCC_PLLMUL +#if !USE_HSI_CLOCK #if F_CPU==120000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_10 #elif F_CPU==96000000 @@ -53,14 +54,20 @@ #elif F_CPU==72000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_6 #endif - +#else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 +#endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; diff --git a/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp index 08c34d1a3..53f346922 100644 --- a/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103c/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp index 5f595eeca..59e8228cc 100644 --- a/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103c/wirish/boards_setup.cpp @@ -48,6 +48,7 @@ // works for F103 performance line MCUs, which is all that LeafLabs // currently officially supports). #ifndef BOARD_RCC_PLLMUL + #if !USE_HSI_CLOCK #if F_CPU==128000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 #elif F_CPU==72000000 @@ -57,13 +58,20 @@ #elif F_CPU==16000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif + #else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; diff --git a/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp index ef1f2ad28..93ae23151 100644 --- a/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103r/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp index 1632caa36..c804d7f53 100644 --- a/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103r/wirish/boards_setup.cpp @@ -48,6 +48,7 @@ // works for F103 performance line MCUs, which is all that LeafLabs // currently officially supports). #ifndef BOARD_RCC_PLLMUL + #if !USE_HSI_CLOCK #if F_CPU==128000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 #elif F_CPU==72000000 @@ -57,13 +58,20 @@ #elif F_CPU==16000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif + #else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp index 7b7e9a685..88063432e 100644 --- a/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103r8/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp index 13d7b8978..9e9c3c093 100644 --- a/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103r8/wirish/boards_setup.cpp @@ -48,6 +48,7 @@ // works for F103 performance line MCUs, which is all that LeafLabs // currently officially supports). #ifndef BOARD_RCC_PLLMUL + #if !USE_HSI_CLOCK #if F_CPU==128000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 #elif F_CPU==72000000 @@ -57,13 +58,20 @@ #elif F_CPU==16000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif + #else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; diff --git a/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp index 7b7e9a685..88063432e 100644 --- a/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103t/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp index 5f595eeca..59e8228cc 100644 --- a/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103t/wirish/boards_setup.cpp @@ -48,6 +48,7 @@ // works for F103 performance line MCUs, which is all that LeafLabs // currently officially supports). #ifndef BOARD_RCC_PLLMUL + #if !USE_HSI_CLOCK #if F_CPU==128000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 #elif F_CPU==72000000 @@ -57,13 +58,20 @@ #elif F_CPU==16000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif + #else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; diff --git a/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp index fc90f36bb..a2867b8e2 100644 --- a/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103v/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp index 0b96261d8..5ea718b4c 100644 --- a/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103v/wirish/boards_setup.cpp @@ -48,6 +48,7 @@ // works for F103 performance line MCUs, which is all that LeafLabs // currently officially supports). #ifndef BOARD_RCC_PLLMUL + #if !USE_HSI_CLOCK #if F_CPU==128000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 #elif F_CPU==72000000 @@ -57,13 +58,20 @@ #elif F_CPU==16000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif + #else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp index fc90f36bb..a2867b8e2 100644 --- a/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103vb/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp index 0b96261d8..5ea718b4c 100644 --- a/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103vb/wirish/boards_setup.cpp @@ -48,6 +48,7 @@ // works for F103 performance line MCUs, which is all that LeafLabs // currently officially supports). #ifndef BOARD_RCC_PLLMUL + #if !USE_HSI_CLOCK #if F_CPU==128000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 #elif F_CPU==72000000 @@ -57,13 +58,20 @@ #elif F_CPU==16000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif + #else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; diff --git a/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp b/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp index ef1f2ad28..93ae23151 100644 --- a/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp +++ b/STM32F1/variants/generic_stm32f103z/wirish/boards.cpp @@ -120,12 +120,12 @@ static void setup_clocks(void) { // Clear clock readiness interrupt flags and turn off clock // readiness interrupts. RCC_BASE->CIR = 0x00000000; - +#if !USE_HSI_CLOCK // Enable HSE, and wait until it's ready. rcc_turn_on_clk(RCC_CLK_HSE); while (!rcc_is_clk_ready(RCC_CLK_HSE)) ; - +#endif // Configure AHBx, APBx, etc. prescalers and the main PLL. wirish::priv::board_setup_clock_prescalers(); rcc_configure_pll(&wirish::priv::w_board_pll_cfg); diff --git a/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp b/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp index 0f6fd0f37..6cc457eee 100644 --- a/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp +++ b/STM32F1/variants/generic_stm32f103z/wirish/boards_setup.cpp @@ -48,6 +48,7 @@ // works for F103 performance line MCUs, which is all that LeafLabs // currently officially supports). #ifndef BOARD_RCC_PLLMUL + #if !USE_HSI_CLOCK #if F_CPU==128000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 #elif F_CPU==72000000 @@ -57,13 +58,20 @@ #elif F_CPU==16000000 #define BOARD_RCC_PLLMUL RCC_PLLMUL_2 #endif + #else + #define BOARD_RCC_PLLMUL RCC_PLLMUL_16 + #endif #endif namespace wirish { namespace priv { static stm32f1_rcc_pll_data pll_data = {BOARD_RCC_PLLMUL}; +#if !USE_HSI_CLOCK __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSE, &pll_data}; +#else + __weak rcc_pll_cfg w_board_pll_cfg = {RCC_PLLSRC_HSI_DIV_2, &pll_data}; +#endif __weak adc_prescaler w_adc_pre = ADC_PRE_PCLK2_DIV_6; __weak adc_smp_rate w_adc_smp = ADC_SMPR_55_5; From 6a551bd9abcc632632d7c9e71a49e341a1600399 Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Tue, 22 May 2018 09:29:23 +1000 Subject: [PATCH 122/373] Ranemed FreeRTOS to FreeRTOS701 to prevent name clashes. see https://github.com/rogerclarkmelbourne/Arduino_STM32/issues/500 --- STM32F1/libraries/{FreeRTOS => FreeRTOS701}/MapleFreeRTOS.cpp | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/MapleFreeRTOS.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/keywords.txt | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/rules.mk | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/FreeRTOS.h | 0 .../libraries/{FreeRTOS => FreeRTOS701}/utility/FreeRTOSConfig.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/StackMacros.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/croutine.c | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/croutine.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/heap_2.c | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/list.c | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/list.h | 0 .../libraries/{FreeRTOS => FreeRTOS701}/utility/mpu_wrappers.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/port.c | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/portable.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/portmacro.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/projdefs.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/queue.c | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/queue.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/semphr.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/task.h | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/tasks.c | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/timers.c | 0 STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/timers.h | 0 24 files changed, 0 insertions(+), 0 deletions(-) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/MapleFreeRTOS.cpp (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/MapleFreeRTOS.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/keywords.txt (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/rules.mk (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/FreeRTOS.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/FreeRTOSConfig.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/StackMacros.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/croutine.c (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/croutine.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/heap_2.c (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/list.c (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/list.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/mpu_wrappers.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/port.c (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/portable.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/portmacro.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/projdefs.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/queue.c (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/queue.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/semphr.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/task.h (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/tasks.c (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/timers.c (100%) rename STM32F1/libraries/{FreeRTOS => FreeRTOS701}/utility/timers.h (100%) diff --git a/STM32F1/libraries/FreeRTOS/MapleFreeRTOS.cpp b/STM32F1/libraries/FreeRTOS701/MapleFreeRTOS.cpp similarity index 100% rename from STM32F1/libraries/FreeRTOS/MapleFreeRTOS.cpp rename to STM32F1/libraries/FreeRTOS701/MapleFreeRTOS.cpp diff --git a/STM32F1/libraries/FreeRTOS/MapleFreeRTOS.h b/STM32F1/libraries/FreeRTOS701/MapleFreeRTOS.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/MapleFreeRTOS.h rename to STM32F1/libraries/FreeRTOS701/MapleFreeRTOS.h diff --git a/STM32F1/libraries/FreeRTOS/keywords.txt b/STM32F1/libraries/FreeRTOS701/keywords.txt similarity index 100% rename from STM32F1/libraries/FreeRTOS/keywords.txt rename to STM32F1/libraries/FreeRTOS701/keywords.txt diff --git a/STM32F1/libraries/FreeRTOS/rules.mk b/STM32F1/libraries/FreeRTOS701/rules.mk similarity index 100% rename from STM32F1/libraries/FreeRTOS/rules.mk rename to STM32F1/libraries/FreeRTOS701/rules.mk diff --git a/STM32F1/libraries/FreeRTOS/utility/FreeRTOS.h b/STM32F1/libraries/FreeRTOS701/utility/FreeRTOS.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/FreeRTOS.h rename to STM32F1/libraries/FreeRTOS701/utility/FreeRTOS.h diff --git a/STM32F1/libraries/FreeRTOS/utility/FreeRTOSConfig.h b/STM32F1/libraries/FreeRTOS701/utility/FreeRTOSConfig.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/FreeRTOSConfig.h rename to STM32F1/libraries/FreeRTOS701/utility/FreeRTOSConfig.h diff --git a/STM32F1/libraries/FreeRTOS/utility/StackMacros.h b/STM32F1/libraries/FreeRTOS701/utility/StackMacros.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/StackMacros.h rename to STM32F1/libraries/FreeRTOS701/utility/StackMacros.h diff --git a/STM32F1/libraries/FreeRTOS/utility/croutine.c b/STM32F1/libraries/FreeRTOS701/utility/croutine.c similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/croutine.c rename to STM32F1/libraries/FreeRTOS701/utility/croutine.c diff --git a/STM32F1/libraries/FreeRTOS/utility/croutine.h b/STM32F1/libraries/FreeRTOS701/utility/croutine.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/croutine.h rename to STM32F1/libraries/FreeRTOS701/utility/croutine.h diff --git a/STM32F1/libraries/FreeRTOS/utility/heap_2.c b/STM32F1/libraries/FreeRTOS701/utility/heap_2.c similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/heap_2.c rename to STM32F1/libraries/FreeRTOS701/utility/heap_2.c diff --git a/STM32F1/libraries/FreeRTOS/utility/list.c b/STM32F1/libraries/FreeRTOS701/utility/list.c similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/list.c rename to STM32F1/libraries/FreeRTOS701/utility/list.c diff --git a/STM32F1/libraries/FreeRTOS/utility/list.h b/STM32F1/libraries/FreeRTOS701/utility/list.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/list.h rename to STM32F1/libraries/FreeRTOS701/utility/list.h diff --git a/STM32F1/libraries/FreeRTOS/utility/mpu_wrappers.h b/STM32F1/libraries/FreeRTOS701/utility/mpu_wrappers.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/mpu_wrappers.h rename to STM32F1/libraries/FreeRTOS701/utility/mpu_wrappers.h diff --git a/STM32F1/libraries/FreeRTOS/utility/port.c b/STM32F1/libraries/FreeRTOS701/utility/port.c similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/port.c rename to STM32F1/libraries/FreeRTOS701/utility/port.c diff --git a/STM32F1/libraries/FreeRTOS/utility/portable.h b/STM32F1/libraries/FreeRTOS701/utility/portable.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/portable.h rename to STM32F1/libraries/FreeRTOS701/utility/portable.h diff --git a/STM32F1/libraries/FreeRTOS/utility/portmacro.h b/STM32F1/libraries/FreeRTOS701/utility/portmacro.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/portmacro.h rename to STM32F1/libraries/FreeRTOS701/utility/portmacro.h diff --git a/STM32F1/libraries/FreeRTOS/utility/projdefs.h b/STM32F1/libraries/FreeRTOS701/utility/projdefs.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/projdefs.h rename to STM32F1/libraries/FreeRTOS701/utility/projdefs.h diff --git a/STM32F1/libraries/FreeRTOS/utility/queue.c b/STM32F1/libraries/FreeRTOS701/utility/queue.c similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/queue.c rename to STM32F1/libraries/FreeRTOS701/utility/queue.c diff --git a/STM32F1/libraries/FreeRTOS/utility/queue.h b/STM32F1/libraries/FreeRTOS701/utility/queue.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/queue.h rename to STM32F1/libraries/FreeRTOS701/utility/queue.h diff --git a/STM32F1/libraries/FreeRTOS/utility/semphr.h b/STM32F1/libraries/FreeRTOS701/utility/semphr.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/semphr.h rename to STM32F1/libraries/FreeRTOS701/utility/semphr.h diff --git a/STM32F1/libraries/FreeRTOS/utility/task.h b/STM32F1/libraries/FreeRTOS701/utility/task.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/task.h rename to STM32F1/libraries/FreeRTOS701/utility/task.h diff --git a/STM32F1/libraries/FreeRTOS/utility/tasks.c b/STM32F1/libraries/FreeRTOS701/utility/tasks.c similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/tasks.c rename to STM32F1/libraries/FreeRTOS701/utility/tasks.c diff --git a/STM32F1/libraries/FreeRTOS/utility/timers.c b/STM32F1/libraries/FreeRTOS701/utility/timers.c similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/timers.c rename to STM32F1/libraries/FreeRTOS701/utility/timers.c diff --git a/STM32F1/libraries/FreeRTOS/utility/timers.h b/STM32F1/libraries/FreeRTOS701/utility/timers.h similarity index 100% rename from STM32F1/libraries/FreeRTOS/utility/timers.h rename to STM32F1/libraries/FreeRTOS701/utility/timers.h From 6548456957c232c128ada378d5cefcb81beced9e Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Wed, 23 May 2018 18:03:38 +1000 Subject: [PATCH 123/373] Change Wire.write() return types from void to size_t to be compatible with the Arduino API --- STM32F1/libraries/Wire/utility/WireBase.cpp | 22 +++++++++++++-------- STM32F1/libraries/Wire/utility/WireBase.h | 8 ++++---- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/STM32F1/libraries/Wire/utility/WireBase.cpp b/STM32F1/libraries/Wire/utility/WireBase.cpp index 02c8ed39e..5d4f63b9f 100644 --- a/STM32F1/libraries/Wire/utility/WireBase.cpp +++ b/STM32F1/libraries/Wire/utility/WireBase.cpp @@ -95,27 +95,33 @@ uint8 WireBase::requestFrom(int address, int numBytes) { return WireBase::requestFrom((uint8)address, numBytes); } -void WireBase::write(uint8 value) { +size_t WireBase::write(uint8 value) { if (tx_buf_idx == BUFFER_LENGTH) { tx_buf_overflow = true; - return; + return 0; } tx_buf[tx_buf_idx++] = value; itc_msg.length++; + return 1; } -void WireBase::write(uint8* buf, int len) { +size_t WireBase::write(uint8* buf, int len) { for (uint8 i = 0; i < len; i++) { - write(buf[i]); + if (!write(buf[i])) + { + return i; + } } + return len; } -void WireBase::write(int value) { - write((uint8)value); + +size_t WireBase::write(int value) { + return write((uint8)value); } -void WireBase::write(int* buf, int len) { - write((uint8*)buf, (uint8)len); +size_t WireBase::write(int* buf, int len) { + return write((uint8*)buf, (uint8)len); } void WireBase::write(char* buf) { diff --git a/STM32F1/libraries/Wire/utility/WireBase.h b/STM32F1/libraries/Wire/utility/WireBase.h index 72facded6..b543a1538 100644 --- a/STM32F1/libraries/Wire/utility/WireBase.h +++ b/STM32F1/libraries/Wire/utility/WireBase.h @@ -108,22 +108,22 @@ class WireBase { // Abstraction is awesome! /* * Stack up bytes to be sent when transmitting */ - void write(uint8); + size_t write(uint8); /* * Stack up bytes from the array to be sent when transmitting */ - void write(uint8*, int); + size_t write(uint8*, int); /* * Ensure that a sending data will only be 8-bit bytes */ - void write(int); + size_t write(int); /* * Ensure that an array sending data will only be 8-bit bytes */ - void write(int*, int); + size_t write(int*, int); /* * Stack up bytes from a string to be sent when transmitting From 2208bcbc5bcff8c25feb3713cdb72f546366957c Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Wed, 23 May 2018 19:37:08 +1000 Subject: [PATCH 124/373] Add define for ARDUINO_ARCH_STM32 to correspond with the official STM core and also with Adadfuit STM32 products --- STM32F1/platform.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index b1cf69d92..418ad284a 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -36,7 +36,7 @@ compiler.define=-DARDUINO= # this can be overriden in boards.txt build.f_cpu=72000000L build.mcu=cortex-m3 -build.common_flags=-mthumb -march=armv7-m -D__STM32F1__ +build.common_flags=-mthumb -march=armv7-m -D__STM32F1__ -DARDUINO_ARCH_STM32 build.variant_system_lib=libmaple.a ## LED stuff is not really used but is still required in the code build.error_led_port=GPIOB From e08d2eb1cc114341b5f87c6fb29014b31d697c8e Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 27 May 2018 15:52:53 +1000 Subject: [PATCH 125/373] minor change to SPI slave example --- STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino index fa2930a46..1e26db387 100644 --- a/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino +++ b/STM32F1/libraries/SPI/examples/spi_slave/spi_slave.ino @@ -22,7 +22,7 @@ void setup() setupSPI(); } -uint8_t count(0); +uint8_t count = 0; void loop() { // Blocking call to read SPI message From 141bcd2ad1bd4907c61c8f536bcb566b15c36d3c Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 27 May 2018 16:26:19 +1000 Subject: [PATCH 126/373] Attempt to add availableForWrite() to USB Serial --- STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c | 5 +++++ STM32F1/cores/maple/usb_serial.cpp | 2 ++ STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h | 3 +++ 3 files changed, 10 insertions(+) diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c index 7ebd03b76..d4cd8b7fd 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c @@ -456,6 +456,11 @@ uint8 usb_cdcacm_is_transmitting(void) { return ( transmitting>0 ? transmitting : 0); } +int usb_cdcacm_tx_available() +{ + return CDC_SERIAL_TX_BUFFER_SIZE - usb_cdcacm_get_pending(); +} + uint16 usb_cdcacm_get_pending(void) { return (tx_head - tx_tail) & CDC_SERIAL_TX_BUFFER_SIZE_MASK; } diff --git a/STM32F1/cores/maple/usb_serial.cpp b/STM32F1/cores/maple/usb_serial.cpp index 9f521775a..1cca589af 100644 --- a/STM32F1/cores/maple/usb_serial.cpp +++ b/STM32F1/cores/maple/usb_serial.cpp @@ -148,6 +148,8 @@ int USBSerial::peek(void) } } +int USBSerial::availableForWrite(void) { return usb_cdcacm_tx_available(); } + void USBSerial::flush(void) { /*Roger Clark. Rather slow method. Need to improve this */ diff --git a/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h b/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h index 62c9181cd..53551a7bd 100644 --- a/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h +++ b/STM32F1/system/libmaple/include/libmaple/usb_cdcacm.h @@ -129,10 +129,13 @@ uint32 usb_cdcacm_peek_ex(uint8* buf, uint32 offset, uint32 len); uint32 usb_cdcacm_data_available(void); /* in RX buffer */ uint16 usb_cdcacm_get_pending(void); uint8 usb_cdcacm_is_transmitting(void); +int usb_cdcacm_tx_available(); uint8 usb_cdcacm_get_dtr(void); uint8 usb_cdcacm_get_rts(void); + + typedef struct usb_cdcacm_line_coding { uint32 dwDTERate; /* Baud rate */ From 4db3994d1c42a45eb7b8fd298347128765f09e7f Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sun, 27 May 2018 16:35:06 +1000 Subject: [PATCH 127/373] Second attempt to add availableForWrite() to USB Serial --- STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c index d4cd8b7fd..dbf82c121 100644 --- a/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c +++ b/STM32F1/cores/maple/libmaple/usb/stm32f1/usb_cdcacm.c @@ -458,7 +458,7 @@ uint8 usb_cdcacm_is_transmitting(void) { int usb_cdcacm_tx_available() { - return CDC_SERIAL_TX_BUFFER_SIZE - usb_cdcacm_get_pending(); + return CDC_SERIAL_TX_BUFFER_SIZE - usb_cdcacm_get_pending() - 1; } uint16 usb_cdcacm_get_pending(void) { From e8d8cdb75ef1e9f2e73014a5d62011ae27d1ac0c Mon Sep 17 00:00:00 2001 From: arpruss Date: Wed, 13 Jun 2018 15:28:36 -0500 Subject: [PATCH 128/373] update to latest version of USBComposite --- .../USBComposite/USBCompositeSerial.cpp | 2 +- .../USBComposite/USBCompositeSerial.h | 2 +- STM32F1/libraries/USBComposite/USBHID.cpp | 2 +- .../libraries/USBComposite/USBMassStorage.cpp | 2 +- .../examples/jigglemouse/jigglemouse.ino | 23 +++++++++++++++++++ .../USBComposite/examples/mass/mass.ino | 3 +++ .../examples/sdreader/sdreader.ino | 2 ++ .../libraries/USBComposite/library.properties | 2 +- .../{usb_serial.c => usb_composite_serial.c} | 2 +- .../{usb_serial.h => usb_composite_serial.h} | 0 .../libraries/USBComposite/usb_midi_device.c | 1 + STM32F1/libraries/USBComposite/usb_setup.cpp | 3 --- 12 files changed, 35 insertions(+), 9 deletions(-) create mode 100755 STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino rename STM32F1/libraries/USBComposite/{usb_serial.c => usb_composite_serial.c} (99%) rename STM32F1/libraries/USBComposite/{usb_serial.h => usb_composite_serial.h} (100%) diff --git a/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp b/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp index 9da0f19db..8fa6c98d2 100644 --- a/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp +++ b/STM32F1/libraries/USBComposite/USBCompositeSerial.cpp @@ -23,7 +23,7 @@ #include #include -#include "usb_serial.h" +#include "usb_composite_serial.h" #define USB_TIMEOUT 50 diff --git a/STM32F1/libraries/USBComposite/USBCompositeSerial.h b/STM32F1/libraries/USBComposite/USBCompositeSerial.h index 4112617bb..80f110a7f 100644 --- a/STM32F1/libraries/USBComposite/USBCompositeSerial.h +++ b/STM32F1/libraries/USBComposite/USBCompositeSerial.h @@ -2,7 +2,7 @@ #define _COMPOSITE_SERIAL_H_ #include "USBComposite.h" -#include "usb_serial.h" +#include "usb_composite_serial.h" class USBCompositeSerial : public Stream { private: diff --git a/STM32F1/libraries/USBComposite/USBHID.cpp b/STM32F1/libraries/USBComposite/USBHID.cpp index e0b69b4ec..ca353961a 100644 --- a/STM32F1/libraries/USBComposite/USBHID.cpp +++ b/STM32F1/libraries/USBComposite/USBHID.cpp @@ -21,7 +21,7 @@ #include #include #include "usb_hid.h" -#include "usb_serial.h" +#include "usb_composite_serial.h" #include "usb_generic.h" #include #include diff --git a/STM32F1/libraries/USBComposite/USBMassStorage.cpp b/STM32F1/libraries/USBComposite/USBMassStorage.cpp index c376e6906..9c96359bb 100644 --- a/STM32F1/libraries/USBComposite/USBMassStorage.cpp +++ b/STM32F1/libraries/USBComposite/USBMassStorage.cpp @@ -1,7 +1,7 @@ #include "USBMassStorage.h" #include "usb_mass.h" #include "usb_mass_mal.h" -#include "usb_serial.h" +#include "usb_composite_serial.h" #include void USBMassStorageDevice::begin() { diff --git a/STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino b/STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino new file mode 100755 index 000000000..633db0cf2 --- /dev/null +++ b/STM32F1/libraries/USBComposite/examples/jigglemouse/jigglemouse.ino @@ -0,0 +1,23 @@ +#include + +#define LED PB12 + +void setup(){ + pinMode(LED,OUTPUT); + digitalWrite(LED,1); + USBHID_begin_with_serial(HID_MOUSE); + delay(1000); +} + +void loop(){ + digitalWrite(LED,0); + Mouse.move(4,0); + delay(500); + digitalWrite(LED,1); + delay(30000); + digitalWrite(LED,0); + Mouse.move(-4,0); + delay(500); + digitalWrite(LED,1); + delay(30000); +} diff --git a/STM32F1/libraries/USBComposite/examples/mass/mass.ino b/STM32F1/libraries/USBComposite/examples/mass/mass.ino index e10c04ef1..e64e40d8c 100644 --- a/STM32F1/libraries/USBComposite/examples/mass/mass.ino +++ b/STM32F1/libraries/USBComposite/examples/mass/mass.ino @@ -1,5 +1,7 @@ #include +#define PRODUCT_ID 0x29 + #include "image.h" bool write(uint32_t memoryOffset, const uint8_t *writebuff, uint16_t transferLength) { @@ -49,6 +51,7 @@ void dumpDrive() { } void setup() { + USBComposite.setProductId(PRODUCT_ID); MassStorage.setDrive(0, sizeof(image), read, write); MassStorage.registerComponent(); CompositeSerial.registerComponent(); diff --git a/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino b/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino index a5f4a61fc..0d5631aec 100644 --- a/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino +++ b/STM32F1/libraries/USBComposite/examples/sdreader/sdreader.ino @@ -6,6 +6,7 @@ #include "SdFat.h" #define LED_PIN PB12 +#define PRODUCT_ID 0x29 SdFatEX sd; const uint32_t speed = SPI_CLOCK_DIV2 ; @@ -22,6 +23,7 @@ bool read(uint32_t memoryOffset, uint8_t *readbuff, uint16_t transferLength) { } void setup() { + USBComposite.setProductId(PRODUCT_ID); pinMode(LED_PIN,OUTPUT); digitalWrite(LED_PIN,1); } diff --git a/STM32F1/libraries/USBComposite/library.properties b/STM32F1/libraries/USBComposite/library.properties index 1d8c2cb51..3fd8bcace 100644 --- a/STM32F1/libraries/USBComposite/library.properties +++ b/STM32F1/libraries/USBComposite/library.properties @@ -1,5 +1,5 @@ name=USBComposite for STM32F1 -version=0.64 +version=0.66 author=Various email=arpruss@gmail.com sentence=USB HID / MIDI / mass storage library for STM32F1 diff --git a/STM32F1/libraries/USBComposite/usb_serial.c b/STM32F1/libraries/USBComposite/usb_composite_serial.c similarity index 99% rename from STM32F1/libraries/USBComposite/usb_serial.c rename to STM32F1/libraries/USBComposite/usb_composite_serial.c index 390d256d5..51fc3ac47 100644 --- a/STM32F1/libraries/USBComposite/usb_serial.c +++ b/STM32F1/libraries/USBComposite/usb_composite_serial.c @@ -33,7 +33,7 @@ * the result made cleaner. */ -#include "usb_serial.h" +#include "usb_composite_serial.h" #include "usb_generic.h" #include #include diff --git a/STM32F1/libraries/USBComposite/usb_serial.h b/STM32F1/libraries/USBComposite/usb_composite_serial.h similarity index 100% rename from STM32F1/libraries/USBComposite/usb_serial.h rename to STM32F1/libraries/USBComposite/usb_composite_serial.h diff --git a/STM32F1/libraries/USBComposite/usb_midi_device.c b/STM32F1/libraries/USBComposite/usb_midi_device.c index 549d58194..f8a4fbaf6 100644 --- a/STM32F1/libraries/USBComposite/usb_midi_device.c +++ b/STM32F1/libraries/USBComposite/usb_midi_device.c @@ -264,6 +264,7 @@ static void getMIDIPartDescriptor(uint8* out) { // patch to reflect where the part goes in the descriptor OUT_BYTE(usbMIDIDescriptor_Config, AC_Interface.bInterfaceNumber) += usbMIDIPart.startInterface; OUT_BYTE(usbMIDIDescriptor_Config, MS_Interface.bInterfaceNumber) += usbMIDIPart.startInterface; + OUT_BYTE(usbMIDIDescriptor_Config, AC_CS_Interface.baInterfaceNr) += usbMIDIPart.startInterface; OUT_BYTE(usbMIDIDescriptor_Config, DataOutEndpoint.bEndpointAddress) += usbMIDIPart.startEndpoint; OUT_BYTE(usbMIDIDescriptor_Config, DataInEndpoint.bEndpointAddress) += usbMIDIPart.startEndpoint; } diff --git a/STM32F1/libraries/USBComposite/usb_setup.cpp b/STM32F1/libraries/USBComposite/usb_setup.cpp index 2136bf040..47fd3db4d 100644 --- a/STM32F1/libraries/USBComposite/usb_setup.cpp +++ b/STM32F1/libraries/USBComposite/usb_setup.cpp @@ -35,18 +35,15 @@ */ #include "boards_private.h" -#include "USBHID.h" #include #include #include -#include namespace wirish { namespace priv { void board_setup_usb(void) { - //Serial = CompositeSerial; #ifdef GENERIC_BOOTLOADER //Reset the USB interface on generic boards - developed by Victor PV gpio_set_mode(PIN_MAP[PA12].gpio_device, PIN_MAP[PA12].gpio_bit, GPIO_OUTPUT_PP); From 2f4eaa7979c78d12ab0dadafa308d279ad2b2721 Mon Sep 17 00:00:00 2001 From: Vassilis Serasidis Date: Fri, 22 Jun 2018 19:49:05 +0300 Subject: [PATCH 129/373] STM32F407 BKPSRAM Boundary address fix Fix for the Backup RAM. Example code: ... #include ... bkp_init(); bkp_enable_writes(); bkp_write(1, 0x1234); //Writes the value 0x1234 at Backup RAM address 1 bkp_disable_writes(); Serial.print(bkp_read(1)); //Print the value of the Backup RAM address 1 ... --- STM32F4/cores/maple/libmaple/bkp.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F4/cores/maple/libmaple/bkp.h b/STM32F4/cores/maple/libmaple/bkp.h index dd378b4f2..44754a335 100644 --- a/STM32F4/cores/maple/libmaple/bkp.h +++ b/STM32F4/cores/maple/libmaple/bkp.h @@ -99,7 +99,7 @@ typedef struct bkp_reg_map { } bkp_reg_map; /** Backup peripheral register map base pointer. */ -#define BKP_BASE ((struct bkp_reg_map*)0x40006C00) +#define BKP_BASE ((struct bkp_reg_map*)0x40024000) /** Backup peripheral device type. */ typedef struct bkp_dev { From 9d46a1c27d4dc9dd4df06b76a1d81684519d8acc Mon Sep 17 00:00:00 2001 From: Roger Clark Date: Sat, 23 Jun 2018 17:00:17 +1000 Subject: [PATCH 130/373] Alternative fix for issue #532 --- STM32F1/system/libmaple/include/libmaple/delay.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/STM32F1/system/libmaple/include/libmaple/delay.h b/STM32F1/system/libmaple/include/libmaple/delay.h index 472a208aa..64bb51005 100644 --- a/STM32F1/system/libmaple/include/libmaple/delay.h +++ b/STM32F1/system/libmaple/include/libmaple/delay.h @@ -46,6 +46,10 @@ extern "C" { * @param us Number of microseconds to delay. */ static inline void delay_us(uint32 us) { + if (us==0) + { + return; + } us *= STM32_DELAY_US_MULT; /* fudge for function call overhead */ From 8050dbfa580b97bf375b8f6f83894c4c2ce6478e Mon Sep 17 00:00:00 2001 From: stevstrong Date: Mon, 2 Jul 2018 10:30:17 +0200 Subject: [PATCH 131/373] F1: added function dma_get_count --- STM32F1/system/libmaple/stm32f1/include/series/dma.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/dma.h b/STM32F1/system/libmaple/stm32f1/include/series/dma.h index 84fd22888..8feebc67f 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/dma.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/dma.h @@ -538,7 +538,12 @@ static inline void dma_clear_isr_bits(dma_dev *dev, dma_tube tube) { dev->regs->IFCR = (1U << (4 * (tube - 1))); } -/** + +static inline uint16 dma_get_count(dma_dev *dev, dma_tube tube) { + return dma_channel_regs(dev, tube)->CNDTR; +} + + /** * @brief Deprecated * STM32F1 mode flags for dma_setup_xfer(). Use dma_tube_cfg() instead. * @see dma_tube_cfg() From 2ae184754b387f67dd7647fc620ea9ccac152eff Mon Sep 17 00:00:00 2001 From: stevstrong Date: Mon, 2 Jul 2018 10:32:21 +0200 Subject: [PATCH 132/373] Update dma.h small correction --- STM32F1/system/libmaple/stm32f1/include/series/dma.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/STM32F1/system/libmaple/stm32f1/include/series/dma.h b/STM32F1/system/libmaple/stm32f1/include/series/dma.h index 8feebc67f..5260f8e16 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/dma.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/dma.h @@ -538,12 +538,11 @@ static inline void dma_clear_isr_bits(dma_dev *dev, dma_tube tube) { dev->regs->IFCR = (1U << (4 * (tube - 1))); } - static inline uint16 dma_get_count(dma_dev *dev, dma_tube tube) { return dma_channel_regs(dev, tube)->CNDTR; } - /** +/** * @brief Deprecated * STM32F1 mode flags for dma_setup_xfer(). Use dma_tube_cfg() instead. * @see dma_tube_cfg() From 0dc153e8ca5ea1517594da96101ba3253e0fda2e Mon Sep 17 00:00:00 2001 From: Adam Coddington Date: Tue, 3 Jul 2018 16:42:51 -0700 Subject: [PATCH 133/373] Configure correct set of pins during SPI initialization when using alternate SPI pins. --- STM32F1/cores/maple/libmaple/gpio_f1.c | 9 +++++++++ STM32F1/libraries/SPI/src/SPI.cpp | 16 +++++++++++++++- .../libmaple/stm32f1/include/series/gpio.h | 1 + .../variants/generic_stm32f103c/board/board.h | 5 +++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/STM32F1/cores/maple/libmaple/gpio_f1.c b/STM32F1/cores/maple/libmaple/gpio_f1.c index 6de16f55a..8c3e7baa6 100644 --- a/STM32F1/cores/maple/libmaple/gpio_f1.c +++ b/STM32F1/cores/maple/libmaple/gpio_f1.c @@ -180,3 +180,12 @@ void afio_remap(afio_remap_peripheral remapping) { AFIO_BASE->MAPR |= remapping; } } + +int8_t afio_is_remapped(afio_remap_peripheral remapping) { + if (remapping & AFIO_REMAP_USE_MAPR2) { + remapping &= ~AFIO_REMAP_USE_MAPR2; + return AFIO_BASE->MAPR2 & remapping; + } else { + return AFIO_BASE->MAPR & remapping; + } +} diff --git a/STM32F1/libraries/SPI/src/SPI.cpp b/STM32F1/libraries/SPI/src/SPI.cpp index c07e2ea4a..76160a266 100644 --- a/STM32F1/libraries/SPI/src/SPI.cpp +++ b/STM32F1/libraries/SPI/src/SPI.cpp @@ -86,6 +86,14 @@ static const spi_pins board_spi_pins[] __FLASH__ = { #endif }; +static const spi_pins board_alt_spi_pins[] __FLASH__ = { +#if BOARD_NR_SPI >= 1 && defined(BOARD_SPI1_ALT_MOSI_PIN) + {BOARD_SPI1_ALT_NSS_PIN, + BOARD_SPI1_ALT_SCK_PIN, + BOARD_SPI1_ALT_MISO_PIN, + BOARD_SPI1_ALT_MOSI_PIN} +#endif +}; /* * Constructor @@ -702,7 +710,13 @@ void SPIClass::_spi3EventCallback() { static const spi_pins* dev_to_spi_pins(spi_dev *dev) { switch (dev->clk_id) { #if BOARD_NR_SPI >= 1 - case RCC_SPI1: return board_spi_pins; + case RCC_SPI1: +#if defined(BOARD_SPI1_ALT_MOSI_PIN) + if(afio_is_remapped(AFIO_REMAP_SPI1)) { + return board_alt_spi_pins; + } +#endif + return board_spi_pins; #endif #if BOARD_NR_SPI >= 2 case RCC_SPI2: return board_spi_pins + 1; diff --git a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h index aff639b4b..ba0ce883d 100644 --- a/STM32F1/system/libmaple/stm32f1/include/series/gpio.h +++ b/STM32F1/system/libmaple/stm32f1/include/series/gpio.h @@ -378,6 +378,7 @@ typedef enum afio_remap_peripheral { } afio_remap_peripheral; void afio_remap(afio_remap_peripheral p); +int8_t afio_is_remapped(afio_remap_peripheral p); /** * @brief Debug port configuration diff --git a/STM32F1/variants/generic_stm32f103c/board/board.h b/STM32F1/variants/generic_stm32f103c/board/board.h index 4736dc9ff..e9451d69e 100644 --- a/STM32F1/variants/generic_stm32f103c/board/board.h +++ b/STM32F1/variants/generic_stm32f103c/board/board.h @@ -53,6 +53,11 @@ #define BOARD_SPI1_MISO_PIN PA6 #define BOARD_SPI1_SCK_PIN PA5 +#define BOARD_SPI1_ALT_NSS_PIN PA15 +#define BOARD_SPI1_ALT_MOSI_PIN PB5 +#define BOARD_SPI1_ALT_MISO_PIN PB4 +#define BOARD_SPI1_ALT_SCK_PIN PB3 + #define BOARD_SPI2_NSS_PIN PB12 #define BOARD_SPI2_MOSI_PIN PB15 #define BOARD_SPI2_MISO_PIN PB14 From 3d356aaf4578bfdb9af1881dece617374d05fa6a Mon Sep 17 00:00:00 2001 From: stevstrong Date: Fri, 6 Jul 2018 12:15:03 +0200 Subject: [PATCH 134/373] F1: fix wrong delay timing --- STM32F1/cores/maple/wirish_time.cpp | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/STM32F1/cores/maple/wirish_time.cpp b/STM32F1/cores/maple/wirish_time.cpp index 6404bec15..b807554c7 100644 --- a/STM32F1/cores/maple/wirish_time.cpp +++ b/STM32F1/cores/maple/wirish_time.cpp @@ -34,13 +34,18 @@ #include #include "Arduino.h" -void delay(unsigned long ms) { - uint32 start = millis(); - do - { - yield(); - } - while (millis() - start < ms); +void delay(unsigned long ms) +{ + uint32 start = micros(); + while (ms > 0) + { + yield(); + while ( (ms > 0) && ((micros() - start) >= 1000) ) + { + ms--; + start += 1000; + } + } } void delayMicroseconds(uint32 us) { From f7819640932d921ef5cbee26976e54770d7df231 Mon Sep 17 00:00:00 2001 From: smarq8 Date: Fri, 20 Jul 2018 15:57:10 +0200 Subject: [PATCH 135/373] Update HardwareSerial.cpp fix availableforwrite() --- STM32F1/cores/maple/HardwareSerial.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/STM32F1/cores/maple/HardwareSerial.cpp b/STM32F1/cores/maple/HardwareSerial.cpp index b25dafc1d..89ccc97c6 100644 --- a/STM32F1/cores/maple/HardwareSerial.cpp +++ b/STM32F1/cores/maple/HardwareSerial.cpp @@ -126,12 +126,7 @@ int HardwareSerial::peek(void) int HardwareSerial::availableForWrite(void) { -/* Roger Clark. - * Currently there isn't an output ring buffer, chars are sent straight to the hardware. - * so just return 1, meaning that 1 char can be written - * This will be slower than a ring buffer implementation, but it should at least work ! - */ - return 1; + return this->usart_device->wb->size-rb_full_count(this->usart_device->wb); } size_t HardwareSerial::write(unsigned char ch) { From e160160034004a2e7019b84d60babccd14d8661e Mon Sep 17 00:00:00 2001 From: "Frederic.Pillon" Date: Thu, 26 Jul 2018 17:46:23 +0200 Subject: [PATCH 136/373] Define defaults optimization build.flags Signed-off-by: Frederic.Pillon --- STM32F1/boards.txt | 24 ------------------------ STM32F1/platform.txt | 4 +++- STM32F4/boards.txt | 8 -------- STM32F4/platform.txt | 2 ++ 4 files changed, 5 insertions(+), 33 deletions(-) diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index 84ce01d53..6f260e447 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -49,8 +49,6 @@ mapleMini.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations mapleMini.menu.opt.osstd=Smallest (default) -mapleMini.menu.opt.osstd.build.flags.optimize=-Os -mapleMini.menu.opt.osstd.build.flags.ldspecs= mapleMini.menu.opt.oslto=Smallest Code with LTO mapleMini.menu.opt.oslto.build.flags.optimize=-Os -flto mapleMini.menu.opt.oslto.build.flags.ldspecs=-flto @@ -111,8 +109,6 @@ maple.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations maple.menu.opt.osstd=Smallest (default) -maple.menu.opt.osstd.build.flags.optimize=-Os -maple.menu.opt.osstd.build.flags.ldspecs= maple.menu.opt.oslto=Smallest Code with LTO maple.menu.opt.oslto.build.flags.optimize=-Os -flto maple.menu.opt.oslto.build.flags.ldspecs=-flto @@ -174,8 +170,6 @@ mapleRET6.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations mapleRET6.menu.opt.osstd=Smallest (default) -mapleRET6.menu.opt.osstd.build.flags.optimize=-Os -mapleRET6.menu.opt.osstd.build.flags.ldspecs= mapleRET6.menu.opt.oslto=Smallest Code with LTO mapleRET6.menu.opt.oslto.build.flags.optimize=-Os -flto mapleRET6.menu.opt.oslto.build.flags.ldspecs=-flto @@ -244,8 +238,6 @@ microduino32_flash.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations microduino32_flash.menu.opt.osstd=Smallest (default) -microduino32_flash.menu.opt.osstd.build.flags.optimize=-Os -microduino32_flash.menu.opt.osstd.build.flags.ldspecs= microduino32_flash.menu.opt.oslto=Smallest Code with LTO microduino32_flash.menu.opt.oslto.build.flags.optimize=-Os -flto microduino32_flash.menu.opt.oslto.build.flags.ldspecs=-flto @@ -310,8 +302,6 @@ nucleo_f103rb.menu.device_variant.NucleoF103_HSE.build.extra_flags=-DNUCLEO_HSE_ #-- Optimizations nucleo_f103rb.menu.opt.osstd=Smallest (default) -nucleo_f103rb.menu.opt.osstd.build.flags.optimize=-Os -nucleo_f103rb.menu.opt.osstd.build.flags.ldspecs= nucleo_f103rb.menu.opt.oslto=Smallest Code with LTO nucleo_f103rb.menu.opt.oslto.build.flags.optimize=-Os -flto nucleo_f103rb.menu.opt.oslto.build.flags.ldspecs=-flto @@ -411,8 +401,6 @@ genericSTM32F103C.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103C.menu.opt.osstd=Smallest (default) -genericSTM32F103C.menu.opt.osstd.build.flags.optimize=-Os -genericSTM32F103C.menu.opt.osstd.build.flags.ldspecs= genericSTM32F103C.menu.opt.oslto=Smallest Code with LTO genericSTM32F103C.menu.opt.oslto.build.flags.optimize=-Os -flto genericSTM32F103C.menu.opt.oslto.build.flags.ldspecs=-flto @@ -522,8 +510,6 @@ genericSTM32F103R.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103R.menu.opt.osstd=Smallest (default) -genericSTM32F103R.menu.opt.osstd.build.flags.optimize=-Os -genericSTM32F103R.menu.opt.osstd.build.flags.ldspecs= genericSTM32F103R.menu.opt.oslto=Smallest Code with LTO genericSTM32F103R.menu.opt.oslto.build.flags.optimize=-Os -flto genericSTM32F103R.menu.opt.oslto.build.flags.ldspecs=-flto @@ -616,8 +602,6 @@ genericSTM32F103T.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103T.menu.opt.osstd=Smallest (default) -genericSTM32F103T.menu.opt.osstd.build.flags.optimize=-Os -genericSTM32F103T.menu.opt.osstd.build.flags.ldspecs= genericSTM32F103T.menu.opt.oslto=Smallest Code with LTO genericSTM32F103T.menu.opt.oslto.build.flags.optimize=-Os -flto genericSTM32F103T.menu.opt.oslto.build.flags.ldspecs=-flto @@ -727,8 +711,6 @@ genericSTM32F103V.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103V.menu.opt.osstd=Smallest (default) -genericSTM32F103V.menu.opt.osstd.build.flags.optimize=-Os -genericSTM32F103V.menu.opt.osstd.build.flags.ldspecs= genericSTM32F103V.menu.opt.oslto=Smallest Code with LTO genericSTM32F103V.menu.opt.oslto.build.flags.optimize=-Os -flto genericSTM32F103V.menu.opt.oslto.build.flags.ldspecs=-flto @@ -825,8 +807,6 @@ genericSTM32F103Z.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations genericSTM32F103Z.menu.opt.osstd=Smallest (default) -genericSTM32F103Z.menu.opt.osstd.build.flags.optimize=-Os -genericSTM32F103Z.menu.opt.osstd.build.flags.ldspecs= genericSTM32F103Z.menu.opt.oslto=Smallest Code with LTO genericSTM32F103Z.menu.opt.oslto.build.flags.optimize=-Os -flto genericSTM32F103Z.menu.opt.oslto.build.flags.ldspecs=-flto @@ -915,8 +895,6 @@ hytiny-stm32f103t.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations hytiny-stm32f103t.menu.opt.osstd=Smallest (default) -hytiny-stm32f103t.menu.opt.osstd.build.flags.optimize=-Os -hytiny-stm32f103t.menu.opt.osstd.build.flags.ldspecs= hytiny-stm32f103t.menu.opt.oslto=Smallest Code with LTO hytiny-stm32f103t.menu.opt.oslto.build.flags.optimize=-Os -flto hytiny-stm32f103t.menu.opt.oslto.build.flags.ldspecs=-flto @@ -982,8 +960,6 @@ STM32VLD.menu.cpu_speed.speed_128mhz.build.f_cpu=128000000L #-- Optimizations STM32VLD.menu.opt.osstd=Smallest (default) -STM32VLD.menu.opt.osstd.build.flags.optimize=-Os -STM32VLD.menu.opt.osstd.build.flags.ldspecs= STM32VLD.menu.opt.oslto=Smallest Code with LTO STM32VLD.menu.opt.oslto.build.flags.optimize=-Os -flto STM32VLD.menu.opt.oslto.build.flags.ldspecs=-flto diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index 418ad284a..fbbd2edac 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -44,6 +44,8 @@ build.error_led_pin=1 build.cpu_flags= build.hs_flag= build.upload_flags= +build.flags.optimize=-Os +build.flags.ldspecs= build.extra_flags= {build.upload_flags} {build.cpu_flags} {build.hs_flag} {build.common_flags} @@ -172,4 +174,4 @@ tools.hid_upload.path.linux={runtime.hardware.path}/tools/linux tools.hid_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.hid_upload.upload.params.verbose=-d tools.hid_upload.upload.params.quiet=n -tools.hid_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" \ No newline at end of file +tools.hid_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" diff --git a/STM32F4/boards.txt b/STM32F4/boards.txt index 907e6f7f4..d39629721 100644 --- a/STM32F4/boards.txt +++ b/STM32F4/boards.txt @@ -42,8 +42,6 @@ discovery_f407.menu.usb_cfg.usb_msc.build.cpu_flags=-DUSB_MSC #-- Optimizations discovery_f407.menu.opt.osstd=Smallest (default) -discovery_f407.menu.opt.osstd.build.flags.optimize=-Os -discovery_f407.menu.opt.osstd.build.flags.ldspecs= discovery_f407.menu.opt.oslto=Smallest Code with LTO discovery_f407.menu.opt.oslto.build.flags.optimize=-Os -flto discovery_f407.menu.opt.oslto.build.flags.ldspecs=-flto @@ -127,8 +125,6 @@ generic_f407v.menu.upload_method.DFUUploadMethod.upload.altID=2 #-- Optimizations generic_f407v.menu.opt.osstd=Smallest (default) -generic_f407v.menu.opt.osstd.build.flags.optimize=-Os -generic_f407v.menu.opt.osstd.build.flags.ldspecs= generic_f407v.menu.opt.oslto=Smallest Code with LTO generic_f407v.menu.opt.oslto.build.flags.optimize=-Os -flto generic_f407v.menu.opt.oslto.build.flags.ldspecs=-flto @@ -192,8 +188,6 @@ stm32f4stamp.menu.usb_cfg.usb_msc.build.cpu_flags=-DUSB_MSC #-- Optimizations stm32f4stamp.menu.opt.osstd=Smallest (default) -stm32f4stamp.menu.opt.osstd.build.flags.optimize=-Os -stm32f4stamp.menu.opt.osstd.build.flags.ldspecs= stm32f4stamp.menu.opt.oslto=Smallest Code with LTO stm32f4stamp.menu.opt.oslto.build.flags.optimize=-Os -flto stm32f4stamp.menu.opt.oslto.build.flags.ldspecs=-flto @@ -256,8 +250,6 @@ netduino2plus.menu.usb_cfg.usb_msc.build.cpu_flags=-DUSB_MSC #-- Optimizations netduino2plus.menu.opt.osstd=Smallest (default) -netduino2plus.menu.opt.osstd.build.flags.optimize=-Os -netduino2plus.menu.opt.osstd.build.flags.ldspecs= netduino2plus.menu.opt.oslto=Smallest Code with LTO netduino2plus.menu.opt.oslto.build.flags.optimize=-Os -flto netduino2plus.menu.opt.oslto.build.flags.ldspecs=-flto diff --git a/STM32F4/platform.txt b/STM32F4/platform.txt index 3c3e833bd..711b508de 100755 --- a/STM32F4/platform.txt +++ b/STM32F4/platform.txt @@ -34,6 +34,8 @@ build.cpu_flags= build.hs_flag= build.common_flags=-mthumb -D__STM32F4__ build.extra_flags= {build.cpu_flags} {build.hs_flag} {build.common_flags} +build.flags.optimize=-Os +build.flags.ldspecs= # These can be overridden in platform.local.txt compiler.c.extra_flags= From 65e4bfd2a89a8dfabfee2c5b58ef0cd935c4701f Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Sun, 29 Jul 2018 20:37:00 +0100 Subject: [PATCH 137/373] New attribute "isbegin" This attribute is added to keep record o previous begin() calls to the instance. Repeated calls seem to trigger some low level ASSERT() We can't avoid begin() beeing called by each library from the devices sharing the bus --- STM32F1/libraries/Wire/Wire.h | 1 + 1 file changed, 1 insertion(+) diff --git a/STM32F1/libraries/Wire/Wire.h b/STM32F1/libraries/Wire/Wire.h index ab05d4216..8f7025a3d 100644 --- a/STM32F1/libraries/Wire/Wire.h +++ b/STM32F1/libraries/Wire/Wire.h @@ -47,6 +47,7 @@ class TwoWire : public WireBase { private: i2c_dev* sel_hard; uint8 dev_flags; + bool isbegin; protected: /* * Processes the incoming I2C message defined by WireBase to the From 91783ae6b564c822915651c57096b99ed8b60948 Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Sun, 29 Jul 2018 20:51:44 +0100 Subject: [PATCH 138/373] Avoid i2c_master_enable() multiple calls Repeated calls seem to trigger some low level ASSERT() We can't avoid begin() being called by each library from the devices sharing the bus Use the attribute isbegin to keep track of begin() calls and does the i2c_master_enable() at the first one for the object instance --- STM32F1/libraries/Wire/Wire.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/STM32F1/libraries/Wire/Wire.cpp b/STM32F1/libraries/Wire/Wire.cpp index 192b13322..b44e9177e 100644 --- a/STM32F1/libraries/Wire/Wire.cpp +++ b/STM32F1/libraries/Wire/Wire.cpp @@ -60,7 +60,7 @@ uint8 TwoWire::process(){ } // TODO: Add in Error Handling if devsel is out of range for other Maples -TwoWire::TwoWire(uint8 dev_sel, uint8 flags) { +TwoWire::TwoWire(uint8 dev_sel, uint8 flags) : isbegin(false) { if (dev_sel == 1) { sel_hard = I2C1; } else if (dev_sel == 2) { @@ -77,12 +77,15 @@ TwoWire::~TwoWire() { } void TwoWire::begin(uint8 self_addr) { + if(isbegin) return; + isbegin = true; i2c_master_enable(sel_hard, dev_flags); } void TwoWire::end() { i2c_disable(sel_hard); sel_hard = 0; + isbegin = false; } void TwoWire::setClock(uint32_t frequencyHz) From 9b927b2f47a25ad9878f70c58f0a2f6495a3965e Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Mon, 30 Jul 2018 22:18:56 +0100 Subject: [PATCH 139/373] Fix I2C handling of multiple Wire.begin() at libmaple level Just skip the i2c_master_enable() code if the PE bit says it's already enabled This solves the problem of ASSERT() hang when Wire.begin() is called by multiple libraries --- STM32F1/cores/maple/libmaple/i2c.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F1/cores/maple/libmaple/i2c.c b/STM32F1/cores/maple/libmaple/i2c.c index 6724d162f..56960989f 100644 --- a/STM32F1/cores/maple/libmaple/i2c.c +++ b/STM32F1/cores/maple/libmaple/i2c.c @@ -175,8 +175,8 @@ void i2c_init(i2c_dev *dev) { * SDA/PB9. */ void i2c_master_enable(i2c_dev *dev, uint32 flags) { - /* PE must be disabled to configure the device */ - ASSERT(!(dev->regs->CR1 & I2C_CR1_PE)); + /* If the device is already enabled, don't do it again */ + if(dev->regs->CR1 & I2C_CR1_PE) return; /* Ugh */ _i2c_handle_remap(dev, flags); From 53612be98f05462894acdafc8ba45eae7127b660 Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Mon, 30 Jul 2018 22:26:46 +0100 Subject: [PATCH 140/373] Revert the previous proposed changes --- STM32F1/libraries/Wire/Wire.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/STM32F1/libraries/Wire/Wire.cpp b/STM32F1/libraries/Wire/Wire.cpp index b44e9177e..192b13322 100644 --- a/STM32F1/libraries/Wire/Wire.cpp +++ b/STM32F1/libraries/Wire/Wire.cpp @@ -60,7 +60,7 @@ uint8 TwoWire::process(){ } // TODO: Add in Error Handling if devsel is out of range for other Maples -TwoWire::TwoWire(uint8 dev_sel, uint8 flags) : isbegin(false) { +TwoWire::TwoWire(uint8 dev_sel, uint8 flags) { if (dev_sel == 1) { sel_hard = I2C1; } else if (dev_sel == 2) { @@ -77,15 +77,12 @@ TwoWire::~TwoWire() { } void TwoWire::begin(uint8 self_addr) { - if(isbegin) return; - isbegin = true; i2c_master_enable(sel_hard, dev_flags); } void TwoWire::end() { i2c_disable(sel_hard); sel_hard = 0; - isbegin = false; } void TwoWire::setClock(uint32_t frequencyHz) From 129e57b854e7d6674a6ddc28c7c8ecaa83f3ab8c Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Mon, 30 Jul 2018 22:27:19 +0100 Subject: [PATCH 141/373] Revert the previous proposed changes --- STM32F1/libraries/Wire/Wire.h | 1 - 1 file changed, 1 deletion(-) diff --git a/STM32F1/libraries/Wire/Wire.h b/STM32F1/libraries/Wire/Wire.h index 8f7025a3d..ab05d4216 100644 --- a/STM32F1/libraries/Wire/Wire.h +++ b/STM32F1/libraries/Wire/Wire.h @@ -47,7 +47,6 @@ class TwoWire : public WireBase { private: i2c_dev* sel_hard; uint8 dev_flags; - bool isbegin; protected: /* * Processes the incoming I2C message defined by WireBase to the From a176fd1937faba29fadc4df6907037b45bf451ab Mon Sep 17 00:00:00 2001 From: "Frederic.Pillon" Date: Tue, 31 Jul 2018 16:07:11 +0200 Subject: [PATCH 142/373] [STM32F4] Add missing build.vect_flags for netduino2plus Broken since: 58e50e7fd9062e45ec23d575a16cd411522c37cb Fix #544 Signed-off-by: Frederic.Pillon --- STM32F4/boards.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/STM32F4/boards.txt b/STM32F4/boards.txt index 907e6f7f4..f51708b45 100644 --- a/STM32F4/boards.txt +++ b/STM32F4/boards.txt @@ -246,6 +246,7 @@ netduino2plus.build.density=STM32_HIGH_DENSITY netduino2plus.build.error_led_port=GPIOD netduino2plus.build.error_led_pin=14 netduino2plus.build.board=Netduino2F405 +netduino2plus.build.vect_flags=-DVECT_TAB_FLASH -DUSER_ADDR_ROM=(uint32)0x08000000 netduino2plus.menu.usb_cfg.usb_nc=USB inactive netduino2plus.menu.usb_cfg.usb_nc.build.cpu_flags=-DUSB_NC From 3cb1196851088fcef5fa89d14841158a6e7f7d02 Mon Sep 17 00:00:00 2001 From: Thomas Friedrichsmeier Date: Thu, 2 Aug 2018 20:47:25 +0200 Subject: [PATCH 143/373] Add pgm_read_ptr and pgm_read_ptr_far for better compatibility with libs written for AVR --- STM32F1/cores/maple/avr/pgmspace.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/STM32F1/cores/maple/avr/pgmspace.h b/STM32F1/cores/maple/avr/pgmspace.h index 9b344c9b8..50bca0bae 100644 --- a/STM32F1/cores/maple/avr/pgmspace.h +++ b/STM32F1/cores/maple/avr/pgmspace.h @@ -31,6 +31,7 @@ typedef uint32_t prog_uint32_t; #define pgm_read_word(addr) (*(const unsigned short *)(addr)) #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) #define pgm_read_float(addr) (*(const float *)(addr)) +#define pgm_read_ptr(addr) (*(const void **)(addr)) #define pgm_read_byte_near(addr) pgm_read_byte(addr) #define pgm_read_word_near(addr) pgm_read_word(addr) @@ -40,5 +41,6 @@ typedef uint32_t prog_uint32_t; #define pgm_read_word_far(addr) pgm_read_word(addr) #define pgm_read_dword_far(addr) pgm_read_dword(addr) #define pgm_read_float_far(addr) pgm_read_float(addr) +#define pgm_read_ptr_far(addr) pgm_read_ptr(addr) #endif From 9870a471db765c08dbfbedfae69794dea7742962 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Fri, 3 Aug 2018 18:01:02 +0200 Subject: [PATCH 144/373] F4: USBD_StrDesc[] size fix - bug: memory overflow for size values less than 62, in function USBD_GetString(). The array in question (USBD_StrDesc) is followed in memory by 2 fill bytes for the current compile order. Arduino 1.8.6 compiles the files in different order, so that the USB will not working anymore. The longest string is 32 bytes long (plus ending zero), and 2 more bytes will be added at the beginning (https://github.com/rogerclarkmelbourne/Arduino_STM32/blob/master/STM32F4/cores/maple/libmaple/usbF4/STM32_USB_Device_Library/Core/src/usbd_req.c#L818-L834). The last 2 bytes are fill bytes (align 4). --- STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_conf.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_conf.h b/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_conf.h index 62a40c27c..57fe7027f 100644 --- a/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_conf.h +++ b/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_conf.h @@ -32,7 +32,7 @@ */ #define USBD_CFG_MAX_NUM 1 #define USBD_ITF_MAX_NUM 1 -#define USB_MAX_STR_DESC_SIZ 50 +#define USB_MAX_STR_DESC_SIZ (64+4) // longest descriptor string length + 2 /** @defgroup USB_VCP_Class_Layer_Parameter * @{ From 3ff3b0aef3fa88c19755b9e873243e89c45d9bb4 Mon Sep 17 00:00:00 2001 From: stevstrong Date: Sat, 4 Aug 2018 10:51:21 +0200 Subject: [PATCH 145/373] F4: USBD_StrDesc[] size fix (continued) Limit the maximum string length to 32 chars. --- STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_desc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_desc.c b/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_desc.c index e37e28c72..db922286b 100644 --- a/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_desc.c +++ b/STM32F4/cores/maple/libmaple/usbF4/VCP/usbd_desc.c @@ -57,10 +57,10 @@ #define USBD_LANGID_STRING 0x409 #define USBD_MANUFACTURER_STRING (uint8_t*)"STMicroelectronics" -#define USBD_PRODUCT_HS_STRING (uint8_t*)"STM32 Virtual ComPort in HS mode" +#define USBD_PRODUCT_HS_STRING (uint8_t*)"STM32 Virtual ComPort in HS Mode" #define USBD_SERIALNUMBER_HS_STRING (uint8_t*)"00000000050B" -#define USBD_PRODUCT_FS_STRING (uint8_t*)"STM32 Virtual ComPort in FS Mode" +#define USBD_PRODUCT_FS_STRING (uint8_t*)"STM32 Virtual ComPort in FS Mode" #define USBD_SERIALNUMBER_FS_STRING (uint8_t*)"00000000050C" #define USBD_CONFIGURATION_HS_STRING (uint8_t*)"VCP Config" From 4ea490e6d377980012aed198c3fbaabbf94c8d6f Mon Sep 17 00:00:00 2001 From: Vassilis Serasidis Date: Sat, 4 Aug 2018 17:29:51 +0300 Subject: [PATCH 146/373] Added support to HID Bootloader 2.0 HID Bootloader 2.0 supports Bluepill and generic_f407v boards The hid-flash tool is at the moment available only on Windows Please update your HID Bootloader firmware to V2.0 (https://github.com/Serasidis/STM32_HID_Bootloader/tree/master/bootloader/bootloader_only_binaries) --- STM32F1/boards.txt | 6 ++++ STM32F1/platform.txt | 8 ++--- .../generic_stm32f103c/ld/hid_bootloader.ld | 30 ++++++++++++++++++ STM32F4/boards.txt | 4 +++ STM32F4/platform.txt | 12 +++++++ tools/win/hid-flash.exe | Bin 0 -> 71518 bytes tools/win/hid_flash/hid-flash.exe | Bin 75156 -> 0 bytes 7 files changed, 56 insertions(+), 4 deletions(-) create mode 100644 STM32F1/variants/generic_stm32f103c/ld/hid_bootloader.ld create mode 100644 tools/win/hid-flash.exe delete mode 100644 tools/win/hid_flash/hid-flash.exe diff --git a/STM32F1/boards.txt b/STM32F1/boards.txt index 84ce01d53..145832061 100644 --- a/STM32F1/boards.txt +++ b/STM32F1/boards.txt @@ -399,6 +399,12 @@ genericSTM32F103C.menu.upload_method.jlinkMethod.upload.protocol=jlink genericSTM32F103C.menu.upload_method.jlinkMethod.upload.tool=jlink_upload genericSTM32F103C.menu.upload_method.jlinkMethod.build.upload_flags=-DCONFIG_MAPLE_MINI_NO_DISABLE_DEBUG=1 -DSERIAL_USB -DGENERIC_BOOTLOADER +genericSTM32F103C.menu.upload_method.HIDUploadMethod=HID bootloader 2.0 +genericSTM32F103C.menu.upload_method.HIDUploadMethod.upload.tool=hid_upload +genericSTM32F103C.menu.upload_method.HIDUploadMethod.build.upload_flags=-DSERIAL_USB -DGENERIC_BOOTLOADER +genericSTM32F103C.menu.upload_method.HIDUploadMethod.build.vect=VECT_TAB_ADDR=0x8001000 +genericSTM32F103C.menu.upload_method.HIDUploadMethod.build.ldscript=ld/hid_bootloader.ld + #-- CPU Clock frequency genericSTM32F103C.menu.cpu_speed.speed_72mhz=72Mhz (Normal) genericSTM32F103C.menu.cpu_speed.speed_72mhz.build.f_cpu=72000000L diff --git a/STM32F1/platform.txt b/STM32F1/platform.txt index 418ad284a..ef2446d31 100644 --- a/STM32F1/platform.txt +++ b/STM32F1/platform.txt @@ -162,14 +162,14 @@ tools.jlink_upload.upload.params.verbose=-d tools.jlink_upload.upload.params.quiet=n tools.jlink_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" -# HID upload +# HID upload 2.0 tools.hid_upload.cmd=hid_upload -tools.hid_upload.cmd.windows=hid_upload.bat -tools.hid_upload.cmd.macosx=hid_upload +tools.hid_upload.cmd.windows=hid-flash.exe +tools.hid_upload.cmd.macosx=hid_flash tools.hid_upload.path={runtime.hardware.path}/tools/win tools.hid_upload.path.macosx={runtime.hardware.path}/tools/macosx tools.hid_upload.path.linux={runtime.hardware.path}/tools/linux tools.hid_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.hid_upload.upload.params.verbose=-d tools.hid_upload.upload.params.quiet=n -tools.hid_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" \ No newline at end of file +tools.hid_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {serial.port.file} \ No newline at end of file diff --git a/STM32F1/variants/generic_stm32f103c/ld/hid_bootloader.ld b/STM32F1/variants/generic_stm32f103c/ld/hid_bootloader.ld new file mode 100644 index 000000000..d5b1f06ea --- /dev/null +++ b/STM32F1/variants/generic_stm32f103c/ld/hid_bootloader.ld @@ -0,0 +1,30 @@ +/* + * libmaple linker script for "Flash" builds. + * + * A Flash build puts .text (and .rodata) in Flash, and + * .data/.bss/heap (of course) in SRAM, but offsets the sections by + * enough space to store the Maple bootloader, which lives in low + * Flash and uses low memory. + */ + +/* + * This pulls in the appropriate MEMORY declaration from the right + * subdirectory of stm32/mem/ (the environment must call ld with the + * right include directory flags to make this happen). Boards can also + * use this file to use any of libmaple's memory-related hooks (like + * where the heap should live). + */ +MEMORY +{ + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K + rom (rx) : ORIGIN = 0x08001000, LENGTH = 124K +} + +/* Provide memory region aliases for common.inc */ +REGION_ALIAS("REGION_TEXT", rom); +REGION_ALIAS("REGION_DATA", ram); +REGION_ALIAS("REGION_BSS", ram); +REGION_ALIAS("REGION_RODATA", rom); + +/* Let common.inc handle the real work. */ +INCLUDE common.inc diff --git a/STM32F4/boards.txt b/STM32F4/boards.txt index 907e6f7f4..ebbe39f4f 100644 --- a/STM32F4/boards.txt +++ b/STM32F4/boards.txt @@ -111,6 +111,10 @@ generic_f407v.menu.upload_method.STLinkMethod.upload.tool=stlink_upload generic_f407v.menu.upload_method.STLinkMethod.upload.dfuse_addr=0x08004000 generic_f407v.menu.upload_method.STLinkMethod.build.vect_flags=-DVECT_TAB_FLASH -DUSER_ADDR_ROM=(uint32)0x08000000 +generic_f407v.menu.upload_method.HIDUploadMethod=HID bootloader 2.0 +generic_f407v.menu.upload_method.HIDUploadMethod.upload.tool=hid_upload +generic_f407v.menu.upload_method.HIDUploadMethod.build.vect_flags=-DVECT_TAB_FLASH -DUSER_ADDR_ROM=(uint32)0x08004000 -DVECT_TAB_OFFSET=0x4000 +generic_f407v.menu.upload_method.HIDUploadMethod.build.ldscript=ld/bootloader_8004000.ld generic_f407v.menu.upload_method.DFUUploadMethod=STM32duino bootloader generic_f407v.menu.upload_method.DFUUploadMethod.upload.protocol=maple_dfu diff --git a/STM32F4/platform.txt b/STM32F4/platform.txt index 3c3e833bd..3fc460131 100755 --- a/STM32F4/platform.txt +++ b/STM32F4/platform.txt @@ -123,3 +123,15 @@ tools.stlink_upload.path.linux64={runtime.hardware.path}/tools/linux64 tools.stlink_upload.upload.params.verbose=-d tools.stlink_upload.upload.params.quiet= tools.stlink_upload.upload.pattern="{path}/{cmd}" {serial.port.file} {upload.altID} {upload.usbID} "{build.path}/{build.project_name}.bin" + +# HID upload 2.0 (HID bootloader 2.0 This bootloader will cover the STM32F1 and STM32F4 MCUs) +tools.hid_upload.cmd=hid_upload +tools.hid_upload.cmd.windows=hid-flash.exe +tools.hid_upload.cmd.macosx=hid_flash +tools.hid_upload.path={runtime.hardware.path}/tools/win +tools.hid_upload.path.macosx={runtime.hardware.path}/tools/macosx +tools.hid_upload.path.linux={runtime.hardware.path}/tools/linux +tools.hid_upload.path.linux64={runtime.hardware.path}/tools/linux64 +tools.hid_upload.upload.params.verbose=-d +tools.hid_upload.upload.params.quiet=n +tools.hid_upload.upload.pattern="{path}/{cmd}" "{build.path}/{build.project_name}.bin" {serial.port.file} \ No newline at end of file diff --git a/tools/win/hid-flash.exe b/tools/win/hid-flash.exe new file mode 100644 index 0000000000000000000000000000000000000000..e42930cafe8c1bf9a3c6a5ab5fc4d7d49d8daaef GIT binary patch literal 71518 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

{{%xUuR*4SSTBZ4Hd5mQtmIPFJ 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⋐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

h#jNeg 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 literal 0 HcmV?d00001 diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.cpp b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp new file mode 100644 index 000000000..93cc55f09 --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.cpp @@ -0,0 +1,106 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file TwoWire.cpp + * @author Trystan Jones + * @brief Wire library, uses the hardware I2C available in the Maple to + * interact with I2C slave devices. + */ + +/* + * Library created by crenn to use the new WireBase system and allow Arduino + * users easy interaction with the I2C Hardware in a familiar method. + */ + +#include "Wire_slave.h" + +uint8 TwoWire::process(uint8 stop) { + int8 res = i2c_master_xfer(sel_hard, &itc_msg, 1, 0); + if (res == I2C_ERROR_PROTOCOL) { + if (sel_hard->error_flags & I2C_SR1_AF) { /* NACK */ + res = (sel_hard->error_flags & I2C_SR1_ADDR ? ENACKADDR : + ENACKTRNS); + } else if (sel_hard->error_flags & I2C_SR1_OVR) { /* Over/Underrun */ + res = EDATA; + } else { /* Bus or Arbitration error */ + res = EOTHER; + } + i2c_disable(sel_hard); + i2c_master_enable(sel_hard, (I2C_BUS_RESET | dev_flags)); + } + return res; +} + +uint8 TwoWire::process(){ + return process(true); +} + +// TODO: Add in Error Handling if devsel is out of range for other Maples +TwoWire::TwoWire(uint8 dev_sel, uint8 flags) { + if (dev_sel == 1) { + sel_hard = I2C1; + } else if (dev_sel == 2) { + sel_hard = I2C2; + } else { + ASSERT(1); + } + dev_flags = flags; +} + +TwoWire::~TwoWire() { + i2c_disable(sel_hard); + sel_hard = 0; +} + +void TwoWire::begin(uint8 self_addr) { + i2c_master_enable(sel_hard, dev_flags); +} + +void TwoWire::end() { + i2c_disable(sel_hard); + sel_hard = 0; +} + +void TwoWire::setClock(uint32_t frequencyHz) +{ + switch(frequencyHz) + { + case 400000: + dev_flags |= I2C_FAST_MODE;// set FAST_MODE bit + break; + case 100000: + default: + dev_flags &= ~I2C_FAST_MODE;// clear FAST_MODE bit + break; + } + if (sel_hard->regs->CR1 & I2C_CR1_PE){ + i2c_disable(sel_hard); + i2c_master_enable(sel_hard, dev_flags); + } +} + +TwoWire Wire(1); diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.h b/STM32F1/libraries/WireSlave/src/Wire_slave.h new file mode 100644 index 000000000..dbe2a4ea5 --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/Wire_slave.h @@ -0,0 +1,78 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file Wire.h + * @author Trystan Jones + * @brief Wire library, uses the hardware I2C available in the Maple to + * interact with I2C slave devices. + */ + +/* + * Library created by crenn to use the new WireBase system and allow Arduino + * users easy interaction with the I2C Hardware in a familiar method. + */ + +#ifndef _TWOWIRE_H_ +#define _TWOWIRE_H_ + +#include "utility/WireBase_slave.h" +#include "wirish.h" +#include + +class TwoWire : public WireBase { +private: + i2c_dev* sel_hard; + uint8 dev_flags; +protected: + /* + * Processes the incoming I2C message defined by WireBase to the + * hardware. If an error occured, restart the I2C device. + */ + uint8 process(uint8); + uint8 process(); +public: + /* + * Check if devsel is within range and enable selected I2C interface with + * passed flags + */ + TwoWire(uint8, uint8 = 0); + + /* + * Shuts down (disables) the hardware I2C + */ + void end(); + + void setClock(uint32_t frequencyHz); + /* + * Disables the I2C device and remove the device address. + */ + ~TwoWire(); + + void begin(uint8 = 0x00); +}; +extern TwoWire Wire; +#endif // _TWOWIRE_H_ diff --git a/STM32F1/libraries/WireSlave/src/Wire_slave.h.gch b/STM32F1/libraries/WireSlave/src/Wire_slave.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..5a6345078e7abad4b9211a296cfa52568e2ed238 GIT binary patch literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx literal 0 HcmV?d00001 diff --git a/STM32F1/libraries/WireSlave/src/i2c_slave.c b/STM32F1/libraries/WireSlave/src/i2c_slave.c new file mode 100644 index 000000000..770cd3a63 --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/i2c_slave.c @@ -0,0 +1,789 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/i2c.c + * @author Perry Hung + * @author Barry Carter + * @brief Inter-Integrated Circuit (I2C) support. + * + * Master and Slave supported + * I2C slave support added 2012 by Barry Carter. barry.carter@gmail.com, headfuzz.co.uk + */ + +#include "libmaple/i2c_common_slave.h" + +#include "i2c_private.h" + + +#include "libmaple/i2c_slave.h" +#include +#include +#include +#include +#include + +#include + +static inline int32 wait_for_state_change(i2c_dev *dev, + i2c_state state, + uint32 timeout); +static void set_ccr_trise(i2c_dev *dev, uint32 flags); + +/** + * @brief Fill data register with slave address + * @param dev I2C device + * @param addr Slave address + * @param rw Read/write bit + */ +static inline void i2c_send_slave_addr(i2c_dev *dev, uint32 addr, uint32 rw) { + dev->regs->DR = (addr << 1) | rw; +} + +/* + * Simple debugging trail. Define I2C_DEBUG to turn on. + */ +#ifdef I2C_DEBUG + +#define NR_CRUMBS 128 +static struct crumb crumbs[NR_CRUMBS]; +static uint32 cur_crumb = 0; + +static inline void i2c_drop_crumb(uint32 event, uint32 arg0, uint32 arg1) { + if (cur_crumb < NR_CRUMBS) { + struct crumb *crumb = &crumbs[cur_crumb++]; + crumb->event = event; + crumb->arg0 = arg0; + crumb->arg1 = arg1; + } +} +#define I2C_CRUMB(event, arg0, arg1) i2c_drop_crumb(event, arg0, arg1) + +#else +#define I2C_CRUMB(event, arg0, arg1) +#endif + +struct crumb { + uint32 event; + uint32 arg0; + uint32 arg1; +}; + +enum { + IRQ_ENTRY = 1, + TXE_ONLY = 2, + TXE_BTF = 3, + STOP_SENT = 4, + TEST = 5, + RX_ADDR_START = 6, + RX_ADDR_STOP = 7, + RXNE_ONLY = 8, + RXNE_SENDING = 9, + RXNE_START_SENT = 10, + RXNE_STOP_SENT = 11, + RXNE_DONE = 12, + ERROR_ENTRY = 13, +}; + +/** + * @brief Reset an I2C bus. + * + * Reset is accomplished by clocking out pulses until any hung slaves + * release SDA and SCL, then generating a START condition, then a STOP + * condition. + * + * @param dev I2C device + */ +void i2c_bus_reset(const i2c_dev *dev) { + /* Release both lines */ + i2c_master_release_bus(dev); + + /* + * Make sure the bus is free by clocking it until any slaves release the + * bus. + */ + while (!gpio_read_bit(sda_port(dev), dev->sda_pin)) { + /* Wait for any clock stretching to finish */ + while (!gpio_read_bit(scl_port(dev), dev->scl_pin)) + ; + delay_us(10); + + /* Pull low */ + gpio_write_bit(scl_port(dev), dev->scl_pin, 0); + delay_us(10); + + /* Release high again */ + gpio_write_bit(scl_port(dev), dev->scl_pin, 1); + delay_us(10); + } + + /* Generate start then stop condition */ + gpio_write_bit(sda_port(dev), dev->sda_pin, 0); + delay_us(10); + gpio_write_bit(scl_port(dev), dev->scl_pin, 0); + delay_us(10); + gpio_write_bit(scl_port(dev), dev->scl_pin, 1); + delay_us(10); + gpio_write_bit(sda_port(dev), dev->sda_pin, 1); +} + +/** + * @brief Initialize an I2C device and reset its registers to their + * default values. + * @param dev Device to initialize. + */ +void i2c_init(i2c_dev *dev) { + rcc_reset_dev(dev->clk_id); + rcc_clk_enable(dev->clk_id); + _i2c_irq_priority_fixup(dev); +} + +/* Hack for deprecated bit of STM32F1 functionality */ +#ifndef _I2C_HAVE_DEPRECATED_I2C_REMAP +#define _i2c_handle_remap(dev, flags) ((void)0) +#endif + +/** + * @brief Initialize an I2C device as bus master + * @param dev Device to enable + * @param flags Bitwise or of the following I2C options: + * I2C_FAST_MODE: 400 khz operation, + * I2C_DUTY_16_9: 16/9 Tlow/Thigh duty cycle (only applicable for + * fast mode), + * I2C_BUS_RESET: Reset the bus and clock out any hung slaves on + * initialization, + * I2C_10BIT_ADDRESSING: Enable 10-bit addressing, + * I2C_REMAP: (deprecated, STM32F1 only) Remap I2C1 to SCL/PB8 + * SDA/PB9. + */ +void i2c_master_enable(i2c_dev *dev, uint32 flags) { + /* PE must be disabled to configure the device */ + ASSERT(!(dev->regs->CR1 & I2C_CR1_PE)); + + /* Ugh */ + _i2c_handle_remap(dev, flags); + + /* Reset the bus. Clock out any hung slaves. */ + if (flags & I2C_BUS_RESET) { + i2c_bus_reset(dev); + } + + /* Turn on clock and set GPIO modes */ + i2c_init(dev); + i2c_config_gpios(dev); + + /* Configure clock and rise time */ + set_ccr_trise(dev, flags); + + /* Enable event and buffer interrupts */ + nvic_irq_enable(dev->ev_nvic_line); + nvic_irq_enable(dev->er_nvic_line); + i2c_enable_irq(dev, I2C_IRQ_EVENT | I2C_IRQ_BUFFER | I2C_IRQ_ERROR); + + /* Configure the slave unit */ + if (flags & I2C_SLAVE_DUAL_ADDRESS) { + i2c_slave_dual_address_enable(dev); + } + + if (flags & I2C_SLAVE_GENERAL_CALL) { + i2c_slave_general_call_enable(dev); + } + + /* store all of the flags */ + dev->config_flags = flags; + + /* Make it go! */ + i2c_peripheral_enable(dev); + i2c_enable_ack(dev); + + dev->state = I2C_STATE_IDLE; +} + +/** + * @brief Initialize an I2C device as slave (and master) + * @param dev Device to enable + * @param flags Bitwise or of the following I2C options: + * I2C_FAST_MODE: 400 khz operation, + * I2C_DUTY_16_9: 16/9 Tlow/Thigh duty cycle (only applicable for + * fast mode), + * I2C_BUS_RESET: Reset the bus and clock out any hung slaves on + * initialization, + * I2C_10BIT_ADDRESSING: Enable 10-bit addressing, + * I2C_REMAP: (deprecated, STM32F1 only) Remap I2C1 to SCL/PB8 + * SDA/PB9. + * I2C_SLAVE_DUAL_ADDRESS: Slave can respond on 2 i2C addresses + * I2C_SLAVE_GENERAL_CALL: SLA+W broadcast to all general call + * listeners on bus. Addr 0x00 + * I2C_SLAVE_USE_RX_BUFFER: Use a buffer to receive the incoming + * data. Callback at end of recv + * I2C_SLAVE_USE_TX_BUFFER: Use a buffer to transmit data. + * Callback will be called before tx + */ +void i2c_slave_enable(i2c_dev *dev, uint32 flags) { + i2c_disable(dev); + i2c_master_enable(dev, dev->config_flags | flags); +} + +/** + * @brief Process an i2c transaction. + * + * Transactions are composed of one or more i2c_msg's, and may be read + * or write tranfers. Multiple i2c_msg's will generate a repeated + * start in between messages. + * + * @param dev I2C device + * @param msgs Messages to send/receive + * @param num Number of messages to send/receive + * @param timeout Bus idle timeout in milliseconds before aborting the + * transfer. 0 denotes no timeout. + * @return 0 on success, + * I2C_ERROR_PROTOCOL if there was a protocol error, + * I2C_ERROR_TIMEOUT if the transfer timed out. + */ +int32 i2c_master_xfer(i2c_dev *dev, + i2c_msg *msgs, + uint16 num, + uint32 timeout) { + int32 rc; + + ASSERT(dev->state == I2C_STATE_IDLE); + + dev->msg = msgs; + dev->msgs_left = num; + dev->timestamp = systick_uptime(); + dev->state = I2C_STATE_BUSY; + + i2c_enable_irq(dev, I2C_IRQ_EVENT); + i2c_start_condition(dev); + + rc = wait_for_state_change(dev, I2C_STATE_XFER_DONE, timeout); + if (rc < 0) { + goto out; + } + + dev->state = I2C_STATE_IDLE; +out: + return rc; +} + +/** + * @brief Wait for an I2C event, or time out in case of error. + * @param dev I2C device + * @param state I2C_state state to wait for + * @param timeout Timeout, in milliseconds + * @return 0 if target state is reached, a negative value on error. + */ +static inline int32 wait_for_state_change(i2c_dev *dev, + i2c_state state, + uint32 timeout) { + i2c_state tmp; + + while (1) { + tmp = dev->state; + + if (tmp == I2C_STATE_ERROR) { + return I2C_STATE_ERROR; + } + + if (tmp == state) { + return 0; + } + + if (timeout) { + if (systick_uptime() > (dev->timestamp + timeout)) { + /* TODO: overflow? */ + /* TODO: racy? */ + return I2C_ERROR_TIMEOUT; + } + } + } +} + +/* + * Private API + */ + +/* + * IRQ handler for I2C master. Handles transmission/reception. + */ +void _i2c_irq_handler(i2c_dev *dev) { + /* WTFs: + * - Where is I2C_MSG_10BIT_ADDR handled? + */ + i2c_msg *msg = dev->msg; + + uint8 read = msg->flags & I2C_MSG_READ; + + uint32 sr1 = dev->regs->SR1; + uint32 sr2 = dev->regs->SR2; + I2C_CRUMB(IRQ_ENTRY, sr1, sr2); + + /* + * Reset timeout counter + */ + dev->timestamp = systick_uptime(); + + /* + * Add Slave support + */ + + /* Check to see if MSL master slave bit is set */ + if ((sr2 & I2C_SR2_MSL) != I2C_SR2_MSL) { /* 0 = slave mode 1 = master */ + + /* Check for address match */ + if (sr1 & I2C_SR1_ADDR) { + /* Find out which address was matched */ + /* Check the general call address first */ + if (sr2 & I2C_SR2_GENCALL) { + dev->i2c_slave_msg->addr = 0; + } + /* We matched the secondary address */ + else if (sr2 & I2C_SR2_DUALF) { + dev->i2c_slave_msg->addr = dev->regs->OAR2 & 0xFE; + } + /* We matched the primary address */ + else if ((sr2 & I2C_SR2_DUALF) != I2C_SR2_DUALF) { + dev->i2c_slave_msg->addr = dev->regs->OAR1 & 0xFE; + } + /* Shouldn't get here */ + else { + dev->i2c_slave_msg->addr = -1; /* uh oh */ + } + + /* if we have buffered io */ + if ((dev->config_flags & I2C_SLAVE_USE_RX_BUFFER) || + (dev->config_flags & I2C_SLAVE_USE_TX_BUFFER)) { + + /* if receiving then this would be a repeated start + * + *if we have some bytes already + */ + if ((dev->state == I2C_STATE_SL_RX) && + (dev->i2c_slave_msg->xferred > 0) && + (dev->config_flags & I2C_SLAVE_USE_RX_BUFFER)) { + /* Call the callback with the contents of the data */ + if (dev->i2c_slave_recv_callback != NULL) { + (*(dev->i2c_slave_recv_callback))(dev->i2c_slave_msg); + } + } + + /* Reset the message back to defaults. + * We are starting a new message + */ + dev->i2c_slave_msg->flags = 0; + dev->i2c_slave_msg->length = 0; + dev->i2c_slave_msg->xferred = 0; + dev->msgs_left = 0; + dev->timestamp = systick_uptime(); + + /* We have been addressed with SLA+R so + * the master wants us to transmit + */ + if ((sr1 & I2C_SR1_TXE) && + (dev->config_flags & I2C_SLAVE_USE_TX_BUFFER)) { + /* Call the transmit callback so it can populate the msg + * data with the bytes to go + */ + if (dev->i2c_slave_transmit_callback != NULL) { + (*(dev->i2c_slave_transmit_callback))(dev->i2c_slave_msg); + } + } + dev->state = I2C_STATE_BUSY; + } + + sr1 = sr2 = 0; + } + + /* EV3: Master requesting data from slave. Transmit a byte*/ + if (sr1 & I2C_SR1_TXE) { + if (dev->config_flags & I2C_SLAVE_USE_TX_BUFFER) { + if (dev->i2c_slave_msg->xferred >= dev->i2c_slave_msg->length) { + /* End of the transmit buffer? If so we NACK */ + i2c_disable_ack(dev); + /* We have to either issue a STOP or write something here. + * STOP here seems to screw up some masters, + * For now padding with 0 + */ + i2c_write(dev, 0); + /*i2c_stop_condition(dev); // This is causing bus lockups way more than it should !? Seems some I2C master devices freak out here*/ + } + else + { + /* NACk the last byte */ + if (dev->i2c_slave_msg->xferred == dev->i2c_slave_msg->length-1) { + i2c_disable_ack(dev); + } + else { + i2c_enable_ack(dev); + } + i2c_write(dev, dev->i2c_slave_msg->data[dev->i2c_slave_msg->xferred++]); + } + } + else + { + /* Call the callback to get the data we need. + * The callback is expected to write using i2c_write(...) + * If the slave is going to terminate the transfer, this function should + * also do a NACK on the last byte! + */ + if (dev->i2c_slave_transmit_callback != NULL) (*(dev->i2c_slave_transmit_callback))(dev->i2c_slave_msg); + } + + dev->state = I2C_STATE_BUSY; + sr1 = sr2 = 0; + } + + /* EV2: Slave received data from a master. Get from DR */ + if (sr1 & I2C_SR1_RXNE) { + if (dev->config_flags & I2C_SLAVE_USE_RX_BUFFER) { + /* Fill the buffer with the contents of the data register */ + /* These is potential for buffer overflow here, so we should + * really store the size of the array. This is expensive in + * the ISR so left out for now. We must trust the implementor! + */ + dev->i2c_slave_msg->data[dev->i2c_slave_msg->xferred++] = dev->regs->DR; + dev->i2c_slave_msg->length++; + } + else { + /* Call the callback with the contents of the data */ + dev->i2c_slave_msg->data[0] = dev->regs->DR; + if (dev->i2c_slave_recv_callback != NULL) (*(dev->i2c_slave_recv_callback))(dev->i2c_slave_msg); + } + dev->state = I2C_STATE_SL_RX; + sr1 = sr2 = 0; + } + + /* EV4: Slave has detected a STOP condition on the bus */ + if (sr1 & I2C_SR1_STOPF) { + dev->regs->CR1 |= I2C_CR1_PE; + + if ((dev->config_flags & I2C_SLAVE_USE_RX_BUFFER) || + (dev->config_flags & I2C_SLAVE_USE_TX_BUFFER)) { + + /* The callback with the data will happen on a NACK of the last data byte. + * This is handled in the error IRQ (AF bit) + */ + /* Handle the case where the master misbehaves by sending no NACK */ + if (dev->state != I2C_STATE_IDLE) { + if (dev->state == I2C_STATE_SL_RX) { + if (dev->i2c_slave_recv_callback != NULL) (*(dev->i2c_slave_recv_callback))(dev->i2c_slave_msg); + } + else { + if (dev->i2c_slave_transmit_callback != NULL) (*(dev->i2c_slave_transmit_callback))(dev->i2c_slave_msg); + } + } + } + + sr1 = sr2 = 0; + dev->state = I2C_STATE_IDLE; + } + + return; + } + + /* + * EV5: Start condition sent + */ + if (sr1 & I2C_SR1_SB) { + msg->xferred = 0; + i2c_enable_irq(dev, I2C_IRQ_BUFFER); + + /* + * Master receiver + */ + if (read) { + i2c_enable_ack(dev); + } + + i2c_send_slave_addr(dev, msg->addr, read); + sr1 = sr2 = 0; + } + + /* + * EV6: Slave address sent + */ + if (sr1 & I2C_SR1_ADDR) { + /* + * Special case event EV6_1 for master receiver. + * Generate NACK and restart/stop condition after ADDR + * is cleared. + */ + if (read) { + if (msg->length == 1) { + i2c_disable_ack(dev); + if (dev->msgs_left > 1) { + i2c_start_condition(dev); + I2C_CRUMB(RX_ADDR_START, 0, 0); + } else { + i2c_stop_condition(dev); + I2C_CRUMB(RX_ADDR_STOP, 0, 0); + } + } + } else { + /* + * Master transmitter: write first byte to fill shift + * register. We should get another TXE interrupt + * immediately to fill DR again. + */ + if (msg->length > 1) { + i2c_write(dev, msg->data[msg->xferred++]); + } else if (msg->length == 0) { /* We're just sending an address */ + i2c_stop_condition(dev); + /* + * Turn off event interrupts to keep BTF from firing until + * the end of the stop condition. Why on earth they didn't + * have a start/stop condition request clear BTF is beyond + * me. + */ + i2c_disable_irq(dev, I2C_IRQ_EVENT); + I2C_CRUMB(STOP_SENT, 0, 0); + dev->state = I2C_STATE_XFER_DONE; + } /* else we're just sending one byte */ + } + sr1 = sr2 = 0; + } + + /* + * EV8: Master transmitter + * Transmit buffer empty, but we haven't finished transmitting the last + * byte written. + */ + if ((sr1 & I2C_SR1_TXE) && !(sr1 & I2C_SR1_BTF)) { + I2C_CRUMB(TXE_ONLY, 0, 0); + if (dev->msgs_left) { + i2c_write(dev, msg->data[msg->xferred++]); + if (msg->xferred == msg->length) { + /* + * End of this message. Turn off TXE/RXNE and wait for + * BTF to send repeated start or stop condition. + */ + i2c_disable_irq(dev, I2C_IRQ_BUFFER); + dev->msgs_left--; + } + } else { + /* + * This should be impossible... + */ + ASSERT(0); + } + sr1 = sr2 = 0; + } + + /* + * EV8_2: Master transmitter + * Last byte sent, program repeated start/stop + */ + if ((sr1 & I2C_SR1_TXE) && (sr1 & I2C_SR1_BTF)) { + I2C_CRUMB(TXE_BTF, 0, 0); + if (dev->msgs_left) { + I2C_CRUMB(TEST, 0, 0); + /* + * Repeated start insanity: We can't disable ITEVTEN or else SB + * won't interrupt, but if we don't disable ITEVTEN, BTF will + * continually interrupt us. What the fuck ST? + */ + i2c_start_condition(dev); + while (!(dev->regs->SR1 & I2C_SR1_SB)) + ; + dev->msg++; + } else { + i2c_stop_condition(dev); + + /* + * Turn off event interrupts to keep BTF from firing until + * the end of the stop condition. Why on earth they didn't + * have a start/stop condition request clear BTF is beyond + * me. + */ + i2c_disable_irq(dev, I2C_IRQ_EVENT); + I2C_CRUMB(STOP_SENT, 0, 0); + dev->state = I2C_STATE_XFER_DONE; + } + sr1 = sr2 = 0; + } + + /* + * EV7: Master Receiver + */ + if (sr1 & I2C_SR1_RXNE) { + I2C_CRUMB(RXNE_ONLY, 0, 0); + msg->data[msg->xferred++] = dev->regs->DR; + + /* + * EV7_1: Second to last byte in the reception? Set NACK and generate + * stop/restart condition in time for the last byte. We'll get one more + * RXNE interrupt before shutting things down. + */ + if (msg->xferred == (msg->length - 1)) { + i2c_disable_ack(dev); + if (dev->msgs_left > 2) { + i2c_start_condition(dev); + I2C_CRUMB(RXNE_START_SENT, 0, 0); + } else { + i2c_stop_condition(dev); + I2C_CRUMB(RXNE_STOP_SENT, 0, 0); + } + } else if (msg->xferred == msg->length) { + dev->msgs_left--; + if (dev->msgs_left == 0) { + /* + * We're done. + */ + I2C_CRUMB(RXNE_DONE, 0, 0); + dev->state = I2C_STATE_XFER_DONE; + } else { + dev->msg++; + } + } + } +} + +/* + * Interrupt handler for I2C error conditions. Aborts any pending I2C + * transactions. + */ +void _i2c_irq_error_handler(i2c_dev *dev) { + I2C_CRUMB(ERROR_ENTRY, dev->regs->SR1, dev->regs->SR2); + + dev->error_flags = dev->regs->SR1 & (I2C_SR1_BERR | + I2C_SR1_ARLO | + I2C_SR1_AF | + I2C_SR1_OVR); + + /* Are we in slave mode? */ + if ((dev->regs->SR2 & I2C_SR2_MSL) != I2C_SR2_MSL) { + /* Check to see if the master device did a NAK on the last bit + * This is perfectly valid for a master to do this on the bus. + * We ignore this. Any further error processing takes us into dead + * loop waiting for the stop condition that will never arrive + */ + if (dev->regs->SR1 & I2C_SR1_AF) { + /* Clear flags */ + dev->regs->SR1 = 0; + dev->regs->SR2 = 0; + /* We need to write something to CR1 to clear the flag. + * This isn't really mentioned but seems important */ + i2c_enable_ack(dev); + + if (dev->state == I2C_STATE_SL_RX && + dev->config_flags & I2C_SLAVE_USE_RX_BUFFER && + dev->i2c_slave_msg->xferred > 0) { + /* Call the callback with the contents of the data */ + if (dev->i2c_slave_recv_callback != NULL) (*(dev->i2c_slave_recv_callback))(dev->i2c_slave_msg); + } + + dev->state = I2C_STATE_IDLE; + return; + } + /* Catch any other strange errors while in slave mode. + * I have seen BERR caused by an over fast master device + * as well as several overflows and arbitration failures. + * We are going to reset SR flags and carry on at this point which + * is not the best thing to do, but stops the bus locking up completely + * If we carry on below and send the stop bit, the code spins forever */ + /* Clear flags */ + dev->regs->SR1 = 0; + dev->regs->SR2 = 0; + dev->state = I2C_STATE_IDLE; + return; + } + + /* Clear flags */ + dev->regs->SR1 = 0; + dev->regs->SR2 = 0; + + i2c_stop_condition(dev); + i2c_disable_irq(dev, I2C_IRQ_BUFFER | I2C_IRQ_EVENT | I2C_IRQ_ERROR); + dev->state = I2C_STATE_ERROR; +} + +/* + * CCR/TRISE configuration helper + */ +static void set_ccr_trise(i2c_dev *dev, uint32 flags) { + uint32 ccr = 0; + uint32 trise = 0; + uint32 clk_mhz = _i2c_bus_clk(dev); + uint32 clk_hz = clk_mhz * (1000 * 1000); + + i2c_set_input_clk(dev, clk_mhz); + + if (flags & I2C_FAST_MODE) { + ccr |= I2C_CCR_FS; + + if (flags & I2C_DUTY_16_9) { + /* Tlow/Thigh = 16/9 */ + ccr |= I2C_CCR_DUTY_16_9; + ccr |= clk_hz / (400000 * 25); + } else { + /* Tlow/Thigh = 2 */ + ccr |= clk_hz / (400000 * 3); + } + + trise = (300 * clk_mhz / 1000) + 1; + } else { + /* Tlow/Thigh = 1 */ + ccr = clk_hz / (100000 * 2); + trise = clk_mhz + 1; + } + + /* Set minimum required value if CCR < 1*/ + if ((ccr & I2C_CCR_CCR) == 0) { + ccr |= 0x1; + } + + i2c_set_clk_control(dev, ccr); + i2c_set_trise(dev, trise); +} + + +/** + * @brief callback for when the device acts as a slave. If using an rx buffer, this is triggered + * after the last byte, otherwise it is called for every incoming packet. + * @param dev I2C device + * @param msg The dev_msg to pass to the slave init code + * @param func The function pointer to call + */ +void i2c_slave_attach_recv_handler(i2c_dev *dev, i2c_msg *msg, i2c_slave_recv_callback_func func) { + dev->i2c_slave_recv_callback = func; + dev->i2c_slave_msg = msg; + msg->xferred = 0; +} + + +/** + * @brief callback for when the device acts as a slave. If using a tx buffer, this is triggered + * after the device is successsfully addressed with SLA+R. + * @param dev I2C device + * @param msg The dev_msg to pass to the slave init code + * @param func The function pointer to call + */ +void i2c_slave_attach_transmit_handler(i2c_dev *dev, i2c_msg *msg, i2c_slave_transmit_callback_func func) { + dev->i2c_slave_transmit_callback = func; + dev->i2c_slave_msg = msg; + msg->xferred = 0; +} diff --git a/STM32F1/libraries/WireSlave/src/i2c_slave.h.gch b/STM32F1/libraries/WireSlave/src/i2c_slave.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..5a6345078e7abad4b9211a296cfa52568e2ed238 GIT binary patch literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx literal 0 HcmV?d00001 diff --git a/STM32F1/libraries/WireSlave/src/libmaple/i2c_common_slave.h b/STM32F1/libraries/WireSlave/src/libmaple/i2c_common_slave.h new file mode 100644 index 000000000..605c66375 --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/libmaple/i2c_common_slave.h @@ -0,0 +1,110 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung (from ). + * Copyright (c) 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/include/libmaple/i2c_common.h + * @author Marti Bolivar + * @brief This file is an implementation detail + * + * CONTENTS UNSTABLE. The existence of this file is an implementation + * detail. Never include it directly. If you need something from + * here, include instead. + * + * I2C slave support added 2012 by Barry Carter. barry.carter@gmail.com, headfuzz.co.uk + * + */ + +#ifndef _LIBMAPLE_I2C_COMMON_H_ +#define _LIBMAPLE_I2C_COMMON_H_ + +#include +#include +#include + +struct gpio_dev; +struct i2c_reg_map; +struct i2c_msg; + +/** I2C device states */ +typedef enum i2c_state { + I2C_STATE_DISABLED = 0, /**< Disabled */ + I2C_STATE_IDLE = 1, /**< Idle */ + I2C_STATE_XFER_DONE = 2, /**< Done with transfer */ + I2C_STATE_BUSY = 3, /**< Busy */ + I2C_STATE_SL_RX = 4, /**< Slave receiving */ + I2C_STATE_ERROR = -1 /**< Error occurred */ +} i2c_state; + +typedef void (*i2c_slave_recv_callback_func)(struct i2c_msg *); +typedef void (*i2c_slave_transmit_callback_func)(struct i2c_msg *); +/** + * @brief I2C device type. + */ +typedef struct i2c_dev { + struct i2c_reg_map *regs; /**< Register map */ + struct i2c_msg *msg; /**< Messages */ + uint32 error_flags; /**< Error flags, set on I2C error condition */ + volatile uint32 timestamp; /**< For internal use */ + + /** + * @brief Deprecated. Use .scl_port or .sda_port instead. + * If non-null, this will be used as SDA, SCL pins' GPIO port. If + * null, then .sda_port will be used for SDA, and .sda_port for + * SDA. */ + struct gpio_dev *gpio_port; + + /** + * @brief SDA GPIO device (but see .gpio_port). + */ + struct gpio_dev *sda_port; + + /** + * @brief SCL GPIO device (but see .gpio_port). + */ + struct gpio_dev *scl_port; + + uint16 msgs_left; /**< Messages left */ + uint8 sda_pin; /**< SDA bit on gpio_port */ + uint8 scl_pin; /**< SCL bit on gpio_port */ + rcc_clk_id clk_id; /**< RCC clock information */ + nvic_irq_num ev_nvic_line; /**< Event IRQ number */ + nvic_irq_num er_nvic_line; /**< Error IRQ number */ + volatile i2c_state state; /**< Device state */ + uint32 config_flags; /**< Configuration flags */ + + /* + * Slave implementation. Callback functions in this struct allow + * for a separate callback function for each I2C unit available onboard + */ + i2c_slave_transmit_callback_func i2c_slave_transmit_callback; + i2c_slave_recv_callback_func i2c_slave_recv_callback; + + struct i2c_msg *i2c_slave_msg; /* the message that the i2c slave will use */ + +} i2c_dev; + +#endif diff --git a/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h b/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h new file mode 100644 index 000000000..1f290c2a6 --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h @@ -0,0 +1,475 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 Perry Hung. + * Copyright (c) 2012 LeafLabs, LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file libmaple/include/libmaple/i2c.h + * @brief Inter-Integrated Circuit (I2C) peripheral support + * + * Supports Master and Slave. + * Master Usage notes: + * + * - Enable an I2C device with i2c_master_enable(). + * - Initialize an array of struct i2c_msg to suit the bus + * transactions (reads/writes) you wish to perform. + * - Call i2c_master_xfer() to do the work. + * + * Slave Usage notes: + * - Enable I2C slave by calling i2c_slave_enable(). + * Check flags for usage. Enabling master also enabled slave. + * - initialise the i2c_msg struct and the data buffer + * - initialise the callback functions + * + * I2C slave support added 2012 by Barry Carter. barry.carter@gmail.com, headfuzz.co.uk + */ + +#ifndef _LIBMAPLE_I2C_H_ +#define _LIBMAPLE_I2C_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Series header must provide: + * + * - uint32 _i2c_bus_clk(i2c_dev*): Clock frequency of dev's bus, in + * MHz. (This is for internal use only). + * + * - (optional) _I2C_HAVE_IRQ_FIXUP: Leave undefined, or define to 1. + * This is for internal use only. It's a hack to work around a + * silicon bug related to I2C IRQ pre-emption on some targets. If 1, + * the series header must also declare and implement a routine with + * this signature (it may also be provided as a macro): + * + * void _i2c_irq_priority_fixup(i2c_dev*) + * + * This will be called by i2c_enable_irq() before actually enabling + * I2C interrupts. + * + * - Reg. map base pointers, device pointer declarations. + */ + + /* Roger clark. Replaced with line below #include */ +#include "libmaple/i2c_common_slave.h" +#include "stm32f1/include/series/i2c.h" + +#include +#include +#include +#include + +/** I2C register map type */ +typedef struct i2c_reg_map { + __io uint32 CR1; /**< Control register 1 */ + __io uint32 CR2; /**< Control register 2 */ + __io uint32 OAR1; /**< Own address register 1 */ + __io uint32 OAR2; /**< Own address register 2 */ + __io uint32 DR; /**< Data register */ + __io uint32 SR1; /**< Status register 1 */ + __io uint32 SR2; /**< Status register 2 */ + __io uint32 CCR; /**< Clock control register */ + __io uint32 TRISE; /**< TRISE (rise time) register */ +} i2c_reg_map; + +/** + * @brief I2C message type + */ +typedef struct i2c_msg { + uint16 addr; /**< Address */ + +#define I2C_MSG_READ 0x1 +#define I2C_MSG_10BIT_ADDR 0x2 + /** + * Bitwise OR of: + * - I2C_MSG_READ (write is default) + * - I2C_MSG_10BIT_ADDR (7-bit is default) */ + uint16 flags; + + uint16 length; /**< Message length */ + uint16 xferred; /**< Messages transferred */ + uint8 *data; /**< Data */ +} i2c_msg; + +/* + * Register bit definitions + */ + +/* Control register 1 */ + +#define I2C_CR1_SWRST (1U << 15) // Software reset +#define I2C_CR1_ALERT (1U << 13) // SMBus alert +#define I2C_CR1_PEC (1U << 12) // Packet error checking +#define I2C_CR1_POS (1U << 11) // Acknowledge/PEC position +#define I2C_CR1_ACK (1U << 10) // Acknowledge enable +#define I2C_CR1_STOP (1U << 9) // Stop generation +#define I2C_CR1_START (1U << 8) // Start generation +#define I2C_CR1_NOSTRETCH (1U << 7) // Clock stretching disable +#define I2C_CR1_ENGC (1U << 6) // General call enable +#define I2C_CR1_ENPEC (1U << 5) // PEC enable +#define I2C_CR1_ENARP (1U << 4) // ARP enable +#define I2C_CR1_SMBTYPE (1U << 3) // SMBus type +#define I2C_CR1_SMBTYPE_DEVICE (0U << 3) // SMBus type: device +#define I2C_CR1_SMBTYPE_HOST (1U << 3) // SMBus type: host +#define I2C_CR1_SMBUS (1U << 1) // SMBus mode +#define I2C_CR1_SMBUS_I2C (0U << 1) // SMBus mode: I2C +#define I2C_CR1_SMBUS_SMBUS (1U << 1) // SMBus mode: SMBus +#define I2C_CR1_PE (1U << 0) // Peripheral Enable + +/* Control register 2 */ + +#define I2C_CR2_LAST (1U << 12) // DMA last transfer +#define I2C_CR2_DMAEN (1U << 11) // DMA requests enable +#define I2C_CR2_ITBUFEN (1U << 10) // Buffer interrupt enable +#define I2C_CR2_ITEVTEN (1U << 9) // Event interupt enable +#define I2C_CR2_ITERREN (1U << 8) // Error interupt enable +#define I2C_CR2_FREQ 0x3F // Peripheral input frequency + +/* Own address register 1 */ + +#define I2C_OAR1_ADDMODE (1U << 15) // Addressing mode +#define I2C_OAR1_ADDMODE_7_BIT (0U << 15) // Addressing mode: 7-bit +#define I2C_OAR1_ADDMODE_10_BIT (1U << 15) // Addressing mode: 10-bit +#define I2C_OAR1_ADD 0x3FF // Interface address + +/* Own address register 2 */ + +#define I2C_OAR2_ADD2 0xFE // Interface address +#define I2C_OAR2_ENDUAL 1U // Dual addressing mode enable + +/* Status register 1 */ + +#define I2C_SR1_SMBALERT (1U << 15) // SMBus alert +#define I2C_SR1_TIMEOUT (1U << 14) // Timeout or Tlow error +#define I2C_SR1_PECERR (1U << 12) // PEC Error in reception +#define I2C_SR1_OVR (1U << 11) // Overrun/underrun +#define I2C_SR1_AF (1U << 10) // Acknowledge failure +#define I2C_SR1_ARLO (1U << 9) // Arbitration lost +#define I2C_SR1_BERR (1U << 8) // Bus error +#define I2C_SR1_TXE (1U << 7) // Data register empty +#define I2C_SR1_RXNE (1U << 6) // Data register not empty +#define I2C_SR1_STOPF (1U << 4) // Stop detection +#define I2C_SR1_ADD10 (1U << 3) // 10-bit header sent +#define I2C_SR1_BTF (1U << 2) // Byte transfer finished +#define I2C_SR1_ADDR (1U << 1) // Address sent/matched +#define I2C_SR1_SB (1U << 0) // Start bit + +/* Status register 2 */ + +#define I2C_SR2_PEC 0xFF00 // Packet error checking register +#define I2C_SR2_DUALF (1U << 7) // Dual flag +#define I2C_SR2_SMBHOST (1U << 6) // SMBus host header +#define I2C_SR2_SMBDEFAULT (1U << 5) // SMBus device default address +#define I2C_SR2_GENCALL (1U << 4) // General call address +#define I2C_SR2_TRA (1U << 2) // Transmitter/receiver +#define I2C_SR2_BUSY (1U << 1) // Bus busy +#define I2C_SR2_MSL (1U << 0) // Master/slave + +/* Clock control register */ + +#define I2C_CCR_FS (1U << 15) // Fast mode selection +#define I2C_CCR_DUTY (1U << 14) // Fast mode duty cycle +#define I2C_CCR_DUTY_2_1 (0U << 14) // Fast mode duty: 2/1 +#define I2C_CCR_DUTY_16_9 (1U << 14) // Fast mode duty: 16/9 +#define I2C_CCR_CCR 0xFFF // Clock control bits + +/* + * Convenience routines + */ + +/* Main I2C API */ + +/* I2C enable options */ +#define I2C_FAST_MODE 0x1 // 400 khz +#define I2C_DUTY_16_9 0x2 // 16/9 duty ratio +/* Flag 0x4 is reserved; DO NOT USE. */ +#define I2C_BUS_RESET 0x8 // Perform a bus reset +#define I2C_SLAVE_USE_RX_BUFFER 0x10 // Use a buffered message when doing a slave recv +#define I2C_SLAVE_USE_TX_BUFFER 0x20 // Use a buffered message when doing a slave transmit +#define I2C_SLAVE_DUAL_ADDRESS 0x40 // Enable the dual slave address scheme +#define I2C_SLAVE_GENERAL_CALL 0x80 // Enable the general call on address 0x00 +void i2c_master_enable(i2c_dev *dev, uint32 flags); +void i2c_slave_enable(i2c_dev *dev, uint32 flags); + +#define I2C_ERROR_PROTOCOL (-1) +#define I2C_ERROR_TIMEOUT (-2) +int32 i2c_master_xfer(i2c_dev *dev, i2c_msg *msgs, uint16 num, uint32 timeout); + +void i2c_bus_reset(const i2c_dev *dev); + +/** + * @brief Disable an I2C device + * + * This function disables the corresponding peripheral and marks dev's + * state as I2C_STATE_DISABLED. + * + * @param dev Device to disable. + */ +static inline void i2c_disable(i2c_dev *dev) { + dev->regs->CR1 &= ~I2C_CR1_PE; + dev->state = I2C_STATE_DISABLED; +} + +/* Start/stop conditions */ + +/** + * @brief Generate a start condition on the bus. + * @param dev I2C device + */ +static inline void i2c_start_condition(i2c_dev *dev) { + uint32 cr1; + while ((cr1 = dev->regs->CR1) & (I2C_CR1_START | + I2C_CR1_STOP | + I2C_CR1_PEC)) { + ; + } + dev->regs->CR1 |= I2C_CR1_START; +} + +/** + * @brief Generate a stop condition on the bus + * @param dev I2C device + */ +static inline void i2c_stop_condition(i2c_dev *dev) { + uint32 cr1; + while ((cr1 = dev->regs->CR1) & (I2C_CR1_START | + I2C_CR1_STOP | + I2C_CR1_PEC)) { + ; + } + dev->regs->CR1 |= I2C_CR1_STOP; + while ((cr1 = dev->regs->CR1) & (I2C_CR1_START | + I2C_CR1_STOP | + I2C_CR1_PEC)) { + ; + } + +} + +/* IRQ enable/disable */ + +#ifndef _I2C_HAVE_IRQ_FIXUP +/* The series header provides this if _I2C_HAVE_IRQ_FIXUP is defined, + * but we need it either way. */ +#define _i2c_irq_priority_fixup(dev) ((void)0) +#endif + +#define I2C_IRQ_ERROR I2C_CR2_ITERREN +#define I2C_IRQ_EVENT I2C_CR2_ITEVTEN +#define I2C_IRQ_BUFFER I2C_CR2_ITBUFEN +/** + * @brief Enable one or more I2C interrupts + * @param dev I2C device + * @param irqs Bitwise or of: + * I2C_IRQ_ERROR (error interrupt), + * I2C_IRQ_EVENT (event interrupt), and + * I2C_IRQ_BUFFER (buffer interrupt). + */ +static inline void i2c_enable_irq(i2c_dev *dev, uint32 irqs) { + _i2c_irq_priority_fixup(dev); + dev->regs->CR2 |= irqs; +} + +/** + * @brief Disable one or more I2C interrupts + * @param dev I2C device + * @param irqs Bitwise or of: + * I2C_IRQ_ERROR (error interrupt), + * I2C_IRQ_EVENT (event interrupt), and + * I2C_IRQ_BUFFER (buffer interrupt). + */ +static inline void i2c_disable_irq(i2c_dev *dev, uint32 irqs) { + dev->regs->CR2 &= ~irqs; +} + +/* ACK/NACK */ + +/** + * @brief Enable I2C acknowledgment + * @param dev I2C device + */ +static inline void i2c_enable_ack(i2c_dev *dev) { + dev->regs->CR1 |= I2C_CR1_ACK; +} + +/** + * @brief Disable I2C acknowledgment + * @param dev I2C device + */ +static inline void i2c_disable_ack(i2c_dev *dev) { + dev->regs->CR1 &= ~I2C_CR1_ACK; +} + +/* GPIO control */ + +/** + * @brief Configure device GPIOs. + * + * Configure GPIO bits dev->sda_pin and dev->scl_pin on GPIO device + * dev->gpio_port for use with I2C device dev. + * + * @param dev I2C Device + * @see i2c_release_gpios() + */ +extern void i2c_config_gpios(const i2c_dev *dev); + +/** + * @brief Release GPIOs controlling an I2C bus + * + * Releases the I2C bus controlled by dev as master, and disconnects + * GPIO bits dev->sda_pin and dev->scl_pin on GPIO device + * dev->gpio_port from I2C device dev. + * + * @param dev I2C device + * @see i2c_config_gpios() + */ +extern void i2c_master_release_bus(const i2c_dev *dev); + +/* Miscellaneous low-level routines */ + +void i2c_init(i2c_dev *dev); + +/** + * @brief Turn on an I2C peripheral + * @param dev Device to enable + */ +static inline void i2c_peripheral_enable(i2c_dev *dev) { + dev->regs->CR1 |= I2C_CR1_PE; +} + +/** + * @brief Turn off an I2C peripheral + * @param dev Device to turn off + */ +static inline void i2c_peripheral_disable(i2c_dev *dev) { + dev->regs->CR1 &= ~I2C_CR1_PE; +} + +/** + * @brief Fill transmit register + * @param dev I2C device + * @param byte Byte to write + */ +static inline void i2c_write(i2c_dev *dev, uint8 byte) { + dev->regs->DR = byte; +} + +/** + * @brief Set input clock frequency, in MHz + * @param dev I2C device + * @param freq Frequency, in MHz. This must be at least 2, and at most + * the APB frequency of dev's bus. (For example, if + * rcc_dev_clk(dev) == RCC_APB1, freq must be at most + * PCLK1, in MHz). There is an additional limit of 46 MHz. + */ +static inline void i2c_set_input_clk(i2c_dev *dev, uint32 freq) { +#define I2C_MAX_FREQ_MHZ 46 + ASSERT(2 <= freq && freq <= _i2c_bus_clk(dev) && freq <= I2C_MAX_FREQ_MHZ); + uint32 cr2 = dev->regs->CR2; + cr2 &= ~I2C_CR2_FREQ; + cr2 |= freq; + dev->regs->CR2 = freq; +#undef I2C_MAX_FREQ_MHZ +} + +/** + * @brief Set I2C clock control register. + * + * See the chip reference manual for the details. + * + * @param dev I2C device + * @param val Value to use for clock control register (in + * Fast/Standard mode) + */ +static inline void i2c_set_clk_control(i2c_dev *dev, uint32 val) { + uint32 ccr = dev->regs->CCR; + ccr &= ~I2C_CCR_CCR; + ccr |= val; + dev->regs->CCR = ccr; +} + +/** + * @brief Set SCL rise time + * @param dev I2C device + * @param trise Maximum rise time in fast/standard mode (see chip + * reference manual for the relevant formulas). + */ +static inline void i2c_set_trise(i2c_dev *dev, uint32 trise) { + dev->regs->TRISE = trise; +} + +/* + * Slave support + */ + +/** + * @brief Enable Dual addressing mode to allow peripheral to have 2 addresses + * @param dev I2C device + */ +static inline void i2c_slave_dual_address_enable(i2c_dev *dev) { + dev->regs->OAR2 |= I2C_OAR2_ENDUAL; +} + +/** + * @brief Enable General Call to allow the unit to respond on addr 0x00 + * @param dev I2C device + */ +static inline void i2c_slave_general_call_enable(i2c_dev *dev) { + dev->regs->CR1 |= I2C_CR1_ENGC; +} + +/* callback functions */ +/* Callback handler for data received over the bus */ +void i2c_slave_attach_recv_handler(i2c_dev *dev, i2c_msg *msg, i2c_slave_recv_callback_func func); + +/* Callback handler for data being requested over the bus + * The callback function must call i2c_write to get the data over the bus + */ +void i2c_slave_attach_transmit_handler(i2c_dev *dev, i2c_msg *msg, i2c_slave_transmit_callback_func func); + +/** + * @brief Set the primary I2c slave address + * @param dev I2C device + * @param address the 8 or 10 bit i2c address + */ +static inline void i2c_slave_set_own_address(i2c_dev *dev, uint16 address) { + dev->regs->OAR1 = address <<1; +} + +/** + * @brief Set the secondary I2c slave address + * @param dev I2C device + * @param address the 8 or 10 bit i2c address + */ +static inline void i2c_slave_set_own_address2(i2c_dev *dev, uint16 address) { +dev->regs->OAR2 = (address <<1 ) | I2C_OAR2_ENDUAL; +} + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h.gch b/STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..5a6345078e7abad4b9211a296cfa52568e2ed238 GIT binary patch literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx literal 0 HcmV?d00001 diff --git a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp new file mode 100644 index 000000000..a30921179 --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.cpp @@ -0,0 +1,145 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file WireBase.cpp + * @author Trystan Jones + * @brief Wire library, following the majority of the interface from Arduino. + * Provides a 'standard' interface to I2C (two-wire) communication for + * derived classes. + */ + +/* + * Library created by crenn to allow a system which would provide users the + * 'standardised' Arduino method for interfacing with I2C devices regardless of + * whether it is I2C hardware or emulating software. + */ + +#include "WireBase_slave.h" +#include "wirish.h" + +void WireBase::begin(uint8 self_addr) { + tx_buf_idx = 0; + tx_buf_overflow = false; + rx_buf_idx = 0; + rx_buf_len = 0; +} + +void WireBase::beginTransmission(uint8 slave_address) { + itc_msg.addr = slave_address; + itc_msg.data = &tx_buf[tx_buf_idx]; + itc_msg.length = 0; + itc_msg.flags = 0; +} + +void WireBase::beginTransmission(int slave_address) { + beginTransmission((uint8)slave_address); +} + +uint8 WireBase::endTransmission(bool stop) { + uint8 retVal; + if (tx_buf_overflow) { + return EDATA; + } + retVal = process(stop);// Changed so that the return value from process is returned by this function see also the return line below + tx_buf_idx = 0; + tx_buf_overflow = false; + return retVal;//SUCCESS; +} + +uint8 WireBase::endTransmission(){ + endTransmission(true); +} + +//TODO: Add the ability to queue messages (adding a boolean to end of function +// call, allows for the Arduino style to stay while also giving the flexibility +// to bulk send +uint8 WireBase::requestFrom(uint8 address, int num_bytes) { + if (num_bytes > BUFFER_LENGTH) { + num_bytes = BUFFER_LENGTH; + } + itc_msg.addr = address; + itc_msg.flags = I2C_MSG_READ; + itc_msg.length = num_bytes; + itc_msg.data = &rx_buf[rx_buf_idx]; + process(); + rx_buf_len += itc_msg.xferred; + itc_msg.flags = 0; + return rx_buf_len; +} + +uint8 WireBase::requestFrom(int address, int numBytes) { + return WireBase::requestFrom((uint8)address, numBytes); +} + +void WireBase::write(uint8 value) { + if (tx_buf_idx == BUFFER_LENGTH) { + tx_buf_overflow = true; + return; + } + tx_buf[tx_buf_idx++] = value; + itc_msg.length++; +} + +void WireBase::write(uint8* buf, int len) { + for (uint8 i = 0; i < len; i++) { + write(buf[i]); + } +} + +void WireBase::write(int value) { + write((uint8)value); +} + +void WireBase::write(int* buf, int len) { + write((uint8*)buf, (uint8)len); +} + +void WireBase::write(char* buf) { + uint8 *ptr = (uint8*)buf; + while (*ptr) { + write(*ptr); + ptr++; + } +} + +uint8 WireBase::available() { + return rx_buf_len - rx_buf_idx; +} + +uint8 WireBase::read() { + if (rx_buf_idx == rx_buf_len) { + rx_buf_idx = 0; + rx_buf_len = 0; + return 0; + } else if (rx_buf_idx == (rx_buf_len-1)) { + uint8 temp = rx_buf[rx_buf_idx]; + rx_buf_idx = 0; + rx_buf_len = 0; + return temp; + } + return rx_buf[rx_buf_idx++]; +} diff --git a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h new file mode 100644 index 000000000..31f3f8cee --- /dev/null +++ b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h @@ -0,0 +1,145 @@ +/****************************************************************************** + * The MIT License + * + * Copyright (c) 2010 LeafLabs LLC. + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, copy, + * modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + *****************************************************************************/ + +/** + * @file WireBase.h + * @author Trystan Jones + * @brief Wire library, following the majority of the interface from Arduino. + * Provides a 'standard' interface to I2C (two-wire) communication for + * derived classes. + */ + +/* + * Library created by crenn to allow a system which would provide users the + * 'standardised' Arduino method for interfacing with I2C devices regardless of + * whether it is I2C hardware or emulating software. + */ + +#ifndef _WIREBASE_H_ +#define _WIREBASE_H_ + +#include "wirish.h" +#include + +#define BUFFER_LENGTH 32 + +/* return codes from endTransmission() */ +#define SUCCESS 0 /* transmission was successful */ +#define EDATA 1 /* too much data */ +#define ENACKADDR 2 /* received nack on transmit of address */ +#define ENACKTRNS 3 /* received nack on transmit of data */ +#define EOTHER 4 /* other error */ + +class WireBase { // Abstraction is awesome! +protected: + i2c_msg itc_msg; + uint8 rx_buf[BUFFER_LENGTH]; /* receive buffer */ + uint8 rx_buf_idx; /* first unread idx in rx_buf */ + uint8 rx_buf_len; /* number of bytes read */ + + uint8 tx_buf[BUFFER_LENGTH]; /* transmit buffer */ + uint8 tx_buf_idx; // next idx available in tx_buf, -1 overflow + boolean tx_buf_overflow; + + // Force derived classes to define process function + virtual uint8 process(uint8) = 0; + virtual uint8 process() = 0; +public: + WireBase() {} + ~WireBase() {} + + /* + * Initialises the class interface + */ + // Allow derived classes to overwrite begin function + virtual void begin(uint8 = 0x00); + + /* + * Sets up the transmission message to be processed + */ + void beginTransmission(uint8); + + /* + * Allow only 8 bit addresses to be used + */ + void beginTransmission(int); + + /* + * Call the process function to process the message if the TX + * buffer has not overflowed. + */ + uint8 endTransmission(bool); + uint8 endTransmission(void); + + /* + * Request bytes from a slave device and process the request, + * storing into the receiving buffer. + */ + uint8 requestFrom(uint8, int); + + /* + * Allow only 8 bit addresses to be used when requesting bytes + */ + uint8 requestFrom(int, int); + + /* + * Stack up bytes to be sent when transmitting + */ + void write(uint8); + + /* + * Stack up bytes from the array to be sent when transmitting + */ + void write(uint8*, int); + + /* + * Ensure that a sending data will only be 8-bit bytes + */ + void write(int); + + /* + * Ensure that an array sending data will only be 8-bit bytes + */ + void write(int*, int); + + /* + * Stack up bytes from a string to be sent when transmitting + */ + void write(char*); + + /* + * Return the amount of bytes that is currently in the receiving buffer + */ + uint8 available(); + + /* + * Return the value of byte in the receiving buffer that is currently being + * pointed to + */ + uint8 read(); +}; + +#endif // _WIREBASE_H_ diff --git a/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h.gch b/STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..5a6345078e7abad4b9211a296cfa52568e2ed238 GIT binary patch literal 9475 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 Y;dI<1)bAmJrq!61Ti)JEJwtc@2OMIdI{*Lx literal 0 HcmV?d00001 From 4157ef37a1ebbb8dd24560158074974663d3b189 Mon Sep 17 00:00:00 2001 From: lacklustrlabs Date: Thu, 14 Dec 2017 16:41:43 +0100 Subject: [PATCH 024/373] Removed some accidental adds --- STM32F1/libraries/Wire/Wire_slave.h | 2 +- STM32F1/libraries/WireSlave/src/Wire.h | 2 +- STM32F1/libraries/WireSlave/src/Wire.h.gch | Bin 1819056 -> 0 bytes .../libraries/WireSlave/src/Wire_slave.h.gch | Bin 9475 -> 0 bytes .../libraries/WireSlave/src/i2c_slave.h.gch | Bin 9475 -> 0 bytes .../WireSlave/src/libmaple/i2c_slave.h.gch | Bin 9475 -> 0 bytes .../src/utility/WireBase_slave.h.gch | Bin 9475 -> 0 bytes 7 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 STM32F1/libraries/WireSlave/src/Wire.h.gch delete mode 100644 STM32F1/libraries/WireSlave/src/Wire_slave.h.gch delete mode 100644 STM32F1/libraries/WireSlave/src/i2c_slave.h.gch delete mode 100644 STM32F1/libraries/WireSlave/src/libmaple/i2c_slave.h.gch delete mode 100644 STM32F1/libraries/WireSlave/src/utility/WireBase_slave.h.gch diff --git a/STM32F1/libraries/Wire/Wire_slave.h b/STM32F1/libraries/Wire/Wire_slave.h index 21b4102bd..ede963b37 100644 --- a/STM32F1/libraries/Wire/Wire_slave.h +++ b/STM32F1/libraries/Wire/Wire_slave.h @@ -1 +1 @@ -#error "Something is trying to include Wire.h when Wire_Slave.h is already included, they are mutually exclusive" +#error "Something is trying to include Wire_slave.h when Wire.h is already included, they are mutually exclusive" diff --git a/STM32F1/libraries/WireSlave/src/Wire.h b/STM32F1/libraries/WireSlave/src/Wire.h index ede963b37..2d3ce7049 100644 --- a/STM32F1/libraries/WireSlave/src/Wire.h +++ b/STM32F1/libraries/WireSlave/src/Wire.h @@ -1 +1 @@ -#error "Something is trying to include Wire_slave.h when Wire.h is already included, they are mutually exclusive" +#error "Something is trying to include Wire.h when Wire_slave.h is already included, they are mutually exclusive" diff --git a/STM32F1/libraries/WireSlave/src/Wire.h.gch b/STM32F1/libraries/WireSlave/src/Wire.h.gch deleted file mode 100644 index b29a5ea9fd8851ea75533c42ff77077972caf5ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1819056 zcmeEv37jKUwSEB67DWSYEiNxEXphL4UMGWqJKZ(&?hpJ(EV% zxS$cYX48n`Yh^JgXk5@1QRDV(*B2Kw;?~My0O9p}Jblsk)c-m6yOpX_Rhhx%sefPf z@7MY2JLfLvp1Swey|->vO&Q~<6T;nnuY3B1$A)kD^&9Sb&nIp@=ih#}FK}2u{Vjgx z+3M&p%>z(4D8kx*4-4cY11ApjX_*yXCwv4HtyEp~u)|rT;vHrhgUn$MBDkX2#p<|~ z!(k7#>ud(u#pdy0fvIFRIh!7rS(7?Q|Bs^oczoBck@&9NJ9lh9JsuDBK7nM9R`M;U z4ad*iwmm)+8zDv4iQVCz?scr@sPXu?VZ=x0=4R7l^K;2us3#nbgf~8kRF75aJ=?bL zjt>uQ+O@lTAb#ei7$p(TPtxD9trRxx-f`x(&GAi}U$kf2&Y@7xvq|#^6?yCMZk2UB z)V;oYLx11KzTW<9PjVn7~j0(%#q=t zSg7aeq;i@PiSIsVWQa_e&*suo+2llMJT*GYiLh1Vif!i(?bsUMI=o}k?ns!zbq{b7 zM=2#0h|96LYkXa3JoJobgoZiN(Mrdqjo6CWNzz9u&Drb+d->T1dyXUBW0aoVn424& zOOMA#bGhW~9DA~_JN#tQatY({9Xq!S?Tim^+r4{uC_c1(%eGD1*|MJAzNe8Mxv=4` zTsSBG+cV7Oz|gZdM>p+kh1`GulTRf5F)FhyLz@Ts;zJ|5whix4*$kc7-M?kaGfBw~ zjmO#7(M@L!#dn>veY5iRrkz9aP20D`cb&ayB;FnBe$Zii{)n)Bq3#WoKTZ?Z%q>IP zckDb<*OG~u`LRs0t8e|rzVJZ*Kwp2Pue+yjpuexLdjnUNp1$FA58A9qsQW3D6<1{x zSJzYJx#1m~Ul`xIbBL-dw-PwjR{ughT$^xexfTzdwTW8M(C+AtE!+b5tfJ2Hc^^w> zM`st}ne<$8b~M9nsJl0;&gwsTW!~EprzT|?z=8P8qAl(polTEUP&JxMP8*p~-6l7L z`?@Fy3{q`!D>X?v#m*|JYXVgkt_+r+xd-SDw>p8|@CMZfAV4cYd)?<|48NpCbMbU` zJTpI$?4llKT__&6iQ;i3WOvx>9vg-(r#I5i>2%P4JgyoT+TJ=6I9v8XOT?wu?IgO> zYK>g`pVLwetNu=PRMhE2Hg4$c?%UYk+rOcww|m1tf4C=kLf^*T9@Um??o?fzz4)GW z=d>L=hV7@0+Y-7_b|Dv8cTAa??3C3zrL%Jnr;rb$|2S2X?0i1d&1byjFRBuvtqyG2 z%I@MzL_9v9O;dR8YS7VhRusW`=J#-= zjcNr|=RKS-#Hw|iwrw|wBUZn-%hBC%xkX2$(&;)e9=CT)Cx*J$v5UFv>de#GwRO88 z5yeb`No5mS=)1pzUJW8|hic&cXFeby(Z@`r6&kH4e$C{=w>L*LQF132*F) zZ0x6NT%^0FKTLng6E|$NoXqFv?4eCBL{3*KbsRLmR2`SQiReSIi3qUkTA3xpJ`?Ht*o#N!JZ7sHz00;>vC2 z^_ik@T|@r?&8{8P!wmEdP%P>J`@{Xi>>ti59_KnsrweDFBf)i4fNf_|{oJCQ+M}u` ziZ+#fes>_IO+7+h(%+T)m zc3hY(ADzB^&t@{CpIZou!zXa(?%mr$-B!Ck^Gwyk*jCuX^@3B?mpCd1cge_7k5H78 zx9r$+8Vw0ZKfpGj2A{U=^wWoS?T&96-gf$SZpBJ(bqf0;EZ~bFcT~7^Oe8bODH?)g zr{d!?+1%Xh{P^6=tQyk|g!{r2&Z@?6p}ydDucyJ-z{cM0-oD5H^^^S@!jbO&zbse%DM0IbOcQ`U ztL;(~?Cy!k%TI6b7S(o<;jUdne6`sf<+54@(j9h`s_xDqHhU=4-P;}B(DMv375R?r z-nnJl)~&5em06h9Nw-?h==8(@4Gyi7srr=dJL0>eJBK!H*~NLY(Kwm5yv=FHK!1Pl zfM~Paef2+!;-K=Vwx)jU-G^xk0s&8cP< z2@i1IFpWE(O{Z;(pEa~|*R~zoL*3!Z9^0^g%h{WDZtaP0 z-nuQmY1f&dZp(8tQI7MeU{9k0uvwYW>9L7XWz5F#1|Diybyg2W9nHnj->CYk`~VCpX167Jf9vXCUZYOiwk5um<|><1S8Qdd8xZ$Oln|4{f8N1zz=sgSOT7c6=jc42T z;ceU1rNwGkWUpg7)3dRau2~p0el~{`7+84z4pC|Qwy1W4&RbQ#P1J|#OL`yMj3%M$ zD|zYZ{p=cUUyp~{%-p$SK^(SOT{6gU zdmCsiPEh^hu8XS-txfRY(;P+VRSvE=YX($2Awe#&AP-44R2*fvp>*P za#<~3*zL0#5!dIPo3^MKL=X4WI2)=0=~Xe|CCZU&6B>gWkk}@6>%)=09$J3e(9;*8 z*+E}lZ(q1Od1Cj*VeY@tO4umw53GsOo?)H`K7{_`@qKz#!|Whi1va}7^Aa1P;I7FP zCTF7RbH*r=+1u)Cwz}xCA22UeMM0bHj#vX>TrAkF+#YZhqdtVZx@*sAyt2c~CaPx) zujhGCSdUn^!r`Q~S`WoB3t_JTe7t9v7bBb%^dQa6>fFsixaizDC2Ne%xwe)@dLtoH z>N4{b$h66HtZAD%W$>ID?ee-E4Uu+iALemycnhV12Cuu+HvUjf@&0LDORRHbmc~B9 zmID*Bf3z(|g=vuK(OWqNxc2IQJQdMB_&4r1=6h6x+Rh)0s4YxK34U_CC^m?SFv2pvl z#eEd2yXs#@vs20V*k~>}5ucoycRCSS_rYm(Oo|_)cWVnmqv%_^j zEXV3$d22bA-HT$G?rojl4cwqm)wBcc*B3goR#oI)TtUX!O~iQPN* z@G5kun_DKX72F-5Pgc_d2)Q;ms{v~;xKOK)d@{I;Y*j{gBjE-DH*h9a9jCdXb4)@@ z71o%fueV3dhj9VqA*`)Z_4mpJi*zqSA=s0)k%E2b);-W0>0W1@H#I*t&zsfkl^ymzhRbPBveh|pg0{X(+s4gAJCqw2 z9IE>Q+f|X*9j$WdF&54GH^pe7A>2zbQCIkUTjL$uY>&n|v;?)0W_`5CMDyWDKMi{Z zhS%|u_>uG<=V_UJ5X@eV=s^%$=IGU}VH=$rtIN=(GRHa8TXUPTnzN&x+fN&xTohj| z_l<1Yy_uFa&Y~4$x|+NDTH9#F)s{s+&rQeK9L=6&m`7;V$;9=-98Ov{Hm%W&Iy25C zHmlQBmScj^n)q3*h))jnskQ~z?hV}e!#ye*PpGM6R5h&$^VZm|oh)G=pu;%roZUl* znjTr}MCuAQpPfrjC*z~Dv!e?+nkz&$bocOSvu1sit!>CFFMzZhLbsrtH^kProTvIh z`;Elz^)#^V*%;{?p#G>Y(oNklEy>gRdH+@}F)oCvhFPb^V~AwcGS~eaYZk$y9xI@| zN^uuub=1hImn`dv&`sX~YLERrkx2hWx<^1ut&y#Krf@FUWoiXCnK#tso^JnHCq%8s z(Fx&-)9S%33#dVGJ;r5SH;C2}bA;;>`UlP=nIBIYb7@*E*7G-Ug=LE!S6GgY3QIMK zdkzkR(GN{F`(1s+W*TPf;ej3J31d|yrLJxV*Q!2wx#iU0Cu?oiY%F`!h+Ai_7c{M5 zJ1tmK4z~VF+*s~iPdAfkhT7lT9f|bxZJ^Gmr@xo)r}THLp;2q*O@jthLz};O#x8nm zb6wNn99QXg4ZSG7dDrexKlcdmx;dz@N43|PFok3%$GNFecXg;~15Fat70lMm%@fla zH}&>$Yqa@>FElOJb@5%LZgrOn?Sd~(=5nvqx9FN=t)kL$92W}%I<8FfwC#ZgL6d3P zkYT?W&dZ%8$|RBKd5^*g?6$DW;=sn)w{1g%!{YI&&7r7_pgd#}EnvZTM~ z%uR=8lT*g%>~!FylL9BFv$W=%o(Rntw9A0*>zo?c9N2uq2>~@Kq8%LD>28tk-f5o` z-BJylPJ3u*Z_ms$?IuWOCj_UxDzkHtj8U&l_ag*}kB`!-b_O!{G3`sBP9tv2P-mmV z@HlRKG-G8nZc4JF)bqFUmtvb4Erm^%nVF$+^#Y|pMc{jP$V`Zx!CN`0P{c%8TEgti zfzh-*y{Y;11XWx|E?Vl$WM+1P7XByN+2&NYi|(DL8T$}<&+3b+!(ubGscx4y$$7U@ zo7h_GjBFyULjd>%9GF(|AQP9d(dAok0$kOnV#5RN9)Y0)}D$E;g!fiY%o<`(c0(f&dV%rtF4*>Tf)@w(Yk@z2bnBx zZ~N#CqzX><(rDwoRIt#Y$tB0t&`ycB3sFGbay>Nw>V~u z1zT=5p*yTiLLK{5Qg>`Pj!%rvjiMA#k)O)176Y|FJYgTFk%yC4$usYTG2Q; zeKtuBY}r6gb(&?0gjtr*ZdOZbH>)MIo7EE9%o@)mN9nYgwv5v$ADyL9L!O3KwD{Rx zW4Fv1i|!2{B%;kuS45k+E}h+KhnaDzxMmUDrkfJG$(GD!YD;J{u_d#a){@ywYRPP- z&>n@+bS_CMn(SE?s*@e3+UOy&+t>;x{Ao#TR$4-vnU>IIrxsF|((+hKdu{I?(8A8ogw6}#4ZDr)MbH^x=i3+&#W*=b7t0^J zonB^U)K&wT*$n}=*`Nfr>=n1=thg;x#ceH7)dF>*E&p3Gd)9WT%>bL&W`<2_GsY&h znM7W37+^~5*;_JO<}INu>z2%xaZ6^)mT%b8>~NAdOIc;l(LB~k?Pe&wsQi%F41mCv zI|TNuITL%=%+=E2gO*6-ZibTP_>Di z>p50ny9Q%&ht6E%@fMr27l&4_`*=#l3Xn5|x$?s^hIYEvs?b3LcoxR7QshX$K0(Cl z#=!!3W?(K7IgK~vZT!_z>p7oSzV=mugXr6vWzLkvs)bid&VYwb@=&&!DT;NBgJo?l z7pUp(g9&(O8!1FTvB7Jfv-Afc8lo%9cagzPt2E_uz0T2MWgwj9gD0e&aqvJWXWKC5lAAMtDOU?!4omI2 zHodgN81}V8Z&hm*(Oa$86J1JLS@e)u zYm9A`ZH(9Jjvmpl0_jw!wMa|IJLGK!=~c$oIE(^%j#~9FO{#6 z16gZy>#4TJxkBwR;uU(&v9AolU7H-)3cY(gEY%((<5mEg5YQvk*@^Lt{Vec20pfX2 zab_a#DWA4iE_y6Zr!uQ1Tjto>lIP|;lA-&I{A>YrT?cqA*;W-)a;AFTpgXZr&8wKy zJ&dP#QfuWlY0v|6bCYb1kWVM4$7wR-A)cPu&(Aoxf*WnZ^9gVUZ*+fLC=KIfTh zZqCShSwl|;j*q&nVX;S9Nt|sH+%xt4?R>evjrIH6mUn;7J4#aBW@w$h(J^|4$adOB z$JDG<*Wc0c@i^THpGfXctA!2oq>qlz$Y3)$zK>v6^ZLKwt^oEH!3hdZcM+(P%uZ4* zwI?*Ocb*m)r~*$LGql;$UJ*y9rsz%x-Q(e>`Ds@GJts=5zq84lu$1q4(4B3%_clW} zUn~omkGcf$1L?UGZj{({hLKrta=J}2C32!`nmr6r;Q`{pMa*3Rgi9!donME^=alNSOrA0K!(%OIumsOu^2_#-|ONGsgJlpPlp4fm#GMYm8b! z=(U@zB((LzI%i|_5Fy`&GUJTPy35pF3g&j3s3Q}VSaBJF0@%x~LWqJx;!0Ht993~OWPvk5$bJ|`E<|5Stqq8(&nzWBNCzLG5d*d_n({`sMQ`jw~-pXLF0i>9u+bd$8 zMl!W=)hVPo;{2>5Rmjv{DSFuhZ3eOxfyUmF*@w%d9CxbiM@49QqSS7_yuwr9yd!j81{c$XNty`D;Bpo@ zNl&qg%w{HJ@Ry3BjiOK4uF+XSTSrl&G znDY!sivu(*c1`{Den7L05fy!c;-csrK$LxUW{kQ??nYJe_5$YUZnB7cfbJ5DN~i>0 z_D+pXi`t-g++LrQ#GX0??l5+1RhWznwSFvMP=r;?s& zlh`x#oOkFs&(Im~v`Orhb|&d*H;Fw%ds~ueW67L%+H;<1XWKZOnN?iGGM+b#!a+Q#wBMaA*RhnAv~_D&M5nWSptw|P0Tr1lQ9B^ASCOX?Yxs++Ap zZw1axw3B-qlADn7-{TPja`)NVPt~($ z!tD$t7YlW866Bugq`mVsNbVUv*CyXwn{-I-z7XuE=F;PFfzWdI9wdO~QS`$kxrKgCz0@Ldl z?Kj&HI6uo~_**J~t|6<~kLYxCK+b5>s@KoM!f?Je)=@$fP{do!LK~+vi~f zS8qajlGI(nl-x7Vtj8Edh4#wve7Q)X>Kz64@DmB$C7JiAanmI93h9yNe8!#T%&faq zBy*)`jE?WiZC#4fn!xi z+ezJov)XWAud~QPA~~QQ`kS{Q4A7#1y<8ociIrQjo_|8DuQR}mBwul z#BFkzn)5V?#BC#Znlv@n&ZMb1Pm@UOmBTbu?E~%{Aoh-s_o&-^k!h2DUOj0iF46`C zpZ6>DkSzOC5QG1oS{eN9iver zM?z0CNbb7MtI+9o!Ow4}abFH7S5K$1+%wm|yadAH--tmj!~si!IPWA0vy9@zBkLrLz@fJoRTWe<Liu?QQ&{2Q z5|*|x#cLQusk9jeDUD|aZH7S3r`F91%S( z(WatpikWt{lcIg3cD7TKY9HxfwrASeP71FS=}BBy_fIm9ptPIXJ(nS&dm=<@!PE8| zh-y$fJ298@7TUJ~ASgYVoSe*zPSMRo_uVIcZrRkjXP2`xnUt&ZBB8r)nVp&S3OVZ$ z(z#^@R*H6Hgh@}&oa%6se z2T3#HohEN{iSPGVx#tX_Y-0_S5pUP0y|(*lDQ*VqXJ2xFRohN?_j$kya8Bi8lO-u^@91g#{u8 z&9-T?mHnccoscX3Vp|IB1#(`PNg|y_0_mo#*vm&r2n({4Vvxy|20IyPLt#8eA9{+< zjnZdNg^3g(z%KBl-QS;rk3E?u9nVC&5jyk{|8Bu z^k9>?$eXexe{#+41IMP`G;=x;Vz;#tI%@(4bkqeUlC^%f9;6cn81q@Ny)&Jo7yF4P z3w;I3T<+|}!VyM7&T*QNt*4g zF69A_0_ELSxI}xyw#@d5CnNTT?Pp|fw>_ZP6}wk#iQQ|jBYVYZ-Yd>=M)sH)N9V4% zy^<(_-6Xo#Dz*+PE@E&15yN>opgmrWJ))3^NNNk8t@Ifs5L@~n5_x-U4n!z-+H!kf z#_1TBXWXuF`v&E(TkTO+kHTggoqI+JM9Gvylp^Eo-zgUN_>O2S67j^tI&@JLyTKI~ zDR2Ns{BHY1l4FPm!IZ!eqsQ)(nJKYR^Y)jd%Vk{7r;n6pnr$|6ITJ6IJlJH|znX$d}Jcb&M+T1@wPZA{O)EjWk zMRt1SX`Ek2LE}IAA_u?L*ScLHbn1a|aw<@6;4yAL2~6WCrk+C8hF z9?%nABt0lLN-uyGWBr!Q?vj?!?g$c|KX0%25IEvd5E;qwWSH$42f68*E)#Ng>9}S) zFC)xFPLA1_>l)&^gwRb&&lf?k+_QsKiZ&X0pF~o;qk*2<$k?y5irbx~1ojd@VDH1V z#2riY%PN#Bn&`<9#F3c{K^>FsL);I3QBNi>@(|DiD>S~PlH2O7))36wM=`vDJ1J)B zJZl^i^HnWzT(wN8xN@07arM$d;Von$3Qi*Wia0$}W4{n^TrG9R*J7E5a5ujb#NHxl z*6Mgr7!pSkG9&RQDuowMqB3{H7PQTXAV+fV`pOD#jef_C{gk@;J6<%m2Oug6LtL0g z)lXJ7T6^{y!Q@EpZ51oLHFLb?M{i=`7bV$kQgX+BQF`%?9Np4yiRbdDAhU9$O%hkhNM=vB&G}x)?e`cS=d@T3kWHy$h-`|TgJk*ax8u=o z$CKYo?G>20y#f;#)H!*c!@Ss5U`RwHyr!g&zJ1P1u1-&ZFvGzNU z&s*@Cr|nE=DfJNQqZh61>UhT<-xZ)s8%gbMm~YcRvE19Bw*3=L{^TqMf;iu*uvux7 z#%1$%&mKu4TLuXnje;c3_F%sL%bw|^vt!n;0<(v41u@?WCIY!G5wum=(djRQZ7~+a zs@#HD0a>uG$}NahxdpK*w_xuE7sM52K{Z%?Sn40o(@mfB zem(``3sZ4=#|XUzA{n2get~KoCf{xa-uq^L#+TyK*Nc$IlvB%m+pkRnZk#yRzp za~?9$LnssDY$iXAVjj$y2YDQ*5+v2M+4kueDX?CqPNyfC&GARp_(L@OzJR&O9zLQc zE9S5wq7EZmALTpoR4G*~UW4Z(?BA+ktrS|Bl5TL9Z)O*d>)X})ZdfZsPXL2F3y%;>_*yv|s=2O%`cENJKIixkDR zG%XLOare@pG#0E#^i_H_BHT+~fTB15&(M1^xz__-P_F?{$9nld9pmf4W++wJO@ie( z6^cL1YKqkt=ZVlNJ$-hZTL2bI^_wyELaD{nyR@j^LqNKQnyUE>nloL~(VXc3&6y6+ zoU=6bpm@e4mqQPS;&U^c;~0Gg)82XxqP5ykE0C>kaLH`J)k1={m)A(h3IGDHNo3=!g%A>5eM1(rXT#TN04B26njm6l;`)GbeW>sy9;t6K(pt6PSv zQ>ZMalWH0)gqEQWamzp{Zy6@VErX=k%Mi7gqRx#iEcukj5nf_1LnyeHAtd%Pgv1_( z&`k*sm$1~!6v#bnQ3?-Zl-$D_CHF8#U4tFvr!UiZc!i}NhLG6943c^nK~fJBXlCL* z2Ry&=FhYqvtYEo^87%g&gT)?(V1us186@;FM2S5NVY!DPEcP&j#Vtel?LgGg)Adt5 zPNwXz%Pcdbv}J`5w~P?dmJLEGO>lh0$g;z(a2O+1(juXgW(k$FO{iK1s%q@&oTbz< z%_(o$!d2Ipi&K==8aavCAw|q_ky-5Vy<_(v}fI+A@Lbvdab`w2W|wTUJPU z%M2-Q*&)T2A#}Z_L4TGuy_wCK-mTR3`sJmwEcMp54E9vF?Do{Q%=gr`O2IAC@HJ6~kQOlbOWrahbs?j9HK1#aRIR}t zi_{DR2Wqf4Z=18wEHOEop_}4U=4?Z+-Oxrx9*modG z+8u9a-#n zGX9T9l=?SP`ip+$f5r9y#bWDrA3ZS9idAg%d(?|NKcY1~f z&vcvJq=HEuspv!o)ceQr)^VC6aES=0Y&>D0)~dYDBf7vCrMoXMwxC{6KDI#jl>>Oq z_;^6QUK}qK$E(Eg0&)G?aJ&he0`VD`)R+M>sGTtC)!+QX0r)lFd{2OX$gS#^<;t-D zld6F1TlGF|{IZVSq`{;*i~{-wFTY@0{g7V0TYH@B3-AvKRAo`Wnoul~(Jyaz#vW(> zJ;svrD31)-2^bWi=(d^+&(+ z*)4L!)?w|@_3NbhHQHu$OXP^I753;nXO@sSM;SUR9)D+I7Z1 zv{M2=0TksByn~B>>3D`7pXAj;>Q=_mwD3Wz6qz(NUA3Z!-()_d7ZCI^V+bnxcM|h2XGSZM_@%W+^N>z4o!uFFqega~>LV6b`AAIQnhnqT)ie){jx~C5_#O14~(n1zWOCO6N;=F2mO!)O@n_m zftr8$Zm0TXjk>ovPOT%rKO{jz;a^QC3b9PUdcALJVbnb6;zbbZch?2z39wOGB4OlD zP5>qtbM!-ts4O#Ry`Mh+xe#c*9e5%=O0U$-(MPoc^to((zW7bR0lXd$!3h!v8*Q*B9`&j9R!l_*8hxGKz z0_v*qPF4P80j)#w4~O7)rA}r;Ia<6A@HgM-e;@x$b7l(EjiyN>j;&__y|itjwUY?1 zMRmLkl_@zxZYEN%HO0$J^(#yjkRh{at~L7p(Ij3-3b69QT~hT+`-=4~Qh>=b5c6K) zDf%4DI9F>NAO`o^nvXIv!8CR6IUV@#ui#5pXo zEKmphH~}5tAp$zUqXTq+t@?C;#{}rWG)F%YKoT?bFJO=>`jp|_B0q|6{74PCD3pL#^~OB!qgXD}3@ zj!+R5wug^tQ#b!A!5AOXwr&1Z0(HnoG$6HKl+`g;K6T*1TK8700H!F^iYFyp$beZ? zCX}z*T&IC-(R=Nt=_Wm2)p*+>{ity&kJ@PK3H_&^QXOUjv{{<&QU<2y@%&eIlwbVJ-^E2erAkbU&cCY7txd;)))8r}O~+ZfHJKy9 z0s1$07`Ki%WNSAuAL>2C)*(We`-QVJq5U)TfM0e7wUG|8dU8oe>fQ%E1%&tI(=9tv z&++U>-@OayaX~=r2UdH9g+%WVHf61S!7Twcn{Xd9!=DYGq0)^m1ZHRtiJEtr2O)Ek z))J^e8-{BwnI4BYc<9CFwGs@85k@N@`_xWEl-VRzo#d=R&T!<%(_4}T6wLv9j;&B3i3Sb$V%d*lUmY~tt0!P74~H7&~{`UTGpIu6WXLU@e8bcZKwUE zEfZd9rO>*~Yo4ms{WVi?VJq5&R1JS#F5k3WJx(1Geb$SQkT5H06FPpat>`?b zpnvL~)$b%A!=R4oXm)gpMss@G3&0xr5Z_PFRFayDOgEqDU=Euu_-KZvVF81-64B_L zw_ngtE@j%rhb`my{q?*z+?KT7Db7-w84CrKM!dJ495X==Ei4510An;Y@1afM^yr|P zaPXt%+;5VAo~WhwXu_Su=s^@3Z@C(2Yil^E^ltJ=>oCKIyh|LQG-^lqEIp!0J3l5! z!Sh+OfYkQ+(xCf80Np4*z+VKUD+_N3S63VUp~Td+2A3N3OCmgeMc*p27F%fJ5$(KI zzmtHBhOCLEoQ4M~oL0~k15}9>8_xxDG!0YRDRMM`q{|s8F&M>NbM>pPl{gX?OP?P}78344;+3nVXJD0yHpqw+D+D_$yj;xfq_S4eJ@ByV0RdEqL_>s84UUy!`< zCCQBy$(vu5yzmXl>ov&}-;um=tK>#q^5$)l7k(^xJuof&l{iB3#*va69g;VXlDu%V z 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≠!FX+RNj++pOJ3nHmv#KU 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