raspberry pi zero based drum machine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

sWifi.py 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. import FSM
  2. import utils as u
  3. import menus as m
  4. import os
  5. import socket
  6. #====================================
  7. State = type("State", (object,), {})
  8. #====================================
  9. class State(object):
  10. def __init__(self, FSM):
  11. self.FSM = FSM
  12. def Enter(self):
  13. pass
  14. def Execute(self):
  15. pass
  16. def Exit(self):
  17. pass
  18. class Wifi(State):
  19. def __init__(self,FSM):
  20. super(Wifi, self).__init__(FSM)
  21. def Enter(self):
  22. o = self.FSM.owner
  23. o.header_text = "Wifi"
  24. o.pub.register("beat", self)
  25. self.ipad = self.extract_ip()
  26. self.ssid = os.popen("sudo iwgetid -r").read()
  27. o.center_block(self.ipad, o.h2, [0, 0, o.width,o.height], o.light_grey)
  28. u.draw_header(o)
  29. self.draw_main(o)
  30. self.draw_footer(o)
  31. o.update_display(0)
  32. super(Wifi, self).Enter()
  33. def Execute(self):
  34. o = self.FSM.owner
  35. m.menu1_actions(self, o)
  36. if o.keyState[16] == 1:
  37. m.draw_menu1(o)
  38. o.update_display(0)
  39. elif o.keyState[16] == 4:
  40. u.draw_header(o)
  41. self.draw_main(o)
  42. self.draw_footer(o)
  43. o.update_display(0)
  44. if o.keyState[0] == 1 or o.keyState[0] == 3 or o.keyState[1] == 1 or o.keyState[1] == 3 or o.keyState[2] == 1 or o.keyState[2] == 3 or o.keyState[3] == 1 or o.keyState[3] == 3:
  45. u.draw_header(o)
  46. self.draw_main(o)
  47. self.draw_footer(o)
  48. o.update_display(0)
  49. if o.keyState[0] == 1 or o.keyState[1] == 1 or o.keyState[2] == 1 or o.keyState[3] == 1:
  50. self.FSM.ToTransition('toWifiSSID')
  51. def draw_main(self, o):
  52. o.center_block("SSID: " + self.ssid, o.h2, [0, 0, o.width, o.height-30], o.light_grey)
  53. o.center_block("IP: " + self.ipad, o.h2, [0, 20, o.width, o.height-30], o.light_grey)
  54. def extract_ip(self):
  55. st = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  56. try:
  57. st.connect(("8.8.8.8", 80))
  58. IP = st.getsockname()[0]
  59. except Exception:
  60. IP = 'Network Failed'
  61. finally:
  62. st.close()
  63. return IP
  64. def draw_footer(self, o):
  65. _iter = 0
  66. width = o.width
  67. xpos = 0
  68. yposa = 135 - 25
  69. yposb = 135
  70. opts = ["Add New"]
  71. while _iter < 1:
  72. o.draw.rectangle((xpos, yposa, xpos + width, yposb), outline=0, fill=o.blue)
  73. if o.keyState[_iter] == 1:
  74. o.draw.rectangle((xpos, yposa, xpos + width, yposb), outline=0, fill=o.light_grey)
  75. o.center_block(opts[_iter], o.h2, [xpos,yposa,xpos + width,yposb], o.blue)
  76. else:
  77. o.center_block(opts[_iter], o.h2, [xpos,yposa,xpos + width,yposb], o.light_grey)
  78. xpos += width
  79. _iter += 1
  80. def ReceiveMessage(self, message):
  81. o = self.FSM.owner
  82. u.play_seq(o, message)
  83. def Exit(self):
  84. self.FSM.owner.pub.unregister("beat", self)
  85. #====================================