Skip to content

5 バージョン詳細 (版本记录) ​

携帯が積極的にバージョン詳細(item_code:0x05)の指令を送り、ssm5 は ssm5 のバージョン番号を返します。

シーケンス図 ​

携帯が送信するデータ ​

バイト10
データアイテムコードop コード

item code: SSM2_ITEM_CODE_VERSION_DETAIL (0x05)

ssm5 返信内容 ​

バイト15 ~ 43210
データペイロードresアイテムコードタイプop コード

type: SSM2_OP_CODE_RESPONSE(0x07)

item code: SSM2_ITEM_CODE_VERSION_DETAIL (0x05)

res: CMD_RESULT_SUCCESS (0x00)

iOS、Android、ESP32 の例 ​

Android例 ​

jsx
    override fun getVersionTag(result: CHResult<String>) {
        if (checkBle(result)) return
        sendEncryptCommand(SSM2Payload(SSM2OpCode.read, SesameItemCode.versionTag, byteArrayOf())) { res ->
            val gitTag = res.payload.sliceArray(4..15)
            CHAccountManager.putSesameInfor(this, String(gitTag)) {}
            result.invoke(Result.success(CHResultState.CHResultStateBLE(String(gitTag))))
        }
    }

iOS例 ​

jsx

    func getVersionTag(result: @escaping (CHResult<String>))  {
        if(checkBle(result)){return}
        sendCommand(.init(.versionTag)) { (response) in
            if response.cmdResultCode == .success {
                let versionTag = String(data: response.data, encoding: .utf8) ?? ""
                result(.success(CHResultStateNetworks(input: versionTag)))
            } else {
                result(.failure(self.errorFromResultCode(response.cmdResultCode)))
            }
        }
    }

ESP例 ​

jsx
if (src_id == SSM2_ITEM_CODE_VERSION_DETAIL) {
        memcpy(ble_tx_buf + 3, GIT_SHORT_HASH, strlen(GIT_SHORT_HASH));
        talk_to_mob(p_param->conidx, SSM2_SEG_PARSING_TYPE_CIPHERTEXT, ble_tx_buf, (strlen(GIT_SHORT_HASH) + 3));
    }