8. M601 系统 API 的使用

    技术2022-07-31  84

    1 系统相关 API

    1.1 ZYF_GetCoreVersion 获取系统版本信息· 函数原型 int32_t ZYF_GetCoreVersion(uint8_t* ptrVer, uint32_t len)· 参数 ptrVer:指向获取库版本的数组指针 len:必须大于等于 40,否则会返回错误代码· 返回值 成功:返回库版本字符长度 失败:返回结果为负,具体请参考 zyf_error.h 文件中错误代码。

    1.2 ZYF_SysUsDelay 函数延时,单位:微秒· 函数原型 void ZYF_SysUsDelay (uint32_t delay)· 参数 delay:延时时间,单位:us· 返回值 none。

    1.3 ZYF_SysMsDelay 函数延时,单位:毫秒· 函数原型 void ZYF_SysMsDelay (uint32_t delay)· 参数 delay:延时时间,单位:ms· 返回值 none。

    1.4 ZYF_IsSimValid 查询 SIM 卡是否有效· 函数原型 int32_t ZYF_IsSimValid (void)· 参数 none· 返回值 ZYF_RET_OK: 成功 ZYF_RET_ERR_SIM_NOT_INSERTED: 未插卡或卡坏了

    1.5 ZYF_GetImei 获取设备 IMEI 号· 函数原型 int32_t ZYF_GetImei(uint8_t *imei_str, uint8_t length)· 参数 imei_str:指向设备 IMEI 号的数组指针 length:必须大于等于 16,否则会返回错误代码· 返回值 ZYF_RET_OK:成功 ZYF_RET_ERR_FATAL:失败 ZYF_RET_ERR_PARAM:参数错误

    1.6 ZYF_GetImsi 获取 IMSI 号· 函数原型 int32_t ZYF_GetImsi(uint8_t *imsi_data, uint8_t length)· 参数 imsi_data:用来保存 SIM 卡的 IMSI 号 length:返回的数据长度· 返回值 ZYF_RET_OK:成功 ZYF_RET_ERR_FATAL:失败 ZYF_RET_ERR_PARAM:参数错误

    1.7 ZYF_GetIccid 获取 ICCID · 函数原型 int32_t ZYF_GetIccid(PsFuncPtr CallBack)· 参数 CallBack:获取 ICCID 的回调函数,可在函数中读取 ICCID 号码· 返回值 ZYF_RET_OK:成功 ZYF_RET_ERR_PARAM:参数错误

    1.8 ZYF_GetCsqValue 获取设备信号值· 函数原型 int32_t ZYF_GetCsqValue(uint8_t *csq_value)· 参数 csq_value:获取 ICCID 的回调函数,可在函数中读取 ICCID 号码· 返回值 ZYF_RET_OK:成功 ZYF_RET_ERR_FATAL:失败 ZYF_RET_ERR_PARAM:参数错误

    1.9 ZYF_GetCregStatus 获取 GSM 注网状态· 函数原型 int32_t ZYF_GetCregStatus(uint8_t *creg_status)· 参数 creg_status:指向 uint8_t 类型变量指针,用于获取 CREG 值· 返回值 ZYF_RET_OK:成功 ZYF_RET_ERR_PARAM:参数错误

    1.10 ZYF_GetCgregStatus 获取 GPRS 注网状态· 函数原型 int32_t ZYF_GetCgregStatus(uint8_t *cgreg_status, uint8_t *plmn, uint16_t *lac_value, uint16_t *ci_value)· 参数 cgreg_status:指向 uint8_t 类型变量指针,用于获取 CGREG 值 plmn:指向 uint8_t 类型变量指针,用于获取 plmn 值(MCC+MNC), 数组长度必须大于等于 10 lac_value:指向 uint16_t 类型变量指针,用于获取 lac 值 ci_value:指向 uint16_t 类型变量指针,用于获取 ci 值· 返回值 ZYF_RET_OK:成功 ZYF_RET_ERR_PARAM:参数错误

    1.11 ZYF_FlightModeOnOff 打开/ 关闭飞行模式· 函数原型 int32_t ZYF_FlightModeOnOff(uint8_t on_off)· 参数 on_off: TRUE: 打开飞行模式, FALSE: 关闭飞行模式· 返回值 ZYF_RET_OK:成功 ZYF_RET_ERR_PARAM:参数错误

    1.12 ZYF_MemoryTotalLeftSize 获取剩余的堆空间大小· 函数原型 uint32_t ZYF_MemoryTotalLeftSize(void)· 参数 none· 返回值 剩余空间大小

    2 系统例程介绍

    本章节主要介绍如何在 SDK 中使用 example_system.c。 编译方法:.\examples\build\对应的.bat 文件双击执行或打开就可以编译。 生成文件:.\out\对应目录\hex\M601_example_**.pac

    例程中将测试的结果打印到串口,可连接串口助手查看到测试的结果。

    #include <stdlib.h> #include <string.h> #include "zyf_trace.h" #include "zyf_system.h" #include "zyf_app.h" #include "zyf_uart.h" #include "zyf_thread.h" #include "zyf_time.h" #include "zyf_error.h" static Uart_Param_t g_uart1param; void UartWriteCallBack(void* Param) // general com { Uart_Param_t *uartparam = (Uart_Param_t *)Param; if(Param == NULL) { return; } ZYF_UartWrite(uartparam->port,(uint8_t *)"UartWrite succeed\r\n",strlen("UartWrite succeed\r\n")); ZYF_UartWriteCallbackSwitch(uartparam->port,false); } void UartReadCallBack(void* Param) // { uint32_t recvlen = 0; Uart_Param_t *uartparam = (Uart_Param_t *)Param; ZYF_LOG("Uart%d recv",uartparam->port); while(ZYF_UartRead(uartparam->port, &(uartparam->uartbuf[recvlen]), 1)) { ZYF_LOG("recv :x",uartparam->uartbuf[recvlen]); recvlen++; } ZYF_UartWrite(uartparam->port,uartparam->uartbuf,recvlen); ZYF_UartWriteCallbackSwitch(uartparam->port,true); } static void AppUartInit(void) { int32_t ret; g_uart1param.port = DEBUG_PORT; ZYF_UartRegister(g_uart1param.port, UartReadCallBack,&g_uart1param); ZYF_UartWriteCbRegister(g_uart1param.port,UartWriteCallBack,&g_uart1param); ZYF_UartOpen(g_uart1param.port, 115200, ZYF_FC_NONE); ZYF_LOG("AppUartInit"); return; } #if 1 static void GetIccidCallback(void*msg) { uint8_t idx; if(NULL == msg) { ZYF_LOG("SystemApi GetIccid fail"); return; } idx = strlen((char*)msg); if((idx < 3) || (idx > 20)) { ZYF_LOG("SystemApi GetIccid fail,idx:%d",idx); return; } ZYF_LOG("SystemApi GetIccid %s",(char*)msg); } static void GetImsiCallback(void*msg) { uint8_t idx; ZYF_LOG("GetImsiCallback"); if(NULL == msg) { ZYF_LOG("SystemApi GetImsi fail"); return; } idx = strlen((char*)msg); if((idx < 3) || (idx > 20)) { ZYF_LOG("SystemApi GetImsi fail,idx:%d",idx); //return; } ZYF_LOG("SystemApi GetImsi %s",(char*)msg); } static void FlightModeOnOff(int on_off) { ZYF_LOG("FlightModeOnOff %d",on_off); } #endif void ZYF_SystemApiTest(void) { uint8_t Imei[16+1] = {0}; uint8_t csq = 0; uint8_t CregStatus = 0; uint8_t CgregStatus = 0,plmn[6] = {0}; uint32_t lac_value = 0,ci_value = 0; uint64_t ms = 0,sec = 0;; uint32_t high = 0; uint32_t low = 0; int32_t nwMode = 0; if(0 == ZYF_IsSimValid()) { ZYF_LOG("SystemApi IsSimValid:true"); } else { ZYF_LOG("SystemApi IsSimValid:false"); } if(ZYF_RET_OK == ZYF_GetNetworkInfo(&nwMode)) { ZYF_LOG("ZYF_GetNetworkInfo:%d",nwMode); } else { ZYF_LOG("ZYF_GetNetworkInfo fail"); } ms = ZYF_GetTickMs(); high = (ms >> 32) & 0xFFFFFFFF; low = ms & 0xFFFFFFFF; ZYF_LOG("ZYF_GetLocalTimeMs %lu,%lu", high,low); sec = ZYF_GetLocalTimeSec(); high = (sec >> 32) & 0xFFFFFFFF; low = sec& 0xFFFFFFFF; ZYF_LOG("ZYF_GetLocalTimeSec: %lu,%lu", high,low); //ZYF_LOG("ZYF_FlightModeOnOff:%d",ZYF_FlightModeOnOff(1,FlightModeOnOff)); ZYF_LOG("ZYF_FlightModeIsOn:%d",ZYF_FlightModeIsOn()); ZYF_LOG("SystemApi nwscanmode:%d",ZYF_Getnwscanmode()); ZYF_GetImei(Imei,sizeof(Imei)); ZYF_LOG("SystemApi Imei:%s",Imei); ZYF_GetCsqValue(&csq); ZYF_LOG("SystemApi csq:%d",csq); ZYF_GetCregStatus(&CregStatus); ZYF_LOG("SystemApi CregStatus:%d",CregStatus); ZYF_GetCgregStatus(&CgregStatus, plmn, &lac_value, &ci_value); ZYF_LOG("SystemApi CregStatus:CgregStatus:X,plmn:x%xx,lac_value:%X,ci_value:%X",\ CregStatus, plmn[0],plmn[1],plmn[2], lac_value, ci_value); ZYF_GetIccid(GetIccidCallback); ZYF_GetImsi(GetImsiCallback); ZYF_LOG("ZYF_SleepEnable:%d",ZYF_SleepEnable()); } void SystemApiThread_Example(void * Param) { ZYF_MsgQ_t *ptMsg; ZYF_AppMsg_t tMsg; int iRet = -1; ptMsg = ZYF_MsgQCreate(10, sizeof(ZYF_AppMsg_t)); ZYF_LOG("thread enter!"); ZYF_SystemApiTest(); while (1) { ZYF_LOG("in while."); iRet = ZYF_MsgQGet(ptMsg, (void *)&tMsg); if (iRet < 0) { ZYF_LOG("Failed to get msg"); ZYF_ThreadSleep(1000); } } } static void prvInvokeGlobalCtors(void) { extern void (*__init_array_start[])(); extern void (*__init_array_end[])(); size_t count = __init_array_end - __init_array_start; for (size_t i = 0; i < count; ++i) __init_array_start[i](); } int appimg_enter(void *param) { AppUartInit(); ZYF_LOG("application image enter, param 0x%x", param); prvInvokeGlobalCtors(); ZYF_ThreadCreate("UartThread_Example", SystemApiThread_Example, NULL, ZYF_PRIORITY_HIGH, 10*1024); return 0; } void appimg_exit(void) { OSI_LOGI(0, "application image exit"); }

     

    Processed: 0.012, SQL: 9