Files
ch32v20x-examples/EVT/EXAM/BLE/Direct_Test_Mode/APP/test_dtm.c
T
2023-12-01 10:33:09 +08:00

97 lines
2.6 KiB
C

/********************************** (C) COPYRIGHT *******************************
* File Name : test_dtm.c
* Author : WCH
* Version : V1.0
* Date : 2022/06/29
* Description :
*********************************************************************************
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* Attention: This software (modified or not) and binary are used for
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
*******************************************************************************/
#include "uart.h"
#include "config.h"
#include "test_dtm.h"
tmosTaskID test_taskid = INVALID_TASK_ID;
/*********************************************************************
* @fn test_dtm_process_msg
*
* @brief Process an incoming task message.
*
* @param pMsg - message to process
*
* @return none
*/
static void test_dtm_process_msg(tmos_event_hdr_t *pMsg) {
switch (pMsg->event) {
case UART_PROCESS_EVT:{
struct simple_buf *evt = NULL;
struct uart_process_msg *msg = \
(struct uart_process_msg *)pMsg;
evt = hci_cmd_handle((struct simple_buf*)msg->data);
if(evt)
uart_send(evt);
uart_start_receiving();
}
break;
case USB_PROCESS_EVT:{
struct simple_buf *evt = NULL;
struct usb_process_msg *msg = \
(struct usb_process_msg *)pMsg;
evt = hci_cmd_handle((struct simple_buf*)msg->data);
if(evt)
usb_send(evt);
usb_start_receiving();
}
break;
default:
break;
}
}
/*********************************************************************
* @fn test_dtm_processevent
*
* @brief process handle
*
* @param task_id - The TMOS assigned task ID.
* @param events - events to process. This is a bit map and can
* contain more than one event.
*
* @return events not processed
*/
tmosEvents test_dtm_processevent(tmosTaskID task_id, tmosEvents events)
{
uint8_t *msgPtr;
if(events & SYS_EVENT_MSG)
{ // 处理HAL层消息,调用tmos_msg_receive读取消息,处理完成后删除消息。
msgPtr = tmos_msg_receive(task_id);
if(msgPtr)
{
test_dtm_process_msg((tmos_event_hdr_t *)msgPtr);
/* De-allocate */
tmos_msg_deallocate(msgPtr);
}
return (events ^ SYS_EVENT_MSG);
}
return 0;
}
void test_dtm_init(void)
{
test_taskid = TMOS_ProcessEventRegister(test_dtm_processevent);
}