OTA V3 android SDK
1.集成
1.1.Gradle拉取配置
allprojects {
repositories {
maven {
url 'https://maven.aliyun.com/repository/public'
}
maven {
credentials {
username '65a890ad4f41789f56425965'
password 'Y-kxYEyTl5)['
}
url 'https://packages.aliyun.com/maven/repository/2457536-release-P0YgD8/'
}
}
}
1.2.sdk集成
implementation 'com.sifli:siflicore:1.1.7'
implementation 'com.sifli:sifliotasdk:2.0.8'
2.接口调用
2.1 接口初始化
初始化 SFOtaV3Manager以及回调
private SFOtaV3Manager otaManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_otav3);
...
this.otaManager = SFOtaV3Manager.getInstance();
this.otaManager.setCallback(this);
this.otaManager.init(this.getApplication());
...
}
2.2 资源传输
调用otaManager如下方法
/**
* 资源传输接口
* @param mac 蓝牙设备地址
* @param otaV3Type 0-表盘,1-多语言,2-背景图,3-自定义,4-音乐,5-JS,8-4G模块,9,GUIBuilder 表盘 12 GUIBuilder App,13 GUIBuilder扩展资源。其它类型查阅文档
* @param resourceFile 资源文件信息
* @param tryResume 尝试重传
* */
public void startOtaV3(String mac,
int otaV3Type,
OtaV3ResourceFileInfo resourceFile,
boolean tryResume)
OtaV3ResourceFileInfo 资源文件结构
public abstract class OtaV3FileInfo {
private String filePath;
private int fileType;
protected OtaV3FileInfo(int fileType, String filePath){
this.fileType = fileType;
this.filePath = filePath;
}
public int getFileType() {
return fileType;
}
public String getFilePath() {
return filePath;
}
public boolean isFilePathNullOrEmpty(){
return StringUtil.isNullOrEmpty(this.filePath);
}
}
public class OtaV3ResourceFileInfo extends OtaV3FileInfo {
/**是否需要字节对齐&添加crc*/
private boolean withByteAlign;
public OtaV3ResourceFileInfo(int fileType,
String filePath,
boolean withByteAlign) {
super(fileType, filePath);
this.withByteAlign = withByteAlign;
}
public boolean isWithByteAlign() {
return withByteAlign;
}
}
2.3 固件传输
调用如下方法
/**
* 固件升级
* @param mac 设备地址
* @param resourceFile 差分包文件描述信息
* @param imageFiles image file,包含ctrlpacket.bin在内。
* @param tryResume 是否为续传
* */
public void startOtaV3(String mac,
OtaV3ResourceFileInfo resourceFile,
ArrayList<OtaV3BinFileInfo> imageFiles,
boolean tryResume){
OtaV3BinFileInfo 固件升级文件信息
public class OtaV3BinFileInfo extends OtaV3FileInfo {
/**
* @see com.sifli.sifliotasdk.modules.nand.model.NandImageID
* @see com.sifli.sifliotasdk.modules.nor.NORImageID
* */
private int imageId;
/**偏移地址*/
private String hexOffset;
public OtaV3BinFileInfo(int fileType, String filePath, int imageId) {
super(fileType, filePath);
this.imageId = imageId;
}
public OtaV3BinFileInfo(int fileType, String filePath, int imageId,String hexOffset) {
super(fileType, filePath);
this.imageId = imageId;
this.hexOffset = hexOffset;
}
public int getImageId() {
return imageId;
}
public String description(){
return String.format("{path=%s,imageID=%d}",this.getFilePath(),this.getImageId());
}
public String getHexOffset() {
return hexOffset;
}
}
3.错误码
错误码参见上一级 OTA V3 错误码