本模块用于各模块间公用的一些结构定义。
功能介绍
本模块定义了公用的一些信息结构,例如音频、视频、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;