Skip to content
Snippets Groups Projects
Commit 97d22321 authored by Strasser, Andreas's avatar Strasser, Andreas
Browse files

reimplemented power save disable

parent ec413aa8
No related branches found
No related tags found
No related merge requests found
......@@ -124,13 +124,15 @@ class NBIoTCommand
var cmd
var rsp
var retries
var done
def init(cmd, rsp, retries)
self.cmd = cmd
self.rsp = rsp
self.retries = retries
self.done = false
if self.retries == nil
self.retries = 0
end
end
end
......@@ -251,27 +253,63 @@ end
class NBIoTResetProcedure : NBIoTProcedure
var cmd_reset
var cmd_at
def init(ser)
super(self).init(ser)
self.cmd_reset = NBIoTCommand('AT+QRST=1\r\n', 'RDY', 0)
self.cmd_reset = NBIoTCommand('AT+QRST=1\r\n', 'RDY')
self.cmd_at = NBIoTCommand('AT\r\n', 'OK')
end
def execute()
if self.cmd_in_process == nil
self.cmd_in_process = self.cmd_reset
elif self.cmd_in_process == self.cmd_reset
if self.read_rsp_contains_expected_rsp_or_send()
self.cmd_in_process = self.cmd_at
end
elif self.cmd_in_process == self.cmd_at
self.done = self.read_rsp_contains_expected_rsp_or_send()
end
end
end
class NBIoTDisablePSMProcedure : NBIoTProcedure
var cmd_register
var cmd_disable_psm
var cmd_disable_sleep
def init(ser)
super(self).init(ser)
self.cmd_register = NBIoTCommand('AT+CEREG=1\r\n', 'OK')
self.cmd_disable_psm = NBIoTCommand('AT+CPSMS=0\r\n', 'OK')
self.cmd_disable_sleep = NBIoTCommand('AT+QSCLK=0\r\n', 'OK')
end
def execute()
if self.cmd_in_process == nil
self.cmd_in_process = self.cmd_register
elif self.cmd_in_process == self.cmd_register
if self.read_rsp_contains_expected_rsp_or_send()
self.cmd_in_process = self.cmd_disable_psm
end
elif self.cmd_in_process == self.cmd_disable_psm
if self.read_rsp_contains_expected_rsp_or_send()
self.cmd_in_process = self.cmd_disable_sleep
end
elif self.cmd_in_process == self.cmd_disable_sleep
self.done = self.read_rsp_contains_expected_rsp_or_send()
end
end
end
class NBIoTNTPProcedure : NBIoTProcedure
var cmd_ntp
def init(ser)
super(self).init(ser)
def init(ser, request)
super(self).init(ser, request)
self.cmd_ntp = NBIoTCommand('AT+QNTP=1,\"0.at.pool.ntp.org\"\r\n', '+QNTP: 0', 10)
end
......@@ -312,10 +350,12 @@ end
# ------------------------------------------------------- #
class NBIoTDriverState
static var IDLE = 0
static var RESET = 1
static var READY = 2
static var BUSY = 3
static var INIT = 0
static var IDLE = 1
static var RESET = 2
static var DISABLE_PSM = 3
static var READY = 4
static var BUSY = 5
end
# ------------------------------------------------------- #
......@@ -333,7 +373,7 @@ class NBIoTDriver
self.ser = serial(rx, tx, 115200, serial.SERIAL_8N1)
self.psm_eint = psm_eint
self.state = NBIoTDriverState.RESET
self.state = NBIoTDriverState.INIT
self.request_queue = []
self.procedure = nil
end
......@@ -360,9 +400,16 @@ class NBIoTDriver
self.state = state
end
def set_psm_pin(value)
gpio.digital_write(self.psm_eint, value)
end
def every_second()
if self.state == NBIoTDriverState.IDLE
return
elif self.state == NBIoTDriverState.INIT
self.set_psm_pin(1)
self.next_state(NBIoTDriverState.RESET)
elif self.state == NBIoTDriverState.RESET
if self.procedure == nil
self.init_procedure(NBIoTResetProcedure(self.ser))
......@@ -371,6 +418,18 @@ class NBIoTDriver
self.procedure.execute()
if self.procedure.is_done()
self.finish_procedure()
self.next_state(NBIoTDriverState.DISABLE_PSM)
end
elif self.state == NBIoTDriverState.DISABLE_PSM
if self.procedure == nil
self.init_procedure(NBIoTDisablePSMProcedure(self.ser))
end
self.procedure.execute()
if self.procedure.is_done()
self.finish_procedure()
self.next_state(NBIoTDriverState.READY)
end
elif self.state == NBIoTDriverState.READY
......@@ -383,7 +442,7 @@ class NBIoTDriver
if request.request_type == NBIoTRequestType.DEBUG
procedure = NBIoTDebugProcedure(self.ser, request)
elif request.request_type == NBIoTRequestType.NTP
procedure = NBIoTNTPProcedure(self.ser)
procedure = NBIoTNTPProcedure(self.ser, request)
elif
tasmota.log(string.format('NBT: Request with type %i not supported, discarding request', request.request_type), 2)
end
......@@ -478,6 +537,10 @@ nbiot.init = def (m)
end
def debug_send(cmd, rsp, retries)
if retries == nil
retries = 0
end
var request = NBIoTDebugRequest(cmd, rsp, retries)
self._driver.queue_request(request)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment