tcall.py 4.5 KB

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