展讯平台读写SN号

public void writeTestCaseResultIntoSN2(String writeStr, int position, int len) 
{
    String sn = null;
    String sn2 = null;
    int SN2Size = 23;


    if (len != writeStr.length()) {
        // write string's length is not identical
        return;
    }
        
    // Get the whole sn2 string first
    com.spreadst.validationtools.engtools.engfetch mEf = new com.spreadst.validationtools.engtools.engfetch();
    int dataSize = 2048;
    byte[] inputBytes = new byte[dataSize];
    int showlen = mEf.enggetphasecheck(inputBytes, dataSize);
    Log.d("writeTestCaseResultIntoSN2", "showlen = " + showlen);
        
    sn = new String(inputBytes, 0, showlen);
    Log.d("writeTestCaseResultIntoSN2", "sn = " + sn);
        
    sn = sn.replaceAll("(?s)DOWNLOAD.*", "").trim();
    Log.d("writeTestCaseResultIntoSN2", "sn = " + sn);
        
    String array[] = sn.split("sn2:");
    sn2 = array[array.length - 1];


    // modify the sn2 string
    String str1 = sn2.substring(0, position);
    String str2 = sn2.substring(position + len, sn2.length());
    String sn2New = str1 + writeStr + str2;


    // write the sn2 string
    mEf.engwritesn2(sn2New.getBytes(), SN2Size);
}

int engapi_writesn2(void* buf, int size)
{
    int fd = 0;
    int ret = 0;
    int readsize = 0;
    char *str = buf;
    char ATCmd[1024] = {0};
    char temp[1024] = {0};
    SP09_PHASE_CHECK_T phasecheck = {0};
    SP09_PHASE_CHECK_T phasecheckModify = {0};


    ENG_LOG("engapi_writesn2: buf = %x, size = %d", buf, size);
    if ((buf == NULL) || (size != SP09_MAX_SN_LEN))
    {
        return 22;
    }

    ENG_LOG("engapi_writesn2: 2");
    ret = eng_getphasecheck(&phasecheck);
    ENG_LOG("engapi_writesn2: 3");
    memcpy(&phasecheckModify, &phasecheck, sizeof(SP09_PHASE_CHECK_T));

    ENG_LOG("engapi_writesn2: ret = %d", ret);
    if (ret == 0)
    {
        memcpy(&phasecheckModify.SN2, buf, size);
        ENG_LOG("engapi_writesn2: SN2 = %s", phasecheckModify.SN2);
        memcpy(&phasecheck, &phasecheckModify, sizeof(SP09_PHASE_CHECK_T));
        fd = engapi_open(0);
        ENG_LOG("engapi_writesn2: fd = %d", fd);
        if(fd < 0)
        {
            return 22;
        }

        HexConvertAscii(&phasecheck, sizeof(SP09_PHASE_CHECK_T), temp);
        sprintf(ATCmd, "%d,%d,%s %x, \"%s\", %d", ENG_AT_NOHANDLE_CMD, 1, "AT+SPPRODUCT=", 0, temp, strlen(temp));
        ENG_LOG("engapi_writesn2: 4");
        engapi_write(fd, ATCmd, sizeof(ATCmd));
        ENG_LOG("engapi_writesn2: 5");
        memset(ATCmd, 0, sizeof(ATCmd));
        ENG_LOG("engapi_writesn2: 6");
        engapi_read(fd, ATCmd, strlen(ATCmd));
        ENG_LOG("engapi_writesn2: ATCmd = %s", ATCmd);
        engapi_close(fd);
        readsize = strlen(ATCmd);
        return readsize;
    }
    else
    {
        return 22;
    }
}

工程模式代码调用writeTestCaseResultIntoSN2("O", 4, 1);
writeTestCaseResultIntoSN2通过JNI调用engapi_writesn2

你可能感兴趣的:(展讯平台读写SN号)