在之前几篇文章都已经介绍完TencentOS tiny的AT框架,在移植到自己项目时主要是用freeRTOS系统自带的组件(信号量等)替换掉tencentOS tiny的组件。
FreeRTOS信号量,互斥锁均是通过队列实现的,下面介绍一下相关API,具体实现就不贴出来了,
创建二值信号量/计数信号量/互斥锁:xSemaphoreCreateBinary()/xSemaphoreCreateCounting()/xSemaphoreCreateMutex,
获取/释放信号量:xSemaphoreTake/xSemaphoreGive,
获取/释放互斥量:同上,参数不一样而已,查看创建信号量和互斥锁API就知道返回的类型是一致的,均是队列。
之前说过TencentOS tiny的抽象sal层可以分离应用和AT层,无需关系设备层使用的是4G通讯模组还是WIFI模组,我项目用的是移远模组,下面重点写下初始化过程:
1.关闭回显
2.使能网络开关
3.确认网络开关
4.网络附着
static int bg95_init()
{
printf("Init BG95 ...\n" );
if (bg95_echo_close() != 0) {
printf("echo close FAILED\n");
return -1;
}
if (bc35_28_95_open_cfun() != 0) {
printf("open_cfun FAILED\n");
return -1;
}
if (bc35_28_95_check_cfun() != 0) {
printf("check cfun FAILED\n");
return -1;
}
if (bc35_28_95_set_net() != 0) {
printf("get net FAILED\n");
return -1;
}
if (bc35_28_95_signal_quality_check() != 0) {
printf("check csq FAILED\n");
return -1;
}
printf("Init bg95 Done\n" );
return 0;
}