97 lines
2.6 KiB
C
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);
|
|
}
|