t1_Thdl = xTimerCreate("Timer1", 200, pdTRUE, (void *)1, (TimerCallbackFunction_t)OS_TimerCallBack);
xTimerStart(t1_Thdl, 1);
/*
************************************************************
* 函数名称: OS_TimerCallBack
*
* 函数功能: 定时检查网络状态标志位
*
* 入口参数: 软件定时器句柄
*
* 返回参数: 无
*
* 说明: 定时器任务。定时检查网络状态,若持续超过设定时间无网络连接,则进行平台重连
************************************************************
*/
void OS_TimerCallBack(TimerHandle_t xTimer)
{
if(onenet_info.net_work == 0) //如果在规定时间内网络还未接入成功
{
if(++timer_count >= NET_TIME) //如果网络断开超时
{
UsartPrintf(USART_DEBUG, "Tips: Timer Check Err\r\n");
timer_count = 0;
net_fault_info.net_fault_level = NET_FAULT_LEVEL_3; //错误等级3
}
}
else
{
timer_count = 0; //清除计数
if(net_device_info.send_count >= NET_COUNT) //如果发送错误计数达到NET_COUNT次
{
UsartPrintf(USART_DEBUG, "Tips: Timer Check Err-Send\r\n");
net_device_info.send_count = 0;
net_fault_info.net_fault_level = NET_FAULT_LEVEL_1; //错误等级1
}
}
}
void DATA_Task(void *pdata)
{
while(1)
{
switch(onenet_info.send_data)
{
case SEND_TYPE_DATA:
onenet_info.send_data = OneNet_SendData(FORMAT_TYPE3, NULL, NULL, data_stream, data_stream_cnt);//上传数据到平台
break;
case SEND_TYPE_SUBSCRIBE:
onenet_info.send_data = OneNet_Subscribe(topics, 2); //订阅主题
break;
case SEND_TYPE_UNSUBSCRIBE:
onenet_info.send_data = OneNet_UnSubscribe(topics, 2); //取消订阅的主题
break;
case SEND_TYPE_PUBLISH:
onenet_info.send_data = OneNet_Publish("pc_topic", "Publish Test"); //发布主题
break;
case SEND_TYPE_HEART:
onenet_info.send_data = OneNet_SendData_Heart();
break;
}
OneNet_Check_Heart();
RTOS_TimeDly(10); //挂起任务50ms
}
}
2018-07-25
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。