首先是在device目录下的pitservice.c里有default的sn:
然后看同目录下的android.mk发现module name= pitservice。
</pre><pre name="code" class="cpp">char *defaultssn = "0123456789";
int load_SSN_ACD(){
int pass =0;
char* data;
pass = get_customer_data(SSN_ACD_INDEX,&data);
#ifdef CONFIG_FACTORY_ITEMS
write_serialno2kernel("11111111111111111");
if (pass<0)
{
property_set("<pre name="code" class="cpp">ro.serialno
",defaultssn);return -1;}property_set("ro.serialno",data);return 0;#elseif (pass<0){property_set("ro.serialno",defaultssn);write_serialno2kernel(defaultssn);return -1;}property_set("ro.serialno",data);write_serialno2kernel(data);return 0;#endif}
查看哪里调用了
int main( int argc, char *argv[] )
{
char btmac[18];
char wifimac[18];
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------pitservice start-----------------");
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin load_SSN_ACD ");
load_SSN_ACD();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin load_60ISN_ACD ");
load_60ISN_ACD();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin load_COUNTRY_CODE_ACD ");
load_COUNTRY_CODE_ACD();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin load_WIFI_MAC_ACD ");
load_WIFI_MAC_ACD();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin load_BT_MAC_ACD ");
load_BT_MAC_ACD();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin fota_detect ");
fota_detect();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin copy_modem_TLV ");
copy_modem_TLV();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin load_CustomerID ");
load_CustomerID();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------begin load_IDCode ");
load_IDCode();
if(DEBUG_LOG) ALOGD("PIT_SERVICE:-----------------pitservice close.-----------------");
return 0;
}
然后看同目录下的android.mk发现module name= pitservice。
在out中grep pitservice 发现
#add for pitservice
service pitservice /system/bin/pitservice
class pre-core
oneshot
属于class pre-core
同样在init.rc中
class_start pre-core
可见是init过程中来启动这个service
而
ro.serialno
则在cts文件夹下的java文件中被使用