tcall.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. # -*- coding: utf-8 -*-
  2. # Python TTGO T-Call Klasse
  3. # 2022-03-16 - devnull - erste Version erstellt
  4. # 2022-04-29 - devnull - unsinnige Ausgaben auf Debug umgestellt
  5. import machine
  6. from machine import Timer
  7. class tcall:
  8. log = None
  9. MDM_PWR = None #machine.PIN
  10. MDM_PWR_PIN = None #GPIO PIN
  11. MDM_PWRKEY = None #machine PIN
  12. MDM_PWRKEY_PIN = None #GPIO PIN
  13. MDM_RST = None #machine PIN
  14. MDM_RST_PIN = None #GPIO PIN
  15. MLED = None #machine PIN
  16. MLED_PIN = None #GPIO PIN
  17. mledblinktimer = Timer(0)
  18. def __init__(self,MDM_PWR_PIN,MDM_PWRKEY_PIN,MDM_RST_PIN,MLED_PIN, logger):
  19. self.log = logger
  20. self.setmdmpwrpin(MDM_PWR_PIN)
  21. self.setmdmpwrkeypin(MDM_PWRKEY_PIN)
  22. self.setmdmrstpin(MDM_RST_PIN)
  23. self.setmledpin(MLED_PIN)
  24. # setter and getter methods
  25. def setmdmpwrpin(self,pin):
  26. self.MDM_PWR_PIN = pin
  27. self.MDM_PWR = machine.Pin(pin, machine.Pin.OUT)
  28. def getmdmpwrpin(self):
  29. return self.MDM_PWR_PIN
  30. def setmdmpwrkeypin(self,pin):
  31. self.MDM_PWRKEY_PIN = pin
  32. self.MDM_PWRKEY = machine.Pin(pin, machine.Pin.OUT)
  33. def getmdmpwrkeypin(self):
  34. return self.MDM_PWRKEY_PIN
  35. def getmdmpwr(self):
  36. return self.MDM_PWR
  37. def getmdmpwrkey(self):
  38. return self.MDM_PWRKEY
  39. def setmdmrstpin(self,pin):
  40. self.MDM_RST_PIN = pin
  41. self.MDM_RST = machine.Pin(pin, machine.Pin.OUT)
  42. def getmdmrstpin(self):
  43. return MDM_RST_PIN
  44. def getmdmrst(self):
  45. return MDM_RST
  46. def setmledpin(self,pin):
  47. self.MLED_PIN = pin
  48. self.MLED = machine.Pin(pin, machine.Pin.OUT)
  49. def getmledpin(self):
  50. return self.MLED_PIN
  51. def getmled(self):
  52. return self.MLED
  53. # Statusreadout - Methoden liefern Rueckgabewerte
  54. def getmdmpwrstate(self):
  55. 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:
  56. return 1
  57. else:
  58. return 0
  59. def getmledstate(self):
  60. if self.MLED is not None:
  61. return self.MLED.value()
  62. else:
  63. return 0
  64. # Modem PowerSwitch mit Uebergabe des States
  65. # Folgende Stati können übergeben werden
  66. # 0 = aus
  67. # 1 = an
  68. # [3 = Switch on->off / off->on] default
  69. def mdmpwrsw(self,state=3):
  70. if self.MDM_PWR is not None:
  71. self.MDM_PWR.value(1)
  72. # angegebenen status schalten
  73. if state == 0:
  74. self.log.verbose("switch Modem Off ")
  75. self.mdmpwrswoff()
  76. if state == 1:
  77. self.log.verbose("switch Modem On ")
  78. self.mdmpwrswon()
  79. # An/Aus Schalter, einfach das Gegenteil von dem was aktuell ist
  80. if state == 3:
  81. if self.getmdmpwrstate() == 0:
  82. self.log.verbose("switch Modem to on")
  83. self.mdmpwrswon()
  84. else:
  85. self.log.verbose("switch Modem to off")
  86. self.mdmpwrswoff()
  87. # FUnktion zum Einschalten des Modems
  88. def mdmpwrswon(self):
  89. import utime
  90. self.MDM_PWRKEY.value(1)
  91. utime.sleep_ms(400)
  92. self.MDM_PWRKEY.value(0)
  93. utime.sleep_ms(1200)
  94. self.MDM_PWRKEY.value(1)
  95. utime.sleep_ms(2700)
  96. # FUnktion zum Abschalten des Modems
  97. def mdmpwrswoff(self):
  98. import utime
  99. self.MDM_PWRKEY.value(0)
  100. utime.sleep_ms(500)
  101. # Modem Reset
  102. # todo: Test dieser Funktion auf dem Board
  103. def mdmrstsw(self):
  104. import time
  105. self.MDM_RST.value(1)
  106. time.sleep_ms(1000)
  107. self.MDM_RST.value(0)
  108. # Machine LED PowerSwitch
  109. def mledpwrsw(self,state=3):
  110. if self.MLED is not None:
  111. # angegebenen status schalten
  112. if state >= 0 and state <= 1:
  113. self.log.debug("switch Machine LED to " + str(state))
  114. self.MLED.value(state)
  115. # An/Aus Schalter, einfach das Gegenteil von dem was aktuell ist
  116. if state == 3:
  117. if self.getmledstate() == 0:
  118. self.log.debug("switch Machine LED to on")
  119. self.MLED.value(1)
  120. else:
  121. self.log.debug("switch Machine LED to off")
  122. self.MLED.value(0)
  123. # Machine LED blink
  124. # Diese Funktion wird ausschließlich von mledblink als Callback aufgerufen
  125. def mledpwrswblinkwrapper(self,t):
  126. self.mledpwrsw(3)
  127. # Timer deinit
  128. def mledblinkstop(self):
  129. if self.mledblinktimer is not None:
  130. self.mledblinktimer.deinit()
  131. def mledblink(self,speed=500):
  132. # wir brauchen einen timer zum blinken
  133. from machine import Timer
  134. self.mledblinktimer.init(period=speed, mode=Timer.PERIODIC, callback=self.mledpwrswblinkwrapper)