(SAP) Software Application Platform
Call SMS CBS SS PB Game. E-Mail Java App MMS/WEB ATC Multimedia Applications Audio/Video/Test PTT H.324/M MMI J2ME WAP SIP RTP/RTCP SOFTWARE APPLICATION PLATFORM MMI Platform OSA EFS DAL LCD,KPD,CHR AUDIO, VIDEO MN (Call,CB,NV,SS,SMS,GPRS) RTOS Diagnostics MIDI MP3 MPEG4 H.263 Engines Layer 3 Layer 2 TCP/UDP IP/PPP Drivers(HAL) Layer 1
Features GSM/GPRS. RTOS APIs Thread Timer, Memory Management, Message Queue TBIOS APIs, LCD, Keypad, Charging, EFS, RTC, Audio. client-server APIs
Applications smscb call,ss sms MN phone (data mng) (GPRS) PPP TCP/IP CM SMRL SIM SM SNDCP MM GMM RR GRR DL LLC RLC/MAC Physical Layer
Features Based on 3GPP Release 1999 (200.6). Qual Band.(850/900/1800/1900) Basic Call Functions. Multiparty Call. SMS, SMSCB SS Service GPRS Class 10.
OSA TBIOS(Terminal Basic I/O System) MMI
SA
SA
1 (SCI_ALLOC), : BLOCK_52_SIZE BLOCK_100_SIZE BLOCK_300_SIZE BLOCK_600_SIZE BLOCK_1600_SIZE 1600 byte size BYTE_HEAP_SIZE
2 ASSERT No Memory Assert Pool mem_cfg_prod.c
Client APIs call back Server
FS
V
V Item (1) 1. NV Item XXX_nv.h NV ID type enum { NV_ITEM1_ID, } Notes: 500-800 type struct { uint32 uint16 }NV_ITEM1_T; para1; para2;
V Item (2) 2. NV item NV_ITEM1_T nv_item1; If(MN_RETURN_FAILURE== MNNV_ReadItem(NV_ITEM1_ID, sizeof(nv_item1_t), nv_item1)) { // default MNNV_WriteItem(NV_ITEM1_ID, sizeof(nv_item1_t), nv_item1) } // default MNNV_WriteItem(NV_ITEM1_ID, sizeof(nv_item1_t), nv_item1)
FS C ffs.h FFS.doc
BIOS TBIOS: Terminal Basic IO System DAL: Device Abstract Layer HAL: Hardware Abstract Layer
BIOS TBIOS DAL(Device Abstract Layer) APP HAL(Hardware Abstract Layer) DAL DAL LCD DAL HAL HAL
AL ---LCD LCD dal_lcd.h LCD LCD LCD_Init LCD LCD_Close LCD LCD_GetInfo LCD LCD_InvalidateRect LCD LCD_Invalidate / LCD_EnterSleep LCD LCD_SetContrast
AL ----Keypad Keypad Server Keypad Server APP Keypad dal_keypad.h
AL flash Flash_Init Flash_Close Flash_Read Flash_Write Flash_Copy Flash_Erase Flash_(Un)Lock Flash_GetDeviceInfo NV flash SRAM flash.c
AL ---Audio Audio types: Generic Tone Customer Tone( ) DTMF Ring(MIDI, Customer Tone, WAV etc.) MP3 Voice Audio Handhold Hand free Earphone DAL_Audio.h
AL DAL DAL_XXX.h
MN PS MN MN Phone CALL Control CC SMS SMSCB GPRS SS Data Manager DM
N Call MNCALL_StartCall Call cc_callback EV_MN_APP_CONNECTING_IND_F cc_callback Phone Server Call Server SMS Server call back
hone API MNPHONE_SelectPLMN MNPHONE_ListPLMN MNPHONE_PowerOff MNPHONE_SetServiceType MNPHONE_EnableRoaming MNPHONE_VoiceControl MNPHONE_ResponseCHV SIM MNPHONE_OperateCHV SIM CHV MNPHONE_GetRSSIOfNCELL MNPHONE_StartupPs MNPHONE_GprsDetach GPRS Detach MNPHONE_GSMDetach GSM detach
hone Events EV_MN_APP_SIMCARD_READY_IND_F, /* simcard worked ok */ EV_MN_APP_SIMCARD_NOT_READY_IND_F, /* simcard not ready */ EV_MN_APP_SCELL_RSSI_IND_F, /* SCELL power indicator */ EV_MN_APP_DEACTIVE_PS_CNF_F, /* power off now */ EV_MN_APP_NCELL_RSSI_CNF_F, /* response for ncell rssi req */ EV_MN_APP_AOC_MODIFIED_IND_F, /* ind acm increased */ EV_MN_APP_FDN_SERVICE_IND_F, /* ind fdn enable or disable */ EV_MN_APP_PIN_FUNC_CNF_F, /* pin func cnf */ EV_MN_APP_PLMN_LIST_CNF_F, /* plmn list result to app */ EV_MN_APP_PLMN_SELECT_CNF_F, /* plmn select result to app */
ALL API MNCALL_StartCall MNCALL_ConnectCall MNCALL_DisconnectCall MNCALL_ReleaseActiveCalls MNCALL_HoldCall MNCALL_RetrieveCall MNCALL_SwapCalls MNCALL_ModifyCall MNCALL_StartDTMF DTMF MNCALL_StopDTMF DTMF MNCALL_IndicateAlert MNCALL_ReplyModification MNCALL_BuildMPTY MNCALL_SplitMPTY
MS API MNSMS_GetSmsStatuses SIM MNSMS_ReadSms MNSMS_UpdateSmsStatus MNSMS_AppSendSms MNSMS_AppSendCommand MNSMS_WriteMoSms MO MNSMS_WriteMtSms MT MNSMS_ReadSimParam SMS MNSMS_WriteSimParam
honebook API PHONEBOOK_FindPhonebookEntryByAlpha: PHONEBOOK_FindPhonebookEntryByNum : PHONEBOOK_DeletePhonebookEntry : PHONEBOOK_UpdatePhonebookEntry : PHONEBOOK_ReadPhonebookEntry : PHONEBOOK_GetFileInfo PhoneBook Note: SIM phonebook
PS MN
MI MMI MMI MMI
arget ARM ADS 1.2(ARM Developer Suite) * GUI * ARM ADS
mmi Task 1 1. use_task_id.h task_id #define P_APP 21 ID 40 50 static tasks 10 2. APP_task.c Stack, Queue #define P_APP_STACK_SIZE 8000 uint32 P_APP_THREAD_ADDR[P_APP_STACK_SIZE >> 2]; #define P_APP_QUEUE_NUM 40 uint32 P_APP_QUEUE_ADDR[P_APP_QUEUE_NUM * SCI_QUEUE_ITEM_SIZE];
mmi Task 2 3. APP task mmi_main.c void APP_Task( uint32 argc, void * argv) { } // // SCI_GetSignal(); // // Free Signal;
mmi Task 3 4.task SCI_InitAppTasks() app_task.c #define CREATE_APP_STATIC_THREAD(NAME, THREAD_ENTRY, PRIO) \ SCI_CreateStaticThread( NAME, "T_"#NAME, HREAD_ENTRY, \ 0, 0, NAME##_THREAD_ADDR, NAME##_STACK_SIZE, PRIO, \ SCI_PREEMPT, "Q_"#NAME, NAME##_QUEUE_ADDR, \ NAME##_QUEUE_NUM, SCI_AUTO_START); SCI_InitAppTasks(void) { CREATE_APP_STATIC_THREAD(P_APP, APP_Task, SCI_PRIORITY_LOWEST); } Notes:
ignal 1. Signal Header: uint16 SignalCode; uint16 SignalSize; xsignalheader Pre; xsignalheader Suc; BLOCK_ID Sender; // Sender Body: Signal signal
ignal 2. Signal Create xsignalheaderrec *signal_ptr = PNULL; // allocate signal memory // Fill the signal body 3. Signal Send SCI_SendSignal( xsignalheader signal_ptr, BLOCK_ID dest_id ); 4. Signal Receive xsignalheader SCI_GetSignal(BLOCK_ID thread_id );
ignal 1 1. Signal mmi_siganl_ext.h SignalID. (signal Code) type enum {. signal_1}; Signal type struct { uint16 SignalCode; uint16 SignalSize; xsignalheader Pre; xsignalheader Suc; BLOCK_ID Sender; // Sender Signal_Body_T signal_1; }Signal_1_T;
ignal 2 2. Signal Create Send xsignalheaderrec *signal_ptr = PNULL; signal_ptr = xsignalheaderrec*)sci_alloc(size(signal_1_t)); SCI_ASSERT((signal_ptr )!= SCI_NULL); SCI_MEMSET((void*)(signal_ptr ), 0, size(signal_1_t)); \ signal_ptr ->SignalSize = size(signal_1_t); signal_ptr ->SignalCode = signal_1 signal_ptr ->Sender =my_task; // fill the signal_1 body. // send the signal.. sci_sendsignal(signal_ptr, dest_task_id);
ignal 3 3. Signal Free xsignalheaderrec { } *signal_ptr = PNULL signal_ptr = SCI_GetSignal(P_APP); switch(signal_ptr ->SignalCode) siganl SCI_FREE(signal_ptr );
Q&A