33,311
社区成员
发帖
与我相关
我的任务
分享
#include "fsu.h"
#include "osvl.h"
#define GSM_INTERFACE_MSGQ_MSG_CNT 20
#define GSM_INTERFACE_MSGQ_MSG_MAX_LEN 40
#define GSM_INTERFACE_THREAD_PRIORITY OSVL_THREAD_PRIORITY_BELOW_NORMAL //应该是线程优先级
#define GSM_INTERFACE_THREAD_STACK_SIZE 8096 //线程栈大小
#define GSM_INTERFACE_TIMER_STEP 500 //可能是500 (毫秒)
#define GSM_INTERFACE_TIMER_OPTION OSVL_TIMER_FOREVER
OSVL_HANDLE g_hGSM_interfaceMsgQ = OSVL_NULL;
OSVL_HANDLE g_hGSM_interfaceThread = OSVL_NULL;
OSVL_INT g_hGSM_interfaceTimer;
OSVL_DWORD fsu_GSM_interface_Thread(OSVL_DWORD dwParam) //线程函数
{
int bSuc = 0;
char buf[200];
int len;
osvl_DateTime DateTime;
while(1)
{
len = osvl_msg_Read(g_hGSM_interfaceMsgQ, (OSVL_CHAR *)buf, sizeof(buf), OSVL_INFINITE);
if((len)&&(buf[0] == 'S'))
{
osvl_rtc_GetCurDateTime(&DateTime); //可能是得到系统时间
osvl_trace("fsu_GSM_interface_Thread Rece At %04d-%02d-%02d %02d:%02d:%02d\r\n", //应该是时间格式化
DateTime.year,
DateTime.month,
DateTime.day,
DateTime.hour,
DateTime.min,
DateTime.sec
);
}
}
return bSuc;
}
//可能是定时器处理函数
OSVL_VOID fsu_GSM_interface_Timer(OSVL_INT nTimerID, OSVL_DWORD dwParam, OSVL_DWORD dwOption)
{
char buf[]="S";
// osvl_msg_Write(g_hGSM_interfaceMsgQ, (OSVL_CHAR *)buf, sizeof(buf), 0, OSVL_MSG_NORMAL);
}
/*******************************************************************************
* GSM接口初始化
******************************************************************************/
int GSM_interface_Init(void)
{
// GSM_interface_config *pGSM_interface_Conf;
int bSuc = 1;
g_hGSM_interfaceMsgQ = osvl_msg_Create(GSM_INTERFACE_MSGQ_MSG_CNT, GSM_INTERFACE_MSGQ_MSG_MAX_LEN, 0);
osvl_assert(g_hGSM_interfaceMsgQ);
if (!g_hGSM_interfaceMsgQ)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_MSGQ);
return 0;
}
//创建线程
g_hGSM_interfaceThread = osvl_thread_CreateThread(GSM_INTERFACE_THREAD_PRIORITY,
fsu_GSM_interface_Thread, (OSVL_DWORD)g_hGSM_interfaceMsgQ, GSM_INTERFACE_THREAD_STACK_SIZE);
osvl_assert(g_hGSM_interfaceThread);
if (!g_hGSM_interfaceThread)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_THREAD);
return bSuc;
}
//创建定时器
g_hGSM_interfaceTimer = osvl_timer_CreateTimer(fsu_GSM_interface_Timer, 0);
osvl_assert(g_hGSM_interfaceTimer);
if (!g_hGSM_interfaceTimer)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_CREATE_TIMER);
return 0;
}
//设置定时器
bSuc = osvl_timer_SetTimer(g_hGSM_interfaceTimer, GSM_INTERFACE_TIMER_STEP, GSM_INTERFACE_TIMER_OPTION);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_INIT_SET_TIMER);
return bSuc;
}
return bSuc;
}
/*******************************************************************************
* GSM接口关闭
******************************************************************************/
int GSM_interface_DeInit(void)
{
int bSuc = 1;
//取消定时器
bSuc = osvl_timer_DeleteTimer(g_hGSM_interfaceTimer);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_TIMER);
return bSuc;
}
//结束进程
bSuc = osvl_thread_KillThread(g_hGSM_interfaceThread);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_THREAD);
return bSuc;
}
bSuc = osvl_msg_Close(g_hGSM_interfaceMsgQ);
osvl_assert(bSuc);
if (!bSuc)
{
osvl_set_errno(FSU_ER_GSM_INTERFACE_DEINIT_THREAD);
return bSuc;
}
return bSuc;
}