SCL编程手册(C/C++)
简介
本篇章介绍SCL接口api使用,主要头文件是SCL目录下的头文件。
源文件组织结构
.
├── base
│ └── BsdClient.h
├── board
│ ├── Backlight.h
│ ├── Beep.h
│ ├── BoardEventDefine.h
│ ├── board.h
│ ├── CommuParam.h
│ ├── Cpu.h
│ ├── Device.h
│ ├── FbImage.h
│ ├── Flash.h
│ ├── Keyboard.h
│ ├── LedLamp.h
│ ├── SerialPort.h
│ ├── TimeZone.h
│ ├── Touch.h
│ └── Usb.h
├── net
│ ├── NetEventDefine.h
│ ├── NetT4G.h
│ ├── NetTcommon.h
│ ├── netT.h
│ └── NetTwifi.h
├── pb
│ ├── bipc.pb.h
│ ├── ibox.search.pb.h
│ ├── pb.h
│ ├── sysd.manager.pb.h
│ ├── sysd.notify.pb.h
│ ├── sysd.shell.pb.h
│ └── udp2g.pb.h
├── scl.h
├── serach
│ ├── ProtoFrame.h
│ ├── SearchClient.h
│ └── SearchServer.h
├── shell
│ └── shell.h
└── udev
├── UdevClient.h
├── UdevEventDefine.h
└── UsbInputDevice.h
准备工作
Windows
下载SDK压缩包,解压到你的工程目录或者其余任意目录
检查目录中是否包含上述内容
Linux
下载SDK压缩包,解压到你的工程目录或者其余任意目录
检查目录中是否包含上述内容
SDK说明
WeconCNC SDK使用统一的命名空间scl
背光管理接口类型定义
FUNC_ON_BACKLIGHT_INFO:是一个回调函数类型,它主要用于处理背光的相关信息。
using FUNC_ON_BACKLIGHT_INFO = std::function<int(const BACKLIGHT_INFO_T &stBackLightInfo, void *lpParameter)>;
*FUNC_ON_BACKLIGHT_STATUS *: 是一个回调函数类型,它用于处理背光的开关状态。
using FUNC_ON_BACKLIGHT_STATUS = std::function<int(const bool &bBacklightStatus, void *lpParameter)>;
BACKLIGHT_INFO_T:定义了与背光设置相关的多个参数,用于控制和管理显示设备的背光状态。
bool bEnable{false}; /*true 启用定时熄暗屏功能, false 常亮*/
int nBacklightTime{1200}; /*熄暗屏幕时间,单位:秒*/
int nBacklightBrightness{100}; /*背光亮度值*/
int nMaxBacklight{100}; /*只读- 用于查看当前系统允许配置的最大亮度值*/
背光运行模式
enum {
BL_RUN_MODE_STOP = 0, //stop
BL_RUN_MODE_START = 1 << 0, //start
};
背光管理接口
backlightEnable
定义:int backlightEnable(const bool bEnable);
说明:启用定时熄暗屏功能
参数:【IN】bEnable - 是否启用定时熄暗屏功能。true 启用定时熄暗屏功能,false 常亮。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool bEnable = false;
int ret = scl::backlightEnable(bEnable);
if (ret == 0) {
printf("Backlight is successfully disabled.\n");
} else {
printf("Failed to disable backlight.\n");
}
|
backlightTime
定义:int backlightTime(const int nBacklightTime);
说明:熄暗屏幕时间
参数:【IN】nBacklightTime - 设置熄暗屏幕的时间,单位为秒。nBacklightTime 为 0 表示常亮,不进行定时熄暗。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int nBacklightTime = 5;
if (scl::backlightTime(nBacklightTime) != 0) {
printf("Failed to set backlight time to %d seconds.\n", nBacklightTime);
} else {
printf("Backlight time set to %d seconds successfully.\n", nBacklightTime);
}
|
backlightBrightness
定义:int backlightBrightness(const int nBacklightBrightness);
说明:设置背光亮度值
参数:【IN】nBacklightBrightness - 设置背光亮度值,取值范围通常是 0 到 100,其中 0 表示最暗,100 表示最亮。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int nBacklightBrightness = 80;
int ret = backlightBrightness(nBacklightBrightness);
if (ret == 0) {
printf("Backlight brightness set to %d%% successfully.\n", nBacklightBrightness);
} else {
printf("Failed to set backlight brightness to %d%%. Error code: %d\n", nBacklightBrightness, ret);
}
|
getMaxBacklight
定义:int getMaxBacklight(int &nMaxBacklight);
说明:获取系统允许的最大背光亮度值。
参数:【OUT】nMaxBacklight - 用于存储系统允许的最大背光亮度值。
返回值:返回 0 表示成功,其registerBacklightStatusCallBack他返回值表示错误。
示例:
| int nMaxBacklight = 0;
int ret = getMaxBacklight(nMaxBacklight);
if (ret == 0) {
printf("Max backlight brightness is: %d\n", nMaxBacklight);
} else {
printf("Failed to get max backlight brightness. Error code: %d\n", ret);
}
|
registerBacklightStatusCallBack
定义:int registerBacklightStatusCallBack(const std::string &sCallBackFuncId, FUNC_ON_BACKLIGHT_STATUS onBacklightStatus, void *lpParameter, bool bTrigger);
说明:该函数用于注册一个回调函数,以获取背光状态的更新(背光亮或熄灭)。通过回调函数,系统会在背光状态改变时通知调用者。
参数:【IN】sCallBackFuncId - 回调函数的标识符,用于唯一标识注册的回调函数。
【IN】onBacklightStatus - 回调函数指针,该函数会在背光状态发生变化时被调用。回调函数的类型为 FUNC_ON_BACKLIGHT_STATUS。
【IN】lpParameter - 附加参数,用于传递给回调函数。用户可以自定义该参数的内容。
【IN】bTrigger - 一个布尔值,指示是否在注册时立即触发一次回调。true 表示立即触发回调,false 表示等待背光状态发生变化时再触发。
具体数据类型请参见FUNC_ON_BACKLIGHT_STATUS
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "TestBackLight";
std::string additionalInfo = "TestParameter";
FUNC_ON_BACKLIGHT_STATUS onBacklightStatus = [](const bool &bBacklightStatus, void *lpParameter) -> int {
std::string *paramStr = static_cast<std::string*>(lpParameter);
std::cout << "Backlight status changed: " << (bBacklightStatus ? "ON" : "OFF") << std::endl;
std::cout << "Additional info: " << *paramStr << std::endl;
return 0;
};
int ret = registerBacklightStatusCallBack(callbackId, onBacklightStatus, &additionalInfo, true);
if (ret == 0) {
std::cout << "Callback function registered successfully." << std::endl;
} else {
std::cerr << "Failed to register callback function. Error code: " << ret << std::endl;
}
getchar();
|
unRegisterBacklightStatusCallBack
定义:int unRegisterBacklightStatusCallBack(const std::string &sCallBackFuncId);
说明:该函数用于取消注册已经注册的背光状态回调函数。
参数:【IN】sCallBackFuncId - 回调函数的唯一标识符,用于指定要注销的回调函数。该标识符应与注册回调时提供的一致。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "TestBackLight";
int ret = unRegisterBacklightStatusCallBack(callbackId);
if (ret == 0) {
std::cout << "Successfully unregistered backlight callback with ID: " << callbackId << std::endl;
} else {
std::cerr << "Failed to unregister backlight callback. Error code: " << ret << std::endl;
}
|
getBacklightStatus
定义:int getBacklightStatus(bool &bBacklightStatus);
说明:该函数用于获取当前背光的状态,判断背光是否处于开启状态。
参数:【OUT】bBacklightStatus - 背光状态,true 表示背光亮起,false 表示背光关闭。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool bBacklightStatus = false;
int ret = getBacklightStatus(bBacklightStatus);
if (ret == 0) {
std::cout << "Backlight Status: " << (bBacklightStatus ? "ON" : "OFF") << std::endl;
} else {
std::cerr << "Failed to retrieve backlight status. Error code: " << ret << std::endl;
}
|
updateBacklightOnTime
定义:int updateBacklightOnTime();
说明:该函数用于更新当前系统中的背光点亮时间(即背光保持开启的时间)。通过调用该函数,可以触发系统将当前的背光点亮时间参数刷新
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int ret = updateBacklightOnTime();
if (ret == 0) {
std::cout << "Backlight on-time updated successfully." << std::endl;
} else {
std::cerr << "Failed to update backlight on-time. Error code: " << ret << std::endl;
}
|
prohibitBacklit
定义:int prohibitBacklit(const bool bProhibit);
说明:该函数用于控制是否禁止触摸点亮背光功能。
参数:【IN】bProhibit - 控制背光禁止状态的布尔值。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool bProhibit = true;
int ret = prohibitBacklit(bProhibit);
if (ret == 0) {
std::cout << "Backlight operation prohibition set successfully." << std::endl;
} else {
std::cerr << "Failed to set backlight operation prohibition. Error code: " << ret << std::endl;
}
|
registerBacklightCallBack
定义:int registerBacklightCallBack(const std::string &sCallBackFuncId, FUNC_ON_BACKLIGHT_INFO onBacklightInfo, void *lpParameter, bool bTrigger);
说明:该函数用于注册一个背光状态变化的回调函数。当背光状态发生变化时,系统将自动调用注册的回调函数以执行相应的处理。
参数:【IN】sCallBackFuncId - 回调函数的唯一标识符,用于区分不同的回调函数。
【IN】onBacklightInfo - 指向回调函数的指针,类型为 FUNC_ON_BACKLIGHT_INFO,该回调函数将在背光状态变化时被触发。
【IN】lpParameter - 回调函数的用户自定义参数,在回调触发时传递给回调函数,允许传递上下文或附加信息。
【IN】bTrigger - 布尔值,表示是否立即触发一次回调:
具体数据类型请参见FUNC_ON_BACKLIGHT_INFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "TestBacklightCallback";
BACKLIGHT_INFO_T info;
FUNC_ON_BACKLIGHT_INFO onBacklightInfo = [](const BACKLIGHT_INFO_T &stInfo, void *lpParameter) -> int {
std::cout << "Backlight callback triggered." << std::endl;
std::cout << " Enable: " << (stInfo.bEnable ? "true" : "false") << "\n"
<< " Time: " << stInfo.nBacklightTime << "\n"
<< " Brightness: " << stInfo.nBacklightBrightness << "\n";
return 0;
};
int ret = registerBacklightCallBack(callbackId, onBacklightInfo, &info, true);
if (ret == 0) {
std::cout << "Backlight callback registered successfully." << std::endl;
} else {
std::cerr << "Failed to register backlight callback. Error code: " << ret << std::endl;
}
getchar();
|
unRegisterBacklightCallBack
定义:int unRegisterBacklightCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销之前注册的背光状态变化回调函数。
参数:【IN】sCallBackFuncId - 回调函数的唯一标识符,用于指定要注销的回调函数。该标识符应与注册回调时提供的一致。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "TestBacklightCallback";
int ret = unRegisterBacklightCallBack(callbackId);
if (ret == 0) {
std::cout << "Backlight callback unregistered successfully." << std::endl;
} else {
std::cerr << "Failed to unregister backlight callback. Error code: " << ret << std::endl;
}
|
setBacklightInfo
定义:int setBacklightInfo(const BACKLIGHT_INFO_T stBacklightInfo);
说明:该函数用于更新当前系统中的背光工作参数,包括是否启用定时熄暗屏功能、背光熄暗时间、背光亮度和最大亮度。
【IN】stBacklightInfo - 背光设置的结构体,包含背光相关的所有配置参数,具体包括:
bEnable (类型: bool): 启用或禁用定时熄暗屏功能。true 表示启用定时熄暗屏,false 表示禁用,即保持常亮。
nBacklightTime (类型: int): 背光熄暗前的保持时间,单位为秒。即屏幕保持亮起状态的时间,超时后会自动熄暗。
nBacklightBrightness (类型: int): 设置的背光亮度,取值范围为 0 到 nMaxBacklight。该值决定了屏幕的亮度强度。
nMaxBacklight (类型: int): 系统允许配置的最大背光亮度值,表示背光亮度的最大限制。
具体数据类型请参见BACKLIGHT_INFO_T数据类型。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| BACKLIGHT_INFO_T info;
info.bEnable = true;
info.nBacklightTime = 600;
info.nBacklightBrightness = 80;
info.nMaxBacklight = 100;
int ret = setBacklightInfo(info);
if (ret == 0) {
std::cout << "Backlight info set successfully." << std::endl;
} else {
std::cerr << "Failed to set backlight info. Error code: " << ret << std::endl;
}
|
getBacklightInfo
定义:int getBacklightInfo(BACKLIGHT_INFO_T &stBacklightInfo);
说明:该函数用于获取当前背光工作的相关参数信息。它将通过引用传递的 stBacklightInfo 参数返回背光的工作状态、亮度等信息。
参数:[OUT] stBacklightInfo - 用于传递背光信息的结构体,函数会填充该结构体中的字段(如背光状态、亮度等信息)。结构体类型为 BACKLIGHT_INFO_T。
具体数据类型请参见BACKLIGHT_INFO_T数据类型。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| BACKLIGHT_INFO_T info;
int ret = getBacklightInfo(info);
if (ret == 0) {
std::cout << "Backlight info retrieved successfully." << std::endl;
std::cout << " Enable: " << (info.bEnable ? "true" : "false") << "\n"
<< " Time: " << info.nBacklightTime << "\n"
<< " Brightness: " << info.nBacklightBrightness << "\n"
<< " Max Brightness: " << info.nMaxBacklight << "\n";
} else {
std::cerr << "Failed to retrieve backlight info. Error code: " << ret << std::endl;
}
|
backlightOn
定义:int backlightOn(bool bOn);
说明:该函数用于控制背光的开启或关闭。根据传入的参数 bOn,如果 bOn 为 true,则强制开启背光;如果 bOn 为 false,则强制关闭背光。
参数:[IN] bOn - 布尔值,用于指定背光的目标状态。true:开启背光。false:关闭背光。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool bOn = true;
int ret = backlightOn(bOn);
if (ret == 0) {
std::cout << "Backlight turned on successfully." << std::endl;
} else {
std::cerr << "Failed to turn on backlight. Error code: " << ret << std::endl;
}
|
isDeviceLcdBacklightExist
定义:int isDeviceLcdBacklightExist(bool &bExist);
说明:该函数用于检查设备是否存在 LCD 背光。如果设备支持 LCD 背光,bExist 将被设置为 true,否则设置为 false
参数:[OUT] bExist: 这是一个布尔类型的引用参数,用于存储设备是否存在 LCD 背光的结果。如果设备存在 LCD 背光,bExist 将被设置为 true,否则设置为 false。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool bExist = false;
int ret = isDeviceLcdBacklightExist(bExist);
if (ret == 0) {
std::cout << "Device LCD backlight existence check successful: " << (bExist ? "Exists" : "Does not exist") << std::endl;
} else {
std::cerr << "Failed to check backlight existence. Error code: " << ret << std::endl;
}
|
setBacklightRunMode
定义:int setBacklightRunMode(const int bRunMode = BL_RUN_MODE_START);
说明:该函数用于设置背光的运行模式。可以指定背光的启用或停用模式。默认情况下,函数将背光设置为启动模式。通过传入参数 bRunMode,可以选择停止或启动背光的工作状态。
参数:[IN] bRunMode: 背光运行模式。该参数是一个整数,表示要设置的背光运行模式,具体取值可以是:
BL_RUN_MODE_STOP(0):表示停止背光。
BL_RUN_MODE_START(1):表示启动背光。
具体数据类型请参见背光运行模式的枚举定义
默认值:BL_RUN_MODE_START(1),表示默认情况下启动背光。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int runMode = BL_RUN_MODE_START;
int ret = setBacklightRunMode(runMode);
if (ret == 0) {
std::cout << "Backlight run mode set to START successfully." << std::endl;
} else {
std::cerr << "Failed to set backlight run mode. Error code: " << ret << std::endl;
}
|
蜂鸣器接口类型定义
FUNC_ON_BEEP_INFO:是一个回调函数类型,它主要用于处理蜂鸣器的相关信息。
using FUNC_ON_BEEP_INFO = std::function<int(const BEEPINFO &stBeepInfo, void *lpParameter)>;
BEEP_INFO_T:用于描述蜂鸣器(Buzzer)的配置和状态信息。
bool bEnable{false}; /*按键蜂鸣功能开关,是否启用*/
bool bTouchEnable{false}; /*触摸蜂鸣开关,是否启用*/
int nDurationMs{100}; /*蜂鸣时长, 单位ms*/
int nBuzzerType{1}; /*内置频段类别选择*/
蜂鸣器相关接口
beepEnable
定义:int beepEnable(const bool bEnasetBeepInfoble);
说明:该函数用于控制蜂鸣功能是否启用。如果启用蜂鸣功能,设备将响起声音;如果禁用蜂鸣功能,设备将不发出声音。
参数:[IN] bEnable: 布尔值,表示是否启用蜂鸣功能。true 表示启用蜂鸣,false 表示禁用蜂鸣。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool enable = true;
int ret = beepEnable(enable);
if (ret == 0) {
std::cout << "Beep enabled successfully." << std::endl;
} else {
std::cerr << "Failed to enable beep. Error code: " << ret << std::endl;
}
|
beepTouchEnable
定义:int beepTouchEnable(const bool bTouchEnable);
说明:该函数用于启用或禁用触摸蜂鸣功能。如果启用,触摸屏操作时会触发蜂鸣声。
参数:[IN] bTouchEnable: 布尔值,表示是否启用触摸蜂鸣功能。true 表示启用,false 表示禁用。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool touchEnable = true;
int ret = beepTouchEnable(touchEnable);
if (ret == 0) {
std::cout << "Touch beep enabled successfully." << std::endl;
} else {
std::cerr << "Failed to enable touch beep. Error code: " << ret << std::endl;
}
|
beepDurationMs
定义:int beepDurationMs(const int nDurationMs);
说明:该函数用于设置蜂鸣的持续时长,单位为毫秒。设置后,蜂鸣会持续指定时长。
参数:[IN] nDurationMs: 蜂鸣持续的时长(单位:毫秒)。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int durationMs = 500;
int ret = beepDurationMs(durationMs);
if (ret == 0) {
std::cout << "Beep duration set successfully." << std::endl;
} else {
std::cerr << "Failed to set beep duration. Error code: " << ret << std::endl;
}
|
beepBuzzerType
定义:int beepBuzzerType(const int nBuzzerType);
说明:该函数用于设置蜂鸣器的频段类型,可以选择不同类型的蜂鸣器声调。
参数:[IN] nBuzzerType: 蜂鸣器类型。具体类型依据设备的定义进行选择。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int buzzerType = 1;
int ret = beepBuzzerType(buzzerType);
if (ret == 0) {
std::cout << "Beep buzzer type set successfully." << std::endl;
} else {
std::cerr << "Failed to set buzzer type. Error code: " << ret << std::endl;
}
|
setBeepInfo
定义:int setBeepInfo(const BEEPINFO stBeepInfo);
说明:该函数用于设置蜂鸣器的工作参数。通过该接口,用户可以传递一个结构体 BEEPINFO,设置蜂鸣器的详细参数。
参数:[IN] stBeepInfo: 一个 BEEPINFO 结构体,包含蜂鸣器的相关设置。
具体数据类型请参见BEEPINFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| BEEPINFO beepInfo;
beepInfo.bEnable = true;
beepInfo.nDurationMs = 500;
beepInfo.nBuzzerType = 1;
int ret = setBeepInfo(beepInfo);
if (ret == 0) {
std::cout << "Beep info set successfully." << std::endl;
} else {
std::cerr << "Failed to set beep info. Error code: " << ret << std::endl;
}
|
getBeepInfo
定义:int getBeepInfo(BEEPINFO &stBeepInfo);
说明:该函数用于获取蜂鸣器当前的工作参数,将当前参数通过 BEEPINFO 结构体返回。
参数:[OUT] stBeepInfo: 一个 BEEPINFO 结构体,函数将当前蜂鸣器参数填充到该结构体中。
具体数据类型请参见BEEPINFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| BEEPINFO beepInfo;
int ret = getBeepInfo(beepInfo);
if (ret == 0) {
std::cout << "Beep info retrieved successfully: " << std::endl;
std::cout << "Enable: " << beepInfo.bEnable << std::endl;
std::cout << "Duration: " << beepInfo.nDurationMs << " ms" << std::endl;
std::cout << "Buzzer Type: " << beepInfo.nBuzzerType << std::endl;
} else {
std::cerr << "Failed to get beep info. Error code: " << ret << std::endl;
}
|
beep
定义:int beep(bool bOn);
说明:该函数用于控制蜂鸣器是否发声。传入 true 时,蜂鸣器开始发声,传入 false 时,蜂鸣器停止发声。
参数:[IN] bOn: 布尔值,true 表示蜂鸣器开始发声,false 表示停止蜂鸣器发声。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool on = true;
int ret = beep(on);
if (ret == 0) {
std::cout << "Beep started successfully." << std::endl;
} else {
std::cerr << "Failed to start beep. Error code: " << ret << std::endl;
}
|
beepEx
定义:int beepEx(bool bOn, int nDurationMs, int nBuzzerType);
说明:该函数用于控制蜂鸣器的发声,并且可以指定发声的持续时长和蜂鸣器类型。
参数:[IN] bOn: 布尔值,true 表示蜂鸣器开始发声,false 表示停止蜂鸣器发声。
[IN] nDurationMs: 蜂鸣器发声的持续时长(单位:毫秒)。
[IN] nBuzzerType: 蜂鸣器的类型,控制发声的频段类型。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool on = true;
int durationMs = 300;
int buzzerType = 1;
int ret = beepEx(on, durationMs, buzzerType);
if (ret == 0) {
std::cout << "Temporary beep started successfully." << std::endl;
} else {
std::cerr << "Failed to start temporary beep. Error code: " << ret << std::endl;
}
|
registerBeepCallBack
定义:int registerBeepCallBack(const std::string &sCallBackFuncId, FUNC_ON_BEEP_INFO onBeepInfo, void *lpParameter, bool bTrigger);
说明:该函数用于注册蜂鸣回调函数。当系统检测到蜂鸣状态变化时,会触发回调函数。
参数:[IN] sCallBackFuncId: 回调函数的唯一标识符,用于标识和管理回调函数。
[IN] onBeepInfo: 回调函数,类型为 FUNC_ON_BEEP_INFO,用于处理蜂鸣状态变化。
[IN] lpParameter: 回调函数的附加参数, 用于传递给回调函数的上下文信息。
[IN] bTrigger: 布尔值,表示是否在注册时立即触发回调。true 表示立即触发,false 表示不触发。
具体数据类型请参见FUNC_ON_BEEP_INFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "TestBeepCallback";
std::string additionalInfo = "Callback Test";
FUNC_ON_BEEP_INFO callback = [](const BEEPINFO &stBeepInfo, void *lpParameter) -> int {
std::string *param = static_cast<std::string *>(lpParameter);
std::cout << "Beep callback triggered." << std::endl;
std::cout << "Additional info: " << *param << std::endl;
std::cout << "Beep Info - Enable: " << stBeepInfo.bEnable
<< ", Duration: " << stBeepInfo.nDurationMs
<< ", Buzzer Type: " << stBeepInfo.nBuzzerType << std::endl;
return 0;
};
int ret = registerBeepCallBack(callbackId, callback, &additionalInfo, true);
if (ret == 0) {
std::cout << "Beep callback registered successfully." << std::endl;
} else {
std::cerr << "Failed to register beep callback. Error code: " << ret << std::endl;
}
getchar();
|
unRegisterBeepCallBack
定义:int unRegisterBeepCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销之前注册的蜂鸣回调函数。
参数:[IN] sCallBackFuncId: 回调函数的唯一标识符,用于指定要注销的回调函数。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "TestBeepCallback";
int ret = unRegisterBeepCallBack(callbackId);
if (ret == 0) {
std::cout << "Beep callback unregistered successfully." << std::endl;
} else {
std::cerr << "Failed to unregister beep callback. Error code: " << ret << std::endl;
}
|
isDeviceBeepExist
定义:int isDeviceBeepExist(bool &bExist);
说明:该函数用于检查设备是否支持蜂鸣功能。如果设备支持蜂鸣功能,bExist 参数会被设置为 true,否则为 false。
参数:[OUT] bExist: 布尔值,返回设备是否支持蜂鸣功能。true 表示支持,false 表示不支持。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool exist = false;
int ret = isDeviceBeepExist(exist);
if (ret == 0) {
std::cout << "Device beep existence check completed: " << (exist ? "Exists" : "Does not exist") << std::endl;
} else {
std::cerr << "Failed to check device beep existence. Error code: " << ret << std::endl;
}
|
串口接口类型定义
SERIALMODE:是一个串口模式枚举,它主要用来定义不同的串口通信模式。
typedef enum tag_SerialMode{
UART_RS485 = 0,
UART_RS422 = 1,/*The above two mode are used together with the incoming serial port path*/
COM1_MODE_232 = 2,
COM1_MODE_485 = 3,
COM1_MODE_422 = 4,
COM1_MODE_TTL = 5,
COM1_MODE_485_2 = 6,
COM1_MODE_422_2 = 7,
COM1_MODE_TTL_2 = 8,
COM1_MODE_485_3 = 9,
COM1_MODE_422_3 = 10,
COM1_MODE_TTL_3 = 11,
COM2_MODE_232 = 12,
COM2_MODE_485 = 13,
COM2_MODE_422 = 14,
COM2_MODE_TTL = 15,
COM2_MODE_485_2 = 16,
COM2_MODE_422_2 = 17,
COM2_MODE_TTL_2 = 18,
COM3_MODE_485 = 19,
COM4_MODE_485 = 20,
COM5_MODE_485 = 21,
COM6_MODE_485 = 22,
COM7_MODE_485 = 23,
COM7_MODE_422 = 24,
COM_TOTAL_NUM,
}SERIAL_MODE;
using SERIALMODE = SERIAL_MODE;
PARITY_MODE:是一个枚举类型,用来表示串口通信中的校验方式。
typedef enum {
PARITY_MODE_NONE = 0, // 无校验
PARITY_MODE_ODD, // 奇校验
PARITY_MODE_EVEN, // 偶校验
PARITY_MODE_SPACE, // 空格校验
} PARITY_MODE;
UARTBAUDINFO:用来存储串口的波特率配置及其它串口参数
int nBaudrate; // 波特率
int nStopBit; // 停止位
int nDataBit; // 数据位
int nCheckBit; // 校验位
uartbaudinfo_tag(){
nBaudrate = 115200; // 默认波特率 115200
nStopBit = 1; // 默认停止位 1
nDataBit = 8; // 默认数据位 8
nCheckBit = PARITY_MODE_NONE; // 默认无校验
}
串口接口
serialOpen
定义:int serialOpen(const UARTBAUDINFO stUartBaudInfo, SERIALMODE emSerialMode = COM1_MODE_422);
说明:该函数用于打开串口设备,并根据指定的波特率、数据位、停止位、校验位以及串口模式进行配置。
参数:[IN] stUartBaudInfo: 包含串口配置的结构体(波特率、数据位、停止位、校验位等信息)。
[IN] emSerialMode: 串口工作模式,默认为 COM1_MODE_232,其他模式可以通过枚举 SERIALMODE 设置。
具体数据类型请参见UARTBAUDINFO和SERIALMODE
返回值:返回 文件描述符(fd),如果打开成功则为有效文件描述符,其他返回值表示错误。
示例:
| UARTBAUDINFO baudInfo;
baudInfo.nBaudrate = 9600;
baudInfo.nStopBit = 1;
baudInfo.nDataBit = 8;
baudInfo.nCheckBit = scl::PARITY_MODE_NONE;
SERIALMODE serialMode = scl::COM1_MODE_232;
int fd = serialOpen(baudInfo, serialMode);
if (fd < 0) {
std::cerr << "Failed to open serial port!" << std::endl;
return;
}
std::cout << "Serial port opened successfully, fd: " << fd << std::endl;
|
serialBaudConfig
定义:int serialBaudConfig(int fd, const UARTBAUDINFO stUartBaudInfo);
说明:该函数用于配置已打开串口的波特率、数据位、停止位和校验位。
参数:[IN] fd: 打开的串口文件描述符。
[IN] stUartBaudInfo: 包含波特率、数据位、停止位和校验位等配置参数的结构体。
具体数据类型请参见UARTBAUDINFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int configResult = serialBaudConfig(fd, baudInfo);
if (configResult != 0) {
std::cerr << "Failed to configure baud rate!" << std::endl;
serialClose(fd);
return;
}
std::cout << "Baud rate configured successfully." << std::endl;
|
serialWrite
定义:int serialWrite(int fd, const void *buf, int len);
说明:该函数用于向已打开的串口写入数据。
参数:[IN] fd: 打开的串口文件描述符。
[IN] buf: 要写入的数据缓冲区。
[IN] len: 要写入的字节数。
返回值:返回实际写入的字节数。如果写入成功且字节数为正值,表示成功,其他返回值表示错误。
示例:
| const char *writeData = "Hello, Serial Port!";
int writeLen = serialWrite(fd, writeData, strlen(writeData));
if (writeLen < 0) {
std::cerr << "Failed to write data to serial port!" << std::endl;
serialClose(fd);
return;
}
std::cout << "Data written to serial port: " << writeData << std::endl;
|
serialRead
定义:int serialRead(const int fd, void *buf, int nsize, int nTimeoutMs);
说明:该函数用于从串口读取数据,并在指定超时的情况下返回。
参数:[IN] fd: 打开的串口文件描述符。
[OUT] buf: 数据存储的缓冲区。
[IN] nsize: 要读取的字节数。
[IN] nTimeoutMs: 超时时间(毫秒),会在时间结束后结束读取操作。
返回值:返回实际读取的字节数,其他返回值表示错误。
示例:
| char readBuffer[256];
memset(readBuffer, 0, sizeof(readBuffer));
int readLen = serialRead(fd, readBuffer, sizeof(readBuffer), 5000);
if (readLen > 0) {
std::cout << "Data read from serial port: " << readBuffer << std::endl;
} else if (readLen == 0) {
std::cout << "No data received within timeout period." << std::endl;
} else {
std::cerr << "Failed to read data from serial port!" << std::endl;
}
|
serialRead
定义:int serialRead(const int fd, void *buf, int nsize);
说明:该函数用于从串口读取数据,并阻塞等待,直到读取指定的字节数。
参数:[IN] fd: 打开的串口文件描述符。
[OUT] buf: 数据存储的缓冲区。
[IN] nsize: 要读取的字节数。
返回值:返回实际读取的字节数,其他返回值表示错误。
示例:
| char readBuffer[256];
memset(readBuffer, 0, sizeof(readBuffer));
int readLen = serialRead(fd, readBuffer, sizeof(readBuffer));
if (readLen > 0) {
std::cout << "Data read from serial port: " << readBuffer << std::endl;
} else if (readLen == 0) {
std::cout << "No data received within timeout period." << std::endl;
} else {
std::cerr << "Failed to read data from serial port!" << std::endl;
}
|
serialClose
定义:void serialClose(int fd);
说明:该函数用于关闭已打开的串口。
参数:[IN] fd: 打开的串口文件描述符。
返回值:无
示例:
CPU相关接口
getCpuTemperature
定义:int getCpuTemperature(std::string &sTemperature);
说明:该函数用于获取当前设备的 CPU 温度,并将其存储在 sTemperature 字符串中。
参数:[OUT] sTemperature: 输出参数,返回获取到的 CPU 温度值
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sTemperature;
if (scl::getCpuTemperature(sTemperature) < 0) {
printf("get cpu temperature failed \n");
} else {
printf("cpu temperature is %s \n", sTemperature.c_str());
}
|
getCpuDominantFrequency
定义:int getCpuDominantFrequency(std::string &sFrequency);
说明:该函数用于获取当前设备 CPU 的主频率,并将其存储在 sFrequency 字符串中。
参数:[OUT] sFrequency: 输出参数,返回获取到的 CPU 主频率值。
返回值:返回 0 表示成功,其他返回值表示错误。
87人脉, 】、87示例:
| std::string sFrequency;
if (scl::getCpuDominantFrequency(sFrequency) < 0) {
printf("get cpu dominant frequency failed \n");
} else {
printf("cpu dominant frequency is %s \n", sFrequency.c_str());
}
|
getCpuId
定义:int getCpuId(std::string &sCpuId);
说明:该函数用于获取当前设备的 CPU ID,并将其存储在 sCpuId 字符串中。
参数:[OUT] sCpuId: 输出参数,返回获取到的 CPU ID。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sCpuId;
if (scl::getCpuId(sCpuId) < 0) {
printf("get cpu id failed \n");
} else {
printf("cpu id is %s \n", sCpuId.c_str());
}
|
USB监测相关接口类型定义
UDEV_TYPE_T:是一个枚举类型,它主要用于标识不同类别的设备。
typedef enum{
UDEV_TYPE_UNKOWN,
/* input device */
UDEV_TYPE_INPUT = 100,
UDEV_TYPE_INPUT_KEYBOARD,
UDEV_TYPE_INPUT_MOUSE,
UDEV_TYPE_INPUT_SCANNER,
UDEV_TYPE_INPUT_END,
/* block device */
UDEV_TYPE_BLOCK = 200,
UDEV_TYPE_BLOCK_UDISK,
UDEV_TYPE_BLOCK_SDCARD,
UDEV_TYPE_BLOCK_EMMC,
UDEV_TYPE_BLOCK_END,
/* net device */
UDEV_TYPE_NET = 300,
UDEV_TYPE_NET_ETH,
UDEV_TYPE_NET_WIFI,
UDEV_TYPE_NET_4G,
UDEV_TYPE_NET_CAN,
UDEV_TYPE_NET_END,
UDEV_TYPE_MAX
}UDEV_TYPE_T;
NOTIFY_FUNCTIONS_T:包含两个函数指针,用于处理设备添加和设备移除事件的通知回调。这个结构体可以用来注册回调函数,当系统检测到用户设备的添加或移除时,可以自动调用这些回调函数来处理相应的逻辑。
int (*pfOnUserDeviceAdd)(const USER_DEVICE_INFO_T &userDeviceInfo, void *lpParameter);
int (*pfOnUserDeviceRemove)(const USER_DEVICE_INFO_T &userDeviceInfo, void *lpParameter);
USER_DEVICE_INFO_T :它包含了三个不同类型的成员。主要用于封装与用户设备相关的信息。具体来说,它将设备事件、挂载结果以及 USB 设备信息存储在一个结构体中,方便在程序中管理和处理这些信息。
typedef struct{
UDEV_EVENT_T udevEvent;
MOUNT_RESULT_T mntResult;
USB_DEVINFO_T usbDevInfo;
}USER_DEVICE_INFO_T;
USB监测相关接口
subscribeEvent
定义:int subscribeEvent(vector &vecSubscribeUdevType, const string &sCallBackFuncId, const NOTIFY_FUNCTIONS_T& notifyFunctions, void *lpParameter);
说明:该函数用于订阅设备事件,注册设备类型及其对应的通知回调函数。订阅的设备类型会在发生相应事件时触发通知回调函数。
参数:[IN] vecSubscribeUdevType: 设备类型列表,表示需要订阅的设备类型。
[IN] sCallBackFuncId: 回调函数标识符,用于指定回调函数的 ID。
[IN] notifyFunctions: 用于接收设备事件的通知回调函数集合。
[IN] lpParameter: 传递给回调函数的参数。
具体数据类型请参见UDEV_TYPE_T和NOTIFY_FUNCTIONS_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int OnUdiskAdd(const scl::USER_DEVICE_INFO_T& userDeviceInfo, void *lpParameter){
printf("OnUdiskAdd sDevNode=[%s] sMountPoint=[%s] nMountExitCode=[%d]\n",
userDeviceInfo.udevEvent.sDevNode.c_str(),
userDeviceInfo.mntResult.sMntPoint.c_str(),
userDeviceInfo.mntResult.nExitCode);
return 0;
}
int OnUdiskRemove(const scl::USER_DEVICE_INFO_T& userDeviceInfo, void *lpParameter){
printf("OnUdiskRemove sDevNode=[%s] sMountPoint=[%s] nMountExitCode=[%d]\n",
userDeviceInfo.udevEvent.sDevNode.c_str(),
userDeviceInfo.mntResult.sMntPoint.c_str(),
userDeviceInfo.mntResult.nExitCode);
return 0;
}
int nRet = 0;
scl::CUdevClient notifyClient;
scl::NOTIFY_FUNCTIONS_T notifyFunc;
notifyFunc.pfOnUserDeviceAdd = OnUdiskAdd;
notifyFunc.pfOnUserDeviceRemove = OnUdiskRemove;
std::vector<scl::UDEV_TYPE_T> vecSubscribeUdevType(8);
std::vector<scl::USER_DEVICE_INFO_T> vecUserDeviceInfo;
vecSubscribeUdevType[0] = UDEV_TYPE_INPUT;
vecSubscribeUdevType[1] = UDEV_TYPE_INPUT_KEYBOARD;
vecSubscribeUdevType[2] = UDEV_TYPE_INPUT_MOUSE;
vecSubscribeUdevType[3] = UDEV_TYPE_INPUT_SCANNER;
vecSubscribeUdevType[4] = UDEV_TYPE_BLOCK;
vecSubscribeUdevType[5] = UDEV_TYPE_BLOCK_UDISK;
vecSubscribeUdevType[6] = UDEV_TYPE_BLOCK_SDCARD;
vecSubscribeUdevType[7] = UDEV_TYPE_BLOCK_EMMC;
std::string callbackId = "subscribeEvent";
nRet = notifyClient.subscribeEvent(vecSubscribeUdevType, callbackId, notifyFunc, nullptr);
if (nRet != 0) {
printf("Failed to subscribe to events, error code: %d\n", nRet);
return;
}
|
getExistDevices
定义:int getExistDevices(vector &vecUdevType, vector &vecUserDeviceInfo);
说明:该函数用于取消订阅已注册的设备事件。通过提供设备类型列表和回调函数标识符来取消订阅。
参数:[IN] vecSubscribeUdevType: 需要取消订阅的设备类型列表。
[IN] sCallBackFuncId: 回调函数标识符,用于指定要取消订阅的回调函数。
具体数据类型请参见UDEV_TYPE_T和USER_DEVICE_INFO_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int OnUdiskAdd(const scl::USER_DEVICE_INFO_T& userDeviceInfo, void *lpParameter){
printf("OnUdiskAdd sDevNode=[%s] sMountPoint=[%s] nMountExitCode=[%d]\n",
userDeviceInfo.udevEvent.sDevNode.c_str(),
userDeviceInfo.mntResult.sMntPoint.c_str(),
userDeviceInfo.mntResult.nExitCode);
return 0;
}
int OnUdiskRemove(const scl::USER_DEVICE_INFO_T& userDeviceInfo, void *lpParameter){
printf("OnUdiskRemove sDevNode=[%s] sMountPoint=[%s] nMountExitCode=[%d]\n",
userDeviceInfo.udevEvent.sDevNode.c_str(),
userDeviceInfo.mntResult.sMntPoint.c_str(),
userDeviceInfo.mntResult.nExitCode);
return 0;
}
int nRet = 0;
scl::CUdevClient notifyClient;
scl::NOTIFY_FUNCTIONS_T notifyFunc;
notifyFunc.pfOnUserDeviceAdd = OnUdiskAdd;
notifyFunc.pfOnUserDeviceRemove = OnUdiskRemove;
std::vector<scl::UDEV_TYPE_T> vecSubscribeUdevType(8);
std::vector<scl::USER_DEVICE_INFO_T> vecUserDeviceInfo;
vecSubscribeUdevType[0] = UDEV_TYPE_INPUT;
vecSubscribeUdevType[1] = UDEV_TYPE_INPUT_KEYBOARD;
vecSubscribeUdevType[2] = UDEV_TYPE_INPUT_MOUSE;
vecSubscribeUdevType[3] = UDEV_TYPE_INPUT_SCANNER;
vecSubscribeUdevType[4] = UDEV_TYPE_BLOCK;
vecSubscribeUdevType[5] = UDEV_TYPE_BLOCK_UDISK;
vecSubscribeUdevType[6] = UDEV_TYPE_BLOCK_SDCARD;
vecSubscribeUdevType[7] = UDEV_TYPE_BLOCK_EMMC;
std::string callbackId = "subscribeEvent";
nRet = notifyClient.subscribeEvent(vecSubscribeUdevType, callbackId, notifyFunc, nullptr);
if (nRet != 0) {
printf("Failed to subscribe to events, error code: %d\n", nRet);
return;
}
nRet = notifyClient.getExistDevices(vecSubscribeUdevType, vecUserDeviceInfo);
if (nRet != 0) {
printf("notifyClient.getExistDevices Error, nRet is %d\n", nRet);
return;
}
for (const scl::USER_DEVICE_INFO_T& deviceInfo : vecUserDeviceInfo) {
if (scl::UDEV_ACTION_ADD == deviceInfo.udevEvent.action) {
printf("dir %s:\n", deviceInfo.mntResult.sMntPoint.c_str());
}
}
|
getExistDevices (带回调函数版本)
定义:int getExistDevices(vector &vecUdevType, const NOTIFY_FUNCTIONS_T& notifyFunctions, void *lpParameter);
说明:该函数用于获取当前系统中已存在的设备信息,遍历符合vecUdevType类型的设备,逐个触发回调函数
参数:[IN] vecUdevType: 设备类型列表,用于过滤和查询设备信息。
[IN] notifyFunctions: 用于接收设备信息变化的回调函数集合。
[IN] lpParameter: 传递给回调函数的参数。
具体数据类型请参见UDEV_TYPE_T和NOTIFY_FUNCTIONS_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int OnUdiskAdd(const scl::USER_DEVICE_INFO_T& userDeviceInfo, void *lpParameter){
printf("OnUdiskAdd sDevNode=[%s] sMountPoint=[%s] nMountExitCode=[%d]\n",
userDeviceInfo.udevEvent.sDevNode.c_str(),
userDeviceInfo.mntResult.sMntPoint.c_str(),
userDeviceInfo.mntResult.nExitCode);
return 0;
}
int nRet = 0;
scl::CUdevClient notifyClient;
scl::NOTIFY_FUNCTIONS_T notifyFunc;
notifyFunc.pfOnUserDeviceAdd = OnUdiskAdd;
notifyFunc.pfOnUserDeviceRemove = OnUdiskRemove;
std::vector<scl::UDEV_TYPE_T> vecSubscribeUdevType(8);
std::vector<scl::USER_DEVICE_INFO_T> vecUserDeviceInfo;
vecSubscribeUdevType[0] = UDEV_TYPE_INPUT;
vecSubscribeUdevType[1] = UDEV_TYPE_INPUT_KEYBOARD;
vecSubscribeUdevType[2] = UDEV_TYPE_INPUT_MOUSE;
vecSubscribeUdevType[3] = UDEV_TYPE_INPUT_SCANNER;
vecSubscribeUdevType[4] = UDEV_TYPE_BLOCK;
vecSubscribeUdevType[5] = UDEV_TYPE_BLOCK_UDISK;
vecSubscribeUdevType[6] = UDEV_TYPE_BLOCK_SDCARD;
vecSubscribeUdevType[7] = UDEV_TYPE_BLOCK_EMMC;
std::string callbackId = "subscribeEvent";
nRet = notifyClient.getExistDevices(vecSubscribeUdevType, notifyFunc, nullptr);
if (nRet != 0) {
printf("notifyClient.getExistDevices Error, nRet is %d\n", nRet);
return;
}
|
Flash相关接口
getFlashEraseCount
定义:int getFlashEraseCount(int &nEraseCount);
说明:该函数用于根据设备类型查询具体的设备信息,并将设备信息返回给调用者。
参数:[OUT] nEraseCount:存储获取到的Flash擦除次数,返回时此参数将被更新为当前的擦除次数。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int nEraseCount = 0;
if (scl::getFlashEraseCount(nEraseCount) < 0) {
printf("get flash erase count failed\n");
} else {
printf("flash erase count is %d\n", nEraseCount);
}
|
getFlashWriteCount
定义:int getFlashWriteCount(int &nWriteCount);
说明:该函数用于获取当前系统中Flash的写入次数。通过该函数可以查询并获取Flash的写入次数,写入次数影响Flash的使用寿命。
参数:[OUT] nWriteCount:存储获取到的Flash写入次数,返回时此参数将被更新为当前的写入次数。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int nWriteCount = 0;
if (scl::getFlashWriteCount(nWriteCount) < 0) {
printf("get flash write count failed\n");
} else {
printf("flash write count is %d\n", nWriteCount);
}
|
网络相关接口类型定义
PARAMNET_NODE:用于表示网络节点的配置和状态。它包含了网络设备的基础配置信息、运行状态以及诊断参数。
std::string sDevName;//="eth0" 当前网络节点
std::string sNetType;//="ETH" 网络类型:ETH \WIFI \4G
std::string sDhcp;//使用dhcp还是静态ip配置,"enable" -- dhcp, "disable" --静态ip
std::string sMac;//mac地址 ="E6:AA:50:02:DA:40"
std::string sIpAddr;//ip地址 ="192.168.50.66"
std::string sLan1Ip;//集线器,拓展的子网卡 ip
std::string sLan2Ip;//集线器,拓展的子网卡 ip
std::string sSubnetMask;//子网掩码="255.255.255.0"
std::string sGateway;//网关="192.168.50.1"
std::string sPrefDns;//域名服务器地址="192.168.32.3"
std::string sAlterDns;//备用域名服务器地址
std::string sWifiApMode;/*wifi ap模式功能是否开启*/
std::string sSsid;//配置wifi的ssid
std::string sPasswd;//配置wifi的密码
std::string sSecureMode;//配置wifi的认证模式
std::string sFunction;//网络是否开启 --ifconfig up/down
int nCheckErrNum{0};
int nCheckNtpTime{1}; //检测ntp间隔次数
int nNtpTime{0};
bool bNetNormal{false};
bool bIntranet{false};/*指示内网是否连通*/
int nMetric;
int nInitStartDhcp{-1};
int nEthLinkStatus{-1}; /*指示网线是否插着 0插着,小于0 已拔出*/
int nWifiLinkStatus{-1}; /*0 - up, 1 down, -1 无wifi设备*/
int nWifiStatus{-1};/*指示wifi当前连接的状态信息,如:密码出错*/
NET_COMMU_PACKET_INFO:用于描述网络通信过程中与数据包传输相关的统计信息。该结构体的主要用途是监控网络通信性能,提供有关数据包延迟和丢包率的统计数据。
int nMaxPacketTransTime{-1};
int nMinPacketTransTime{9999};
int nAvgPacketTransTime{-1};
int nLostPackagePercentage{0};
FUNC_ON_GET_NETWORK_DIAGNO:代表了一类用于获取网络诊断信息的回调函数或处理函数。
using FUNC_ON_GET_NETWORK_DIAGNO = std::function<int(std::vector<NET_DIAGNO_RESULT> &stNetDiagnoResult, void *lpParameter)>;
NET_DIAGNO_RESULT: 是一个用于表示网络诊断结果的结构体,它封装了关于设备的诊断信息,包括设备类型、名称、错误码及详细的通信信息。
std::string sDeviceType; /*诊断的设备类型*/
std::string sDeviceName; /*诊断的设备名称*/
unsigned int nErrorCode; /*错误码*/
std::string sDefaultErrorInfo;/*默认错误信息*/
NET_COMMU_PACKET_INFO stNetCommuPacketInfo; /*网卡超时信息*/
网络相关接口
registerNetInfoCallBack
定义:int registerNetInfoCallBack(const std::string &sCallBackFuncId, FUNC_ON_NET_COMMON_INFO onNetCommonInfo, void *lpParameter, bool bExeImmediate=false);
说明:该函数用于远程调用接口,获取当前网络相关信息
参数:[IN] sCallBackFuncId:该标识符用于标识回调函数,便于后续的取消注册操作。
[IN] onNetCommonInfo:一个回调函数,类型为 FUNC_ON_NET_COMMON_INFO,该函数会处理网络信息,并接收 NET_INFO 对象作为参数。
[IN] lpParameter:可以传递任何自定义的额外信息,在回调函数中使用。
[IN] bExeImmediate:表示是否立即执行回调。默认为 false,即不立即执行回调,等待网络信息更新触发回调。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int onNetCommonInfoHandler(NET_INFO &stNetInfo, void *lpParameter) {
std::cout << "Device Name: " << stNetInfo.sDeviceName << "\n";
std::cout << "IP Address: " << stNetInfo.sIp << "\n";
std::cout << "Net Mask: " << stNetInfo.sNetMask << "\n";
std::cout << "Gateway: " << stNetInfo.sGateWay << "\n";
std::cout << "MAC Address: " << stNetInfo.sMacAddr << "\n";
return 0;
}
std::string callbackId = "registerNetInfoCallBack";
FUNC_ON_NET_COMMON_INFO callback = onNetCommonInfoHandler;
bool executeImmediate = true;
int result = registerNetInfoCallBack(callbackId, callback, nullptr, executeImmediate);
if (result == 0) {
std::cout << "Callback registered successfully with ID: " << callbackId << "\n";
} else {
std::cerr << "Failed to register callback. Error code: " << result << "\n";
}
getchar();
|
unRegisterNetInfoCallBack
定义:int unRegisterNetInfoCallBack(const std::string &sCallBackFuncId);
说明:该函数用于取消之前通过 registerNetInfoCallBack 注册的回调函数。通过指定回调函数的标识符来注销相应的回调。
参数:[IN] sCallBackFuncId:回调函数的唯一标识符(字符串类型)。需要取消注册的回调函数的标识符,应该与注册时使用的 sCallBackFuncId 相匹配。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "registerNetInfoCallBack";
int result = unRegisterNetInfoCallBack(callbackId);
if (result == 0) {
std::cout << "Callback unregistered successfully for ID: " << callbackId << "\n";
} else {
std::cerr << "Failed to unregister callback. Error code: " << result << "\n";
}
|
registerAllNetInfoCallBack
定义:int registerAllNetInfoCallBack(const std::string &sCallBackFuncId, FUNC_ON_GET_ALL_NET_INFO onGetAllNetInfo, void *lpParameter, bool bExeImmediate=false);
说明:该函数用于主动获取当前设备的全部网卡信息。
参数:[IN] listNtpServer: 一个字符串列表 (std::list)。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int onGetAllNetInfoHandler(std::vector<PARAMNET_NODE> &stNetInfo, void *lpParameter) {
std::cout << "Retrieved Network Information:\n";
for (const auto &netNode : stNetInfo) {
std::cout << "Device Name: " << netNode.sDevName << "\n";
std::cout << "Network Type: " << netNode.sNetType << "\n";
std::cout << "IP Address: " << netNode.sIpAddr << "\n";
std::cout << "Subnet Mask: " << netNode.sSubnetMask << "\n";
std::cout << "Gateway: " << netNode.sGateway << "\n";
std::cout << "-----------------------------------\n";
}
return 0;
}
std::string callbackId = "registerAllNetInfoCallBack";
int result = registerAllNetInfoCallBack(callbackId, onGetAllNetInfoHandler, nullptr, true);
if (result == 0) {
std::cout << "Callback registered and executed immediately\n";
} else {
std::cerr << "Failed to register callback\n";
}
getchar();
|
unRegisterAllNetInfoCallBack
定义:int unRegisterAllNetInfoCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销回调函数。通过指定回调函数的标识符来注销相应的回调。
参数:[IN] listNtpServer: 一个字符串列表 (std::list)。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "registerAllNetInfoCallBack";
int result = unRegisterAllNetInfoCallBack(callbackId);
if (result == 0) {
std::cout << "Callback unregistered successfully for ID: " << callbackId << "\n";
} else {
std::cerr << "Failed to unregister callback. Error code: " << result << "\n";
}
|
getAllNetInfo
定义:int getAllNetInfo(std::vector &vecAllNetInfo);
说明:该函数用于获取当前系统中所有网络接口的信息,并将结果存储在提供的 vecAllNetInfo 容器中。每个网卡的信息会以 scl::PARAMNET_NODE 结构体的形式返回。
参数:[OUT] vecAllNetInfo: 用于存储所有网卡信息的容器,函数会填充此容器,包含每个网卡的详细信息。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::vector<scl::PARAMNET_NODE> allNetInfo;
int result = scl::getAllNetInfo(allNetInfo);
if (result == 0) {
std::cout << "Successfully retrieved all network information." << std::endl;
for (const auto &netInfo : allNetInfo) {
std::cout << "Device Name: " << netInfo.sDevName << std::endl;
std::cout << "Network Type: " << netInfo.sNetType << std::endl;
std::cout << "DHCP: " << netInfo.sDhcp << std::endl;
std::cout << "MAC Address: " << netInfo.sMac << std::endl;
std::cout << "IP Address: " << netInfo.sIpAddr << std::endl;
std::cout << "Lan1 IP: " << netInfo.sLan1Ip << std::endl;
std::cout << "Lan2 IP: " << netInfo.sLan2Ip << std::endl;
std::cout << "Subnet Mask: " << netInfo.sSubnetMask << std::endl;
std::cout << "Gateway: " << netInfo.sGateway << std::endl;
std::cout << "Primary DNS: " << netInfo.sPrefDns << std::endl;
std::cout << "Alternate DNS: " << netInfo.sAlterDns << std::endl;
std::cout << "Wifi AP Mode: " << netInfo.sWifiApMode << std::endl;
std::cout << "SSID: " << netInfo.sSsid << std::endl;
std::cout << "Password: " << netInfo.sPasswd << std::endl;
std::cout << "Security Mode: " << netInfo.sSecureMode << std::endl;
std::cout << "Function: " << netInfo.sFunction << std::endl;
std::cout << "Check Error Number: " << netInfo.nCheckErrNum << std::endl;
std::cout << "NTP Time Check Interval: " << netInfo.nCheckNtpTime << std::endl;
std::cout << "NTP Time: " << netInfo.nNtpTime << std::endl;
std::cout << "Network Normal: " << (netInfo.bNetNormal ? "Yes" : "No") << std::endl;
std::cout << "Intranet: " << (netInfo.bIntranet ? "Yes" : "No") << std::endl;
std::cout << "Metric: " << netInfo.nMetric << std::endl;
std::cout << "DHCP Start Status: " << netInfo.nInitStartDhcp << std::endl;
std::cout << "Ethernet Link Status: " << netInfo.nEthLinkStatus << std::endl;
std::cout << "Wi-Fi Link Status: " << netInfo.nWifiLinkStatus << std::endl;
std::cout << "Wi-Fi Status: " << netInfo.nWifiStatus << std::endl;
}
} else {
std::cerr << "Failed to retrieve all network information. Error code: " << result << std::endl;
}
|
isNetUp
定义:int isNetUp(const std::string &sDeviceName);
说明:该函数用于获取指定网卡的网络状态,判断该网卡是否处于启用状态。
参数:[IN] sDeviceName: 网络设备名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
int result = scl::isNetUp(deviceName);
if (result == 0) {
std::cout << "Network device " << deviceName << " is up." << std::endl;
} else if (result == 1) {
std::cout << "Network device " << deviceName << " is down." << std::endl;
} else {
std::cerr << "Error occurred while checking network device " << deviceName << ". Error code: " << result << std::endl;
}
|
netDeviceUp
定义:int netDeviceUp(const std::string &sDeviceName);
说明:该函数用于开启指定网卡设备,使其启用。
参数:[IN] sDeviceName: 要开启的网卡设备名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
int result = scl::netDeviceUp(deviceName);
if (result == 0) {
std::cout << "Network device " << deviceName << " is up successfully." << std::endl;
} else {
std::cerr << "Error occurred while bringing up network device " << deviceName << ". Error code: " << result << std::endl;
}
|
netIsExist
定义:int netIsExist(const std::string &sDeviceName);
说明:该函数用于检查指定的网络设备是否存在。
参数:[IN] sDeviceName:要检查的设备名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
int result = scl::netIsExist(deviceName);
if (result == 0) {
std::cout << "Network device " << deviceName << " exists." << std::endl;
} else {
std::cerr << "Network device " << deviceName << " does not exist. Error code: " << result << std::endl;
}
|
isNetDeviceDhcp
定义:int isNetDeviceDhcp(const std::string &sDeviceName);
说明:该函数用于检查指定的网络设备是否使用 DHCP 协议。
参数:[IN] sDeviceName:要检查的设备名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sDeviceName = "eth0";
int nRnt = scl::isNetDeviceDhcp(sDeviceName);
switch (nRnt) {
case 0:
printf("ip is Dynamic\n");
break;
case 1:
printf("ip is static\n");
break;
default:
printf("get net status failed\n");
break;
}
|
startDhcp
定义:int startDhcp(const std::string &sDeviceName);
说明:该函数用于启动指定网络设备的 DHCP 功能。
参数:[IN] sDeviceName:要检查的设备名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
int result = startDhcp(deviceName);
if (result == 0) {
std::cout << "DHCP started for device " << deviceName << "." << std::endl;
} else {
std::cerr << "Error occurred while starting DHCP for device " << deviceName << ". Error code: " << result << std::endl;
}
|
stopDhcp
定义:int stopDhcp(const std::string &sDeviceName);
说明:该函数用于关闭指定网络设备的 DHCP 功能,切换为静态 IP 配置。
参数:[IN] sDeviceName:要关闭 DHCP 的设备名称(如 "eth0")。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
int result = stopDhcp(deviceName);
if (result == 0) {
std::cout << "DHCP stopped for device " << deviceName << "." << std::endl;
} else {
std::cerr << "Error occurred while stopping DHCP for device " << deviceName << ". Error code: " << result << std::endl;
}
|
getMacAddr
定义:int getMacAddr(const std::string &sDeviceName, std::string &sMacAddr);
说明:该函数用于获取指定网络设备的 MAC 地址。
参数:[IN] sDeviceName:要查询 MAC 地址的设备名称。
[OUT] sMacAddr:返回的 MAC 地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
std::string macAddr;
int result = getMacAddr(deviceName, macAddr);
if (result == 0) {
std::cout << "MAC address for device " << deviceName << " is: " << macAddr << std::endl;
} else {
std::cerr << "Error occurred while retrieving MAC address for device " << deviceName << ". Error code: " << result << std::endl;
}
|
setMacAddr
定义:int setMacAddr(const std::string &sDeviceName, const std::string &sMacAddr);
说明:该函数用于设置指定网络设备的 MAC 地址。
参数:[IN] sDeviceName:要设置 MAC 地址的设备名称。
[IN] sMacAddr:要设置的 MAC 地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
std::string macAddr = "00:11:22:33:44:55";
int result = setMacAddr(deviceName, macAddr);
if (result == 0) {
std::cout << "MAC address for device " << deviceName << " set to: " << macAddr << std::endl;
} else {
std::cerr << "Error occurred while setting MAC address for device " << deviceName << ". Error code: " << result << std::endl;
}
|
setIp
定义:int setIp(const std::string &sDeviceName, const std::string &sIp, const std::string &sNetMask, const std::string &sGateWay);
说明:该函数用于设置设备的IP地址、子网掩码和网关。
参数:[IN] sDeviceName: 设备名称。
[IN] sIp: 需要设置的IP地址。
[IN] sNetMask: 需要设置的子网掩码。
[IN] sGateWay: 需要设置的网关地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
std::string ip = "192.168.1.100";
std::string netMask = "255.255.255.0";
std::string gateway = "192.168.1.1";
int result = setIp(deviceName, ip, netMask, gateway);
if (result == 0) {
std::cout << "IP configuration for device " << deviceName << " set successfully." << std::endl;
} else {
std::cerr << "Error occurred while setting IP configuration for device " << deviceName << ". Error code: " << result << std::endl;
}
|
getIp
定义:int getIp(const std::string &sDeviceName, std::string &sIp, std::string &sNetMask, std::string &sGateWay);
说明:该函数用于获取设备的IP地址、子网掩码和网关。
参数:[IN] sDeviceName: 设备名称。
[OUT] sIp: 返回设备的IP地址。
[OUT] sNetMask: 返回设备的子网掩码。
[OUT] sGateWay: 返回设备的网关地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
std::string ip, netMask, gateway;
int result = getIp(deviceName, ip, netMask, gateway);
if (result == 0) {
std::cout << "IP configuration for device " << deviceName << " is:" << std::endl;
std::cout << "IP: " << ip << ", NetMask: " << netMask << ", Gateway: " << gateway << std::endl;
} else {
std::cerr << "Error occurred while getting IP configuration for device " << deviceName << ". Error code: " << result << std::endl;
}
|
getDns
定义:int getDns(const std::string &sDeviceName, std::string &sDnsPrimary, std::string &sDnsSecondary);
说明:该函数用于获取设备的DNS地址。
参数:[IN] sDeviceName: 设备名称。
[OUT] sDnsPrimary: 返回设备的主DNS地址。
[OUT] sDnsSecondary: 返回设备的次DNS地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
std::string dnsPrimary, dnsSecondary;
int result = getDns(deviceName, dnsPrimary, dnsSecondary);
if (result == 0) {
std::cout << "DNS configuration for device " << deviceName << " is:" << std::endl;
std::cout << "Primary DNS: " << dnsPrimary << ", Secondary DNS: " << dnsSecondary << std::endl;
} else {
std::cerr << "Error occurred while getting DNS configuration for device " << deviceName << ". Error code: " << result << std::endl;
}
|
setDns
定义:int setDns(const std::string &sDeviceName, const std::string &sDnsPrimary, const std::string &sDnsSecondary);
说明:该函数用于设置设备的DNS地址。
参数:[IN] sDeviceName: 设备名称。
[IN] sDnsPrimary: 需要设置的主DNS地址。
[IN] sDnsSecondary: 需要设置的次DNS地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
std::string dnsPrimary = "8.8.8.8";
std::string dnsSecondary = "8.8.4.4";
int result = setDns(deviceName, dnsPrimary, dnsSecondary);
if (result == 0) {
std::cout << "DNS configuration for device " << deviceName << " set successfully." << std::endl;
} else {
std::cerr << "Error occurred while setting DNS configuration for device " << deviceName << ". Error code: " << result << std::endl;
}
|
checkEthCableLink
定义:int checkEthCableLink(const std::string &SCARD_ATTR_DEVICE_SYSTEM_NAME);
说明:该函数用于检查以太网连接是否正常。
参数:[IN] SCARD_ATTR_DEVICE_SYSTEM_NAME: 设备名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceName = "eth0";
int result = checkEthCableLink(deviceName);
if (result == 0) {
std::cout << "Ethernet cable is properly linked for device: " << deviceName << std::endl;
} else {
std::cerr << "Failed to check ethernet cable link for device: " << deviceName << ". Error code: " << result << std::endl;
}
|
setNetServerAddr
定义:int setNetServerAddr(const std::string &sMqttAddr);
说明:该函数用于配置 MQTT 服务连接地址。
参数:[IN] sMqttAddr: MQTT 服务的连接地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string mqttAddr = "mqtt://localhost:1883";
int result = setNetServerAddr(mqttAddr);
if (result == 0) {
std::cout << "MQTT server address successfully set to: " << mqttAddr << std::endl;
} else {
std::cerr << "Failed to set MQTT server address. Error code: " << result << std::endl;
}
|
setNetServerAddr
定义:int setNetServerAddr(const std::string &sMqttAddr);
说明:该函数用于获取mqtt服务器的地址。
参数:[IN] sMqttAddr: MQTT 服务的连接地址。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string mqttAddr;
int result = getNetServerAddr(mqttAddr);
if (result == 0) {
std::cout << "Default network server address is: " << mqttAddr << std::endl;
} else {
std::cerr << "Failed to get the default network server address. Error code: " << result << std::endl;
}
|
netTping
定义:int netTping(const std::string &sDeviceName, const std::string &sDomainName, const std::string &sDestIp,NET_COMMU_PACKET_INFO &stNetCommuPacketInfo, bool bExeCmd = false,int nMaxPack = 1);
说明:该函数用于对指定设备执行 Ping 操作,并返回网络包的传输时间信息(包括最大、最小、平均时间及丢包率)。支持指定域名和目标 IP 地址进行测试。
参数:[IN] sDeviceName:表示网络设备名称(如 "eth0")。
[IN] sDomainName:表示需要 Ping 的域名(如 "example.com")。
[IN] sDestIp:表示需要 Ping 的目标 IP 地址(如 "192.168.1.1")。
[OUT] stNetCommuPacketInfo:返回 Ping 包的传输信息,包括最大、最小、平均时间及丢包率。
[IN] bExeCmd:可选,表示是否执行 Ping 命令,默认为 false。
[IN] nMaxPack:可选,表示最大 Ping 包数量,默认为 1。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| NET_COMMU_PACKET_INFO netPingInfo;
std::string deviceName = "eth0";
std::string domainName = "example.com";
std::string destIp = "192.168.1.1";
bool executeCommand = true;
int maxPacket = 5;
int result = netTping(deviceName, domainName, destIp, netPingInfo, executeCommand, maxPacket);
if (result == 0) {
std::cout << "Ping success!" << std::endl;
std::cout << "Max Transmit Time: " << netPingInfo.nMaxPacketTransTime << " ms" << std::endl;
std::cout << "Min Transmit Time: " << netPingInfo.nMinPacketTransTime << " ms" << std::endl;
std::cout << "Average Transmit Time: " << netPingInfo.nAvgPacketTransTime << " ms" << std::endl;
std::cout << "Lost Packet Percentage: " << netPingInfo.nLostPackagePercentage << " %" << std::endl;
} else {
std::cerr << "Ping failed! Error code: " << result << std::endl;
}
|
getDevPriority
定义:int getDevPriority(std::string &sDeviceType);
说明:该函数用于获取当前网络上云的最高优先级网卡的设备类型。
参数:[OUT] sDeviceType:返回当前最高优先级的网络设备类型。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceType;
int result = getDevPriority(deviceType);
if (result == 0) {
std::cout << "Highest priority network card: " << deviceType << std::endl;
} else {
std::cerr << "Failed to get device priority. Error code: " << result << std::endl;
}
|
setDevPriority
定义:int setDevPriority(const std::string &sDeviceType);
说明:该函数用于设置当前网络上云的最高优先级网卡。需要注意,当网络切换到 4G 时,外部网络可能无法访问或 Ping 通以太网。
参数:[IN] sDeviceType:指定要设置为最高优先级的网络设备类型。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceType = "eth0";
int result = setDevPriority(deviceType);
if (result == 0) {
std::cout << "Device priority successfully set to: " << deviceType << std::endl;
} else {
std::cerr << "Failed to set device priority. Error code: " << result << std::endl;
}
|
getNetDeviceName
定义:int getNetDeviceName(const std::string &sDeviceType, std::vector &vecDeviceName);
说明:该函数用于根据网卡类型获取对应的节点名称列表。
参数:[IN] sDeviceType:表示网卡类型。
[OUT] vecDeviceName:返回对应网卡类型的节点名称列表。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string deviceType = "ETH";
std::vector<std::string> deviceNames;
int result = getNetDeviceName(deviceType, deviceNames);
if (result == 0) {
std::cout << "Device names for type '" << deviceType << "':" << std::endl;
for (const auto &name : deviceNames) {
std::cout << "- " << name << std::endl;
}
} else {
std::cerr << "Failed to get device names. Error code: " << result << std::endl;
}
|
getCurrNetDevice
定义:int getCurrNetDevice(std::string &sDeviceName);
说明:该函数用于获取当前正在使用的网络设备名称。
参数:[OUT] sDeviceName:返回对应网卡类型的节点名称列表。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string currentDeviceName;
int result = getCurrNetDevice(currentDeviceName);
if (result == 0) {
std::cout << "Current internet device: " << currentDeviceName << std::endl;
} else {
std::cerr << "Failed to get current internet device. Error code: " << result << std::endl;
}
|
startEthNetDiagnoCallBackup
定义:int startEthNetDiagnoCallBackup(FUNC_ON_GET_NETWORK_DIAGNO getEthNetDiagnoFunc, void *lpParameter, bool bPing = true);
说明:该函数用于启动以太网网络故障诊断。
参数:[IN] getEthNetDiagnoFunc: 一个回调函数,当诊断完成时调用此函数处理结果。
[IN] lpParameter: 用户自定义的参数,会传递给回调函数。
[IN] bPing: 指示是否进行 Ping 测试,默认为 true,表示进行 Ping 测试。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int endNetDiagno(std::vector<scl::NETDIAGNORESULT>& stNetDiagnoResult, void* lpParameter) {
std::vector<scl::NETDIAGNORESULT>& vecNetDiagno = getNetDiagno();
vecNetDiagno = stNetDiagnoResult;
for (scl::NETDIAGNORESULT& diagnoResult : vecNetDiagno) {
printf("============================\n");
printf("device name:%s\nerror code:%d\nerror info:%s\n",
diagnoResult.sDeviceName.c_str(), diagnoResult.nErrorCode, diagnoResult.sDefaultErrorInfo.c_str());
printf("ping time info:\nMax Packet TransTime is %d\nMin Packet TransTime is %d\nAvg Packet TransTime is %d\nLost Package Percentage is %d%c\n",
diagnoResult.stNetCommuPacketInfo.nMaxPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nAvgPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nLostPackagePercentage, '%');
}
return 0;
}
int nRnt = startEthNetDiagnoCallBackup(&endNetDiagno, nullptr);
if (0 != nRnt) {
printf("error: ETH\n");
} else {
printf("diagno succ, please wait\n");
}
getchar();
|
startWifiNetDiagnoCallBackup
定义:int startWifiNetDiagnoCallBackup(FUNC_ON_GET_NETWORK_DIAGNO getWifiNetDiagnoFunc, void *lpParameter, bool bPing = true);
说明:该函数用于启动 WiFi 网络故障诊断。
参数:[IN] getWifiNetDiagnoFunc: 一个回调函数,当诊断完成时调用此函数处理结果。
[IN] lpParameter: 用户自定义的参数,会传递给回调函数。
[IN] bPing: 指示是否进行 Ping 测试,默认为 true,表示进行 Ping 测试。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int endNetDiagno(std::vector<scl::NETDIAGNORESULT>& stNetDiagnoResult, void* lpParameter) {
std::vector<scl::NETDIAGNORESULT>& vecNetDiagno = getNetDiagno();
vecNetDiagno = stNetDiagnoResult;
for (scl::NETDIAGNORESULT& diagnoResult : vecNetDiagno) {
printf("============================\n");
printf("device name:%s\nerror code:%d\nerror info:%s\n",
diagnoResult.sDeviceName.c_str(), diagnoResult.nErrorCode, diagnoResult.sDefaultErrorInfo.c_str());
printf("ping time info:\nMax Packet TransTime is %d\nMin Packet TransTime is %d\nAvg Packet TransTime is %d\nLost Package Percentage is %d%c\n",
diagnoResult.stNetCommuPacketInfo.nMaxPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nMinPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nAvgPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nLostPackagePercentage, '%');
}
return 0;
}
int ret = startWifiNetDiagnoCallBackup(&endNetDiagno, nullptr);
if (ret == 0) {
std::cout << "WiFi network diagnostic started successfully!" << std::endl;
} else {
std::cout << "WiFi network diagnostic failed to start!" << std::endl;
}
getchar();
|
start4gNetDiagnoCallBackup
定义:int start4gNetDiagnoCallBackup(FUNC_ON_GET_NETWORK_DIAGNO get4gNetDiagnoFunc, void *lpParameter, bool bPing = true);
说明:该函数用于启动 4G 网络故障诊断。
参数:[IN] get4gNetDiagnoFunc: 一个回调函数,当诊断完成时调用此函数处理结果。
[IN] lpParameter: 用户自定义的参数,会传递给回调函数。
[IN] bPing: 指示是否进行 Ping 测试,默认为 true,表示进行 Ping 测试。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int endNetDiagno(std::vector<scl::NETDIAGNORESULT>& stNetDiagnoResult, void* lpParameter) {
std::vector<scl::NETDIAGNORESULT>& vecNetDiagno = getNetDiagno();
vecNetDiagno = stNetDiagnoResult;
for (scl::NETDIAGNORESULT& diagnoResult : vecNetDiagno) {
printf("============================\n");
printf("device name:%s\nerror code:%d\nerror info:%s\n",
diagnoResult.sDeviceName.c_str(), diagnoResult.nErrorCode, diagnoResult.sDefaultErrorInfo.c_str());
printf("ping time info:\nMax Packet TransTime is %d\nMin Packet TransTime is %d\nAvg Packet TransTime is %d\nLost Package Percentage is %d%c\n",
diagnoResult.stNetCommuPacketInfo.nMaxPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nMinPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nAvgPacketTransTime,
diagnoResult.stNetCommuPacketInfo.nLostPackagePercentage, '%');
}
return 0;
}
int nRnt = start4gNetDiagnoCallBackup(&endNetDiagno, nullptr);
if (0 != nRnt) {
printf("error: 4G\n");
} else {
printf("diagno succ, please wait\n");
}
|
显示配置接口类型定义
SCREEN_PARAM_INFO_T:是一个结构体,定义了液晶屏幕(LCD)或显示屏的相关配置参数。它包含多个字段,用于描述屏幕的尺寸、位深、显示位置以及其他与屏幕显示相关的设置。
int nScreenWidth{800};
int nScreenHigh{480};
int nScreenBits{1}; /*位数*/
int nScreensize{1024}; /*屏幕的总大小(字节)*/
int nBytesPerLine{100}; /*计算一行的大小(LCD一行字节数量)*/
int nDisplayPosX{100}; /*显示在X坐标位置*/
int nDisplayPosY{100}; /*显示在Y坐标位置*/
bool bScale{false}; /*启用 缩放*/
DISPLAY_MODE:是一个枚举类型,定义了不同的显示模式。这个枚举类型用于标识显示设备的分辨率。
typedef enum euDisPlayMode{
DMODE_720P = 1,
DMODE_1080P = 2,
}DISPLAY_MODE;
ANGLE_MODE:是一个枚举类型,表示显示屏或图像的旋转角度。
typedef enum euDisPlayMode{
DMODE_720P = 1,
DMODE_1080P = 2,
}DISPLAY_MODE;
显示配置接口
showImage
定义:int showImage(const std::string &sImagePath, bool bMultiGraphLoopDisplay = false);
说明:该函数用于显示指定路径的图像文件。可以选择是否循环显示多个图像。
参数:[IN] sImagePath:要显示的图像文件路径。
[IN] bMultiGraphLoopDisplay:是否循环显示多个图像,默认为 false。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string imagePath = "mnt/data/test.png";
bool multiGraphLoopDisplay = false;
int result = scl::showImage(imagePath, multiGraphLoopDisplay);
if (result == 0) {
std::cout << "showImage succeeded!" << std::endl;
} else {
std::cout << "showImage failed with error code: " << result << std::endl;
}
|
loadLcdConf2Ini
定义:int loadLcdConf2Ini(const std::string &sLcdInfoFileName, const std::string &sIniFileName);
说明:该函数用于将 LCD 配置信息从指定文件加载并保存到 INI 格式的配置文件中。
参数:[IN] sLcdInfoFileName:LCD 配置信息源文件路径。
[IN] sIniFileName:目标 INI 配置文件路径。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string lcdInfoFileName = "path/to/your/lcd_info_file.txt";
std::string iniFileName = "path/to/your/config.ini";
int result = scl::loadLcdConf2Ini(lcdInfoFileName, iniFileName);
if (result == 0) {
std::cout << "loadLcdConf2Ini succeeded!" << std::endl;
} else {
std::cout << "loadLcdConf2Ini failed with error code: " << result << std::endl;
}
|
getFbScreenParam
定义:int getFbScreenParam(SCREEN_PARAM_INFO_T &stScreenParam);
说明:该函数用于获取当前液晶显示屏的分辨率和其他参数信息。
参数:[OUT] stScreenParam:存储获取到的液晶显示屏参数信息的结构体。
具体数据类型请参见SCREEN_PARAM_INFO_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::SCREENPARAM screenParam;
if (0 == scl::getFbScreenParam(screenParam)) {
printf("screen width is %d\nscreen high is %d\nscreen bits is %d\nscreen size if%d\n\
number of bytes in one line of LCD is %d\nnDisplay is (%d , %d)\n", screenParam.nScreenWidth,
screenParam.nScreenHigh, screenParam.nScreenBits, screenParam.nScreensize, screenParam.nBytesPerLine, screenParam.nDisplayPosX,
screenParam.nDisplayPosY);
}
else {
printf("get LCD resolution parameters failed\n");
}
|
setDisplayMode
定义:int setDisplayMode(DISPLAY_MODE euDisMode, ANGLE_MODE euAngleMode = AM_0);
说明:该函数用于设置显示模式,包括分辨率和显示的旋转角度。
参数:[IN] euDisMode:要设置的显示模式。
[IN] euAngleMode:显示的旋转角度,默认为 AM_0(不旋转)。
具体数据类型请参见DISPLAY_MODE和ANGLE_MODE
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int nDisplayMode = (int)scl::DMODE_1080P;
int nAngleMode = (int)scl::AM_0;
if (0 != scl::setDisplayMode((scl::euDisPlayMode)nDisplayMode, (scl::enAngleMode)nAngleMode)) {
printf("set mode failed\n");
} else {
printf("set mode succeeded\n");
}
|
键盘设备管理接口类型定义
UARTBAUDINFO:是一个用于配置串口(UART)通信速率、数据位、停止位和校验位的结构体。这个结构体在初始化时提供了默认的串口配置参数,方便在串口通信中快速应用这些配置。
int nBaudrate;
int nStopBit;
int nDataBit;
int nCheckBit;
uartbaudinfo_tag(){
nBaudrate = 115200;
nStopBit = 1;
nDataBit = 8;
nCheckBit = PARITY_MODE_NONE;
}
SERIALMODE:是一个枚举类型,定义了不同的串口通信模式。该枚举类型包含了多种串口模式的选项,涵盖了常见的串口通信标准,例如 RS-232、RS-485、RS-422 以及 TTL 等多种通信协议和电气接口标准。
typedef enum tag_SerialMode{
UART_RS485 = 0,
UART_RS422 = 1,/*The above two mode are used together with the incoming serial port path*/
COM1_MODE_232 = 2,
COM1_MODE_485 = 3,
COM1_MODE_422 = 4,
COM1_MODE_TTL = 5,
COM1_MODE_485_2 = 6,
COM1_MODE_422_2 = 7,
COM1_MODE_TTL_2 = 8,
COM1_MODE_485_3 = 9,
COM1_MODE_422_3 = 10,
COM1_MODE_TTL_3 = 11,
COM2_MODE_232 = 12,
COM2_MODE_485 = 13,
COM2_MODE_422 = 14,
COM2_MODE_TTL = 15,
COM2_MODE_485_2 = 16,
COM2_MODE_422_2 = 17,
COM2_MODE_TTL_2 = 18,
COM_TOTAL_NUM,
}SERIAL_MODE;
using SERIALMODE = SERIAL_MODE;
KEYVALUE: 是一个枚举类型,它用于表示按键的不同状态或事件类型。此枚举定义了三种常见的按键状态,分别用于描述按键的状态变化
typedef enum keyValueType_tag{
KEY_VALUE_UP = 0,
KEY_VALUE_DOWN = 1,
KEY_VALUE_LONG_PRESS = 2,
}KEYVALUE;
键盘设备管理接口
startKeyboard
定义:int startKeyboard(const UARTBAUDINFO stUartBaudInfo, SERIALMODE emSerialMode = COM1_MODE_422_2, const std::string &sDevName = "SerialWKeyboard");
说明:该函数用于配置并启动串口键盘设备,设置键盘的速率、串口模式和设备名称。
参数:[IN] stUartBaudInfo:串口速率信息,包括波特率、数据位、停止位、校验位等。
[IN] emSerialMode:串口模式(默认为 COM1_MODE_422_2)。
[IN] sDevName:设备名称(默认为 "SerialWKeyboard")。
具体数据类型请参见UARTBAUDINFO和SERIALMODE
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::UARTBAUDINFO uartConfig;
uartConfig.nBaudrate = 9600;
uartConfig.nStopBit = 1;
uartConfig.nDataBit = 8;
uartConfig.nCheckBit = 0;
scl::SERIAL_MODE serialMode = scl::COM1_MODE_232;
std::string devName = "SerialWKeyboard";
int result = scl::startKeyboard(uartConfig, serialMode, devName);
if (result == 0) {
std::cout << "Keyboard initialized successfully." << std::endl;
} else {
std::cout << "Failed to initialize keyboard. Error code: " << result << std::endl;
}
|
getKeyCodeStatus
定义:int getKeyCodeStatus(const int nKeyCode, KEYVALUE &emKeyValue);
说明:该函数用于获取指定按键的状态,返回按键的当前状态(按下、松开、长按等)。
参数:[IN] nKeyCode:指定的按键代码。
[OUT] emKeyValue:返回的按键状态类型,表示按键的当前状态(如按下、松开、长按)。
具体数据类型请参见KEYVALUE
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int keyCode = 1;
KEYVALUE keyStatus;
int result = getKeyCodeStatus(keyCode, keyStatus);
if (result == 0) {
if (keyStatus == KEY_VALUE_UP) {
std::cout << "Key " << keyCode << " is UP." << std::endl;
} else if (keyStatus == KEY_VALUE_DOWN) {
std::cout << "Key " << keyCode << " is DOWN." << std::endl;
} else if (keyStatus == KEY_VALUE_LONG_PRESS) {
std::cout << "Key " << keyCode << " is LONG PRESS." << std::endl;
}
} else {
std::cout << "Invalid key code or error occurred." << std::endl;
}
|
reportOriginKeyValue
定义:int reportOriginKeyValue(const bool bOriginKey);
说明:该函数用于配置是否上报原始按键值,启用时直接上报原始按键状态,关闭时上报转换后的按键值。
参数:[IN] bOriginKey:如果为 true,启用原始按键值上报;如果为 false,默认关闭,表示上报映射转换后的按键值。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int result = reportOriginKeyValue(false);
if (result == 0) {
std::cout << "Successfully disabled original key reporting, using mapped keys." << std::endl;
} else {
std::cout << "Failed to disable original key reporting." << std::endl;
}
|
定义:int getVinputDevConfName(std::vector &vecVinputName);
说明:该函数用于获取当前键盘设备的配置文件名,并将配置文件名列表存储在传入的容器中。
参数:[OUT] vecVinputName:返回的键盘设备配置文件名列表。每个元素是一个字符串,表示一个配置文件的名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::vector<std::string> deviceConfNames;
int result = getVinputDevConfName(deviceConfNames);
if (result == 0) {
std::cout << "Successfully retrieved keyboard device config names:" << std::endl;
for (const auto &confName : deviceConfNames) {
std::cout << confName << std::endl;
}
} else {
std::cout << "Failed to retrieve keyboard device config names." << std::endl;
}
|
盒子LED接口类型定义
lampMode:是一个枚举类型,用于定义 LED 灯的不同运行模式。
enum lampMode{
MODE_5,
MODE_8,
MODE_MAX,
};
lampRunType:举定义了 LED 灯的多种运行状态,适用于标识不同的系统和设备状态。
enum lampRunType {
Type_Business_Online, //business is normal of box
Type_Business_Online_Hmi, //business is normal of hmi
Type_Business_Offline, //business is`n normal
Type_Business_System, //business of system
Type_Mqtt_Online, //mqtt is online
Type_Mqtt_Offline, //mqtt is offline
Type_MqttAndNet_Offline, //mqtt is offline and net is`n normal
Type_Net_NoReg, //error: net is not register
Type_Net_NoSim, //error: Sim card is not inserted
Type_Net_NoSignal, //error: net is not signal
Type_Signal_1, //signal strength 1
Type_Signal_2, //signal strength 2
Type_Signal_3, //signal strength 3
Type_Signal_4, //signal strength 4
Type_Reset_Start, //reset button is press
Type_Reset_Stop, //reset button is up
Type_Reset_Success, //reset is success
Type_AllTwinkle, //twinkle all lamp exclude net and com
Type_ChangeMode, //change lamp show mode
Type_Test_Project, //project test all lamp group lamp
Type_Test_AllTwinkle, //project test all lamp twinkle
Type_Test_Stop, //project test all lamp twinkle dark
Type_FaultTypeMax
};
盒子LED接口
setLedLampMode
定义:int setLedLampMode(const lampMode & tagMode);
说明:该函数用于设置盒子LED灯的运行模式。
参数:[IN] tagMode:LED灯的运行模式,类型为 lampMode 枚举,定义了不同的LED灯模式。
具体数据类型请参见lampMode
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::lampMode mode = scl::MODE_8;
int ret = scl::setLedLampMode(mode);
if (ret != 0) {
printf("Failed to set LED lamp mode, error code: %d\n", ret);
}
else {
printf("Successfully set LED lamp mode.\n");
}
|
setLedLampStatus
定义:int setLedLampStatus(const lampRunType & tagStatus);
说明:该函数用于设置盒子LED灯的运行状态。
参数:[IN] tagStatus:LED灯的运行状态,类型为 lampRunType 枚举,定义了LED灯的不同运行状态。
具体数据类型请参见lampRunType
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::lampRunType status = scl::Type_AllTwinkle;
ret = scl::setLedLampStatus(status);
if (ret != 0) {
printf("Failed to set LED lamp status, error code: %d\n", ret);
}
else {
printf("Successfully set LED lamp status.\n");
}
|
协议数据打包与解包接口
package
定义:int package(const std::string& sProto, std::string& sPackage);
说明: 该函数用于将协议数据(字符串形式)打包成一个新的字符串。
参数:[IN] sProto: 协议数据的字符串。
[OUT] sPackage: 打包后的数据字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::CProtoFrame protoFrame;
std::string originalProto = "ExampleProtocolData";
std::string packagedData;
int ret = protoFrame.package(originalProto, packagedData);
if (ret != 0) {
printf("Failed to package data (string input), error code: %d\n", ret);
}
else {
printf("Successfully packaged data (string input): %s\n", packagedData.c_str());
}
|
unpackage
定义:int unpackage(const std::string& sPackage, std::string& sProto);
说明:该函数用于将接收到的打包数据(字符串形式)进行解包,转换成协议数据。
参数:[IN] sPackage: 接收到的打包数据字符串。
[OUT] sProto: 解包后的协议数据字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::CProtoFrame protoFrame;
std::string packagedData;
std::string unpackedProto;
ret = protoFrame.unpackage(packagedData, unpackedProto);
if (ret != 0) {
printf("Failed to unpackage data (string input), error code: %d\n", ret);
}
else {
printf("Successfully unpackaged data (string input): %s\n", unpackedProto.c_str());
}
|
package
定义:int package(const unsigned char *pProto, int nSize, std::string& sPackage);
说明:该函数用于将协议数据打包成一个字符串。
参数:[IN] pProto: 指向协议数据的指针。
[IN] nSize: 协议数据的大小。
[OUT] sPackage: 打包后的数据字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::CProtoFrame protoFrame;
std::string originalProto = "ExampleProtocolData";
std::string packagedData;
ret = protoFrame.package(reinterpret_cast<const unsigned char*>(originalProto.c_str()), originalProto.size(), packagedData);
if (ret != 0) {
printf("Failed to package data (byte array input), error code: %d\n", ret);
}
else {
printf("Successfully packaged data (byte array input): %s\n", packagedData.c_str());
}
|
unpackage
定义:int unpackage(const unsigned char *pPackage, int nSize, std::string& sProto);
说明:该函数用于将接收到的打包数据进行解包,转换成协议数据。
参数:[IN] pPackage: 指向接收到的打包数据的指针。
[IN] nSize: 打包数据的大小。
[OUT] sProto: 解包后的协议数据字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::CProtoFrame protoFrame;
std::string packagedData;
std::string unpackedProto;
ret = protoFrame.unpackage(reinterpret_cast<const unsigned char*>(packagedData.c_str()), packagedData.size(), unpackedProto);
if (ret != 0) {
printf("Failed to unpackage data (byte array input), error code: %d\n", ret);
}
else {
printf("Successfully unpackaged data (byte array input): %s\n", unpackedProto.c_str());
}
|
触摸事件与按压信息管理接口类型定义
TOUCH_PRESS_TIME:是一个用于定义触摸屏四个角按压时间的结构体。通过设置不同的时间值,可以为触摸屏的左上角、右上角、左下角、右下角分别指定按压时间(单位:毫秒)。
int nLeftTopTimeMs{5000};
int nRightTopTimeMs{5000};
int nLeftBottonTimeMs{5000};
int nRightBottonTimeMs{5000};
FUNC_ON_GET_PRESS_INFO:是一个类型别名,用于定义触摸按压信息的回调函数类型。它通过 std::function 封装,允许用户定义具体的回调函数逻辑,用于获取触摸屏的按压信息。
using FUNC_ON_GET_PRESS_INFO = std::function<int(std::string &GetPressInfo, void *lpParameter)>;
触摸事件与按压信息管理接口
getTouchEvent
定义:int getTouchEvent(std::string &sTouchEventPath);
说明:该函数用于获取触摸事件的设备节点路径。
参数:[OUT] sTouchEventPath: 返回触摸事件设备的路径字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sTouchEventPath;
if (scl::getTouchEvent(sTouchEventPath) < 0) {
printf("getTouchEvent failed\n");
} else {
printf("Touch event path is: %s\n", sTouchEventPath.c_str());
}
|
simulateTouchCoordinates
定义:int simulateTouchCoordinates(const int nLcdX, const int nLcdY);
说明:该函数用于模拟点击显示屏的特定坐标位置。
参数:[IN] nLcdX: 要模拟点击的X坐标。
[IN] nLcdY: 要模拟点击的Y坐标。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int nLcdX = 150;
int nLcdY = 250;
if (scl::simulateTouchCoordinates(nLcdX, nLcdY) < 0) {
printf("simulateTouchCoordinates failed\n");
} else {
printf("Simulated touch at LCD coordinates (%d, %d)\n", nLcdX, nLcdY);
}
|
initTouchPressTime
定义:int initTouchPressTime(const scl::TOUCH_PRESS_TIME stTouchPressTime);
说明:该函数用于初始化触摸按压的时间设置。
参数:[IN] stTouchPressTime: 设置触摸按压时间的结构体,包括按压时间的相关配置。
具体数据类型请参见TOUCH_PRESS_TIME
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| scl::TOUCH_PRESS_TIME stTouchPressTime;
stTouchPressTime.nLeftTopTimeMs = 1000;
stTouchPressTime.nRightTopTimeMs = 1500;
stTouchPressTime.nLeftBottonTimeMs = 2000;
stTouchPressTime.nRightBottonTimeMs = 2500;
if (scl::initTouchPressTime(stTouchPressTime) < 0) {
printf("initTouchPressTime failed\n");
} else {
printf("Initialized touch press times:\n");
printf(" Left Top: %d ms\n", stTouchPressTime.nLeftTopTimeMs);
printf(" Right Top: %d ms\n", stTouchPressTime.nRightTopTimeMs);
printf(" Left Bottom: %d ms\n", stTouchPressTime.nLeftBottonTimeMs);
printf(" Right Bottom: %d ms\n", stTouchPressTime.nRightBottonTimeMs);
}
|
getPressInfoCallBack
定义:int getPressInfoCallBack(const std::string &sCallBackFuncId, FUNC_ON_GET_PRESS_INFO onGetPressInfo, void *lpParameter);
说明:该函数用于注册回调函数,用于获取按压信息。
参数:[IN] sCallBackFuncId: 回调函数的标识符。
[IN] onGetPressInfo: 回调函数,获取按压信息。
[IN] lpParameter: 回调函数的参数,用于传递额外信息。
具体数据类型请参见FUNC_ON_GET_PRESS_INFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int pressInfoCallback(std::string &GetPressInfo, void *lpParameter) {
printf("Press info received: %s\n", GetPressInfo.c_str());
return 0;
}
std::string sCallBackFuncId = "getPressInfoCallBack";
if (scl::getPressInfoCallBack(sCallBackFuncId, pressInfoCallback, nullptr) < 0) {
printf("getPressInfoCallBack failed\n");
} else {
printf("Registered press info callback successfully\n");
}
|
下载线连接状态检测接口
getUsbDeviceCableStatus
定义:int getUsbDeviceCableStatus(int &nUsbCableStatus);
说明:该函数用于获取USB下载线的连接状态。
参数:[OUT] nUsbCableStatus:返回USB下载线的连接状态。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int nUsbCableStatus = 0;
if (scl::getUsbDeviceCableStatus(nUsbCableStatus) < 0) {
printf("get usb status failed\n");
}
printf("usb status is %d\n", nUsbCableStatus);
|
shell相关接口
mount
定义:int mount(const string& sDevNode, const string& sMntDir, int nWritalbe = true);
说明:该函数用于挂载指定的设备节点到目标目录。
参数:[IN] sDevNode: 要挂载的设备节点路径(如 /dev/sda)。
[IN] sMntDir: 目标挂载目录路径(如 /mnt)。
[IN] nWritalbe: 是否以可写模式挂载,默认为 true(可写)。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sDevNode = "/dev/sda";
std::string sMntDir = "/mnt/test";
int nWritable = 1;
int result = mount(sDevNode, sMntDir, nWritable);
if (result == 0) {
std::cout << "Mount success!" << std::endl;
} else {
std::cout << "Mount failed with error code: " << result << std::endl;
}
|
remount
定义:int remount(const string& sMntDir, bool bWritalbe = true);
说明:该函数用于重新挂载指定的目录,更新其挂载模式(如只读或可写)。
参数:[IN] sMntDir: 需要重新挂载的目录路径。
[IN] bWritalbe: 是否以可写模式重新挂载,默认为 true(可写)。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sMntDir = "/mnt/test";
bool bWritable = 1;
int result = remount(sMntDir, bWritable);
if (result == 0) {
std::cout << "Remount success!" << std::endl;
} else {
std::cout << "Remount failed with error code: " << result << std::endl;
}
|
umount
定义:int umount(const string& sPath);
说明:该函数用于卸载指定的挂载点或设备。
参数:[IN] sPath: 要卸载的挂载点路径或设备节点路径。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sPath = "/mnt/test";
int result = umount(sPath);
if (result == 0) {
std::cout << "Unmount success!" << std::endl;
} else {
std::cout << "Unmount failed with error code: " << result << std::endl;
}
|
定义:int format(const string& sDevNode);
说明:该函数用于格式化指定的设备节点。
参数:[IN] sDevNode: 需要格式化的设备节点路径(如 /dev/sdb)。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sDevNode = "/dev/sda1";
int result = format(sDevNode);
if (result == 0) {
std::cout << "Format success!" << std::endl;
} else {
std::cout << "Format failed with error code: " << result << std::endl;
}
|
remoteShell
定义:int remoteShell(const string& sCmd, vector *pvecOutput, int nTimeout = 6000);
说明:该函数用于通过远程 Shell 执行指定的命令并获取输出结果。
参数:[IN] sCmd: 要执行的远程命令字符串。
[OUT] pvecOutput: 指向存储命令执行结果输出的字符串向量指针。
[IN] nTimeout: 执行超时时间(单位:毫秒),默认为 6000ms。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sCmd = "ls -l /";
std::vector<std::string> vecOutput;
int nTimeout = 5000;
int result = remoteShell(sCmd, &vecOutput, nTimeout);
if (result == 0) {
std::cout << "Remote shell command executed successfully!" << std::endl;
for (const auto &line : vecOutput) {
std::cout << line << std::endl;
}
} else {
std::cout << "Remote shell command failed with error code: " << result << std::endl;
}
|
WIFI相关接口类型定义
FUNC_ON_WIFI_LIST_INFO:是一个函数对象,其主要用途是处理 WiFi 列表信息的回调函数。
using FUNC_ON_WIFI_LIST_INFO =
std::function<int(std::list<scl::AP_INFO_T> &stApInfo, void *lpParameter)>;
AP_INFO_T:用于存储单个 WiFi 接入点(AP)的详细信息。
```FUNC_ON_WIFI_LIST_INFO:是一个函数对象,其主要用途是处理 WiFi 列表信息的回调函数。
unsigned int nFrequency{0}; /* frequency /
int nSignal{0}; / 信号强度 signal level /
std::string sSsid{""}; / ssid /
std::string sFlags{""}; / flags /
int apSecureType{AP_SECURE_NONE}; / 访问安全类型 /
std::string sPasswdSave{""}; / ssid连接成功过的密码保存 /
int nSsidStatus{0}; /扫码到的ssid状态 0:未连接,1:之前成功连接过,已保存,2:当前正在连接*/
**FUNC_ON_WIFI_AP_INFO**:是一个**函数对象类型**,定义了处理单个 WiFi 接入点(AP)的回调函数接口。
```bash
using FUNC_ON_WIFI_AP_INFO =
std::function<int(scl::AP_INFO_T &stApInfo, void *lpParameter)>;
WIFI_STATE_T:是一个枚举类型,用于表示 WiFi 的连接状态。
typedef enum{
WIFI_STATE_DISCONNECT, /* 连接断开 */
WIFI_STATE_START_CONNECT, /* 开始连接 */
WIFI_STATE_SERVER_ERROR, /* 服务端错误 */
WIFI_STATE_CONNECTING, /* 连接中 */
WIFI_STATE_CONFIG_ERROR, /* 配置错误 */
WIFI_STATE_KEY_INCORRECT, /* 密码错误 */
WIFI_STATE_CONNECT_ERROR, /* 连接错误 */
WIFI_STATE_CONNECT_COMPLETED, /* 连接完成 */
}WIFI_STATE_T;
*USER_INFO *:用于存储用户输入的 WiFi 网络配置,如 SSID 和密码,以及与 WiFi 连接相关的状态。
std::string sSsid{""};
std::string sPassWord{""};
AP_SECURE_T apSecureType{AP_SECURE_WPA2};
int nSsidInList{-1}; //-1 =ssid不在扫描列表中,0 = 在扫描列表中
int nWifiState{-1};/*获取当前连接的状态 WIFI_STATE_T*/
FUNC_ON_WIFI_STATUS:是一个函数对象类型,用于处理 WiFi 连接状态的变化。
using FUNC_ON_WIFI_AP_INFO =
std::function<int(scl::AP_INFO_T &stApInfo, void *lpParameter)>;
WIFI相关接口
registerWifiApListCallBack
定义:int registerWifiApListCallBack(const std::string &sCallBackFuncId, FUNC_ON_WIFI_LIST_INFO onWifiListInfoFunc, void *lpParameter);
说明:该函数用于注册一个回调函数,用于获取 WiFi AP 列表。当 WiFi 扫描列表更新时,回调函数会被调用,将扫描到的 AP 列表传递给应用层。
参数:[IN] sCallBackFuncId:回调函数的标识符,用于区分不同的回调函数。
[IN] onWifiListInfoFunc:回调函数指针,当 WiFi AP 列表更新时,调用此函数并传递扫描到的 AP 列表信息。
[IN] lpParameter:额外的参数,回调函数可以使用此参数传递自定义数据。
具体数据类型请参见FUNC_ON_WIFI_LIST_INFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "registerWifiApListCallBack";
FUNC_ON_WIFI_LIST_INFO onWifiListInfo = [](std::list<scl::AP_INFO_T> &stApInfo, void *lpParameter) -> int {
std::cout << "Received WiFi AP List:\n";
for (const auto &ap : stApInfo) {
std::cout << "SSID: " << ap.sSsid << ", Signal Strength: " << ap.nSignal << "\n"; // 修改字段名
}
return 0;
};
int result = registerWifiApListCallBack(callbackId, onWifiListInfo, nullptr);
if (result == 0) {
std::cout << "WiFi AP List Callback Registered Successfully\n";
} else {
std::cout << "Failed to Register WiFi AP List Callback\n";
}
getchar();
|
unRegisterWifiApListCallBack
定义:int unRegisterWifiApListCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销 WiFi AP 列表的回调函数。调用此函数后,系统将不再调用相应的回调函数。
参数:[IN] sCallBackFuncId:回调函数的标识符,指定要注销的回调函数。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "registerWifiApListCallBack";
int result = unRegisterWifiApListCallBack(callbackId);
if (result == 0) {
std::cout << "WiFi AP List Callback Unregistered Successfully\n";
} else {
std::cout << "Failed to Unregister WiFi AP List Callback\n";
}
|
registerWifiApInfoCallBack
定义:int registerWifiApInfoCallBack(const std::string &sCallBackFuncId, FUNC_ON_WIFI_AP_INFO getWifiApInfoFunc, void *lpParameter);
说明:该函数用于注册一个回调函数,用于获取 WiFi AP 的详细信息。当 WiFi AP 信息更新时,回调函数会被调用,将 WiFi AP 的详细信息传递给应用层。
参数:[IN] sCallBackFuncId:回调函数的标识符,用于区分不同的回调函数。
[IN] getWifiApInfoFunc:回调函数指针,当 WiFi AP 信息更新时,调用此函数并传递当前的 AP 信息。
[IN] lpParameter:额外的参数,回调函数可以使用此参数传递自定义数据。
具体数据类型请参见FUNC_ON_WIFI_AP_INFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "registerWifiApInfoCallBack";
FUNC_ON_WIFI_AP_INFO onWifiApInfo = [](scl::AP_INFO_T &stApInfo, void *lpParameter) -> int {
std::cout << "Received WiFi AP Info:\n";
std::cout << "SSID: " << stApInfo.sSsid << ", Signal Strength: " << stApInfo.nSignal << "\n"; // 修改字段名
return 0;
};
int result = registerWifiApInfoCallBack(callbackId, onWifiApInfo, nullptr);
if (result == 0) {
std::cout << "WiFi AP Info Callback Registered Successfully\n";
} else {
std::cout << "Failed to Register WiFi AP Info Callback\n";
}
getchar();
|
unRegisterWifiApInfoCallBack
定义:int unRegisterWifiApInfoCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销 WiFi AP 信息的回调函数。调用此函数后,系统将不再调用相应的回调函数。
参数:[IN] sCallBackFuncId:回调函数的标识符,指定要注销的回调函数。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "registerWifiApInfoCallBack";
int result = unRegisterWifiApInfoCallBack(callbackId);
if (result == 0) {
std::cout << "WiFi AP Info Callback Unregistered Successfully\n";
} else {
std::cout << "Failed to Unregister WiFi AP Info Callback\n";
}
|
getSignal
定义:int getSignal();
说明:该函数用于获取当前 WiFi 信号的强度值。
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int signalStrength = getSignal();
std::cout << "WiFi Signal Strength: " << signalStrength << std::endl;
|
getStatus
定义:int getStatus(WIFI_STATE_T &nWifiStat);
说明:该函数用于获取当前 WiFi 的连接状态。
参数:[OUT] nWifiStat:返回 WiFi 当前的连接状态。
具体数据类型请参见WIFI_STATE_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| WIFI_STATE_T wifiState;
int result = getStatus(wifiState);
if (result == 0) {
std::cout << "WiFi Status: " << wifiState << std::endl;
} else {
std::cout << "Failed to get WiFi status." << std::endl;
}
|
getConnectInfo
定义:int getConnectInfo(USERINFO &stUserInfo);
说明:该函数用于获取当前已连接的 WiFi 用户信息,包括 SSID、密码及认证方式等。
参数:[OUT] stUserInfo:返回当前已连接的 WiFi 用户信息。
具体数据类型请参见USERINFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| USER_INFO userInfo;
int result = getConnectInfo(userInfo);
if (result == 0) {
std::cout << "WiFi User Info - SSID: " << userInfo.sSsid
<< ", Password: " << userInfo.sPassWord
<< ", Auth Method: ";
switch (userInfo.apSecureType) {
case AP_SECURE_NONE:
std::cout << "None";
break;
case AP_SECURE_WEP_OPEN:
std::cout << "WEP Open";
break;
case AP_SECURE_WEP_SHARED:
std::cout << "WEP Shared";
break;
case AP_SECURE_WPA:
std::cout << "WPA";
break;
case AP_SECURE_WPA2:
std::cout << "WPA2";
break;
default:
std::cout << "Unknown";
break;
}
std::cout << std::endl;
} else {
std::cout << "Failed to get WiFi connection info." << std::endl;
}
|
getAPCacheList
定义:int getAPCacheList(std::list &listApInfo);
说明:该函数用于获取缓存的 WiFi AP 列表。
参数:[OUT] listApInfo:返回存储缓存 AP 信息的列表,使用 AP_INFO_T 结构体表示。
具体数据类型请参见AP_INFO_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::list<AP_INFO_T> apInfoList;
int result = getAPCacheList(apInfoList);
if (result == 0) {
std::cout << "AP Cache List: " << std::endl;
for (const auto& ap : apInfoList) {
std::cout << "SSID: " << ap.sSsid
<< ", Signal Strength: " << ap.nSignal
<< ", Security Type: ";
switch (ap.apSecureType) {
case AP_SECURE_NONE:
std::cout << "None";
break;
case AP_SECURE_WEP_OPEN:
std::cout << "WEP Open";
break;
case AP_SECURE_WEP_SHARED:
std::cout << "WEP Shared";
break;
case AP_SECURE_WPA:
std::cout << "WPA";
break;
case AP_SECURE_WPA2:
std::cout << "WPA2";
break;
default:
std::cout << "Unknown";
break;
}
std::cout << ", SSID Status: " << ap.nSsidStatus << std::endl;
}
} else {
std::cout << "Failed to get AP Cache list." << std::endl;
}
|
getAPList
定义:int getAPList(std::list &listApInfo);
说明:该函数用于获取当前可用的 WiFi AP 列表。
参数:[OUT] listApInfo:返回当前可用的 WiFi AP 列表,使用 AP_INFO_T 结构体表示。
具体数据类型请参见AP_INFO_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::list<AP_INFO_T> apInfoList;
int result = getAPList(apInfoList);
if (result == 0) {
std::cout << "AP List: " << std::endl;
for (const auto& ap : apInfoList) {
std::cout << "SSID: " << ap.sSsid
<< ", Signal Strength: " << ap.nSignal
<< ", Security Type: ";
switch (ap.apSecureType) {
case AP_SECURE_NONE:
std::cout << "None";
break;
case AP_SECURE_WEP_OPEN:
std::cout << "WEP Open";
break;
case AP_SECURE_WEP_SHARED:
std::cout << "WEP Shared";
break;
case AP_SECURE_WPA:
std::cout << "WPA";
break;
case AP_SECURE_WPA2:
std::cout << "WPA2";
break;
default:
std::cout << "Unknown";
break;
}
std::cout << ", SSID Status: " << ap.nSsidStatus << std::endl;
}
} else {
std::cout << "Failed to get AP list." << std::endl;
}
|
connectwifi
定义:int connectwifi();
说明:该函数用于根据已保存的 WiFi 用户信息进行连接。
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int result = connectwifi();
if (result == 0) {
std::cout << "WiFi connection successful!" << std::endl;
} else {
std::cout << "WiFi connection failed!" << std::endl;
}
|
getWifiOperastatus
定义:int getWifiOperastatus();
说明:该函数用于获取当前 WiFi 的连接操作状态。
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int status = getWifiOperastatus();
if (status < 0) {
std::cout << "WiFi operation failed." << std::endl;
} else if (status == 0) {
std::cout << "WiFi connected to hotspot." << std::endl;
} else if (status == 1) {
std::cout << "WiFi disconnected from hotspot." << std::endl;
}
|
openWifiHotSpot
定义:int openWifiHotSpot();
说明:该函数用于开启 WiFi 热点,默认设置 SSID 和密码。
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int ret = openWifiHotSpot();
if (ret == 0) {
std::cout << "WiFi hotspot opened successfully!" << std::endl;
} else {
std::cout << "Failed to open WiFi hotspot. Error code: " << ret << std::endl;
}
|
closeWifiHotSpot
定义:int closeWifiHotSpot();
说明:该函数用于关闭 WiFi 热点。
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int ret = closeWifiHotSpot();
if (ret == 0) {
std::cout << "WiFi hotspot closed successfully!" << std::endl;
} else {
std::cout << "Failed to close WiFi hotspot. Error code: " << ret << std::endl;
}
|
wifiHotSpotSsid
定义:int wifiHotSpotSsid(const std::string &sSSid);
说明:该函数用于修改 WiFi 热点的 SSID 名称。
参数:[IN] sSSid:新的 SSID 名称。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string newSsid = "MyHotSpot";
int ret = wifiHotSpotSsid(newSsid);
if (ret == 0) {
std::cout << "WiFi hotspot SSID updated successfully to: " << newSsid << std::endl;
} else {
std::cout << "Failed to update WiFi hotspot SSID. Error code: " << ret << std::endl;
}
|
wifiHotSpotPasswd
定义:int wifiHotSpotPasswd(const std::string &sPassWd);
说明:该函数用于修改 WiFi 热点的密码。
参数:[IN] sPassWd:新的 WiFi 热点密码。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string newPasswd = "SecurePassword123";
int ret = wifiHotSpotPasswd(newPasswd);
if (ret == 0) {
std::cout << "WiFi hotspot password updated successfully to: " << newPasswd << std::endl;
} else {
std::cout << "Failed to update WiFi hotspot password. Error code: " << ret << std::endl;
}
|
registerWifiStatusCallBack
定义:int registerWifiStatusCallBack(const std::string &sCallBackFuncId, FUNC_ON_WIFI_STATUS onWifiStatusFunc, void *lpParameter);
说明:该函数用于注册 WiFi 状态变化的回调函数,当 WiFi 状态发生变化时,回调函数会被调用。
参数:[IN] sCallBackFuncId:回调函数的标识符,用于区分不同的回调函数。
[IN] onWifiStatusFunc:回调函数指针,当 WiFi 状态变化时,调用此函数并传递当前的用户信息。
[IN] lpParameter:额外的参数,回调函数可以使用此参数传递自定义数据。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "wifiStatusCallback";
FUNC_ON_WIFI_STATUS onWifiStatusFunc = [](USER_INFO &stUserInfo, void *lpParameter) -> int {
std::cout << "WiFi Status Callback Triggered!" << std::endl;
std::cout << "SSID: " << stUserInfo.sSsid << std::endl;
std::cout << "Password: " << stUserInfo.sPassWord << std::endl;
std::cout << "Security Type: " << stUserInfo.apSecureType << std::endl;
std::cout << "SSID In List: " << stUserInfo.nSsidInList << std::endl;
std::cout << "WiFi State: " << stUserInfo.nWifiState << std::endl;
return 0;
};
void *lpParameter = nullptr;
int ret = registerWifiStatusCallBack(callbackId, onWifiStatusFunc, lpParameter);
if (ret == 0) {
std::cout << "WiFi status callback registered successfully!" << std::endl;
} else {
std::cout << "Failed to register WiFi status callback. Error code: " << ret << std::endl;
}
getchar();
|
unRegisterWifiStatusCallBack
定义:int unRegisterWifiStatusCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销 WiFi 状态变化的回调函数,停止接收 WiFi 状态变化通知。
参数:[IN] sCallBackFuncId:回调函数的标识符,指定要注销的回调函数。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "wifiStatusCallback";
int ret = unRegisterWifiStatusCallBack(callbackId);
if (ret == 0) {
std::cout << "WiFi status callback unregistered successfully!" << std::endl;
} else {
std::cout << "Failed to unregister WiFi status callback. Error code: " << ret << std::endl;
}
|
startWifiConnect
定义:int startWifiConnect(const std::string &sSsid, const std::string &sPasswd);
说明:该函数用于开始连接 WiFi。根据给定的 SSID 和密码进行连接。
参数:[IN] sSsid:WiFi 的 SSID 名称。
[IN] sPasswd:WiFi 的密码。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| USER_INFO userInfo;
userInfo.sSsid = "WECON-WLAN";
userInfo.sPassWord = "xiaoniuniu";
userInfo.apSecureType = AP_SECURE_WPA2;
int result = startWifiConnect(userInfo.sSsid, userInfo.sPassWord);
if (result == 0) {
std::cout << "WiFi connection started successfully!" << std::endl;
} else {
std::cout << "Failed to start WiFi connection!" << std::endl;
}
|
stopWifiConnect
定义:int stopWifiConnect();
说明:该函数用于停止 WiFi 连接操作,断开当前连接。
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int result = stopWifiConnect();
if (result == 0) {
std::cout << "WiFi connection stopped successfully!" << std::endl;
} else {
std::cout << "Failed to stop WiFi connection!" << std::endl;
}
|
removeSsidSaveRecode
定义:int removeSsidSaveRecode(const std::string &sSsid);
说明:该函数用于移除指定 SSID 的掉电保存记录,清除存储的 WiFi 配置信息。
参数:[IN] sSsid:需要移除的 SSID。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string ssid = "MyHotspot";
int ret = removeSsidSaveRecode(ssid);
if (ret == 0) {
std::cout << "SSID record removed successfully for: " << ssid << std::endl;
} else {
std::cout << "Failed to remove SSID record. Error code: " << ret << std::endl;
}
|
4G相关接口类型定义
FUNC_ON_4G_GET_AT_INFO:是一个函数对象,通过回调函数来异步处理4G模块返回的AT指令信息
using FUNC_ON_4G_GET_AT_INFO =
std::function<int(scl::AT_INFO &stAtInfo, void *lpParameter)>;
*APN_INFO_T *:表示与APN(接入点名称)相关的信息。
std::string sApnName{""};
std::string sApnNum{""};
std::string sApnUsr{""};
std::string sApnPasswd{""};
std::string sFunction{""};
FUNC_ON_4G_GET_NETWORK_DIAGNO:是一个函数对象,其主要用途是用于处理网络诊断结果。
using FUNC_ON_4G_GET_NETWORK_DIAGNO =
std::function<int(scl::NETWORKDIAGNOSTICSRESULT &stNetworkDiagnosticsResult, void *lpParameter)>;
AT_INFO_T:用于存储与4G模块相关的各种信息。
std::string sIccid{""}; // SIM卡ICCID
std::string sManufacturer{""}; // 模块制造商
std::string sModel{""}; // 模块型号
std::string sRevision{""}; // 模块版本号
std::string sImei{""}; // 模块IMEI唯一识别码
std::string sCops{""}; // SIM卡运营商信息 +COPS: 0,2,"46011",7
std::string sSimStat{""}; // SIM卡插入状态(存在:READY . 不存在:ERROR)
std::string sLongitude{""}; // 经度
std::string sLatitude{""}; // 纬度
int nSignal{-1}; // 信号值 (99:模块异常无效值. 正常值:0~31)
int nReg{-1}; // 驻网状态 ()
int nLac{-1}; // 基站号
int nCellId{-1}; // 小区号
int nNetRegistStatus{-1}; // 注册网络状态 1-- 正常,其它值异常
std::string sServingcell{""}; // 网络类型及状态
int nOperator{-1}; // sim卡运营商信息
4G相关接口
get4gCsqSignal
定义:int get4gCsqSignal();
说明:该函数用于直接设备端获取信号值。
参数:无
返回值:返回值:[OUT] 返回信号强度值。
示例:
| int result = get4gCsqSignal();
printf("real signal is %d\n", result);
|
get4gIccid
定义:get4gIccid(std::string &sIccidResp);
说明:该函数用于从设备端获取4G模块SIM卡的ICCID。
参数:[OUT] sIccidResp: 用于接收ICCID结果的字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string iccid;
int result = get4gIccid(iccid);
if (result == 0) {
std::cout << "4G ICCID: " << iccid << "\n";
} else {
std::cout << "Failed to Retrieve 4G ICCID\n";
}
|
get4gImei
定义:int get4gImei(std::string &sImei);
说明:该函数用于从设备端获取4G模块的IMEI。
参数:[OUT] sImei: 用于接收IMEI结果的字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string imei;
int result = get4gImei(imei);
if (result == 0) {
std::cout << "4G IMEI: " << imei << "\n";
} else {
std::cout << "Failed to Retrieve 4G IMEI\n";
}
|
getCsqSignal
定义:int getCsqSignal();
说明:该函数用于获取当前信号强度值。
参数:无
返回值:[OUT] 返回信号强度值。
示例:
| int result = getCsqSignal();
printf("real signal is %d\n", result);
|
getCCID
定义:int getCCID(std::string &sIccidResp);
说明:该函数用于获取SIM卡的CCID。
参数:[OUT] sIccidResp: 用于接收CCID结果的字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string sIccidResp;
int result = getCCID(sIccidResp);
if (result == 0) {
std::cout << "SIM card CCID: " << sIccidResp << "\n";
} else {
std::cout << "Failed to get SIM card CCID. Error code: " << result << "\n";
}
|
register4gAtInfoCallBack
定义:int register4gAtInfoCallBack(const std::string &sCallBackFuncId, FUNC_ON_4G_GET_AT_INFO get4gAtInfoFunc, void *lpParameter);
说明:该函数用于注册一个回调函数,以异步接收4G模块的AT信息。
参数:[IN] sCallBackFuncId: 回调函数的标识符。
[IN] get4gAtInfoFunc: 回调函数,用于处理4G AT信息。
[IN] lpParameter: 附加参数,将传递给回调函数。
具体数据类型请参见FUNC_ON_4G_GET_AT_INFO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "register4gAtInfoCallBackDemo";
FUNC_ON_4G_GET_AT_INFO on4gAtInfo = [](scl::AT_INFO &stAtInfo, void *lpParameter) -> int {
std::cout << "Received 4G AT Info:\n";
std::cout << "ICCID: " << stAtInfo.sIccid << "\n";
std::cout << "Manufacturer: " << stAtInfo.sManufacturer << "\n";
std::cout << "Model: " << stAtInfo.sModel << "\n";
std::cout << "IMEI: " << stAtInfo.sImei << "\n";
std::cout << "Signal Strength: " << stAtInfo.nSignal << "\n";
std::cout << "Network Registration Status: " << stAtInfo.nNetRegistStatus << "\n";
return 0;
};
int result = register4gAtInfoCallBack(callbackId, on4gAtInfo, nullptr);
if (result == 0) {
std::cout << "4G AT Info Callback Registered Successfully\n";
} else {
std::cout << "Failed to Register 4G AT Info Callback\n";
}
getchar();
|
unRegister4gAtInfoCallBack
定义:int unRegister4gAtInfoCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销之前注册的4G模块AT信息回调函数。
参数:[IN] sCallBackFuncId: 要注销的回调函数标识符。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string callbackId = "register4gAtInfoCallBackDemo";
int result = unRegister4gAtInfoCallBack(callbackId);
if (result == 0) {
std::cout << "4G AT Info Callback Unregistered Successfully\n";
} else {
std::cout << "Failed to Unregister 4G AT Info Callback\n";
}
|
resetDevice
定义:int resetDevice();
说明:该函数用于复位4G模块设备,类似于设备重启。
参数:无
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| int result = resetDevice();
if (result == 0) {
std::cout << "resetDevice succeeded." << std::endl;
} else {
std::cout << "resetDevice failed with error code: " << result << std::endl;
}
|
get4gAtInfo
定义:int get4gAtInfo(AT_INFO_T &stAtInfo);
说明:该函数用于获取4G模块的基础信息,包括IMEI、IMSI等相关内容。
参数:[OUT] stAtInfo: 用于接收基础信息的结构体。
具体数据类型请参见AT_INFO_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| AT_INFO_T atInfo;
int result = get4gAtInfo(atInfo);
std::cout << "get4gAtInfo() result: " << result << "\n"
<< "IMEI: " << atInfo.sImei << "\n"
<< "Manufacturer: " << atInfo.sManufacturer << "\n"
<< "Signal: " << atInfo.nSignal << std::endl;
|
setApn
定义:int setApn(const APN_INFO_T &stApnInfo);
说明:该函数用于一次性配置APN的接入点名称、用户名和密码。
参数:[IN] stApnInfo: 包含APN名称、用户名和密码的结构体。
具体数据类型请参见APN_INFO_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| APN_INFO_T apnInfo;
apnInfo.sApnName = "internet_apn";
apnInfo.sApnNum = "*99#";
apnInfo.sApnUsr = "user";
apnInfo.sApnPasswd = "password";
apnInfo.sFunction = "default_function";
int result = setApn(apnInfo);
if (result == 0) {
std::cout << "setApn succeeded." << std::endl;
} else {
std::cout << "setApn failed with error code: " << result << std::endl;
}
|
setApnName
定义:int setApnName(const std::string &sApnName);
说明:该函数用于单独配置APN的接入点名称。
参数:[IN] sApnName: 要设置的APN名称字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string apnName = "internet_apn";
int result = setApnName(apnName);
if (result == 0) {
std::cout << "setApnName succeeded." << std::endl;
} else {
std::cout << "setApnName failed with error code: " << result << std::endl;
}
|
setApnNum
定义:int setApnNum(const std::string &sApnNum);
说明:该函数用于单独配置APN拨号时使用的号码。
参数:[IN] sApnNum: 要设置的拨号号码字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string apnNum = "*99#";
int result = setApnNum(apnNum);
if (result == 0) {
std::cout << "setApnNum succeeded." << std::endl;
} else {
std::cout << "setApnNum failed with error code: " << result << std::endl;
}
|
setApnUsr
定义:int setApnUsr(const std::string &sApnUsr);
说明:该函数用于单独配置APN的用户名。
参数:[IN] sApnUsr: 要设置的用户名字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string apnUsr = "user";
int result = setApnUsr(apnUsr);
if (result == 0) {
std::cout << "setApnUsr succeeded." << std::endl;
} else {
std::cout << "setApnUsr failed with error code: " << result << std::endl;
}
|
setApnPasswd
定义:int setApnPasswd(const std::string &sApnPasswd);
说明:该函数用于单独配置APN的密码。
参数:[IN] sApnPasswd: 要设置的密码字符串。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| std::string apnPasswd = "password";
int result = setApnPasswd(apnPasswd);
if (result == 0) {
std::cout << "setApnPasswd succeeded." << std::endl;
} else {
std::cout << "setApnPasswd failed with error code: " << result << std::endl;
}
|
setApnFunction
定义:int setApnFunction(const bool &bEnable);
说明:该函数用于启用或关闭APN功能。
参数:[IN] bEnable: 设置为true表示启用,设置为false表示关闭。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| bool enable = true;
int result = setApnFunction(enable);
if (result == 0) {
std::cout << "setApnFunction succeeded." << std::endl;
} else {
std::cout << "setApnFunction failed with error code: " << result << std::endl;
}
|
getApn
定义:int getApn(APN_INFO_T &stApnInfo);
说明:该函数用于获取当前配置的APN名称、用户名和密码信息。
参数:[OUT] stApnInfo: 用于接收APN信息的结构体。
具体数据类型请参见APN_INFO_T
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| APN_INFO_T apnInfo;
int result = getApn(apnInfo);
std::cout << "APN Name: " << apnInfo.sApnName << "\n"
<< "APN User: " << apnInfo.sApnUsr << "\n"
<< "APN Password: " << apnInfo.sApnPasswd << std::endl;
if (result == 0) {
std::cout << "getApn succeeded." << std::endl;
} else {
std::cout << "getApn failed with error code: " << result << std::endl;
}
|
register4gModuleDiagnoCallBack
定义:int register4gModuleDiagnoCallBack(const std::string &sCallBackFuncId, FUNC_ON_4G_GET_NETWORK_DIAGNO get4gNetDiagnoFunc, void *lpParameter);
说明:该函数用于注册一个回调函数,以接收4G模块的网络故障诊断结果。
参数:[IN] sCallBackFuncId: 回调函数的标识符。
[IN] get4gNetDiagnoFunc: 回调函数,用于处理网络诊断结果。
[IN] lpParameter: 附加参数,将传递给回调函数。
具体数据类型请参见FUNC_ON_4G_GET_NETWORK_DIAGNO
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| const std::string callbackId = "register4gModuleDiagnoCallBack";
int result = register4gModuleDiagnoCallBack(callbackId,
[](scl::NETWORKDIAGNOSTICSRESULT &stNetworkDiagnosticsResult, void *lpParameter) -> int {
std::cout << "Received Network Diagnosis Result:\n";
std::cout << "Device Status: " << stNetworkDiagnosticsResult.nDeviceStatus << "\n";
std::cout << "SIM Card Status: " << stNetworkDiagnosticsResult.nSimCardStatus << "\n";
std::cout << "Signal Strength: " << stNetworkDiagnosticsResult.nSignal << "\n";
std::cout << "Error Code: " << stNetworkDiagnosticsResult.nErrorCode << "\n";
std::cout << "Diagnostics Result: " << stNetworkDiagnosticsResult.sDiagnosticsResult << "\n";
return 0; // Return 0 to indicate success
},
nullptr);
if (result == 0) {
std::cout << "Successfully registered 4G module diagnosis callback.\n";
} else {
std::cout << "Failed to register callback. Error code: " << result << "\n";
}
getchar();
|
unRegister4gModuleDiagnoCallBack
定义:int unRegister4gModuleDiagnoCallBack(const std::string &sCallBackFuncId);
说明:该函数用于注销之前注册的4G模块网络故障诊断回调函数。
参数:[IN] sCallBackFuncId: 要注销的回调函数标识符。
返回值:返回 0 表示成功,其他返回值表示错误。
示例:
| const std::string callbackId = "register4gModuleDiagnoCallBack";
int result = unRegister4gModuleDiagnoCallBack(callbackId);
if (result == 0) {
std::cout << "Successfully unregistered 4G module diagnosis callback.\n";
} else {
std::cout << "Failed to unregister callback. Error code: " << result << "\n";
}
|