view src/aci2/aci/cphs.h @ 600:8f50b202e81f

board preprocessor conditionals: prep for more FC hw in the future This change eliminates the CONFIG_TARGET_FCDEV3B preprocessor symbol and all preprocessor conditionals throughout the code base that tested for it, replacing them with CONFIG_TARGET_FCFAM or CONFIG_TARGET_FCMODEM. These new symbols are specified as follows: CONFIG_TARGET_FCFAM is intended to cover all hardware designs created by Mother Mychaela under the FreeCalypso trademark. This family will include modem products (repackagings of the FCDEV3B, possibly with RFFE or even RF transceiver changes), and also my desired FreeCalypso handset product. CONFIG_TARGET_FCMODEM is intended to cover all FreeCalypso modem products (which will be firmware-compatible with the FCDEV3B if they use TI Rita transceiver, or will require a different fw build if we switch to one of Silabs Aero transceivers), but not the handset product. Right now this CONFIG_TARGET_FCMODEM preprocessor symbol is used to conditionalize everything dealing with MCSI. At the present moment the future of FC hardware evolution is still unknown: it is not known whether we will ever have any beyond-FCDEV3B hardware at all (contingent on uncertain funding), and if we do produce further FC hardware designs, it is not known whether they will retain the same FIC modem core (triband), if we are going to have a quadband design that still retains the classic Rita transceiver, or if we are going to switch to Silabs Aero II or some other transceiver. If we produce a quadband modem that still uses Rita, it will run exactly the same fw as the FCDEV3B thanks to the way we define TSPACT signals for the RF_FAM=12 && CONFIG_TARGET_FCFAM combination, and the current fcdev3b build target will be renamed to fcmodem. OTOH, if that putative quadband modem will be Aero-based, then it will require a different fw build target, the fcdev3b target will stay as it is, and the two targets will both define CONFIG_TARGET_FCFAM and CONFIG_TARGET_FCMODEM, but will have different RF_FAM numbers. But no matter which way we are going to evolve, it is not right to have conditionals on CONFIG_TARGET_FCDEV3B in places like ACI, and the present change clears the way for future evolution.
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 01 Apr 2019 01:05:24 +0000
parents 93999a60b835
children
line wrap: on
line source

/*
+--------------------------------------------------------------------+
| PROJECT:                              $Workfile:: cphs.h          $|
| $Author::                             $Revision::                 $|
| CREATED:                              $Modtime::                  $|
| STATE  : code                                                      |
+--------------------------------------------------------------------+

   MODULE  : CPHS

   PURPOSE : header file for CPHS functionalities.
*/

#ifndef CPHS_H
#define CPHS_H

/* CPHS functions return type */
typedef enum
{
  CPHS_FAIL 			= -1,
  CPHS_OK,
  CPHS_EXEC,
  CPHS_BUSY,                                        
  CPHS_NOT_INIT
} T_CPHS_RET;

/* Definition of parameter LINES */
#define T_CPHS_LINES USHORT

#define  CPHS_LINE_NULL (0x0000)
#define  CPHS_LINE1     (0x0001)
#define  CPHS_LINE_DATA (0x0002)
#define  CPHS_LINE_FAX  (0x0004)
#define  CPHS_LINE2     (0x0100)

/* Definition of max length for operator name */
#define CPHS_MAX_OPER_LONG  (30)
#define CPHS_MAX_OPER_SHORT (10)

/* Definition for customer service profile */
#define CPHS_MAX_CSP  (18) /* Phase 2: field should be always 18 bytes long */
#define CPHS_MAX_CSP2 (22) /* Phase 2: field should be always 22 bytes long (RFU = 2 bytes)*/

//#define CPHS_SERVICE_CSP  (1)
//#define CPHS_SERVICE_SST  (2)
//#define CPHS_SERVICE_MB   (3)
//#define CPHS_SERVICE_OPNS (4)
//#define CPHS_SERVICE_NUMS (5)
#define CPHS_SERVICE_CSP  (5)
#define CPHS_SERVICE_SST  (6)
#define CPHS_SERVICE_MB   (7)
#define CPHS_SERVICE_OPNS (8)
#define CPHS_SERVICE_NUMS (1)
#define CPHS_SERVICE_ALLOCATED (1)
#define CPHS_SERVICE_ACTIVATED (2)
#define CPHS_CHECK_SST(sst,service,attribute) \
                      ((UBYTE) ((sst) >> ((service-1)*2)) & (attribute))

/* Definition for mailbox numbers */
#define CPHS_MIN_MB_ENTRIES     (1) 
#define CPHS_MAX_MB_ENTRIES     (4)
#define CPHS_MAX_MB_NUMBER_LEN (40) 
#define CPHS_MAX_MB_ALPHA_LEN  (22)
#define CPHS_MIN_MB_LEN        (14)

#define CPHS_MAX_MB_NUMBER_BYTES (10)

#define CPHS_MAX_INF_ALPHA_TAG  (16)
#define CPHS_MAX_INF_NUMBER     (12)

/* Definition of flag status for voice message waiting */
#define CPHS_ERASE_WAITING_FLAG (0)
#define CPHS_SET_WAITING_FLAG   (1)
#define CPHS_QUERY_WAITING_FLAG (2)

/* Definition of flag status for CFU */
#define CPHS_ERASE_CFU_FLAG (0)
#define CPHS_SET_CFU_FLAG   (1)
#define CPHS_QUERY_CFU_FLAG (2)

#define CPHS_FLAG_DEACTIVATED (0)
#define CPHS_FLAG_ACTIVATED   (1)
#define CPHS_FLAG_NOT_PRESENT (2)
#define CPHS_FLAG_ERROR       (3)

/* CPROAM related parameters */
#define CPHS_ROAMING_ON  (1)
#define CPHS_ROAMING_OFF (0)

/* Information numbers feature related parameter */
typedef enum
{
  CPNUMS_MODE_EXPLORE	= 1,	// should apply to a folder to be explored
  CPNUMS_MODE_QUERY	= 2  	// queries information related to an entry
} T_CPHS_CPNUMS_MODE;

/* structure used to hold information numbers entry */
typedef struct
{
  UBYTE   element_index;    // index of element described in this structure
  UBYTE	  index_level;
  CHAR 		alpha_tag[CPHS_MAX_INF_ALPHA_TAG];
  CHAR		number[CPHS_MAX_INF_NUMBER];
  UBYTE   type_of_address;
  BOOL 		premium_flag;		  // should it be charged with premium price?
  BOOL 		network_flag;		  // is it network specific ?
} T_CPHS_INF_NUM;

/* structure used to hold cphs information */
typedef struct
{
  UBYTE	  phase;  
  USHORT  sst;    /* same format as on the SIM: field 6F16 */
} T_CPHS_CINF;

/* structure used to hold mailbox number entries */
typedef struct
{
  T_CPHS_LINES line;
  CHAR         number[CPHS_MAX_MB_NUMBER_LEN];
  UBYTE        toa;
  CHAR         alpha_id[CPHS_MAX_MB_ALPHA_LEN];
} T_CPHS_MB;

/* Callback types */
typedef enum
{
  CPHS_INIT_RES = 	1,
  CPHS_ROAM_IND,
  CPHS_VOICE_MAIL_IND,
  CPHS_VOICE_MAIL_RES,
  CPHS_CFU_RES
} T_CPHS_CB;

/* Callback parameters */
typedef struct
{
  T_CPHS_CB     cb_type;
  T_CPHS_RET    operation_result;
  UBYTE         set_flag;
  T_CPHS_LINES  line;
} T_CPHS_PARAMS;

/* data buffer for phonebook alpha */
typedef struct 
{
  UBYTE    data[CPHS_MAX_MB_ALPHA_LEN]; 
  UBYTE    len;
} T_CPHS_PB_TEXT;

/* Callback general prototype */
typedef void T_CPHS_USER_CB( T_CPHS_PARAMS *params );


/* user interface functions */
EXTERN T_CPHS_RET cphs_start (T_CPHS_USER_CB *cphs_user_cb);
EXTERN T_CPHS_RET cphs_refresh_data (void);
EXTERN T_CPHS_RET cphs_stop (void);
EXTERN T_CPHS_RET cphs_check_status(void);
EXTERN T_CPHS_RET cphs_explore_info_nbs (UBYTE element_idx, 
                                         UBYTE *inf_num_indexes, 
                                         UBYTE *max_elmts);
EXTERN T_CPHS_RET cphs_read_info_nb (UBYTE element_idx,
                                     T_CPHS_INF_NUM *inf_num);
EXTERN T_CPHS_RET cphs_info_num_get_max(UBYTE *max_index);
EXTERN T_CPHS_RET cphs_get_line(UBYTE        srcId, 
                                UBYTE        call_id, 
                                T_CPHS_LINES *line, 
                                CHAR         *line_desc, 
                                UBYTE        *max_line_desc);
EXTERN T_CPHS_RET cphs_get_fwd_flag(UBYTE *cfu_set, 
                                    T_CPHS_LINES line);
EXTERN T_CPHS_RET cphs_set_waiting_flag(UBYTE flag_set, T_CPHS_LINES lines);
EXTERN T_CPHS_RET cphs_get_waiting_flag(UBYTE *flag_set, T_CPHS_LINES line);
EXTERN T_CPHS_RET cphs_get_opn         (CHAR *longname,  UBYTE *max_longname,
                                        CHAR *shortname, UBYTE *max_shortname);
EXTERN T_CPHS_RET cphs_get_cphs_info   (UBYTE *phase, USHORT *sst);
EXTERN T_CPHS_RET cphs_get_csprof      (CHAR  *csp,
                                        CHAR  *csp2,
                                        UBYTE *max_csp_length,
                                        UBYTE *max_csp2_length);
EXTERN T_CPHS_RET cphs_read_mb_number  (BYTE rec_id, T_CPHS_MB *mailbox_entry);
EXTERN SHORT cphs_state_indication     (UBYTE psaStatus, SHORT cmeError);
EXTERN void cphs_write_mb_number_cb    (SHORT table_id);
GLOBAL T_CPHS_RET cphs_write_mb_number (UBYTE         srcId,
                                        UBYTE         rec_id,
                                        UBYTE        *tag,
                                        UBYTE         tag_len,
                                        UBYTE         bcd_len,
                                        UBYTE        *number,
                                        UBYTE         ton_npi);
EXTERN T_CPHS_RET cphs_first_free      (UBYTE *first_free);
GLOBAL T_CPHS_RET cphs_get_mb_parameter (  SHORT*        firstIdx,
                                           SHORT*        lastIdx,
                                           UBYTE*        nlength,
                                           UBYTE*        tlength );


EXTERN BOOL       cphs_line_makes_sense(T_CPHS_LINES line);
EXTERN void cphs_write_csp_cb    (SHORT table_id);
EXTERN T_CPHS_RET cphs_set_csp_value(UBYTE srcId,
                                     UBYTE *csp,
                                     UBYTE csp_len);

/* control interface functions */
EXTERN void cphs_voice_mail_ind   (UBYTE flag_set, USHORT line);
EXTERN void cphs_roaming_ind      (UBYTE roaming_status);
EXTERN T_CPHS_RET cphs_set_cfu_flag(UBYTE cfu_set, T_CPHS_LINES lines);


/* ACI/CPHS adapter layer */
EXTERN void cphs_sim_access_data(UBYTE cphs_sim_operation,
                                 UBYTE cphs_sim_field,
                                 UBYTE record,
                                 UBYTE *data_buffer, 
                                 UBYTE data_buffer_size);
EXTERN void cphs_bcd2number(CHAR  *number,
                            UBYTE *bcd,
                            UBYTE bcd_size);
EXTERN T_CPHS_RET cphs_get_als_active_line(UBYTE srcId, T_CPHS_LINES *line);

EXTERN T_CPHS_LINES als_get_call_info(SHORT call_id);




EXTERN void cphs_abort_current_action(void);
EXTERN void cphs_sim_data_accessed(UBYTE max_records, UBYTE data_len);
EXTERN void cphs_sim_data_failure(void);


/* structure containing internal parameters of CPHS */
/* describes SIM operation in progress */
#define CPHS_SIM_NO_ACTION       (0)
#define CPHS_SIM_READ_TRANSP_EF  (1)
#define CPHS_SIM_WRITE_TRANSP_EF (2)
#define CPHS_SIM_READ_RECORD     (3)
#define CPHS_SIM_WRITE_RECORD    (4)

/* describes SIM updating operation status */
#define CPHS_SIM_NOT_UPDATING   (0)
#define CPHS_SIM_CFU            (1)
#define CPHS_SIM_INFO_NUMS      (2)
#define CPHS_SIM_INFO_NUMS_EA01 (3)
#define CPHS_SIM_CSP            (4)
#define CPHS_SIM_VWI            (5)   /* when updating SIM user initiated */
#define CPHS_SIM_OPNLONG        (6)
#define CPHS_SIM_OPNSHORT       (7)
#define CPHS_SIM_ALSNAMES       (8)
#define CPHS_SIM_CINF           (9)
#define CPHS_SIM_MB            (10)
#define CPHS_SIM_STOP_INIT     (11)
/* Add support for Orange SIM's  */
#define CPHS_SIM_ORANGE_CSP    (12)

/* decribes SIM write failures */
#define CPHS_SIM_WRITE_FAIL     (0)
#define CPHS_SIM_WRITE_OK       (1)

#endif /* CPHS_H */