All pastes #961571 Raw Edit

Meins

public diff v1 · immutable
#961571 ·published 2008-03-28 23:52 UTC
rendered paste body
--- pygsmd.py   2008-03-28 20:04:04.000000000 +0100+++ pysmsd.py   2008-03-29 00:40:16.000000000 +0100@@ -32,33 +32,46 @@  # see http://www.ctiforum.com/standard/standard/etsi/0710.pdf init_commands = ( # base settings-       # AT-Command Interpreter ready # expect this after hw reset        'Z', # soft reset        'E0V1', # echo off, verbose result on-       '+CMEE=2', # report mobile equipment error-       #'+CSCS=8859-1', # character set-       '+CRC=1', # cellular result codes-       '+CLIP=1', # calling line identification presentation enable-       '+COLP=1', # connected line identification presentation enable-       '+CMOD=0', # call modes supported: single mode-       '+CMGF=0', # pdu mode sms enable-       #'+CSTA=145', # select type of address: allow international access code character "+"-       #'+CVHU=0', # hangup control / not implemented by neo1973, uses ATH-       #'+CCFC=', # call forwarding number and conditions-       #'+CBST=7,0,1', # select bearer service type-       #'+CSNS=0', # single numbering scheme-       '+CREG=2', # enable network registration and location information unsolicited result code-       #'+CFUN=0', # limited phone functionality on+       # AT-Command Interpreter ready # expect this after hw reset+       '+CMEE=2', # report mobile equipment error+       #'+CSCS=8859-1', # character set+       '+CRC=1', # cellular result codes+       '+CLIP=1', # calling line identification presentation enable+       '+COLP=1', # connected line identification presentation enable+       '+CMOD=0', # call modes supported: single mode+       #'+CMGF=0', # pdu mode sms enable+       #'+CSTA=145', # select type of address: allow international access code character "+"+       #'+CVHU=0', # hangup control / not implemented by neo1973, uses ATH+       #'+CCFC=', # call forwarding number and conditions+       #'+CBST=7,0,1', # select bearer service type+       #'+CSNS=0', # single numbering scheme+       '+CREG=2', # enable network registration and location information unsolicited result code+       '+CFUN=1', # limited phone functionality on+       #'+CPIN="1111"', # limited phone functionality on+       #'+CMGL=4', # List all SMS+#      '+CPIN?;+CPAS;+CSQ;+CREG?;+WS46?;+COPS?;+CFUN?', # Set UCS-2 charset+       '+CSMS=0', # enables SMS support?+       '+CMGF=1', # pdu mode sms disable (enable text mode)+       '+CSCS="UCS2"', # Set UCS-2 charset+       '+CNMI=2,1,2,1,0', # Set the New Message Indications properties+#      '+CSCA?', # GSMD_SMS_GET_SERVICE_CENTRE+#      '+CPMS?', # GSMD_SMS_GET_MSG_STORAGE+       '+CMGL="ALL"', # List all SMS        ) statuscommand = ';'.join((-       '+CPIN?', # Pin state-       '+CPAS', # phone activity status-       '+CSQ', # signal quality-       #'+CCLK?', # clock - TODO: does not work on neo1973-       '+CREG?', # network registration-       '+WS46?', # wireless network-       '+COPS?', # operator selection-       '+CFUN?' # function+       '+CPIN?', # Pin state+       '+CPAS', # phone activity status+       #'+CCLK?', # clock - TODO: does not work on neo1973+       '+CSCA?', # GSMD_SMS_GET_SERVICE_CENTRE+       '+CPMS?', # GSMD_SMS_GET_MSG_STORAGE+#      '+CMGF=0', # pdu mode sms ensable +#      '+CMGL', # List all SMS+       '+CMGF=1', # text mode sms enable+       #'+CSCS="UCS2"', # Set UCS-2 charset+       '+CSCS="IRA"', # Set UCS-2 charset+       '+CMGL="ALL"', # List all SMS        ))  class GsmPhone(serial.Serial, NotifyObject):@@ -78,6 +91,7 @@        '''        def __init__(self, bus):                self.bus = bus+               self.waitforok = False                # glib's waiters                self.tow = None                self.iow = None@@ -104,6 +118,9 @@                self.rtscts = True                self.silence = 0                self._sim_auth_status = dict()+               self._sms = dict()+               self._sms_indices = []+               self._sms_indices_new = []                self.timeout = 7                self.writeTimeout = 1                self.xonxoff = False@@ -225,9 +242,14 @@                        self.silence = 0                        if line: # ignore empty lines                                LOG(LOG_DEBUG, __name__, 'read', line.__repr__())-                               if line == 'AT%s'% self.command: # ignore my echo...+                               if self.waitforok and line != 'OK':+                                       print line+                               elif line == 'AT%s'% self.command: # ignore my echo...                                        pass                                elif line in ('NO CARRIER', 'BUSY', 'ERROR', 'OK', ):+                                       self.waitforok= False # All SMS are printed, we are done+                                       self._sms_indices = self._sms_indices_new; # New SMS indices+                                       self._sms_indices_new = []; # New SMS indices                                        name = 'gsm%s'% line                                        name = name.replace(' ', '_')                                        fnctn = getattr(self, name, None)@@ -369,6 +391,30 @@                        )                if sim_status != self._sim_auth_status:                        self.SimAuthStatus(sim_status)+       def gsmCSCA(self, sca, num):+               LOG(LOG_INFO, __name__, 'service centre:', sca)+       def gsmCPMS(self, s1,s2,s3,s4,s5,s6,s7,s8,s9):+               LOG(LOG_INFO, __name__, 'sms storage:', s1,s2,s3,s4,s5,s6,s7,s8,s9)+# gsmCMGL [\'5\', \'"REC READ"\', \'"436644490292"\', \'\', \'"08/03/23\', \'11:45:18+04"\', \'145\', \'91\']'+       def gsmCMGL(self, idx,status,sender,s4,date,time,s7,s8):+               LOG(LOG_INFO, __name__, 'sms:', idx,status,sender,s4,date,time,s7,s8)+               self.waitforok= True+               sms = dict(self._sms,+                       idx=idx,+                       sender=sender,+                       date=date,+                       time=time,+                       )+               self._sms = sms+               self._sms_indices_new.append(int(idx));+               print "current new indices:", self._sms_indices_new+       @method(DIN_PHONE, '', 'ai')+       def ListMessages(self):+               print "current indices:", self._sms_indices+               return self._sms_indices+       @method(DIN_PHONE, '', 'a{sv}')+       def GetSMS(self):+               return self._sms        ### network        @method(DIN_PHONE, '', '')        def NetworkRegister(self):