文档中心>物联网智能视频服务(消费版)

公共模块

最近更新时间:2024-08-13 17:52:52

我的收藏
本模块用于各模块间公用的一些结构定义。

功能介绍

本模块定义了公用的一些信息结构,例如音频、视频、Wi-Fi 信息等。

接口参考

该模块提供以下接口:
iv_cm_init:公共模块初始化。
iv_cm_exit:公共模块退出。
iv_cm_get_sdk_status: 获取 SDK 各模块的状态。
iv_cm_notify_module_status_cb SDK:各个模块的状态重要变更通知。
iv_cm_set_log_level:设置 SDK 输出 log 的等级。
iv_cm_log_printf_cb SDK:打印 log 的输出重定向回调。

iv_cm_init

接口说明 公共资源模块的初始化。
int iv_cm_init(const iv_cm_init_parm_s *pstInitParm);
参数说明
参数名称
类型
描述
输入/输出
pstInitParm
iv_cm_init_parm_s*
初始化参数
输入
返回值
返回值
描述
IV_ERR_NONE
成功
IV_ERR_*
失败,对应相应错误码。
iv_cm_exit
接口说明 公共资源模块的初始化
int iv_cm_exit(void);
参数说明
返回值
返回值
描述
IV_ERR_NONE
成功
IV_ERR_*
失败,对应相应错误码。
iv_cm_get_sdk_status
接口说明
1. 获取 SDK 各个模块状态数据的接口。
2. 通过该接口可主动获取 SDK 相应模块的状态数据,通过解析 ppstatus 参数可以获知某一模块当前的工作状态和相应的一些关键数据,例如升级的状态、升级的进度、升级失败的原因。
int iv_cm_get_sdk_status(uint32_t* pmodule_type_value,iv_cm_module_status_s** ppstatus);
参数说明
参数名称
类型
描述
输入/输出
pmodule_type_value
uint32_t*
1.模块类型按位或。每一bit代表一种类型,可以同时支持多个模块的状态获取。
2.模块类型参见@iv_cm_module_type_e
输入
ppstatus
iv_cm_module_status_s**
模块状态数据
输入
返回值
返回值
描述
IV_ERR_NONE
成功
IV_ERR_*
失败,对应相应错误码。
iv_cm_notify_module_status_cb
接口说明
1. SDK 主动通知模块状态变更的回调。
2. SDK 会在各模块状态发生关键变更时通过该回调进行通知,可根据该回调联合 iv_cm_get_sdk_status 进行模块后续的状态数据的获取。
void (*iv_cm_notify_module_status_cb)(iv_cm_module_type_e type,iv_cm_module_status_s* status_data);
参数说明
参数名称
类型
描述
输入/输出
type
iv_cm_module_type_e
模块类型
输入
status_data
iv_cm_module_status_s*
模块状态数据.该数据只可在回调里使用,SDK 会在回调返回后进行销毁。
输入
返回值
返回值
描述
IV_ERR_NONE
成功
IV_ERR_*
失败,对应相应错误码。

数据结构

SDK 系统模块提供以下数据结构:
音视频相关:
iv_cm_aenc_type_e:音频编码类型枚举。
iv_cm_aenc_sample_rate_e:音频采样率枚举。
iv_cm_aenc_bit_width_e:音频编码位宽枚举。
iv_cm_aenc_mode_e:音频编码通道模式枚举。
iv_cm_aenc_stream_s:音频帧发送接收结构。
iv_cm_aenc_stream_pack_s:多个音频帧打包结构。
iv_cm_h264e_nalu_type_e:H.264 码流 NALU 类型。
iv_cm_h265e_nalu_type_e:H.265 码流 NALU 类型。
iv_cm_venc_data_type_u:视频编码数据类型联合。
iv_cm_venc_pack_info_s:视频编码包信息结构。
iv_cm_venc_pack_s:视频编码包填充结构。
iv_cm_venc_stream_info_h264_s:H.264 流信息结构。
iv_cm_venc_stream_info_h265_s:H.265 流信息结构。
iv_cm_venc_stream_s:视频帧发送接收结构。
iv_cm_avenc_stream_s:音视频帧打包发送结构。
iv_cm_av_data_info_s:音视频信息结构。
网络相关: iv_cm_wifi_enc_type_e:Wi-Fi 加密类型枚举。
公共数据相关:
iv_cm_init_parm_s:公共模块初始化参数结构。
iv_cm_module_status_s:SDK 模块状态数据头部通用结构。
iv_cm_sys_status_s:系统模块状态数据结构。
iv_cm_ota_status_s:升级模块状态数据结构。
iv_cm_cs_status_s:云存储模块状态数据结构。
iv_cm_module_type_e:SDK 模块类型枚举。
iv_cm_module_run_status_e:SDK 模块运行状态枚举。

音视频相关

iv_cm_aenc_type_e

接口描述 音频编码类型枚举。
typedef enum
{
IV_CM_AENC_TYPE_PCM = 0, /*pcm stream*/
IV_CM_AENC_TYPE_G711A = 1, /*g711a stream*/
IV_CM_AENC_TYPE_G711U = 2, /*g711u stream*/
IV_CM_AENC_TYPE_G726 = 3, /*g726*/
IV_CM_AENC_TYPE_AAC = 4, /*aac stream*/
IV_CM_AENC_TYPE_AMR = 5, /*amr stream*/
IV_CM_AENC_TYPE_ADPCMA = 6, /*adpcm*/

IV_CM_AENC_TYPE_BUTT
}iv_cm_aenc_type_e;
参数说明

iv_cm_aac_type_e

接口描述 aac 编码类型枚举。
typedef enum
{
IV_CM_AAC_TYPE_NONE = 0,
IV_CM_AAC_TYPE_MAIN = 1,
IV_CM_AAC_TYPE_LC = 2,
IV_CM_AAC_TYPE_SSR = 3,
IV_CM_AAC_TYPE_LTP = 4,
IV_CM_AAC_TYPE_SBR = 5,
IV_CM_AAC_TYPE_SCALCBLE = 6,
IV_CM_AAC_TYPE_TWINVQ = 7,
IV_CM_AAC_TYPE_CELP = 8,
IV_CM_AAC_TYPE_HVXC = 9,

IV_CM_AAC_TYPE_BUTT
}iv_cm_aac_type_e;
参数说明

iv_cm_amr_type_e

接口描述 aac 编码类型枚举。
typedef enum
{
IV_CM_AMR_FORMAT_MMS = 0,
IV_CM_AMR_FORMAT_IF1 = 1,
IV_CM_AMR_FORMAT_IF2 = 2,

IV_CM_AMR_FORMAT_BUTT
}iv_cm_amr_type_e;
参数说明

iv_cm_aenc_sample_rate_e

接口描述 音频采样率枚举。
typedef enum
{
IV_CM_AENC_SAMPLE_RATE_8000 = 8000, /* 8K samplerate*/
IV_CM_AENC_SAMPLE_RATE_12000 = 12000, /* 12K samplerate*/
IV_CM_AENC_SAMPLE_RATE_11025 = 11025, /* 11.025K samplerate*/
IV_CM_AENC_SAMPLE_RATE_16000 = 16000, /* 16K samplerate*/
IV_CM_AENC_SAMPLE_RATE_22050 = 22050, /* 22.050K samplerate*/
IV_CM_AENC_SAMPLE_RATE_24000 = 24000, /* 24K samplerate*/
IV_CM_AENC_SAMPLE_RATE_32000 = 32000, /* 32K samplerate*/
IV_CM_AENC_SAMPLE_RATE_44100 = 44100, /* 44.1K samplerate*/
IV_CM_AENC_SAMPLE_RATE_48000 = 48000, /* 48K samplerate*/
IV_CM_AENC_SAMPLE_RATE_64000 = 64000, /* 64K samplerate*/
IV_CM_AENC_SAMPLE_RATE_96000 = 96000, /* 96K samplerate*/

IV_CM_AENC_SAMPLE_RATE_BUTT,
} iv_cm_aenc_sample_rate_e;
参数说明

iv_cm_aenc_bit_width_e

接口描述 音频编码位宽枚举。
typedef enum
{
IV_CM_AENC_BIT_WIDTH_8 = 0, /* 8bit width */
IV_CM_AENC_BIT_WIDTH_16 = 1, /* 16bit width*/
IV_CM_AENC_BIT_WIDTH_24 = 2, /* 24bit width*/

IV_CM_AENC_BIT_WIDTH_BUTT,
} iv_cm_aenc_bit_width_e;
参数说明

iv_cm_aenc_mode_e

接口描述 音频编码通道模式枚举。
typedef enum
{
IV_CM_AENC_MODE_MONO =0, /*mono*/
IV_CM_AENC_MODE_STEREO =1, /*stereo*/

IV_CM_AENC_MODE_BUTT
} iv_cm_aenc_mode_e;
参数说明

iv_cm_aenc_stream_s

接口描述 音频帧发送接收填充结构体。
typedef struct iv_cm_aenc_stream_s
{
uint8_t *pu8Stream;
uint32_t u32PhyAddr;
uint32_t u32Len;
uint64_t u64TimeStamp;
uint32_t u32Seq;
} iv_cm_aenc_stream_s;
参数说明
成员名称
描述
取值
pu8Stream
音频流虚拟地址
地址
u32PhyAddr
音频流物理地址
地址
u32Len
音频流长度
字节数
u64TimeStamp
音频帧时间戳
微秒
u32Seq
帧计数
每帧加1

iv_cm_aenc_stream_s

接口描述 多个音频帧打包结构。
typedef struct iv_cm_aenc_stream_pack_s
{
iv_cm_aenc_stream_s *pstAencStream[8];
uint32_t u32PackCount;
}iv_cm_aenc_stream_pack_s;
参数说明
成员名称
描述
取值
pstAencStream
帧的打包地址
每一个数组地址为一帧的数据地址,最多支持8包音频帧打包
u32PackCount
音频包个数
-

iv_cm_venc_type_e

接口描述 视频编码类型。
typedef enum
{
IV_CM_VENC_TYPE_H264 = 0, /*h264*/
IV_CM_VENC_TYPE_H265 = 1, /*h265*/

IV_CM_VENC_TYPE_BUTT
}iv_cm_venc_type_e;
参数说明
成员名称
描述
取值
IV_CM_VENC_TYPE_H264
H.264
-
IV_CM_VENC_TYPE_H265
H.265
-
iv_cm_h264e_nalu_type_e
接口描述 H.264 码流 NALU 类型。
/*the nalu type of H264E*/
typedef enum
{
IV_CM_H264E_NALU_PSLICE = 1, /*PSLICE types*/
IV_CM_H264E_NALU_ISLICE = 5, /*ISLICE types*/
IV_CM_H264E_NALU_SEI = 6, /*SEI types*/
IV_CM_H264E_NALU_SPS = 7, /*SPS types*/
IV_CM_H264E_NALU_PPS = 8, /*PPS types*/
IV_CM_H264E_NALU_IPSLICE = 9, /*IPSLICE types*/
IV_CM_H264E_NALU_IDRSLICE = 10, /*IDRSLICE types*/

IV_CM_H264E_NALU_BUTT
} iv_cm_h264e_nalu_type_e;

参数说明
成员名称
描述
取值
IV_CM_H264E_NALU_PSLICE
PSLICE 类型
-
IV_CM_H264E_NALU_ISLICE
ISLICE 类型,帧类型为 P 帧。
-
IV_CM_H264E_NALU_SEI
SEI 类型
-
IV_CM_H264E_NALU_SPS
SPS 类型
-
IV_CM_H264E_NALU_PPS
PPS 类型
-
IV_CM_H264E_NALU_IPSLICE
IPSLICE 类型
-
IV_CM_H264E_NALU_IDRSLICE
ISLICE 类型,帧类型为 IDR 帧。
-

iv_cm_h265e_nalu_type_e

接口描述 H.265 码流 NALU 类型。
/*the nalu type of H265E*/
typedef enum
{
IV_CM_H265E_NALU_PSLICE = 1, /*PSLICE types*/
IV_CM_H265E_NALU_ISLICE = 19, /*ISLICE types*/
IV_CM_H265E_NALU_VPS = 32, /*VPS types*/
IV_CM_H265E_NALU_SPS = 33, /*SPS types*/
IV_CM_H265E_NALU_PPS = 34, /*PPS types*/
IV_CM_H265E_NALU_SEI = 39, /*SEI types*/
IV_CM_H265E_NALU_IDRSLICE = 40, /*IDRSLICE types*/

IV_CM_H265E_NALU_BUTT
} iv_cm_h265e_nalu_type_e;
参数说明
成员名称
描述
取值
IV_CM_H265E_NALU_PSLICE
PSLICE 类型
-
IV_CM_H265E_NALU_ISLICE
ISLICE 类型,帧类型为 P 帧。
-
IV_CM_H265E_NALU_VPS
VPS 类型
-
IV_CM_H265E_NALU_SPS
SPS 类型
-
IV_CM_H265E_NALU_PPS
PPS 类型
-
IV_CM_H265E_NALU_SEI
SEI 类型
-
IV_CM_H265E_NALU_IDRSLICE
ISLICE 类型,帧类型为 IDR 帧。
-

iv_cm_venc_data_type_u

接口描述 编码数据 NALU 类型联合。
typedef union
{
iv_cm_h264e_nalu_type_e eH264eNaluType; /*H264E NALU types*/
iv_cm_h265e_nalu_type_e eH265eNaluType; /*H264E NALU types*/
}iv_cm_venc_data_type_u;

iv_cm_venc_pack_info_s

接口描述 视频编码包信息。
typedef struct iv_cm_venc_pack_info_s
{
iv_cm_venc_data_type_u u32PackType;
uint32_t u32PackOffset;
uint32_t u32PackLength;
}iv_cm_venc_pack_info_s;

iv_cm_venc_pack_s

接口描述 视频包结构。
typedef struct iv_cm_venc_pack_s
{
uint32_t u32PhyAddr; /*the physics address of stream*/
uint8_t *pu8Addr; /*the virtual address of stream*/
uint32_t u32Len; /*the length of stream*/

uint64_t u64PTS; /*PTS*/
uint32_t u32FrameEnd; /*frame end*/

iv_cm_venc_data_type_u uDataType; /*the type of stream*/
uint32_t u32Offset;

uint32_t u32DataNum;
iv_cm_venc_pack_info_s stPackInfo[8];
}iv_cm_venc_pack_s;

iv_cm_venc_stream_info_h264_s

接口描述 H.264 视频信息结构。
typedef struct iv_cm_venc_stream_info_h264_s
{
uint32_t u32PicBytesNum; /* the coded picture stream byte number */
uint32_t u32PSkipMbNum; /* the skip macroblock num */
uint32_t u32IpcmMbNum; /* the ipcm macroblock num */
uint32_t u32Inter16x8MbNum; /* the inter16x8 macroblock num */
uint32_t u32Inter16x16MbNum; /* the inter16x16 macroblock num */
uint32_t u32Inter8x16MbNum; /* the inter8x16 macroblock num */
uint32_t u32Inter8x8MbNum; /* the inter8x8 macroblock num */
uint32_t u32Intra16MbNum; /* the intra16x16 macroblock num */
uint32_t u32Intra8MbNum; /* the intra8x8 macroblock num */
uint32_t u32Intra4MbNum; /* the inter4x4 macroblock num */

uint32_t u32RefSliceType; /*the reference type of H264E slice*/
uint32_t u32RefType; /*Type of encoded frames in advanced frame skipping reference mode*/
uint32_t u32UpdateAttrCnt; /*Number of times that channel attributes or parameters (including RC parameters) are set*/
uint32_t u32StartQp; /*StartQP Value*/
}iv_cm_venc_stream_info_h264_s;

iv_cm_venc_stream_info_h265_s

接口描述 H.265 视频信息结构。
typedef struct iv_cm_venc_stream_info_h265_s
{
uint32_t u32PicBytesNum; /* the coded picture stream byte number */
uint32_t u32Inter64x64CuNum; /* the num */
uint32_t u32Inter32x32CuNum;
uint32_t u32Inter16x16CuNum;
uint32_t u32Inter8x8CuNum;
uint32_t u32Intra32x32CuNum;
uint32_t u32Intra16x16CuNum;
uint32_t u32Intra8x8CuNum;
uint32_t u32Intra4x4CuNum;
uint32_t u32RefType; /*Type of encoded frames in advanced frame skipping reference mode*/
uint32_t u32UpdateAttrCnt; /*Number of times that channel attributes or parameters (including RC parameters) are set*/
uint32_t u32StartQp; /*StartQP Value*/
}iv_cm_venc_stream_info_h265_s;

iv_av_venc_stream_s

接口描述 视频帧发送填充结构体。
typedef struct iv_cm_venc_stream_s
{
iv_cm_venc_pack_s *pstVencPack; /*stream pack attribute*/
uint32_t u32PackCount; /*the pack number of one frame stream*/
uint32_t u32Seq; /*the list number of stream*/

union
{
iv_cm_venc_stream_info_h264_s stH264Info; /*the stream info of h264*/
iv_cm_venc_stream_info_h265_s stH265Info; /*the stream info of h265*/
};
}iv_cm_venc_stream_s;
参数描述
成员名称
描述
取值
pstVencPack
视频编码包
-
u32PackCount
视频编码包的个数
-
u32Seq
帧计数
-
stH264Info
H.264 编码信息
-
stH265Info
H.265 编码信息
-

iv_cm_avenc_stream_s

接口描述 音视频帧打包发送结构,用于音视频一起打包。
typedef struct iv_cm_avenc_stream_s
{
iv_cm_aenc_stream_pack_s stAencStreamPack;
iv_cm_venc_stream_s stVencStream;
}iv_cm_avenc_stream_s;
参数说明
成员名称
描述
取值
stAencStreamPack
音频编码数据包
-
stVencStream
视频编码数据
-

iv_cm_av_data_info_s

接口描述 音视频信息结构。
typedef struct iv_cm_av_data_info_s
{
iv_cm_aenc_type_e eAudioType; /*audio codec type*/
uint32_t u32AudioCodecOption; /*audio codec subtype*/
iv_cm_aenc_mode_e eAudioMode; /*audio mode*/
iv_cm_aenc_bit_width_e eAudioBitWidth; /*audio bit width,just support 16 bit*/
iv_cm_aenc_sample_rate_e eAudioSampleRate; /*audio sample rate*/
uint32_t u32SampleNumPerFrame; /*audio sample num per Frame*/

iv_cm_venc_type_e eVideoType; /*video type*/
uint32_t u32VideoWidth; /*video width*/
uint32_t u32VideoHight; /*video hight*/
uint32_t u32Framerate; /*frame rate*/
uint32_t u32Reserve[4]; /*reserve*/
}iv_cm_av_data_info_s;
参数说明
成员名称
描述
取值
eAudioType
音频编码类型
iv_cm_aenc_type_e
u8AudioCodecOption
音频编码子类型
默认0
eAudioMode
音频模式(单声道/双声道)
iv_cm_aenc_mode_e
eAudioBitWidth
音频位宽(16位)
iv_cm_aenc_bit_width_e
eAudioSampleRate
采样率
iv_cm_aenc_sample_rate_e
u32SampleNumPerFrame
每帧数据采样点数
对应原始 pcm 数据长度除以2
eVideoType
视频类型
iv_cm_venc_type_e
u32VideoWidth
视频分辨率宽
实际宽像素
u32VideoHight
视频分辨率高
实际高像素
u32Framerate
视频帧率
-
u32Reserve
预留
-

网络相关

iv_cm_wifi_enc_type_e

接口描述 无。
typedef enum
{
IV_CM_WIFI_ENC_TYPE_OPEN = 0,
IV_CM_WIFI_ENC_TYPE_WEP = 1,
IV_CM_WIFI_ENC_TYPE_WPA = 2,

IV_CM_WIFI_ENC_TYPE_BUTT
}iv_cm_wifi_enc_type_e;
参数说明
成员名称
描述
取值
IV_CM_WIFI_ENC_TYPE_OPEN
开放 Wi-Fi
IV_CM_WIFI_ENC_TYPE_WEP
WEP 加密 Wi-Fi
IV_CM_WIFI_ENC_TYPE_WPA
WPA 加密 Wi-Fi

公共数据相关

iv_cm_init_parm_s

接口描述 公共模块初始化参数结构。
typedef struct iv_cm_init_parm_s
{
void (*iv_cm_notify_module_status_cb)(iv_cm_module_type_e type,iv_cm_module_status_s* status_data);
}iv_cm_init_parm_s;
参数说明
成员名称
描述
取值
iv_cm_notify_module_status_cb
SDK 主动通知模块状态变更的回调
iv_cm_module_status_s
接口描述 SDK 模块状态数据头部通用结构。
typedef struct iv_cm_module_status_s{
struct iv_cm_status_module_status_head* next;
iv_cm_module_type_e type;
iv_cm_module_run_status_e status;
int32_t err_code;
uint32_t data_len;
union{
uint8_t data[0];
iv_cm_sys_status_s sys[0];
iv_cm_ota_status_s ota[0];
iv_cm_cs_status_s cs[0];
};
}iv_cm_module_status_s;
参数说明
成员名称
描述
取值
next
指向下一模块状态数据的指针
type
当前数据所属模块的类型iv_cm_module_type_e
status
模块的工作状态iv_cm_module_run_status_e
err_code
错误码@iv_err_code_e
data_len
具体某个模块的状态数据长度
data
状态数据
iv_cm_sys_status_s
接口描述 系统模块状态数据结构。
typedef struct iv_cm_sys_status{
uint32_t all_module_status[IV_CM_MODULE_NUM];
uint32_t online_result;
}iv_cm_sys_status_s;
参数说明
成员名称
描述
取值
all_module_status
所有模块运行的运行状态
@iv_cm_module_run_status_e
online_result
设备上线的结果
@iv_sys_device_online_result_e
iv_cm_ota_status_s
接口描述 系统模块状态数据结构。
typedef struct iv_cm_ota_status{
uint8_t updating;
int32_t progress;
}iv_cm_ota_status_s;
参数说明
成员名称
描述
取值
updating
设备升级状态
0:空闲
1:正在升级
progress
设备升级的进度
@iv_ota_progress_e
iv_cm_cs_status_s
接口描述 云存储模块状态数据结构。
typedef struct iv_cm_cs_status{
uint32_t service_status;
uint32_t cos_token_expired;
uint32_t service_open;
}iv_cm_cs_status_s;
参数说明
成员名称
描述
取值
service_status
云存储业务当前的状态标记(按位取值)
@iv_cs_running_status
cos_token_expired
云存储服务上传Token是否过期(按位取值)
0:未过期正常使用中 。
1:已经过期正在取认证信息中。
@iv_cs_service_chn_e
service_open
云存储服务的开通状态(按位取值)
0:服务暂停推流或服务关闭 。
1:服务已开通运行中。
@iv_cs_service_chn_e
iv_cm_status_module_type
接口描述 SDK 模块枚举。
typedef enum iv_cm_status_module_type{
IV_CM_MODULE_SYS = 0,
IV_CM_MODULE_OTA = 1,
IV_CM_MODULE_RD = 2,
IV_CM_MODULE_AVT = 3,
IV_CM_MODULE_DM = 4,
IV_CM_MODULE_CS = 5,
IV_CM_MODULE_NUM = 6,
}iv_cm_module_type_e;
参数说明
成员名称
描述
取值
IV_CM_MODULE_SYS
系统模块 iv_sys
-
IV_CM_MODULE_OTA
OTA升级模块 iv_ota
-
IV_CM_MODULE_RD
录像回放模块 iv_rd
-
IV_CM_MODULE_DM
物模型模块 iv_dm
-
IV_CM_MODULE_CS
云存储模块 iv_cs
-
IV_CM_MODULE_NUM
模块数量
-
iv_cm_module_run_status
接口描述 SDK 模块运行状态枚举。
typedef enum iv_cm_module_run_status{
IV_CM_MODULE_NOT_INIT = 0,
IV_CM_MODULE_RUNNING = 1,
IV_CM_MODULE_INITING = 2,
IV_CM_MODULE_EXITING = 3,
}iv_cm_module_run_status_e;
参数说明
成员名称
描述
取值
IV_CM_MODULE_NOT_INIT
尚未初始化
IV_CM_MODULE_RUNNING
运行中
IV_CM_MODULE_INITING
初始化中
IV_CM_MODULE_EXITING
退出中

示例代码

升级模块状态变更回调。
case IV_CM_MODULE_OTA:
{
switch(pstatus->err_code)
{
case IV_ERR_NONE:
GDB_INFO("ota module status %d,ota status:%s\\n",pstatus->status,pstatus->ota->updating ? "updating":"idle(update end)");
break;
case IV_ERR_OTA_DOWN_FIRMWARE_FAIL:
case IV_ERR_OTA_LOCAL_FILE_NOT_EXIST:
case IV_ERR_OTA_CREATE_FILE_FAIL:
case IV_ERR_OTA_URL_NOT_EXIST:
{
GDB_ERR("ota download new fimware fail:%d\\n",pstatus->err_code);
}
break;
default:
GDB_ERR("ota module status:%d,err:%d\\n",pstatus->status,pstatus->err_code);
break;
}
//如果正在升级则不断查询升级模块状态10秒
start_cm_module_status_polling_thread(type,100,pstatus->ota->updating ? (get_tick_ms() + 10*1000):0);
}
break;