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 不等於零 不相等...