Advertisement
Guest User

Untitled

a guest
Jan 19th, 2018
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.55 KB | None | 0 0
  1. #!/usr/bin/python
  2. import array, fcntl, os
  3. from time import sleep
  4. # test program to Shutdown or Restart Pi using buttons on 4D Systems 4DPi displays
  5. #LCD4DPI_GET_KEYS = -2147202303
  6. _IOC_NRBITS
  7. _IOC_TYPEBITS
  8. _IOC_SIZEBITS
  9. _IOC_DIRBITS
  10. _IOC_DIRMASK
  11. _IOC_NRMASK
  12. _IOC_TYPEMASK
  13. = 8
  14. = 8
  15. = 14
  16. = 2
  17. _IOC_NRSHIFT =
  18. _IOC_TYPESHIFT
  19. _IOC_SIZESHIFT
  20. _IOC_DIRSHIFT
  21. = (1 << _IOC_DIRBITS) - 1
  22. = (1 << _IOC_NRBITS) - 1
  23. = (1 << _IOC_TYPEBITS ) - 1
  24. 0
  25. = _IOC_NRSHIFT+_IOC_NRBITS
  26. = _IOC_TYPESHIFT+_IOC_TYPEBITS
  27. = _IOC_SIZESHIFT+_IOC_SIZEBITS
  28. _IOC_NONE = 0
  29. _IOC_WRITE = 1
  30. _IOC_READ = 2
  31. def _IOC(dir, type, nr, size):
  32. # print 'dirshift {}, typeshift {}, nrshift {}, sizeshift
  33. {}'.format(_IOC_DIRSHIFT, _IOC_TYPESHIFT, _IOC_NRSHIFT, _IOC_SIZESHIFT)
  34. ioc = (dir << _IOC_DIRSHIFT ) | (type << _IOC_TYPESHIFT ) | (nr << _IOC_NRSHIFT )
  35. | (size << _IOC_SIZESHIFT)
  36. if ioc > 2147483647: ioc -= 4294967296
  37. return ioc
  38. #def _IO(type, nr):
  39. # return _IOC(_IOC_NONE, type, nr, 0)
  40. def _IOR(type,nr,size):
  41. return _IOC(_IOC_READ, type, nr, size)
  42. #def _IOW(type,nr,size):
  43. # return _IOC(_IOC_WRITE, type, nr, sizeof(size))
  44. LCD4DPI_GET_KEYS = _IOR(ord('K'), 1, 4)
  45. #print 'ssd {} {:12} {:0>8x} {:0>32b}'.format(ssd1289, hex(ssd1289), ssd1289,
  46. ssd1289)
  47. buf = array.array('h',[0])
  48. with open('/dev/fb1', 'rw') as fd:
  49. while True:
  50. fcntl.ioctl(fd, LCD4DPI_GET_KEYS, buf, 1) # execute ioctl call to read the keys
  51. keys = buf[0]
  52. if not keys & 0b00001:
  53. break
  54. if not keys & 0b10000:
  55. os.system("sudo shutdown -h now")
  56. break
  57. if not keys & 0b01000:
  58. os.system("sudo reboot")
  59. break;
  60. sleep(0.1)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement