diff options
Diffstat (limited to 'platforms/chibios/drivers/serial.c')
| -rw-r--r-- | platforms/chibios/drivers/serial.c | 15 | 
1 files changed, 6 insertions, 9 deletions
| diff --git a/platforms/chibios/drivers/serial.c b/platforms/chibios/drivers/serial.c index 0cff057d1d..3fae5cd3a4 100644 --- a/platforms/chibios/drivers/serial.c +++ b/platforms/chibios/drivers/serial.c @@ -87,10 +87,7 @@ static THD_FUNCTION(Thread1, arg) {      chRegSetThreadName("blinker");      while (true) {          palWaitLineTimeout(SOFT_SERIAL_PIN, TIME_INFINITE); - -        split_shared_memory_lock();          interrupt_handler(NULL); -        split_shared_memory_unlock();      }  } @@ -155,6 +152,7 @@ static void __attribute__((noinline)) serial_write_byte(uint8_t data) {  // interrupt handle to be used by the slave device  void interrupt_handler(void *arg) { +    split_shared_memory_lock_autounlock();      chSysLockFromISR();      sync_send(); @@ -212,6 +210,8 @@ void interrupt_handler(void *arg) {  static inline bool initiate_transaction(uint8_t sstd_index) {      if (sstd_index > NUM_TOTAL_TRANSACTIONS) return false; +    split_shared_memory_lock_autounlock(); +      split_transaction_desc_t *trans = &split_transaction_table[sstd_index];      // TODO: remove extra delay between transactions @@ -233,7 +233,7 @@ static inline bool initiate_transaction(uint8_t sstd_index) {      // check if the slave is present      if (serial_read_pin()) {          // slave failed to pull the line low, assume not present -        dprintf("serial::NO_RESPONSE\n"); +        serial_dprintf("serial::NO_RESPONSE\n");          chSysUnlock();          return false;      } @@ -269,7 +269,7 @@ static inline bool initiate_transaction(uint8_t sstd_index) {      serial_delay();      if ((checksum_computed) != (checksum_received)) { -        dprintf("serial::FAIL[%u,%u,%u]\n", checksum_computed, checksum_received, sstd_index); +        serial_dprintf("serial::FAIL[%u,%u,%u]\n", checksum_computed, checksum_received, sstd_index);          serial_output();          serial_high(); @@ -292,8 +292,5 @@ static inline bool initiate_transaction(uint8_t sstd_index) {  //  // this code is very time dependent, so we need to disable interrupts  bool soft_serial_transaction(int sstd_index) { -    split_shared_memory_lock(); -    bool result = initiate_transaction((uint8_t)sstd_index); -    split_shared_memory_unlock(); -    return result; +    return initiate_transaction((uint8_t)sstd_index);  } | 
