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)
・パラメータの
遅延:遅延時間、単位:us
・戻り値
なし。
1.3 ZYF_SysMsDelayの関数遅延、単位:ミリ秒
・関数プロトタイプ
void ZYF_SysMsDelay(uint32_t delay)
・パラメータ
遅延:遅延時間、単位:ms
・戻り値
なし。
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 Get ICCID
・関数プロトタイプ
int32_t ZYF_GetIccid(PsFuncPtr CallBack)
・パラメータ
CallBack:ICCIDコールバック関数を取得します。関数でICCID番号を読み取ることができます。
・戻り値
ZYF_RET_OK:成功
ZYF_RET_ERR_PARAM:パラメータエラー
1.8 ZYF_GetCsqValue取得デバイス信号値
・関数のプロトタイプ
ZYF_GetCsqValue(uint8_t * csq_value)int32_t
・パラメータ
csq_value:ICCIDコールバック関数を取得し、あなたが関数内のICCID番号を読み取ることができます
。・戻り値
ZYF_RET_OK:成功
ZYF_RET_ERR_FATAL_Failure
ZYF_RET_ERR_ERR_FATAL_ERROR
1.9 ZYF_GetCregStatus Get GSM note network status
・関数プロトタイプ
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)
・パラメータ
なし
・戻り値
残りの領域サイズ
2システムルーチンの概要
この章では、主にSDKでのexample_system.cの使用方法を紹介します。
コンパイル方法:。\ examples \ build \は、ダブルクリックして実行するか、ファイルを開いてコンパイルすると、.batファイルに対応します。
生成されたファイル:。\ out \ corresponding directory \ 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 :%02x",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:%02X,plmn:%02x%x%02x,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");
}