1 /*
2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 * Description: 外挂MCU升级适配实现(此文件为DEMO,需集成方适配修改)
15 */
16
17 #include "hilink_open_ota_mcu_adapter.h"
18
19 /*
20 * 获取MCU当前版本
21 * version表示版本字符串
22 * inLen表示输入字符串长度
23 * outLen表示输出字符串长度
24 * 返回值是RETURN_OK时,表示获取成功
25 * 返回值是RETURN_ERROR_NO_MCU时,表示没有MCU
26 * 返回值是RETURN_ERROR时,表示获取失败
27 * 返回值是RETURN_MCU_NO_NEED_OTA时,表示不需要MCU升级
28 * 注意:如果获取不到MCU的版本,则不对MCU进行升级。
29 * 建议厂商在MCU正常启动后,或升级启动后,就将MCU的版本号传递给模组,确保模组可以获取到MCU的版本。
30 */
HILINK_GetMcuVersion(char * version,unsigned int inLen,unsigned int * outLen)31 int HILINK_GetMcuVersion(char *version, unsigned int inLen, unsigned int *outLen)
32 {
33 /* 厂商实现此接口 */
34 return RETURN_OK;
35 }
36
37 /*
38 * HiLink SDK调用厂商适配的此接口通知MCU固件传输的状态
39 * flag表示升级流程标志
40 * 当flag是START_SEND_DATA时,表示通知模组即将开始发送MCU固件数据包
41 * 当flag是STOP_SEND_DATA时,表示通知模组完整的MCU固件包已发送完成
42 * 当flag是SEND_DATA_ERROR时,表示通知模组本次MCU固件升级异常终止
43 * len表示MCU固件包的大小
44 * type表示升级类型
45 * 当type是UPDATE_TYPE_MANUAL时,表示本次升级流程是由用户主动发起的手动升级
46 * 当type是UPDATE_TYPE_AUTO时,表示本次升级流程是经过用户同意的自动升级
47 * 返回值是RETURN_OK时,表示处理成功,HiLink SDK继续正常处理后续流程
48 * 返回值是RETURN_ERROR时,表示处理失败,HiLink SDK将终止本次MCU升级流程
49 * 注意:当flag是STOP_SEND_DATA时,此接口需返回MCU侧固件升级的结果;当flag是其它值时,需返回接口接收到此消息后的处理结果。
50 * 开机后10分钟到1小时内随机时间检测一次是否有新版本,之后以当前时间为起点,23小时加1小时内随机值周期性检测新版本。
51 * 如果用户打开了自动升级开关,检测到有新版本并且是可以重启的情况下,就进行新版本的下载,下载完成后自动重启。
52 * 自动升级流程可能在凌晨进行,因此厂商在实现升级流程相关功能时,确保在升级的下载安装固件和重启设备时避免对用户产生
53 * 影响,比如发出声音,光亮等。
54 */
HILINK_NotifyOtaStatus(int flag,unsigned int len,unsigned int type)55 int HILINK_NotifyOtaStatus(int flag, unsigned int len, unsigned int type)
56 {
57 /* 厂商实现此接口 */
58 return RETURN_OK;
59 }
60
61 /*
62 * HiLink SDK调用厂商适配的此接口通知厂商发送MCU固件文件数据
63 * data表示发送的数据
64 * len表示发送的数据的长度
65 * offset表示发送的数据起始位置相对于完整固件包的偏移量
66 * 此接口需要返回MCU接收这部分数据的处理结果
67 * 返回值是RETURN_OK时,模组将通知的数据正确发送给MCU,且MCU正确处理发送的数据,HiLink SDK将继续正常处理后续流程
68 * 返回值是RETURN_ERROR时,模组或MCU未能正常处理通知的MCU的固件文件数据,HiLink SDK将终止本次MCU固件升级流程
69 */
HILINK_NotifyOtaData(const unsigned char * data,unsigned int len,unsigned int offset)70 int HILINK_NotifyOtaData(const unsigned char *data, unsigned int len, unsigned int offset)
71 {
72 /* 厂商实现此接口 */
73 return RETURN_OK;
74 }