export_method.cc 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // // ******************************************************************
  2. // // /\ /| @File export_method.cc
  3. // // \ V/ @Brief
  4. // // | "") @Author lijinwen, ghz005@uni-trend.com.cn
  5. // // / | @Creation 2024-05-20
  6. // // / \\ @Modified 2024-06-24
  7. // // *(__\_\
  8. // // ******************************************************************
  9. #include "export_method.h"
  10. #include "ProtocolIIC/iic_decoder.h"
  11. #include "ProtocolIIC/iic_decode_options.h"
  12. #include "ProtocolIIC/iic_decode_result.h"
  13. #include "ProtocolRS232/rs232_decoder.h"
  14. #include "ProtocolSPI/spi_decoder.h"
  15. #include "ProtocolUsb/Usb_decoder.h"
  16. namespace Protocol
  17. {
  18. bool ParseUsb(const UsbDecodeOptions& option, const EdgePulseDataTwoLevels& edge_pluses_data1,
  19. const EdgePulseDataTwoLevels& edge_pluses_data2, UsbDecodeResult& result)
  20. {
  21. const auto usb_decode = new UsbDecoder();
  22. return usb_decode->DecodeUsb(option, edge_pluses_data1, edge_pluses_data2, result);
  23. }
  24. void ReleaseUsbHeap(const intptr_t decoder_ptr)
  25. {
  26. if (decoder_ptr == 0 || reinterpret_cast<void*>(decoder_ptr) == nullptr)
  27. {
  28. return;
  29. }
  30. reinterpret_cast<UsbDecoder*>(decoder_ptr)->~UsbDecoder();
  31. }
  32. bool ParseRs232(const ProtocolRs232Options& options,
  33. const EdgePulseDataTwoLevels& edge_pulse_data,
  34. Rs232DecodeResult& decode_result)
  35. {
  36. const auto rs232_decode = new Rs232Decoder();
  37. return rs232_decode->DecodeRs232(options,
  38. edge_pulse_data.GetDataAddrPtr(),
  39. edge_pulse_data.edge_pulses_count,
  40. edge_pulse_data.waveform_data_count,
  41. edge_pulse_data.sample_rate,
  42. decode_result);
  43. }
  44. void ReleaseRs232Heap(const intptr_t decoder_ptr)
  45. {
  46. if (decoder_ptr == 0 || reinterpret_cast<void*>(decoder_ptr) == nullptr)
  47. {
  48. return;
  49. }
  50. reinterpret_cast<Rs232Decoder*>(decoder_ptr)->~Rs232Decoder();
  51. }
  52. bool ParseIic(const IicDecodeOptions& option, const EdgePulseDataTwoLevels& edge_pulses_clk,
  53. const EdgePulseDataTwoLevels& edge_pulses_data, IicDecodeResult& result)
  54. {
  55. const auto decoder = new IicDecoder();
  56. return decoder->DecodeIic(option,
  57. edge_pulses_clk,
  58. edge_pulses_data,
  59. result);
  60. }
  61. void ReleaseIicHeap(const intptr_t decoder_ptr)
  62. {
  63. if (decoder_ptr == 0 || reinterpret_cast<void*>(decoder_ptr) == nullptr)
  64. {
  65. return;
  66. }
  67. reinterpret_cast<IicDecoder*>(decoder_ptr)->~IicDecoder();
  68. }
  69. bool ParseSpi(const SpiDecodeOptions& options,
  70. const EdgePulseDataTwoLevels& edge_pulse_data_clk,
  71. const EdgePulseDataTwoLevels& edge_pulse_data_cs,
  72. const EdgePulseDataTwoLevels& edge_pulse_data_mosi,
  73. const EdgePulseDataTwoLevels& edge_pulse_data_miso,
  74. SpiDecodeResult& decode_result)
  75. {
  76. const auto decoder = new SpiDecoder();
  77. return decoder->DecodeSpi(options,
  78. edge_pulse_data_clk,
  79. edge_pulse_data_cs,
  80. edge_pulse_data_mosi,
  81. edge_pulse_data_miso,
  82. decode_result);
  83. }
  84. void ReleaseSpiHeap(const intptr_t decoder_ptr)
  85. {
  86. if (decoder_ptr == 0 || reinterpret_cast<void*>(decoder_ptr) == nullptr)
  87. {
  88. return;
  89. }
  90. reinterpret_cast<SpiDecoder*>(decoder_ptr)->~SpiDecoder();
  91. }
  92. }