基于MTK平臺的短信控制遠程終端實現方案
由圖2可知,MMI主要由Application Layer、Framework和UI Layer三個部分組成。
① Application Layer: 主要包括用戶自己定義的程序,用來實現各種功能。如果用戶需要在MTK的平臺上添加一些功能,這些功能的程序就是在這個地方添加。
② Framework:由事件處理、歷史機制、OSL、文件系統和NVRAM組成,它接收來自所有任務的時間,幫助應用程序控制屏幕,并提供給應用程序各種系統調用接口。
③ UI Layer:包含Category Screens、UI Elements、Themes、Fonts、Image和Graphics Library,它為應用程序提供界面顯示的相關功能。
本系統的遠程終端的實現選用的手機基帶芯片為MTK6225,選用它的主要原因是其具有成熟的硬件基礎和軟件架構以及高性價比。
2 系統框架
圖3為基于MTK平臺的短信控制遠程終端的總體框架。系統由客戶端、遠程終端、負載3個模塊組成。客戶端是任何一部具有短信通信功能的手機;遠程終端為以MTK6225為主控芯片的MTK平臺,利用MTK平臺的短信模塊功能及其閑置的GPIO口實現對負載(需要遠程控制的對象)的控制。
圖3 基于MTK平臺的短信控制遠程終端的總體框架
3 系統實現
3.1 MTK6225 GPIO口的驅動
GPIO[3](General Purpose Input Output,通用輸入輸出端口)。MTK6225提供了53個通用輸入/輸出口和4個通用輸出口。MTK通過對I/O口的復用來減少I/O端口的個數,每個GPIO口有4種工作模式,即模式0~3。每個GPIO口都可通過軟件配置為輸入、輸出或特定用途的雙向口。其被用作輸入使用時,GPIO口可作為中斷源。本文選擇GPIO口GPIO45的模式0,即配置端口為輸入/輸出模式。在MTK6225的平臺中,對GPIO的操作有以下3步:
① 確定要操作的引腳是在GPIO模式。通過函數GPIO_ModeSetup(kal_uint16 pin,kal_uint16 conf_data)設置。其中pin為端口號,conf_data為模式的選擇。本文試驗中對GPIO模式的設置如下。GPIO_ModeSetup((kal_uint16)GPIO_port_45, (kal_uint16)0)
② 配置該引腳為輸入/輸出。通過函數void GPIO_InitIO(char direction,char port)設置。其中direction為輸入INPUT(0)或者輸出OUTPUT(1),port為端口號。本文試驗中對GPIO口的輸入/輸出設置如下,設置GPIO45為輸出,即可通過它的輸出信息來控制外接負載。GPIO_InitIO((char)1, (char)GPIO_PORT_45)
③ 讀寫數據。通過函數void GPIO_WriteIO(kal_char data,kal_char port)設置,其中data為1(高電平)或者0(低電平),port為端口號。本文試驗中對GPIO口引腳寫數據操作如下。GPIO45輸出高電平,即可打開外接負載;GPIO34輸出低電平,即可關斷外接負載。GPIO_WriteIO((char)1,(char)GPIO_PORT_45)GPIO_WriteIO((char)0,(char)GPIO_PORT_34)
在本文所做試驗中,對GPIO初始化成功并對GPIO端口讀寫數據完成后,需要通過函數GPIO_ReadIO(char port)來讀取GPIO端口的狀態,通過讀取其端口狀態來和寫到GPIO口的數據相比較,若匹配則說明控制成功,反之則失敗,其中port為端口號。
3.2 MTK的短信模塊
3.2.1 MTK短信接收的流程
從函數InitializeAll()中初始化開始,到信息顯示在MTK的手機界面,提示用戶讀取信息的過程中經歷中斷、協議處理、MMI層收到新短信,更新短信計數器,轉換短信數據,并壓入未讀短信隊列等操作。
3.2.2 MTK發送短信息的核心函數
相比于日常生活中短信通信不同的是此平臺是根據對遠程終端的控制情況而自動回復的。自動回復信息需要知道發送短信到MTK遠程終端的手機的號碼,還需要自填充自動回復的短信內容。void mmi_frm_sms_send_sms_seg(void)為MTK6225發送短信的核心函數,自動回復是在此函數的基礎上將發送短信到MTK終端的手機號碼作為該函數的形參,對發送內容的自填充也在該函數中定義:char * content=the bulb turn on successfully;(此處即為根據接收到的指令對外接負載采取操作后,自動回復信息的內容,根據操作結果不同自填充短信內容即不同)。
評論