diff g23m/condat/ms/src/mfw/CPHS_mod.h @ 0:509db1a7b7b8

initial import: leo2moko-r1
author Space Falcon <falcon@ivan.Harhan.ORG>
date Mon, 01 Jun 2015 03:24:05 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/g23m/condat/ms/src/mfw/CPHS_mod.h	Mon Jun 01 03:24:05 2015 +0000
@@ -0,0 +1,375 @@
+#ifndef _CPHS_H_
+#define _CPHS_H_
+/*-----------------------------------------------------------------------*
+ *                                                                       *
+ *     CPHS / SIM lock  Standalone module                                                  *
+ *                                                                       *
+ *-----------------------------------------------------------------------*/
+
+/*-----------------------------------------------------------------------*
+ *     CPHS Part                                                         *
+ *-----------------------------------------------------------------------*/
+
+
+/*---- Constants --------------------------------------------------------*/
+#define CPHS_CSP_SIZE 20
+
+/*---- Types ------------------------------------------------------------*/
+
+#define SHORT short
+#define UBYTE unsigned char
+#define BYTE unsigned char
+#define BOOL UBYTE
+
+
+typedef enum              /* SIM operation status */
+{
+ 	SIMOP_UNKNOWN = 20,
+ 	SIMOP_WRITE_ERR,
+  	SIMOP_WRITE_OK,
+ 	SIMOP_READ_ERR,
+  	SIMOP_READ_OK
+} T_CPHS_SIMOP_STATUS;
+
+typedef enum
+{
+  CPHS_FAIL = -1,
+  CPHS_NOT_PRESENT,
+  CPHS_IS_OK,
+  CPHS_EXEC,
+  CPHS_NOT_INIT,
+  CPHS_SIM_READ_ERROR,
+  CPHS_SIM_WRITE_ERROR
+} T_CPHS_RET; 			//function return status
+
+typedef enum			//line identifier values
+{
+  CPHS_LINE_INDEX_LINE1 = 1,
+  CPHS_LINE_INDEX_LINE2 = 2,
+  CPHS_LINE_INDEX_FAX   = 4,
+  CPHS_LINE_INDEX_DATA  = 8
+} T_CPHS_LINE_INDEX;
+
+typedef enum			//Roaming indicator values
+{
+  CPHS_ROAMING_OFF,
+  CPHS_ROAMING_ON
+} T_CPHS_ROAMING_IND;
+
+
+typedef enum					//Voicemail/divert status flags
+{
+  CPHS_FLAG_NOT_PRESENT = -1,
+  CPHS_LINEFLAG_NOT_SET,
+  CPHS_LINEFLAG_SET
+} T_CPHS_FLAG_STATUS;
+
+
+typedef enum					//possible emergency numbers
+{
+  CPHS_EMERGENCY_NUM_112 = 112,
+  CPHS_EMERGENCY_NUM_999 = 999
+} T_CPHS_EMERGENCY_NUM;
+
+typedef struct					//format of text strings
+{
+  UBYTE len;
+  //UBYTE* data;
+  UBYTE data[22];
+} T_CPHS_DATA;
+
+
+
+typedef struct		//status of lines for voicemail/divert 
+{
+	UBYTE result;      //result of read/write op
+  T_CPHS_FLAG_STATUS line1;
+  T_CPHS_FLAG_STATUS line2;
+  T_CPHS_FLAG_STATUS fax;
+  T_CPHS_FLAG_STATUS data;
+} T_CPHS_LINE_IND;
+
+typedef struct				//ALS selected line 
+{
+  UBYTE result;
+  T_CPHS_LINE_INDEX  line;
+  T_CPHS_FLAG_STATUS locked;
+} T_CPHS_ALS_INFO;
+
+typedef struct				//ALS line description
+{
+  UBYTE result;
+  T_CPHS_LINE_INDEX  line;
+  T_CPHS_DATA        description;
+} T_CPHS_ALS_LINE;
+
+typedef struct			//operator name in long and short forms
+{
+  UBYTE result;
+  T_CPHS_DATA long_name;
+  T_CPHS_DATA short_name;
+} T_CPHS_OPN;
+
+
+
+typedef struct			//CPHS config info
+{
+  UBYTE phase;
+  BOOL  opn_short;
+  BOOL  mailbox_num;
+  BOOL  sst;
+  BOOL  csp;
+  BOOL  info_num;
+} T_CPHS_INFO;
+
+typedef struct				//single Customer service profile entry
+{
+  UBYTE group_code;
+  UBYTE services;
+} T_CPHS_CSP_ENTRY;
+
+typedef struct				//customer service Profile
+{
+	UBYTE result; //Result of last read/write
+  T_CPHS_CSP_ENTRY csp[CPHS_CSP_SIZE];
+  //UBYTE csp[CPHS_CSP_SIZE];
+} T_CPHS_CSP;
+
+typedef struct				//single mailbox entry
+{
+  UBYTE       index;
+  T_CPHS_DATA alpha;
+  UBYTE number[22];
+  UBYTE       ton;
+  UBYTE       npi;
+  UBYTE       service;
+} T_CPHS_MAILBOX_NUM_ENTRY;
+
+typedef struct				//mailbox entries 
+{
+  UBYTE 					result; //read/write result
+  UBYTE                     count;
+ // T_CPHS_MAILBOX_NUM_ENTRY *entries;
+ T_CPHS_MAILBOX_NUM_ENTRY entries[4];
+} T_CPHS_MAILBOX_NUM_LIST;
+
+
+
+typedef struct					//single information number list entry
+{
+  UBYTE       index;
+  T_CPHS_DATA alpha;
+  UBYTE       entryStat;
+} T_CPHS_INFO_NUM;
+
+typedef struct				//information number
+{ 
+  UBYTE		entryStat;
+  UBYTE 		result; //result of last read/write op
+  UBYTE       index;
+  T_CPHS_DATA alpha;
+  UBYTE number[22];
+  UBYTE       ton;
+  UBYTE       npi;
+} T_CPHS_INFO_NUM_ENTRY;
+
+typedef struct			//information number list
+{
+  UBYTE 				count; //no of entries
+  UBYTE                  level;
+  UBYTE                  index;
+  //T_CPHS_INFO_NUM       *entry;
+  T_CPHS_INFO_NUM       entry[10];
+} T_CPHS_INFO_NUM_LIST;
+
+
+//Callback function type
+typedef int (*T_CPHS_CB_FUNC) (T_CPHS_INFO_NUM_LIST *,T_CPHS_INFO_NUM_ENTRY *);
+
+
+/*---- Functions --------------------------------------------------------*/
+
+  /* all CPHS functions return the following values:                     */
+  /*                                                                     */
+  /*   CPHS_OK                : on successfull execution                 */
+  /*   CPHS_EXEC              : if CPHS operation is still executing     */
+  /*   CPHS_NOT_INIT          : if a CPHS function is called before the  */
+  /*                            CPHS initialize function has been called */
+  /*   CPHS_NOT_PRESENT       : if current function is not present for   */
+  /*                            current SIM                              */
+  /*   CPHS_SIM_READ_ERROR    : on SIM read operation failure            */
+  /*   CPHS_SIM_WRITE_ERROR   : on SIM read operation failure            */
+  /*   CPHS_FAIL              : on other failures                        */
+
+
+
+  /* set the roaming indicator                                           */
+
+
+
+
+T_CPHS_RET cphs_Init(T_CPHS_CB_FUNC callback);
+  /* initializes CPHS module, reads CPHS data fields from SIM and caches */
+  /* the read data.   */
+
+
+T_CPHS_RET cphs_refresh(T_CPHS_CB_FUNC callback);
+  /* reads CPHS data fields from SIM and updates the cached CPHS data    */
+
+T_CPHS_RET cphs_Exit();
+  /* de-initializes CPHS module                                          */
+
+
+
+T_CPHS_RET cphs_getOPN            ( T_CPHS_OPN* opn );
+  /* reads from SIM the operator long name and if available the short    */
+  /* name, too                                                          */
+
+
+T_CPHS_RET cphs_setDivertCallInd  ( UBYTE              line_mask,
+                                    T_CPHS_FLAG_STATUS flag );
+  /* sets on SIM the divert call flag for the given lines in the         */
+  /* parameter line_mask. The bitmask will be created by oring the lines.*/
+  /* The bits for the lines are defined in T_CPHS_LINE_INDEX.            */
+
+
+
+T_CPHS_RET cphs_getAlsInfo        ( T_CPHS_ALS_INFO *info );
+  /* reads from SIM the information of alternate line service            */
+  /* ( selected line, alternate line service locked/unlocked)            */
+
+T_CPHS_RET cphs_setAlsInfo        ( T_CPHS_ALS_INFO *info );
+  /* sets on SIM the informtion of alternate line service / selects the  */
+  /* active line                                                         */
+  
+T_CPHS_RET cphs_setRoamingInd  ( T_CPHS_ROAMING_IND* indicator );
+
+  
+T_CPHS_RET cphs_getAlsLineDescr   ( T_CPHS_ALS_LINE* line );
+  /* reads the (alpha)numeric description for the given line             */
+
+T_CPHS_RET cphs_setAlsLineDescr   ( T_CPHS_ALS_LINE line );
+  /* sets a (alpha)numeric description for the given line                */
+  
+T_CPHS_RET cphs_getRoamingInd     ( T_CPHS_ROAMING_IND* indicator );
+  /* checks if roaming is active 
+  */
+
+/* reads from SIMif calls shall be diverted for the available lines    */
+  /* (line1, line2, fax, data)                                           */
+T_CPHS_RET cphs_getDivertCallInd  ( T_CPHS_LINE_IND* indicator );
+
+
+
+T_CPHS_RET cphs_getVoiceMessageInd( T_CPHS_LINE_IND* indicator);
+  /* reads from SIM if voice mails are waiting for the available lines   */
+  /* (line1, line2, fax, data)                                           */
+
+T_CPHS_RET cphs_setVoiceMessageInd( UBYTE              line_mask,
+                                    T_CPHS_FLAG_STATUS flag );
+  /* sets on SIM the voice mail waiting flag for the given lines in the  */
+  /* parameter line_mask. The bitmask will be created by oring the lines.*/
+  /* The bits for the lines are defined in T_CPHS_LINE_INDEX.            */
+
+
+
+
+T_CPHS_RET cphs_checkEmergencyCall( char* num );
+/* check if the current call number(ASCII encoded) is an emergency number supported     */
+/* by CPHS.                                                              */
+
+
+
+T_CPHS_RET cphs_getCPHSInfo       ( T_CPHS_INFO *info );
+  /* reads from SIM the phase of the SIM and which optional datafields   */
+  /* are present in the SIM                                              */
+  /* (operator name shortform, mailbox numbers, service string table,    */
+  /*  information numbers)                                               */
+
+
+
+T_CPHS_RET cphs_getCSP            ( T_CPHS_CSP *csp );
+  /* reads all entries of the customer service profile and fills         */
+
+
+
+T_CPHS_RET cphs_getMailboxNumbers ( T_CPHS_MAILBOX_NUM_LIST *nums );
+  /* reads all mailbox numbers from the SIM fills all mailbox number     */
+  /* entries in the mailbox number list                                  */
+
+
+
+T_CPHS_RET cphs_getInfoNumbers    ( T_CPHS_INFO_NUM_LIST *nums, UBYTE level, UBYTE startIndex, T_CPHS_CB_FUNC callback);
+  // reads all information numbers from the SIM fills all information    
+  // numbers into the array of pointers at the directory level specified from the specified
+  //index until an entry of a different level is encountered
+  //The callback function is called when the list has been retrieved from the SIM and is passed
+  //the list as a parameter
+  //e.g. cphs_getInfoNumbers(NumberList, 1, 1, callback_func) would get the first level
+  //in the information numbers list
+  //to get the directory below an item in this list, you'd have to read the entry index and
+  //call cphs_getInfoNumbers(NewNumberList, entry_level+1, entry_index+1, callback_func), as
+  //directory contents are stored right after the directory heading.
+  //The MSB of the entryStat field in a info number list entry is set to 1 if it is a number
+  //and 0 if it is a directory heading.
+  
+
+T_CPHS_RET cphs_selectInfoNumber  ( USHORT                 index,
+                                    T_CPHS_INFO_NUM_ENTRY *num, T_CPHS_CB_FUNC callback);
+  // reads the information number entry given by index from    */
+  // the SIM   */                                                          */
+  //The index of a desired entry can be found in the "index" field of that entry in a previously
+  //retrieved information number list
+
+
+ 
+
+
+/*-----------------------------------------------------------------------*
+ *       SIMLOCK Part                                                    *
+ *-----------------------------------------------------------------------*/
+
+
+/*---- Predefined Values ------------------------------------------------*/
+
+#define SIMLOCK_PWD_MAX_LEN       16
+#define SIMLOCK_PWD_MIN_LEN_SIM    6
+#define SIMLOCK_PWD_MIN_LEN_OTHER  8
+
+
+/*---- Types ------------------------------------------------------------*/
+
+typedef enum
+{
+  SIMLOCK_FAIL = -1,
+  SIMLOCK_ENABLE,
+  SIMLOCK_DISABLE,
+  SIMLOCK_LOCKED,
+  SIMLOCK_BLOCKED
+} T_SIMLOCK_RET;
+
+typedef enum
+{
+  SIMLOCK_NETWORK = 0,
+  SIMLOCK_NETWORK_SUBSET,
+  SIMLOCK_SERVICE_PROVIDER,
+  SIMLOCK_CORPORATE,
+  SIMLOCK_SIM,
+  SIMLOCK_FIRST_SIM
+} T_SIMLOCK_TYPE;
+
+
+/*---- Functions --------------------------------------------------------*/
+
+//T_SIMLOCK_RET simlock_checkLock   ( T_SIMLOCK_TYPE type );
+/* checks the lock status of the given lock type. On successfull check   */
+/* the status will be returned. If an error occured SIMLOCK_FAIL will    */
+
+//#define _TESTING__
+#ifdef _TESTING__
+void Cphs_reading_test();
+void Cphs_writing_test();
+#endif
+
+#endif //_CPHS_H_
+