"""
MODULE_NAME = "ogsmd.device"
-__version__ = "0.9.12.0"
+__version__ = "0.9.13.0"
from framework import resource
from framework.config import config
def GetPowerStatus( self, dbus_ok, dbus_error ):
mediator.DeviceGetPowerStatus( self, dbus_ok, dbus_error )
+ @dbus.service.method( DBUS_INTERFACE_DEVICE, "", "",
+ async_callbacks=( "dbus_ok", "dbus_error" ) )
+ @resource.checkedmethod
+ def SetRTC( self, dbus_ok, dbus_error ):
+ mediator.DeviceSetRTC( self, dbus_ok, dbus_error )
+
+ @dbus.service.method( DBUS_INTERFACE_DEVICE, "", "i",
+ async_callbacks=( "dbus_ok", "dbus_error" ) )
+ @resource.checkedmethod
+ def GetRTC( self, dbus_ok, dbus_error ):
+ mediator.DeviceGetRTC( self, dbus_ok, dbus_error )
+
#
# dbus org.freesmartphone.GSM.SIM
#
* refactor parameter validation
"""
-__version__ = "0.9.18.1"
+__version__ = "0.9.19.0"
MODULE_NAME = "ogsmd.modems.abstract.mediator"
from ogsmd import error as DBusError
import ogsmd.gsm.sms
import gobject
-import re, time
+import re, time, calendar
import logging
logger = logging.getLogger( MODULE_NAME )
class DeviceSetMicrophoneMuted( DeviceMediator ):
#=========================================================================#
def trigger( self ):
- self._commchannel.enqueue( "+CMUT=%d" % self.muted, self.responseFromChannel, self.errorFromChannel )
+ self._commchannel.enqueue( "+CMUT=%d" % self.muted, self.responseFromChannel, self.errorFromChannel )
#=========================================================================#
class DeviceGetPowerStatus( DeviceMediator ):
self._ok( status, level )
+#=========================================================================#
+class DeviceSetRTC( DeviceMediator ):
+#=========================================================================#
+ def trigger( self ):
+ # FIXME: gather timezone offset and supply
+ timezone = "+00"
+ timestring = time.strftime("%y/%m/%d,%H:%M:%S" + timezone)
+ self._commchannel.enqueue( "+CCLK=\"%s\"" % timestring, self.responseFromChannel, self.errorFromChannel )
+
+#=========================================================================#
+class DeviceGetRTC( DeviceMediator ): # i
+#=========================================================================#
+ def trigger( self ):
+ self._commchannel.enqueue( "+CCLK?", self.responseFromChannel, self.errorFromChannel )
+
+ def responseFromChannel( self, request, response ):
+ if response[-1] != "OK":
+ DeviceMediator.responseFromChannel( self, request, response )
+ else:
+ dat, tim = self._rightHandSide( response[0] ).strip( '"' ).split( ',' )
+ # timezone not yet supported
+ if tim[-3] == '+':
+ tim = tim[-3]
+ # some modems strip the leading zero for one-digit chars, hence we need to split and reassemble on our own
+ year, month, day = dat.split( '/' )
+ hour, minute, second = tim.split( ':' )
+
+ timestruct = time.strptime( "%02d/%02d/%02d,%02d:%02d:%02d" % ( int(year), int(month), int(day), int(hour), int(minute), int(second) ), "%y/%m/%d,%H:%M:%S" )
+ self._ok( calendar.timegm( timestruct ) )
+
#
# SIM Mediators
#