From 4cdc4b3d488e15b1d6572bdcd61a2ce92d0c8c9b Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期五, 16 五月 2025 18:13:14 +0800 Subject: [PATCH] 成功分离2个测距功能 --- keil/include/components/internet/src/Module.c | 556 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 556 insertions(+), 0 deletions(-) diff --git a/keil/include/components/internet/src/Module.c b/keil/include/components/internet/src/Module.c new file mode 100644 index 0000000..c95a292 --- /dev/null +++ b/keil/include/components/internet/src/Module.c @@ -0,0 +1,556 @@ +/******************************************************************************* + * File Name : Module.c + * Description : + * Created on : 2018年8月5日 + * Author : www.hido-studio.com + *******************************************************************************/ + +/******************************************************************************* + * Include Files * + *******************************************************************************/ +#include "Module.h" +#include "string.h" +#include "HIDO_Util.h" + +/******************************************************************************* + * Macro * + *******************************************************************************/ +#define FUNC_CALL(fn, ...) \ +if((fn) != HIDO_NULL) \ + (fn)(__VA_ARGS__) + +/******************************************************************************* + * Type Definition * + *******************************************************************************/ + +/******************************************************************************* + * Local Variable * + *******************************************************************************/ +static HIDO_CHAR l_acIMEI[MODULE_IMEI_SIZE]; +static HIDO_CHAR l_acIMSI[MODULE_IMSI_SIZE]; +static HIDO_CHAR l_acCCID[MODULE_CCID_SIZE]; + +/* CSQ */ +static HIDO_UINT32 l_u32SignalIntensity = 0; +static HIDO_VOID *l_pSignalIntensityArg = HIDO_NULL; +static FN_SignalIntensityCallback l_fnSignalIntensityCallback = HIDO_NULL; +static HIDO_BOOL l_bSignalIntensityNeedRequest = HIDO_FALSE; + +/* LBS */ +static ST_LBSLocation l_stLBSLocation; +static HIDO_VOID *l_pLBSLocationArg = HIDO_NULL; +static FN_LBSLocationCallback l_fnLBSLocationCallback = HIDO_NULL; +static HIDO_BOOL l_bLBSLocationNeedRequest = HIDO_FALSE; + +/* Power */ +static FN_PowerEventCallback l_fnPowerEventCallback = HIDO_NULL; +static HIDO_VOID *l_pPowerEventArg = HIDO_NULL; +static HIDO_BOOL l_abModuleNeedSleep[MODULE_ALL] = { HIDO_FALSE }; +static HIDO_BOOL l_abModuleNeedWakeUp[MODULE_ALL] = { HIDO_FALSE }; + +static HIDO_BOOL l_abModuleNeedPowerOff[MODULE_ALL] = { HIDO_FALSE }; +static HIDO_BOOL l_abModuleNeedPowerOn[MODULE_ALL] = { HIDO_FALSE }; + +static HIDO_BOOL l_bRunATCmd = HIDO_FALSE; +static HIDO_CHAR l_acRunATCmdBuff[128]; + +/******************************************************************************* + * Local Function Declaration * + *******************************************************************************/ + +/******************************************************************************* + * Local Function * + *******************************************************************************/ + +/******************************************************************************* + * Global Function * + *******************************************************************************/ + +/******************************************************************************* + * Function Name : Module_SignalIntensityResult + * Description : 信号强度异步结果通知 + * Input : _u32SignalIntensity 信号强度 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_SignalIntensityResult(HIDO_UINT32 _u32SignalIntensity) +{ + if(l_fnSignalIntensityCallback != HIDO_NULL) + { + l_fnSignalIntensityCallback(_u32SignalIntensity, l_pSignalIntensityArg); + } + + l_u32SignalIntensity = _u32SignalIntensity; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_GetSignalIntensityAsync + * Description : 信号强度异步获取 + * Input : _fnGetSignalIntensity 异步通知回调 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_GetSignalIntensityAsync(FN_SignalIntensityCallback _fnGetSignalIntensity, HIDO_VOID *_pArg) +{ + l_fnSignalIntensityCallback = _fnGetSignalIntensity; + l_pSignalIntensityArg = _pArg; + l_bSignalIntensityNeedRequest = HIDO_TRUE; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_SignalIntensityNeedRequest + * Description : 是否需要异步获取信号强度 + * Input : None + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_BOOL Module_SignalIntensityNeedRequest(void) +{ + HIDO_BOOL bState = l_bSignalIntensityNeedRequest; + + l_bSignalIntensityNeedRequest = HIDO_FALSE; + + return bState; +} + +/******************************************************************************* + * Function Name : Module_LBSLocationResult + * Description : + * Input : _u32SignalIntensity 信号强度 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_LBSLocationResult(ST_LBSLocation *_pstLBSLocation) +{ + if(l_fnLBSLocationCallback != HIDO_NULL) + { + l_fnLBSLocationCallback(_pstLBSLocation, l_pLBSLocationArg); + } + + memcpy(&l_stLBSLocation, _pstLBSLocation, sizeof(ST_LBSLocation)); + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_GetLBSLocationAsync + * Description : + * Input : _fnGetSignalIntensity 异步通知回调 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_GetLBSLocationAsync(FN_LBSLocationCallback _fnGetLBSLocation, HIDO_VOID *_pArg) +{ + l_fnLBSLocationCallback = _fnGetLBSLocation; + l_pLBSLocationArg = _pArg; + l_bLBSLocationNeedRequest = HIDO_TRUE; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_LBSLocationNeedRequest + * Description : + * Input : None + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_BOOL Module_LBSLocationNeedRequest(void) +{ + HIDO_BOOL bState = l_bLBSLocationNeedRequest; + + l_bLBSLocationNeedRequest = HIDO_FALSE; + + return bState; +} + +/******************************************************************************* + * Function Name : Module_GetIMEI + * Description : 获取IMEI接口 + * Input : None + * Output : _acIMEI IMEI + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_CHAR *Module_GetIMEI(HIDO_VOID) +{ + return l_acIMEI; +} + +/******************************************************************************* + * Function Name : Module_SetIMEI + * Description : 设置IMEI接口 + * Input : _pcIMEI IMEI + * _u32IMEILen 长度 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_SetIMEI(HIDO_CHAR *_pcIMEI, HIDO_UINT32 _u32IMEILen) +{ + if(_u32IMEILen < 2) + { + return HIDO_ERR; + } + + _u32IMEILen -= 2; + + if(_u32IMEILen < MODULE_IMEI_SIZE) + { + memcpy(l_acIMEI, _pcIMEI, _u32IMEILen); + l_acIMEI[_u32IMEILen] = '\0'; + } + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_GetIMSI + * Description : 设置IMEI接口 + * Input : _pcIMSI IMSI + * _u32IMSILen 长度 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_CHAR *Module_GetIMSI(HIDO_VOID) +{ + return l_acIMSI; +} + +/******************************************************************************* + * Function Name : Module_SetIMSI + * Description : 设置IMSI接口 + * Input : _pcIMSI IMSI + * _u32IMSILen 长度 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_SetIMSI(HIDO_CHAR *_pcIMSI, HIDO_UINT32 _u32IMSILen) +{ + if(_u32IMSILen < 2) + { + return HIDO_ERR; + } + + _u32IMSILen -= 2; + + if(_u32IMSILen < MODULE_IMSI_SIZE) + { + memcpy(l_acIMSI, _pcIMSI, _u32IMSILen); + l_acIMSI[_u32IMSILen] = '\0'; + } + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_GetCCID + * Description : 获取SIM卡号 + * Input : None + * Output : None + * Return : SIM卡号 + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_CHAR *Module_GetCCID(HIDO_VOID) +{ + return l_acCCID; +} + +/******************************************************************************* + * Function Name : Module_SetCCID + * Description : 设置IMSI接口 + * Input : _pcIMSI IMSI + * _u32IMSILen 长度 + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_SetCCID(HIDO_CHAR *_pcCCID, HIDO_UINT32 _u32CCIDLen) +{ + if(_u32CCIDLen < MODULE_CCID_SIZE) + { + memcpy(l_acCCID, _pcCCID, _u32CCIDLen-2); +// l_acCCID[_u32CCIDLen] = '\0'; + } + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_Sleep + * Description : 睡眠接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_SetPowerEventCallback(FN_PowerEventCallback _fnPowerCallback, HIDO_VOID *_pArg) +{ + l_fnPowerEventCallback = _fnPowerCallback; + l_pPowerEventArg = _pArg; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_Sleep + * Description : 睡眠接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_Sleep(E_Module _eModule) +{ + l_abModuleNeedSleep[_eModule] = HIDO_TRUE; + l_abModuleNeedWakeUp[_eModule] = HIDO_FALSE; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_WakeUp + * Description : 唤醒接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_WakeUp(E_Module _eModule) +{ + l_abModuleNeedWakeUp[_eModule] = HIDO_TRUE; + l_abModuleNeedSleep[_eModule] = HIDO_FALSE; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_PowerEvent + * Description : + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_PowerEvent(E_Module _eModule, E_ModuleState _eModuleState) +{ + FUNC_CALL(l_fnPowerEventCallback, _eModule, _eModuleState, l_pPowerEventArg); + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_PowerOff + * Description : 关机接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_PowerOff(E_Module _eModule) +{ + l_abModuleNeedPowerOff[_eModule] = HIDO_TRUE; + l_abModuleNeedPowerOn[_eModule] = HIDO_FALSE; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_PowerOn + * Description : 开机接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_PowerOn(E_Module _eModule) +{ + l_abModuleNeedPowerOn[_eModule] = HIDO_TRUE; + l_abModuleNeedPowerOff[_eModule] = HIDO_FALSE; + + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_NeedSleep + * Description : 睡眠接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_BOOL Module_NeedSleep(E_Module _eModule) +{ + HIDO_BOOL bState = l_abModuleNeedSleep[_eModule]; + + l_abModuleNeedSleep[_eModule] = HIDO_FALSE; + + return bState; +} + +/******************************************************************************* + * Function Name : Module_WakeUp + * Description : 唤醒接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_BOOL Module_NeedWakeUp(E_Module _eModule) +{ + HIDO_BOOL bState = l_abModuleNeedWakeUp[_eModule]; + + l_abModuleNeedWakeUp[_eModule] = HIDO_FALSE; + + return bState; +} + +/******************************************************************************* + * Function Name : Module_PowerOff + * Description : 关机接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_BOOL Module_NeedPowerOff(E_Module _eModule) +{ + HIDO_BOOL bState = l_abModuleNeedPowerOff[_eModule]; + + l_abModuleNeedPowerOff[_eModule] = HIDO_FALSE; + + return bState; +} + +/******************************************************************************* + * Function Name : Module_PowerOn + * Description : 开机接口 + * Input : + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_BOOL Module_NeedPowerOn(E_Module _eModule) +{ + HIDO_BOOL bState = l_abModuleNeedPowerOn[_eModule]; + + l_abModuleNeedPowerOn[_eModule] = HIDO_FALSE; + + return bState; +} + +/******************************************************************************* + * Function Name : Module_GetSignalIntensity + * Description : 获取最后一次缓存的信号限度 + * Input : None + * Output : None + * Return : 信号强度 + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_UINT32 Module_GetSignalIntensity(void) +{ + return l_u32SignalIntensity; +} + +/******************************************************************************* + * Function Name : Module_RunATCmdResult + * Description : 用户AT命令运行结果 + * Input : None + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_RunATCmdResult(HIDO_DataStruct * _pstATResponse) +{ + return HIDO_OK; +} + +/******************************************************************************* + * Function Name : Module_RunATCmdEnable + * Description : 判断是否需要用户的AT命令 + * Input : None + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_BOOL Module_RunATCmdEnable(HIDO_VOID) +{ + HIDO_BOOL bState = l_bRunATCmd; + + l_bRunATCmd = HIDO_FALSE; + + return bState; +} + +/******************************************************************************* + * Function Name : Module_GetRunATCmd + * Description : 获取用户运行的AT命令 + * Input : None + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_CHAR *Module_GetRunATCmd(HIDO_VOID) +{ + return l_acRunATCmdBuff; +} + +/******************************************************************************* + * Function Name : Module_RunATCmd + * Description : 用户运行AT命令 + * Input : None + * Output : None + * Return : None + * Author : www.hido-studio.com + * Modified Date: : 2018年8月5日 + *******************************************************************************/ +HIDO_INT32 Module_RunATCmd(HIDO_CHAR *_pcATCmd) +{ + if(HIDO_NULL == _pcATCmd) + { + return HIDO_ERR; + } + + l_bRunATCmd = HIDO_TRUE; + HIDO_UtilSnprintf(l_acRunATCmdBuff, sizeof(l_acRunATCmdBuff), _pcATCmd); + + return HIDO_OK; +} -- Gitblit v1.9.3