actions.py 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. """
  2. Actions performed on the board.
  3. Fore some more actions also see sequences.py
  4. """
  5. import time
  6. from communication import *
  7. from utils import wait_for_revolutions
  8. def acquire_data(board_id, filename, simulate=False):
  9. if simulate:
  10. start_pilot_bunch_emulator(board_id)
  11. start_acquisition(board_id)
  12. wait_for_revolutions(board_id)
  13. stop_acquisition(board_id)
  14. enable_transfer(board_id)
  15. pci.read(board_id, dma='dma0', destination=filename)
  16. flush_dma(board_id)
  17. def data_reset(board_id):
  18. log.vinfo('Data reset')
  19. pci.write(board_id, '000003f5', hex_mask='7')
  20. time.sleep(0.05)
  21. pci.write(board_id, '000003f0', hex_mask='7')
  22. time.sleep(0.05)
  23. def flush_dma(board_id, dma='dma0'):
  24. log.vinfo('Flushing DMA Pipeline')
  25. pci.write(board_id, '03f0', hex_mask='CF0')
  26. # TODO: implement identifier usage
  27. pci.read(board_id, dma=dma, destination='/dev/null')
  28. def stop_board(board_id):
  29. pci.write(board_id, '0x01', '0x9040')
  30. pci.stop_dma(board_id)
  31. def soft_reset(board_id):
  32. pci.write(board_id, '0x1', '0x9040', hex_mask='0x1')
  33. time.sleep(1)
  34. pci.write(board_id, '0x0', '0x9040', hex_mask='0x1')
  35. def start_pilot_bunch_emulator(board_id):
  36. log.vinfo('Start pilot bunch emulator')
  37. pci.write(board_id, '400003f0', hex_mask='400003F0')
  38. time.sleep(0.005)
  39. pci.write(board_id, '03f0', hex_mask='CF0')
  40. def start_acquisition(board_id):
  41. log.vinfo('Start acquisition')
  42. pci.write(board_id, '1', '4', hex_mask='1') # what's this? write value 1 to register 4???
  43. time.sleep(0.005)
  44. pci.write(board_id, '00bf0', hex_mask='CF0')
  45. def stop_acquisition(board_id):
  46. log.vinfo('Stop acquisition')
  47. pci.write(board_id, '003f0', hex_mask='CF0')
  48. time.sleep(0.005)
  49. def enable_transfer(board_id):
  50. log.vinfo('Enable data transfer')
  51. pci.write(board_id, '007f0', hex_mask='CF0')
  52. time.sleep(0.005)