# HG changeset patch # User Space Falcon # Date 1435615095 0 # Node ID f3fba126778a5d6d7d748582208885d7bf69aa8e # Parent 452a4aea3fc5bb11e0f834bbb3f61fe71824fca2 gsm-fw/comlib/cl_imei.c: implemented reading of Pirelli's factory IMEI record diff -r 452a4aea3fc5 -r f3fba126778a gsm-fw/comlib/cl_imei.c --- a/gsm-fw/comlib/cl_imei.c Mon Jun 29 21:45:23 2015 +0000 +++ b/gsm-fw/comlib/cl_imei.c Mon Jun 29 21:58:15 2015 +0000 @@ -92,7 +92,11 @@ } } -#if 0 // function for reading from Pirelli's factory block not written yet +extern int pirelli_read_factory_record(uint32 offset, void *userbuf, + T_FFS_SIZE size, int has_chksum); + +#define PIRELLI_IMEI_OFFSET 0x504 + /* +------------------------------------------------------------------------------ | Function : pirelli_get_imeisv @@ -122,9 +126,10 @@ /* * Read ISDID(enciphered IMEISV+DieID) from FFS. - * TODO: change the code to read from Pirelli's factory data block instead + * (changed to read from Pirelli's factory data block instead) */ - if((ret = ffs_file_read(CL_IMEI_FFS_PATH, isdid_buf, CL_IMEI_ISDID_SIZE)) >= EFFS_OK) + if((ret = pirelli_read_factory_record(PIRELLI_IMEI_OFFSET, isdid_buf, + CL_IMEI_ISDID_SIZE, 0)) >= EFFS_OK) { /* * Read Die ID for using as DES key @@ -162,7 +167,6 @@ return ret; }/* pirelli_get_imeisv() */ -#endif /* #if 0 */ #endif /* CONFIG_TARGET_PIRELLI */ @@ -260,9 +264,14 @@ imei_flag = 1; return CL_IMEI_OK; } +#if CONFIG_TARGET_PIRELLI + ret = pirelli_get_imeisv (imeiBufSize, imeiBufPtr); + if (ret == CL_IMEI_OK) { + imei_flag = 1; + return ret; + } +#else ret = CL_IMEI_READ_IMEI_FAILED; -#if CONFIG_TARGET_PIRELLI - /* not yet implemented */ #endif TRACE_ERROR("CL IMEI FATAL ERROR: IMEI not available!"); memcpy(imeiBufPtr, C_DEFAULT_IMEISV_DSAMPLE, CL_IMEI_SIZE);