jamrun.py 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import sys
  2. from _pi_cffi import ffi, lib
  3. from pprint import pprint
  4. def print_message( message, bsize):
  5. for x in range(bsize):
  6. c = message[x]
  7. if c[0] == 0x0d:
  8. print("\n", end='')
  9. else:
  10. print(chr(c[0]), end='')
  11. print("")
  12. def print_subfields( subpacket):
  13. done = 0
  14. subfield = lib.JAM_GetSubfield(subpacket)
  15. if subfield == ffi.NULL:
  16. done = 1
  17. else:
  18. print("SubField ID:", subfield[0].LoID, " ", end='')
  19. print_message(subfield.Buffer, subfield.DatLen)
  20. while done == 0:
  21. subfield = lib.JAM_GetSubfield(ffi.NULL)
  22. if subfield == ffi.NULL:
  23. done = 1
  24. else:
  25. print("SubField ID:", subfield[0].LoID, " ", end='')
  26. print_message(subfield.Buffer, subfield.DatLen)
  27. jambase = ffi.new("s_JamBase **")
  28. ret = lib.JAM_OpenMB(b"fsx_bot", jambase)
  29. if ret == 0:
  30. print("OpenMB Success!")
  31. else:
  32. print("OpenMB ret=", ret)
  33. sys.exit(2)
  34. size = ffi.new("uint32_t *")
  35. ret = lib.JAM_GetMBSize(jambase[0], size)
  36. if ret == 0:
  37. print("Mesasgebase size=", size[0])
  38. else:
  39. print("GetMBSize ret=", ret)
  40. # int JAM_ReadMsgHeader( s_JamBase* Base_PS,
  41. # ulong MsgNo_I,
  42. # s_JamMsgHeader* Header_PS,
  43. # s_JamSubPacket** Subfields_PPS );
  44. msgno = 0
  45. # msgheader = ffi.new("s_JamMsgHeader")
  46. msgheader = ffi.new("s_JamMsgHeader *")
  47. subpacket = ffi.new("s_JamSubPacket **")
  48. subfield = ffi.new("s_JamSubfield *")
  49. basesize = int( ffi.cast("long", size[0]) )
  50. pprint(basesize)
  51. basesize = 10
  52. buffer = ffi.new("char []", 4096)
  53. for msgno in range(basesize): # size):
  54. ret = lib.JAM_ReadMsgHeader(jambase[0], msgno, msgheader, subpacket)
  55. if ret == 0:
  56. print("ReadMsgHeader Success")
  57. print_subfields(subpacket[0])
  58. if msgheader.TxtLen < 4096:
  59. # buffer = ffi.new("char []", msgheader.TxtLen)
  60. ret = lib.JAM_ReadMsgText(jambase[0], msgheader.TxtOffset, msgheader.TxtLen, buffer)
  61. if ret == 0:
  62. print_message(buffer, msgheader.TxtLen)
  63. else:
  64. print("ReadMsgText ret=", ret)
  65. else:
  66. print("Failed: > 4096")
  67. # buffer = None
  68. lib.JAM_DelSubPacket(subpacket[0])
  69. else:
  70. print("ReadMsgHeader ret=", ret)
  71. print("Jam_Errno=", lib.JAM_Errno(jambase[0]))
  72. buffer = None
  73. subfield = None
  74. subpacket = None
  75. msgheader = None
  76. # pprint(jambase)
  77. ret = lib.JAM_CloseMB( jambase[0] )
  78. lib.free(jambase[0])
  79. jambase = None
  80. print("CloseMB ret=", ret)