定时器Demo

```OSATimerRef timerRef; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <stdint.h> #include <time.h> #include <ctype.h> #include <stddef.h> #include <stdio.h> #include <stdint.h> #include "osa.h" #include "UART.h" #include "sockets.h" #include "ip_addr.h" #include "netdb.h" #include "sys.h" #include "sdk_api.h" #undef printf #define printf(fmt, args...) do { fatal_printf("[sdk]"fmt, ##args); } while(0) #define UPCASE( c ) ( ((c) >= 'a' && (c) <= 'z') ? ((c) - 0x20) : (c) ) #define sleep(x) OSATaskSleep((x) * 200)//second extern UART_Port gATUARTIntPortNum; #define DATA_MODE 0 #define AT_MODE 1 #define MAX_LINE_SIZE 260 #define AT_CMD_NAME_MAX_LEN 16 typedef enum { DSAT_CMD_PREP_STATE_HUNT, DSAT_CMD_PREP_STATE_FOUND_A, DSAT_CMD_PREP_STATE_FOUND_AT, } dsat_cmd_prep_state_enum_type; typedef struct dsat_sio_info_s { char cmd_line_buffer[MAX_LINE_SIZE]; char *build_cmd_ptr; dsat_cmd_prep_state_enum_type at_cmd_prep_state; } dsat_sio_info_s_type; typedef enum { DSAT_OK = 0, DSAT_NO_CARRIER = 3, DSAT_ERROR = 4, } dsat_result_enum_type; typedef struct { int result; char *response; } AtCmdResponse; static dsat_sio_info_s_type g_sio_info; extern OSMsgQRef MsgUartData_sdk; extern void set_UartDataSwitch_sdk(BOOL flag); extern BOOL get_UartDataSwitch_sdk(void); static void uartdata_thread(void); // Device bootup hook before Phase1Inits. // If you have some work to be init, you may implete it here. // ex: you may start your task here. or do some initialize here. extern void Phase1Inits_enter(void); // Device bootup hook after Phase1Inits. // If you have some work to be init, you may implete it here. // ex: you may start your task here. or do some initialize here. extern void Phase1Inits_exit(void); // Device bootup hook before Phase2Inits. // If you have some work to be init, you may implete it here. // ex: you may start your task here. or do some initialize here. extern void Phase2Inits_enter(void); // Device bootup hook after Phase2Inits. // If you have some work to be init, you may implete it here. // ex: you may start your task here. or do some initialize here. extern void Phase2Inits_exit(void); void Phase1Inits_enter(void) { } void Phase1Inits_exit(void) { } void Phase2Inits_enter(void) { } void Phase2Inits_exit(void) { OSA_STATUS status; printf("%s[%d]: starting...\n", __FUNCTION__, __LINE__); status = OSAMsgQCreate(&MsgUartData_sdk, "MsgUartData_sdk", sizeof(MsgUartDataParam_sdk), 500, OS_FIFO); DIAG_ASSERT(status == OS_SUCCESS); sys_thread_new("uartdata_thread", uartdata_thread, NULL, DEFAULT_THREAD_STACKSIZE*2, 161); } /* This function send data to uart. */ static void send_to_uart(char *toUart, int length) { char *sendData = NULL; printf("%s[%d]:toUart=%s, length=%d\n", __FUNCTION__, __LINE__, toUart, length); sendData = (char *)malloc(length+1); ASSERT(sendData != NULL); memset(sendData, 0, length+1); memcpy(sendData, toUart, length); sendData[length] = '\0'; printf("%s[%d]:send to uart data=%s, length=%d\n", __FUNCTION__, __LINE__, sendData, length); send_data_2uart(gATUARTIntPortNum, (UINT8 *)sendData, length); printf("%s[%d]:sendData==NULL = %d\n", __FUNCTION__, __LINE__, (sendData==NULL)); if (sendData) free(sendData); } static void uartdata_thread(void) { MsgUartDataParam_sdk uart_temp; OSA_STATUS status; set_UartDataSwitch_sdk(1); // open pass-through while (1) { memset(&uart_temp, 0, sizeof(MsgUartDataParam_sdk)); status = OSAMsgQRecv(MsgUartData_sdk, (UINT8 *)&uart_temp, sizeof(MsgUartDataParam_sdk), OSA_SUSPEND);//recv data from uart if (status == OS_SUCCESS) { if (uart_temp.UArgs) { printf("%s[%d]: uart_temp len:%d, data:%s\n", __FUNCTION__, __LINE__, uart_temp.len, (char *)(uart_temp.UArgs)); send_to_uart((char *)(uart_temp.UArgs),uart_temp.len); free(uart_temp.UArgs); } } } } ```