diff --git a/MBL/source_ns/drivers/CMT2310/0_Project/Uart_PingPong/ebyte/ebyte_callback.c b/MBL/source_ns/drivers/CMT2310/0_Project/Uart_PingPong/ebyte/ebyte_callback.c index d7510c0..ba203b2 100755 --- a/MBL/source_ns/drivers/CMT2310/0_Project/Uart_PingPong/ebyte/ebyte_callback.c +++ b/MBL/source_ns/drivers/CMT2310/0_Project/Uart_PingPong/ebyte/ebyte_callback.c @@ -23,6 +23,8 @@ /*= !!!配置目标硬件平台头文件 =======================================*/ #include "board.h" //E15-EVB02 评估板 #include "ebyte_debug.h" //E15-EVB02 评估板 +#include +#include /*= !!!配置目标硬件变量 =======================================*/ extern uint8_t RxBuffer[64]; extern uint8_t BufferPing[5]; @@ -69,87 +71,60 @@ void Ebyte_Port_TransmitCallback( uint16e_t state ) */ void Ebyte_Port_ReceiveCallback( uint16_t state, uint8_t *buffer, uint8_t length ) { - uint8_t j, pcEchoLength; - uint8_t *p; - /* 接收: 正常 */ - if( state &= 0x0002 ) - { - //To-do 实现自己的逻辑 + uint8_t j, pcEchoLength; + uint8_t *p; + int8_t rx_data[32] = {0}; - /* 通过长度判断是否是ping pong指令 */ - if( length == 4 || length == 5 ) - { + /* 接收: 正常 */ + if( state &= 0x0002 ) { + //To-do 实现自己的逻辑 - p = buffer; - for( j = 0; j < 4; j++ ) - { - if( BufferPing[j] != *p++ ) - { - break; - } + /* 通过长度判断是否是ping pong指令 */ + if( length == 4 || length == 5 ) { + p = buffer; + for( j = 0; j < 4; j++ ) { + if( BufferPing[j] != *p++ ) + break; + } + if( j == 4 ) { //比较到了末尾表示完全匹配ping + Callback_isPingCheckReady = 1;//通知回复Pong + if( length == 5 && PC_isConnected ) + BufferPong[4] = buffer[4];//第5字节为按键标识 + } - } - //比较到了末尾表示完全匹配ping - if( j == 4 ) - { - Callback_isPingCheckReady = 1;//通知回复Pong - if( length == 5 && PC_isConnected ) - { - BufferPong[4] = buffer[4];//第5字节为按键标识 - } + if( j!=4 && length == 5 && PC_isConnected ) { + p = buffer; - } + for( j = 0; j < 4; j++ ) { + if( BufferPong[j] != *p++ ) + break; + } - if( j!=4 && length == 5 && PC_isConnected ) - { - p = buffer; + if( j == 4 ) {//完全匹配pong + if( 0x01 == buffer[4] ) + Ebyte_DEBUG_CommandEcho( ( uint8_t* )SimulatedCommandsWireless1, EBYTE_CMD_PACKAGE_LENGTH, PcEchoBuffer, &pcEchoLength ); + else + Ebyte_DEBUG_CommandEcho( ( uint8_t* )SimulatedCommandsWireless2, EBYTE_CMD_PACKAGE_LENGTH, PcEchoBuffer, &pcEchoLength ); + Ebyte_BSP_UartTransmit( PcEchoBuffer, pcEchoLength ); + } + } + } - for( j = 0; j < 4; j++ ) - { - if( BufferPong[j] != *p++ ) - { - break; - } + Ebyte_BSP_LedControl( BSP_LED_1, ON ); - } + if( ! PC_isConnected ) { + snprintf(rx_data, sizeof(rx_data), "%s", buffer); + EBYTE_LOG("\r\n Receive Data: %s", rx_data); + } - if( j == 4 )//完全匹配pong - { - if( 0x01 == buffer[4] ) - { - Ebyte_DEBUG_CommandEcho( ( uint8_t* )SimulatedCommandsWireless1, EBYTE_CMD_PACKAGE_LENGTH, PcEchoBuffer, &pcEchoLength ); - } - else - { - Ebyte_DEBUG_CommandEcho( ( uint8_t* )SimulatedCommandsWireless2, EBYTE_CMD_PACKAGE_LENGTH, PcEchoBuffer, &pcEchoLength ); - } - Ebyte_BSP_UartTransmit( PcEchoBuffer, pcEchoLength ); - } - - } - } - - Ebyte_BSP_LedControl( BSP_LED_1, ON ); - - if( ! PC_isConnected ) - { - - EBYTE_LOG("\r\n Receive Data:"); - Ebyte_BSP_UartTransmit ( buffer, length ); - } - - Ebyte_BSP_LedControl( BSP_LED_1, OFF ); - } - /* 接收: 异常超时 */ - else if ( state &= 0x0200 ) - { - //To-do 实现自己的逻辑 - } - /* 接收: 未知错误 */ - else - { - /* 发送状态标识不正确,请检查软硬件 - 常见问题 1:SPI通信不正确 2:模块供电不足 */ - while(1); - } + Ebyte_BSP_LedControl( BSP_LED_1, OFF ); + } + else if ( state &= 0x0200 ) { /* 接收: 异常超时 */ + //To-do 实现自己的逻辑 + } + else { /* 接收: 未知错误 */ + /* 发送状态标识不正确,请检查软硬件 + 常见问题 1:SPI通信不正确 2:模块供电不足 */ + while(1); + } } \ No newline at end of file diff --git a/MBL/source_ns/drivers/CMT2310/2_Ebyte_Board_Support/E15-EVB02/board.c b/MBL/source_ns/drivers/CMT2310/2_Ebyte_Board_Support/E15-EVB02/board.c index 4241325..e57b2c9 100755 --- a/MBL/source_ns/drivers/CMT2310/2_Ebyte_Board_Support/E15-EVB02/board.c +++ b/MBL/source_ns/drivers/CMT2310/2_Ebyte_Board_Support/E15-EVB02/board.c @@ -235,10 +235,10 @@ void Ebyte_BSP_Init( void ) Ebyte_BSP_SPI_Init(); /* 定时器 初始化 */ -// Ebyte_BSP_TIMER_Init(); + Ebyte_BSP_TIMER_Init(); /* 按键事件队列 初始化 */ -// Ebyte_BTN_FIFO_Init( &BSP_BTN_FIFO ); + Ebyte_BTN_FIFO_Init( &BSP_BTN_FIFO ); } /* ! @@ -334,7 +334,7 @@ void Ebyte_BSP_UartTransmit( uint8_t *buffer , uint16_t length ) for( i = 0; i < length; i++ ) { while(RESET == usart_flag_get(LOG_UART, USART_FLAG_TBE)); - usart_data_transmit(LOG_UART, *buffer); + usart_data_transmit(LOG_UART, buffer[i]); } } diff --git a/MBL/source_ns/drivers/CMT2310/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c b/MBL/source_ns/drivers/CMT2310/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c index f7d7999..12a806d 100755 --- a/MBL/source_ns/drivers/CMT2310/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c +++ b/MBL/source_ns/drivers/CMT2310/3_Ebyte_WirelessModule_Drivers/E48xMx/ebyte_e48x.c @@ -75,7 +75,7 @@ void Ebyte_E48x_IntOrPollTask( void ) radio_rece_data_flag = gpio_input_bit_get( BSP_GPIO_PORT_E48_GP4 , BSP_GPIO_PIN_E48_GP4); /* 有接收数据 */ if( radio_rece_data_flag != RESET ) { - vRadioGetPacket(rf_rxbuffer,&rf_rxsize); + vRadioGetPacket(rf_rxbuffer, &rf_rxsize); Ebyte_Port_ReceiveCallback(0x0002,rf_rxbuffer,rf_rxsize); } }