Android射頻校準標誌位(Barcode)

2021-10-02 01:12:46 字數 2645 閱讀 9686

int get_barcode_from_nvram(char *barcode_result)

;logd(tag "entry get_barcode_from_nvram");

if(barcode_result == null)

while(read_nvram_ready_retry < max_retry_count)

else

}if(read_nvram_ready_retry >= max_retry_count)

barcode_struct= (product_info *)malloc(sizeof(product_info));

if(barcode_struct == null)

fid = nvm_getfiledesc(barcode_lid, &rec_size, &rec_num, isread);

if(fid.ifiledesc < 0)

if(rec_size != read(fid.ifiledesc, barcode_struct, rec_size))

if(strlen((const char *)barcode_struct->barcode) > 0)

else

free(barcode_struct);

if(!nvm_closefiledesc(fid))

logd(tag "the size of barcode_struct:%d\n", sizeof(barcode_struct));

logd(tag "barcode is %s\n", barcode_result);

return 1;

}#endif

int getbarcode(connection& modem, char *result)

;int len = 0 ;

if(er_ok != modem.querymodemrevision(5, barcode))

return -1 ;

logd("barcode %s",barcode);

strcpy(result,barcode);

if(strlen(result) <= 0)

loge("getbarcode result = %s\n", result);

return 0;    

}通過打log看到工廠模式裡是通過modem來讀取barcode,然後我就自己寫了下nvram上層讀取,讀出來得都是0,說明校準時並未向nvram裡寫

後來在mtk網上在看到如下說明

如何獲取手機sn (serial number)

[solution]

一、kk版本之前

kk之前由"phone" service提供介面: string getsn()

二、kk版本

kk版本是已經搬到"phoneex" service中了,名稱是: string getserialnumber()

kk版上使用範例:

mtelex =

itelephonyex.stub.asinte***ce(servicemanager.getservice(「phoneex」));

string sn = mtelex. getserialnumber();

或者也可以直接使用systemproperties.get(「gsm.serial」);來獲得;

三、l版本/l版本以後

l版本/l版本以後,未提供api介面給上層來呼叫;

請直接獲取"gsm.serial"系統屬性的值: systemproperties.get(「gsm.serial」);

試了一下讀取gsm.serial值如下

101519_144336                                               10

1後面10就是標誌位

不過應用層無法直接使用systemproperties這個類,在系統中有hide標識,不過可以通過反射來操作

public static string get(string key) catch (classnotfoundexception e) catch (nosuchmethodexception e) catch (illegalacces***ception e) catch (illegalargumentexception e) catch (invocationtargetexception e)

return result;

}/**

* set the value for the given key.

* @throws illegalargumentexception if the key exceeds 32 characters

* @throws illegalargumentexception if the value exceeds 92 characters

*/public static void set(string key, string val) catch (classnotfoundexception e) catch (nosuchmethodexception e) catch (illegalacces***ception e) catch (illegalargumentexception e) catch (invocationtargetexception e)

}

彙編標誌位

of overflow flag 溢位標誌 運算元超出機器能表示的範圍表示溢位,溢位時為1.sf sign flag 符號標誌 記錄運算結果的符號,結果負時為1.zf zero flag 零標誌 運算結果等於0時為1,否則為0.cf carry flag 進製標誌 最高有效位產生進製時為1,否則為0...

標誌位的位運算應用

今天設計新版標誌位,老郭提出了乙個新的方案。以往都是乙個字段設定乙個狀態,tinyint型別,0或者1,但是這樣的壞處是如果乙個資訊表有很多狀態,需要增加很多的字段,空間利用不好,所以他提出用二進位制位運算來解決標示位的問題。設定標示位字段位tinyint型別,也就是最大128,換成二進位制就是有8...

測試標誌位指令

測試某些示志位的情況來設定位元組的指令 這是一大類指令,格式為 setxx reg8 mem8 它的功能是 若條件xx成立,則位元組暫存器reg8或節儲存器單元被設定為1,否則被設定為0.條件xx 見下表 setz sete zf 1 等於零 相等 setnz setne zf 0 不等於零 不相等...