2018-07-25

    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
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容