| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- # -*- coding: utf-8 -*-
- # Python TTGO T-Call Klasse
- # 2022-03-16 - devnull - erste Version erstellt
- # 2022-04-29 - devnull - unsinnige Ausgaben auf Debug umgestellt
- import machine
- from machine import Timer
- class tcall:
- log = None
- MDM_PWR = None #machine.PIN
- MDM_PWR_PIN = None #GPIO PIN
- MDM_PWRKEY = None #machine PIN
- MDM_PWRKEY_PIN = None #GPIO PIN
- MDM_RST = None #machine PIN
- MDM_RST_PIN = None #GPIO PIN
- MLED = None #machine PIN
- MLED_PIN = None #GPIO PIN
- mledblinktimer = Timer(0)
- def __init__(self,MDM_PWR_PIN,MDM_PWRKEY_PIN,MDM_RST_PIN,MLED_PIN, logger):
- self.log = logger
- self.setmdmpwrpin(MDM_PWR_PIN)
- self.setmdmpwrkeypin(MDM_PWRKEY_PIN)
- self.setmdmrstpin(MDM_RST_PIN)
- self.setmledpin(MLED_PIN)
- # setter and getter methods
- def setmdmpwrpin(self,pin):
- self.MDM_PWR_PIN = pin
- self.MDM_PWR = machine.Pin(pin, machine.Pin.OUT)
- def getmdmpwrpin(self):
- return self.MDM_PWR_PIN
- def setmdmpwrkeypin(self,pin):
- self.MDM_PWRKEY_PIN = pin
- self.MDM_PWRKEY = machine.Pin(pin, machine.Pin.OUT)
- def getmdmpwrkeypin(self):
- return self.MDM_PWRKEY_PIN
- def getmdmpwr(self):
- return self.MDM_PWR
- def getmdmpwrkey(self):
- return self.MDM_PWRKEY
- def setmdmrstpin(self,pin):
- self.MDM_RST_PIN = pin
- self.MDM_RST = machine.Pin(pin, machine.Pin.OUT)
- def getmdmrstpin(self):
- return MDM_RST_PIN
- def getmdmrst(self):
- return MDM_RST
- def setmledpin(self,pin):
- self.MLED_PIN = pin
- self.MLED = machine.Pin(pin, machine.Pin.OUT)
- def getmledpin(self):
- return self.MLED_PIN
- def getmled(self):
- return self.MLED
- # Statusreadout - Methoden liefern Rueckgabewerte
- def getmdmpwrstate(self):
- if self.MDM_PWR is not None and self.MDM_PWRKEY is not None and self.MDM_PWR.value() == 1 and self.MDM_PWRKEY.value() == 1:
- return 1
- else:
- return 0
- def getmledstate(self):
- if self.MLED is not None:
- return self.MLED.value()
- else:
- return 0
- # Modem PowerSwitch mit Uebergabe des States
- # Folgende Stati können übergeben werden
- # 0 = aus
- # 1 = an
- # [3 = Switch on->off / off->on] default
- def mdmpwrsw(self,state=3):
- if self.MDM_PWR is not None:
- self.MDM_PWR.value(1)
- # angegebenen status schalten
- if state == 0:
- self.log.verbose("switch Modem Off ")
- self.mdmpwrswoff()
- if state == 1:
- self.log.verbose("switch Modem On ")
- self.mdmpwrswon()
- # An/Aus Schalter, einfach das Gegenteil von dem was aktuell ist
- if state == 3:
- if self.getmdmpwrstate() == 0:
- self.log.verbose("switch Modem to on")
- self.mdmpwrswon()
- else:
- self.log.verbose("switch Modem to off")
- self.mdmpwrswoff()
- # FUnktion zum Einschalten des Modems
- def mdmpwrswon(self):
- import utime
- self.MDM_PWRKEY.value(1)
- utime.sleep_ms(400)
- self.MDM_PWRKEY.value(0)
- utime.sleep_ms(1200)
- self.MDM_PWRKEY.value(1)
- utime.sleep_ms(2700)
- # FUnktion zum Abschalten des Modems
- def mdmpwrswoff(self):
- import utime
- self.MDM_PWRKEY.value(0)
- utime.sleep_ms(500)
- # Modem Reset
- # todo: Test dieser Funktion auf dem Board
- def mdmrstsw(self):
- import time
- self.MDM_RST.value(1)
- time.sleep_ms(1000)
- self.MDM_RST.value(0)
- # Machine LED PowerSwitch
- def mledpwrsw(self,state=3):
- if self.MLED is not None:
- # angegebenen status schalten
- if state >= 0 and state <= 1:
- self.log.debug("switch Machine LED to " + str(state))
- self.MLED.value(state)
- # An/Aus Schalter, einfach das Gegenteil von dem was aktuell ist
- if state == 3:
- if self.getmledstate() == 0:
- self.log.debug("switch Machine LED to on")
- self.MLED.value(1)
- else:
- self.log.debug("switch Machine LED to off")
- self.MLED.value(0)
- # Machine LED blink
- # Diese Funktion wird ausschließlich von mledblink als Callback aufgerufen
- def mledpwrswblinkwrapper(self,t):
- self.mledpwrsw(3)
- # Timer deinit
- def mledblinkstop(self):
- if self.mledblinktimer is not None:
- self.mledblinktimer.deinit()
- def mledblink(self,speed=500):
- # wir brauchen einen timer zum blinken
- from machine import Timer
- self.mledblinktimer.init(period=speed, mode=Timer.PERIODIC, callback=self.mledpwrswblinkwrapper)
|