精华内容
下载资源
问答
  • Mesh设备固件升级接口

    2020-12-09 05:47:55
    现在设置界面都使用commonsetting,希望提供mesh固件升级接口,并集成到commonsetting,供插件端配置调用 <p><strong>其他的上下文/日志/截图</strong></p> <p><strong>尝试过的解决办法 查找文档,demo 搜索关键字mesh ...
  • - 相关模块: Nordic固件升级接口 <p><strong>现象(必填) 该接口在部分手机上无法正常完成升级过程,调用接口返回4096异常,如下: { "framesToPop":1, "code":&#...
  • 1:由于AppStore貌似不支持强制升级,所以务必用后台来提供升级接口 2:App可能分多个渠道进行推广,比如AppStore, 越狱版本等等。 那种渠道的版本升级很可能不同。 2:在版本升级中,可能会其中某个版本需要强制...

    做App开发时,避免不了需要版本升级的情况,而且有些情况下因为产品重大改变,需要强制升级。

    1:由于AppStore貌似不支持强制升级,所以务必用后台来提供升级接口

    2:App可能分多个渠道进行推广,比如AppStore, 越狱版本等等。 那种渠道的版本升级很可能不同。

    2:在版本升级中,可能会其中某个版本需要强制升级

    比如, V3--->V4->>>V5--->V6。 V3可以选择性的升级到V4,V4必须升级到V5,V5可以选择性的升级到V6。

    如果服务器的接口只提供最新版本的版本号和是否强制升级标识(由运营设置),然后由客户端来比较是否要升级。 如果最新版本是V5, 那么是没有什么问题的。

    但是如果最新版本已经到V6,而某个客户还停留在V3或者V4。那么如果不强制升级的话,可能就有很大的问题。

     

    改进方案:

    接口中增加版本号参数以及渠道号。

    后台数据库,务必保存最新的一条强制升级的版本记录。  后台在收到客户端的请求后,通过传来的参数与数据库最新的那条强制升级的版本记录进行比较,从而能判断客户端是否需要强制升级。

    转载于:https://www.cnblogs.com/perryxiong/p/4096867.html

    展开全文
  • **APP版本升级**>[success] 1.创建版本控制表~~~CREATE TABLE `td_app_update` (`id` int(100) NOT NULL AUTO_INCREMENT,`version` varchar(12) DEFAULT '0' COMMENT '版本号',`url_name` varchar(100) DEFAULT ...

    **APP版本升级**

    >[success] 1.创建版本控制表

    ~~~

    CREATE TABLE `td_app_update` (

    `id` int(100) NOT NULL AUTO_INCREMENT,

    `version` varchar(12) DEFAULT '0' COMMENT '版本号',

    `url_name` varchar(100) DEFAULT NULL COMMENT 'app下载链接地址',

    `upgrade` int(10) DEFAULT '0' COMMENT '2强制升级 1提醒升级 0不提醒升级',

    `title` varchar(200) DEFAULT NULL COMMENT '更新标题',

    `content` text COMMNET '更新内容',

    `source` varchar(10) DEFAULT NULL COMMENT '来源 android 、ios',

    `updatetime` varchar(50) DEFAULT NULL COMMENT '更新时间',

    PRIMARY KEY (`id`)

    ) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8

    ~~~

    >[success]2.接口实现

    ~~~

    public function update(){

    $clientVersion = strtolower($this->client_version); //获取客户端的版本号

    $source = strtolower($this->os); //获取客户端操作系统

    $where['source'] = array('eq',$source);

    //获取当前的版本

    $result = M('AppUpdate')->where($where)->find();

    if($this->versionCompare($result['version'],$clientVersion)){

    if(!empty($result['url_name'])){

    $data['url'] = $result['url_name'];

    }

    $data['upgrade'] = $result['upgrade'];

    $data['title'] = $result['title'];

    $data['content'] = $result['content'];

    json_success($data);

    }

    json_success('ok');

    }

    /**

    *@param $version1 版本A 如:5.3.2

    *@param $version2 版本B 如:5.3.0

    *@return int false版本A小于或等于版本B true版本A大于版本B

    */

    private function versionCompare($versionA,$versionB) {

    $verListA = explode('.', (string)$versionA);

    $verListB = explode('.', (string)$versionB);

    $len = max(count($verListA),count($verListB));

    $i = -1;

    while ($i++ < $len) {

    $verListA[$i] = intval(@$verListA[$i]);

    if ($verListA[$i] <0 ) {

    $verListA[$i] = 0;

    }

    $verListB[$i] = intval(@$verListB[$i]);

    if ($verListB[$i] <0 ) {

    $verListB[$i] = 0;

    }

    if ($verListA[$i]>$verListB[$i]) {

    return true;

    } else if ($verListA[$i]

    return false;

    } else if ($i==($len-1)) {

    return false;

    }

    }

    }

    ~~~

    展开全文
  • 商品分类编码、营改增的接口软件升级通知,根据国税总局要求,税控发票开票系统新增加了商品分类编码、营改增的需求内容。
  • CTP固件升级接口技术规范3.0

    千次阅读 2015-05-08 11:20:07
    CTP固件升级接口技术规范 一. 固件升级需求指引 调研用户,售后,工厂测试得到ctp的固件升级的基本需求如下: 1. 应用或shell命令可以强制下载ctp固件,包括降级的固件(降级固件不能重新开机,因为开机后会...

    CTP固件升级接口技术规范

    一.        固件升级需求指引

    调研用户,售后,工厂测试得到ctp的固件升级的基本需求如下:

    1.    应用或shell命令可以强制下载ctp固件,包括降级的固件(降级固件不能重新开机,因为开机后会自动升级为软件集成的最新固件)。

    2.    应用或shell命令可以要求ctp驱动升级自带的固件(如果自带的固件有多个版本,则升级到最新版)。

    3.    应用或shell命令能够读取固件信息,包括版本号,名称等。

    二.        整体结构框图

    如上图,用户空间可以通过访问sysfs文件系统的方式与内核空间中fw_man模块进行通信,Fw_man模块与ctp模块以标准化的固件升级接口对接。用户空间传入给fw_man某种需求后,fw_man 将其分解成一条条ctp模块可执行的基本功能,然后按照一定的逻辑关系组合这些被分解后的基本功能。

     

    三.        CTP驱动接口技术规范

    1.Fw_man模块与CTP驱动的接口定义如下:

    struct firmware_object{

    //强制写固件函数指针,其中firmware是存放固件内容的指针,num为固件长度,要求固件升级动作ctp单独启动一个线程完成,相关函数应立即返回,不应有所堵塞。

          int(*write_firmware_from_sdcard)(u8 * firmware,unsigned long num);

          //固件自升级,要求升级自带的固件数组内容,要求升级最新版本的固件数组,要求固件升级动作ctp单独启动一个线程完成,相关函数应立即返回,不应有所堵塞。

    int (*write_firmware_self)(void);

    //读取固件ic供应商,名称,版本,固件id号等

          int(*read_firmware_profile) (char * ic, char * panel, char * fw_ver, char *cfg_id);

         //读取固件ctp升级状态

    int (*read_firmware_update_state)(void);

      //ctp的名称,由ctp驱动分配

          char*firmware_name;.

          };

    总之,Ctp应提供给fw_man模块以下几种接口功能:

    ( 1 )固件强制升级

    ( 2 )Ctp自升级

    ( 3 )升级时的状态

      0:The device updatessuccessfully.

      1:The device is updating.

    -1:The device failed to update.

    2:The device has not been found.

    ( 4 )固件的信息反馈

    2.ctp的接口通过注册和注销的方式被fw_man添加和删除。

    注册函数为:firmware_attach (struct firmware_object *obj);

    注销函数为:firmware_dettach (struct firmware_object *obj).

    这里须在ctp驱动中建立一个全局变量(struct firmware_object *fw_obj)用于向fw_man模块中添加和删除ctp对象。

    这两个函数添加位置参考代码,以Gt9158为例:

    ( 1 )staticint tpd_local_init(void)

    {

        attach_fw_man_init();

    return 0;

    }

    ( 2 )staticvoid __exit tpd_driver_exit(void)

    {

    … 

    firmware_dettach(fw_obj->dev);

    }

    3.其他ctp相关接口参考(基于gt9158):

    ( 1 )static int ctp_write_firmware(u8 *firmware,unsigned long num){

          inti =0;

          intret;

          GTP_INFO("ctp_write_firmware\n");

          read_firmware_update_state= 1;

       ret =gup_init_update_proc_test(i2c_client_point, firmware, num);

       if (ret < 0)

       {

         GTP_ERROR("Create update thread error.");

         read_firmware_update_state = 2;

       }

          return0;

    }

    ( 2 )int ctp_read_firmware(char * ic, char* panel, char * fw_ver, char * cfg_id){

    ctp_get_pid(ic);

          ctp_get_vendor(panel);

          sprintf(fw_ver,"0x%x", ctp_get_vid());

          sprintf(cfg_id,"0x%x", ctp_get_cfg_id());

    return 0;

    }

    ( 3 )intctp_read_firmware_update_state(void){

                 GTP_INFO("ctp_read_firmware_update_states\n");

          returnread_firmware_update_state;

    }

    ( 4 )int ctp_write_firmware_self(void){

    /*

      ......

          */

     return 0;

    }

    ( 5 )intattach_fw_man_init(void)

    {

          GTP_INFO("attach_fw_man_init\n");

          interr = 0;

          fw_obj= kzalloc(sizeof(struct firmware_object), GFP_KERNEL);//全局变量

          memset(fw_obj,0, sizeof(struct firmware_object));

          fw_obj->write_firmware_self= ctp_write_firmware_self;

          fw_obj->write_firmware= ctp_write_firmware;

          fw_obj->read_firmware= ctp_read_firmware;

                  fw_obj->read_firmware_update_state= ctp_read_firmware_update_state;

          fw_obj->dev= 0;//可有可无,在fw_man中分配dev编号

          fw_obj->firmware_name= kzalloc(sizeof(char*), GFP_KERNEL);

          strcpy(fw_obj->firmware_name,"ctp9158");

          if(err= firmware_attach(fw_obj))

      {

             GTP_INFO("attach fail = %d\n",err);

      }

          returnerr;

    }

    ( 6 )int dettach_fw_man_init(void)

    {

    int err = 0;

    err =firmware_dettach(fw_obj);

    return err;

    }

    四.        上层接口调用规范

    由二的原理可知,上次接口通过访问sys文件系统操作与fw_man通信,sys文件系统路径为:/sys/class/fw_man/current/…

    Sys文件系统为上层调用提供以下接口:

    1.    强制升级命令接口:

    接口名称: force(命令),data(数据)

    路径为:/sys/class/fw_man/current/ force

    使用方法:

    (1)echo 1 > force       //开始写ctp固件标志

    (2)cat 固件文件名 >data //传入ctp固件数据

    (3)echo 0 > force      //写固件,结束

    自升级命令接口;

    接口名称:self

    路径为:/sys/class/fw_man/current/self

    使用方法:echo xx(任何) > self

    例子:echo  1  >  self

    2.    读取固件版本号

    接口名称:version

    路径为:/sys/class/fw_man/current/ version

    使用方法:cat  version, 可以获取ctp的版本号和名称。

    3.    读取ctp状态

    接口名称:state

    使用方法:cat  state, 可以获取ctp当前的状态。定义以下四种状态:

    0:Thedevice updates successfully.

      1:The device is updating.

     -1:The device failed to update.

    2:The device has not been found.

    4.上层在固件升级时,要持有系统suspend lock,防止系统休眠,导致固件升级失败。应对用户有提示,固件升级时不能灭屏和断电,低电量的固件升级可能会失败等。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    五.fw_man基本功能程序流程图

    1.Ctp注册到fw_man模块

     

     

     

     

    2.强制固件升级流程

    展开全文
  • OTA升级接口调用

    2021-03-04 22:15:38
    File file = new File("/data/update.zip"); RecoverySystem.installPackage(Context,file);
    File file = new File("/data/update.zip");
    RecoverySystem.installPackage(Context,file);
    
    展开全文
  • API版本升级接口

    千次阅读 2018-01-17 10:33:04
    /** * 版本检测接口 */ public function checkUpdate(){ //终端版本号 if( empty( $this -> _data['tt'] ) ){ $this -> failure( Param::TERMINAL_TYPE_IS_NULL , Param::TERMINAL_
  • 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 data['is_upload'] = 1 提示是否升级;一致时返回 data['is_upload'] = 0 不提示升级。common.php 中 getApp 方法可以添加缓存(静态/Redis等)...
  • 在获取的客户端和服务器端(数据库表中相应字段)的版本号不一致时,返回 data['is_upload'] = 1 提示是否升级;一致时返回 data['is_upload'] = 0 不提示升级。 common.php 中 getApp 方法可以添加缓存(静态/...
  • App版本升级接口

    千次阅读 2016-08-07 16:21:09
    版本升级表: DROP TABLE IF EXISTS `version_upgrade`; CREATE TABLE `version_upgrade` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app_id` int(11) NOT NULL DEFAULT '0' COMMENT '客户端id', `version_id` ...
  • 笔者本文会讲述升级接口包所引起的一些问题。这些问题都在真实的项目遇到到。有的在线上已经出现重大的故障。这些问题被大部分同学在开发的时候忽视了。掌握这些要点,将使你在以后的开发中避免类似的问题。  二、...
  • 导入时,得到该文件会反过来,即先packtoolpro解压,再configmaker 反配置,将配置文件拷贝指定位置的指定文件名 /var/tmp/up_romfile.cfg,再调用 原有的配置升级接口三步走,即可实现全部配置复原。 原有的配置...
  • 随着需求的变化,数据库表结构可能发生改变,这个时候就需要对数据库文件进行升级。抽象接口如下: //注:class IDataBase; //typdef shared_prt&lt;IDataBase&gt; SPIDataBase; class IDBVersion; ...
  • 如何判断升级接口线

    2012-02-16 22:34:39
    先找 GND(地),接收机关闭电源、万用表电阻档,测视频插头外面金属 与 其中一根针是 0 阻值就是 G ND(地), 打开接收机电源,再转到“直流电压档”测其余各针与 GND(地)之间的电压,有+5V 或+3.3v 电压的就是 ...
  • 基于内核开发的一些用户态程序,或者内核模块,当内核升级后,产生的接口变化,会导致这些开发的项目无法编译成功,或者编译成功后无法加载模块,或者出现功能异常的问题。那么就需要基于4.19这个内核,对于接口的...
  • WebRTC 调整 1、VideoFrameBuffer 改成 I420BufferInterface,使用 ToI420 转换 ...3、AudioDeviceModuleImpl::Create 接口调整 4、LOG_F 没有了, RTC_LOG_F 代替 5、CreatePeerConnection 接口变化(已经调整) 6...
  • 1. 替换SDK文件有时接口会返回2 2. 内存溢出、程序crash 3. 检测结果混乱 我在版本升级的过程中也遇到了这类问题,下面记录了版本升级过程中需要做的修改,希望能对一些朋友有所帮助。 问题原因:从ArcFace 2.0到3.1
  • 0x00 app版本控制解决方案 可以在controller下创建v1 v2等文件夹 对应...api接口文档:API的入参、出参格式 需要包含哪些内容: API接口地址 请求方式:get put post delete 入参格式 出参格式 http code 0x02
  • 中国市场才需要这些emmm 以下...2 升级描述 3 是否强制升级 4 当前应用版本号 步骤 1 判断下载地址 有sd卡存哪里 没有sd卡存哪里 此步骤要尽早完成 所以可以卸载MyApplication的onCreate方法中 try { ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,970
精华内容 4,788
关键字:

升级接口