|
@@ -30,6 +30,8 @@
|
|
|
|
|
|
// For event signalling
|
|
|
static task_handle_t sig = 0;
|
|
|
+static uint8 *sig_flag;
|
|
|
+static uint8 isr_flag = 0;
|
|
|
|
|
|
// UartDev is defined and initialized in rom code.
|
|
|
extern UartDevice UartDev;
|
|
@@ -277,8 +279,12 @@ uart0_rx_intr_handler(void *para)
|
|
|
got_input = true;
|
|
|
}
|
|
|
|
|
|
- if (got_input && sig)
|
|
|
- task_post_low (sig, false);
|
|
|
+ if (got_input && sig) {
|
|
|
+ if (isr_flag == *sig_flag) {
|
|
|
+ isr_flag ^= 0x01;
|
|
|
+ task_post_low (sig, 0x8000 | isr_flag << 14 | false);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
static void
|
|
@@ -316,14 +322,15 @@ uart_stop_autobaud()
|
|
|
* Description : user interface for init uart
|
|
|
* Parameters : UartBautRate uart0_br - uart0 bautrate
|
|
|
* UartBautRate uart1_br - uart1 bautrate
|
|
|
- * uint8 task_prio - task priority to signal on input
|
|
|
* os_signal_t sig_input - signal to post
|
|
|
+ * uint8 *flag_input - flag of consumer task
|
|
|
* Returns : NONE
|
|
|
*******************************************************************************/
|
|
|
void ICACHE_FLASH_ATTR
|
|
|
-uart_init(UartBautRate uart0_br, UartBautRate uart1_br, os_signal_t sig_input)
|
|
|
+uart_init(UartBautRate uart0_br, UartBautRate uart1_br, os_signal_t sig_input, uint8 *flag_input)
|
|
|
{
|
|
|
sig = sig_input;
|
|
|
+ sig_flag = flag_input;
|
|
|
|
|
|
// rom use 74880 baut_rate, here reinitialize
|
|
|
UartDev.baut_rate = uart0_br;
|