分类: LINUX
2008-01-11 17:52:23
gpephone使用gsmd
官方文档: http://wiki.openmoko.org/wiki/Gsmd/document
一些patch
call forwarding
http://lists.openmoko.org/pipermail/gsmd-devel/attachments/20080102/1e95e99c/call-forwarding.bin
gsmd 使用的是socket方式进行通信
socket参考文档
Linux下select调用的过程:
1.用户层应用程序调用select(),底层调用poll())
2.核心层调用sys_select() ------> do_select()
最终调用文件描述符fd对应的struct file类型变量的struct file_operations *f_op的poll函数。
poll指向的函数返回当前可否读写的信息。
1)如果当前可读写,返回读写信息。
2)如果当前不可读写,则阻塞进程,并等待驱动程序唤醒,重新调用poll函数,或超时返回。
3.驱动需要实现poll函数。
当驱动发现有数据可以读写时,通知核心层,核心层重新调用poll指向的函数查询信息。
poll_wait(filp,&wait_q,wait) // 此处将当前进程加入到等待队列中,但并不阻塞
在中断中使用wake_up_interruptible(&wait_q)唤醒等待队列
AT命令
openmoko中pin的处理
sim卡操作的一些函数(MSDN)
sim卡操作的一些函数
SimChangeLockingPassword
SimGetLockingStatus
SimGetPhoneLockedState
SimSetLockingStatus
SimUnlockPhone
呼叫限制,呼叫等待等
lineGetCallBarringCaps Retrieves the barring modes supported by the radio hardware and network.
lineGetCallBarringState Retrieves the current barring state for a given mode.
lineGetCallWaitingCaps Retrieves the set of media modes for which call waiting is supported by the radio hardware and network.
lineGetCallWaitingState Retrieves the list of media modes for which call waiting is enabled.
lineGetRegisterStatus Retrieves the network registration status of the device.
lineSendUSSD Sends a USSD message.
lineSetCallBarringPassword Changes the call-barring password.
lineSetCallBarringState sets call barring of media modes for a given call-barring mode.
lineSetCallWaitingState Sets call waiting for a given set of media modes.
at+creg=2 -> set gsm to report location + cellid
at+creg? -> answers "+CREG: 2, 1, 00CB, 3F5F"
AT+CFUN= 0,
modem不可以打电话,发短信,但是可以有其他操作,比如读 sim卡之类的。
AT+CFUN= 1,
modem可以打电话,发短信...所以叫做full functionality
lgsm_passthrough()
->lgsm_blocking_wait_packet()
->lgsm_handle_packet()
->evt_demux_msghandler()
要与gsmd通信必须调用lgsm_init() 获得lgsm_handle结构的指针,这个结构包括
与gsmd通信所建立的socket,lgsm_handle结构还包括一个指向lgsm_msg_handler的函数指针数组
通过lgsm_register_handler可以为不同的消息定义相应的回调函数,回调函数保存在指针数组里,
如:lgsm_register_handler (lgsmh, GSMD_MSG_PIN, pin_msghandler)
为GSMD_MSG_PIN消息注册回调函数:pin_msghandler
gsmd发送at命令以后把收到的回复通过 gsmd_ucmd_submit 发给客户端(libtapi gsmdapp libgsmd-tool) 等。
gsmd_msg_type
libtapi是通过调用tel_open_session()来调用 lgsm_init()
libgsmd-tool 是在main() 直接调用 lgsm_init()
tel_open_session()
->lgsm_init()
WAVECOM Q2358C CDMA模块常用AT命令如下:
厂家认证 AT+CGMI 获得厂家的标识
模式认证 AT+CGMM 查询支持频段
修订认证 AT+CGMR 查询软件版本
生产序号 AT+CGSN 查询IMEI NO.
TE设置 AT+CSCS 选择支持网络
查询IMSI AT+CIMI 查询国际移动电话支持认证
卡的认证 AT+CCID 查询SIM卡的序列号
功能列表 AT+GCAP 查询可供使用的功能列表
重复操作 A/ 重复最后一次操作
关闭电源 AT+CPOF 暂停模块软件运行
设置状态 AT+CFUN 设置模块软件的状态
活动状态 AT+CPAS 查询模块当前活动状态
报告错误 AT+CMEE 报告模块设备错误
键盘控制 AT+CKPD 用字符模拟键盘操作
拨号命令 ATD 拨打电话号码
挂机命令 ATH 挂机
回应呼叫 ATA 当模块被呼叫时回应呼叫
详细错误 AT+CEER 查询错误的详细原因
DTMF信号 AT+VTD,+VTS +VTD设置长度,+VTS发送信号
重复呼叫 ATDL 重复拨叫最后一次号码
自动拨号 AT%Dn 设备自动拨叫号码
自动接应 ATS0 模块自动接听呼叫
呼入载体 AT+CICB 查询呼入的模式,DATA or FAX or SPEECH
增益控制 AT+VGR,+VGT +VGR调整听筒增益,+VGT调整话筒增益
静音控制 AT+CMUT 设置话筒静音
声道选择 AT+SPEAKER 选择不同声道(2对听筒和话筒)
回声取消 AT+ECHO 根据场所选择不同回声程度
单音修改 AT+SIDET 选择不同回声程度
初始声音参数 AT+VIP 恢复到厂家对声音参数的默认设置
信号质量 AT+CSQ 查询信号质量
网络选择 AT+COPS 设置选择网络方式(自动/手动)
网络注册 AT+CREG 当前网络注册情况
网络名称 AT+WOPN 查询当前使用网络提供者
网络列表 AT+CPOL 查询可供使用的网络
输入PIN AT+CPIN 输入PIN码
输入PIN2 AT+CPIN2 输入第二个PIN码
保存尝试 AT+CPINC 显示可能的各个PIN码
简单上锁 AT+CLCK 用户可以锁住状态
改变密码 AT+CPWD 改变各个PIN码
选择电话簿 AT+CPBS 选择不同的记忆体上存储的电话簿
读取电话簿 AT+CPBR 读取电话簿目录
查找电话簿 AT+CPBF 查找所需电话目录
写入电话簿 AT+CPBW 增加电话簿条目
电话号码查找 AT+CPBP 查找所需电话号码
动态查找 AT+CPBN 查找电话号码的一种方式
用户号码 AT+CNUM 选择不同的本机号码(因网络服务支持不同)
避免电话簿初始化 AT+WAIP 选择是否防止电话簿初始化
选择短消息服务 AT+CSMS 选择是否打开短消息服务以及广播服务
短消息存储 AT+CPMS 选择短消息优先存储区域
短消息格式 AT+CMGF 选择短消息支持格式(TEXT or PDU)
保存设置 AT+CSAS 保存+CSCA and +CSMP参数设置
恢复设置 AT+CRES 恢复+CSCA and +CSMP参数设置
显示TEXT参数 AT+CSDH 显示当前TEXT模式下结果代码
新消息提示 AT+CNMI 选择当有新的短消息来时系统提示方式
读短消息 AT+CMGR 读取短消息
列短消息 AT+CMGL 将存储的短消息列表
发送短消息 AT+CMGS 发送短消息
写短消息 AT+CMGW 写短消息并保存在存储器中
从内存中发短消息 AT+CMSS 发送在存储器中保存的短消息
设置TEXT参数 AT+CSMP 设置在TEXT模式下条件参数
删除短消息 AT+CMGD 删除保存的短消息
服务中心地址 AT+CSCA 提供短消息服务中心的号码
选择广播类型 AT+CSCB 选择系统广播短消息的类型
广播标识符 AT+WCBM 读取SIM卡中系统广播标识符
短消息位置修改 AT+WMSC 修改短消息位置
短消息覆盖 AT+WMGO 写一条短消息放在第一个空位
呼叫转移 AT+CCFC 设置呼叫转移
呼入载体 AT+CLCK 锁定呼入载体以及限制呼入或呼出
修改SS密码 AT+CPWD 修改提供服务密码
呼叫等待 AT+CCWA 控制呼叫等待服务
呼叫线路限定 AT+CLIR 控制呼叫线路认证
呼叫线路显示 AT+CLIP 显示当前呼叫线路认证
已连接线路认证 AT+COLP 显示当前已连接线路认证
计费显示 AT+CAOC 报告当前费用
累计呼叫 AT+CACM 累计呼叫费用
累计最大值 AT+CAMM 设置累计最大值
单位计费 AT+CPUC 设置单位费用以及通话计时
多方通话 AT+CHLD 保持或挂断某一通话线路(支持多方通话)
当前呼叫 AT+CLCC 列出当前呼叫
补充服务 AT+CSSN 设置呼叫增值服务
非正式补充服务 AT+CUSD 非正式的增值服务
保密用户 AT+CCUG 选择是否在保密状态
载体选择 AT+CBST 选择数据传输的类型
选择模式 AT+FCLASS 选择发送数据or 传真
服务报告控制 AT+CR 是否报告提供服务
结果代码 AT+CRC 报告不同的结果代码(传输方式、语音或数据)
设备速率报告 AT+ILRR 是否报告当前传输速率
协议参数 AT+CRLP 设置无线连接协议参数
其他参数 AT+DOPT 设置其他的无线连接协议参数
传输速度 AT+FTM 设置传真发送的速度
接收速度 AT+FRM 设置传真接收的速度
HDLC传输速度 AT+FTH 设置传真发送的速度(使用HDLC协议)
HDLC接收速度 AT+FRH 设置传真接收的速度(使用HDLC协议)
停止传输并等待 AT+FTS 停止传真的发送并等待
静音接收 AT+FRS 保持一段静音等待
固定终端速率 AT+IPR 设置数据终端设备速率
其他位符 AT+ICF 设置停止位、奇偶校验位
流量控制 AT+IFC 设置本地数据流量
设置DCD信号 AT&C 控制数据载体探测信号
设置DTR信号 AT&D 控制数据终端设备准备信号
设置DSR信号 AT&S 控制数据设备准备信号
返回在线模式 ATO 返回到数据在线模式
结果代码抑制 ATQ 是否模块回复结果代码
DCE回应格式 ATV 决定数据通信设备回应格式
默认设置 ATZ 恢复到默认设置
保存设置 AT&W 保存所有对模块的软件修改
自动测试 AT&T 自动测试软件
回应 ATE 是否可见输入字符
回复厂家设置 AT&F 软件恢复到厂家设置
显示设置 AT&V 显示当前的一些参数的设置
认证信息 ATI 显示多种模块认证信息
区域环境描述 AT+CCED 用户获取区域参数
自动接收电平显示 AT+CCED 扩展到显示接收信号强度
一般显示 AT+WIND
在ME和MSC之间数据计算模式 AT+ALEA
数据计算模式 AT+CRYPT
键盘管理 AT+EXPKEY
PLMN上的信息 AT+CPLMN
模拟数字转换测量 AT+ADC
模块事件报告 AT+CMER
选择语言 AT+WLPR 选择可支持的语言
增加语言 AT+WLPW 增加可支持的语言
读GPIO值 AT+WIOR
写GPIO值 AT+WIOW
放弃命令 AT+WAC 用于放弃SMS、SS and PLMN
设置单音 AT+WTONE 设置音频信号(WMOi3)
设置DTMF音 AT+WDTMF 设置DTMF音(WMOi3)