comm_device.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //
  2. // The MIT License (MIT)
  3. //
  4. // Copyright (c) 2019 Livox. All rights reserved.
  5. //
  6. // Permission is hereby granted, free of charge, to any person obtaining a copy
  7. // of this software and associated documentation files (the "Software"), to deal
  8. // in the Software without restriction, including without limitation the rights
  9. // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. // copies of the Software, and to permit persons to whom the Software is
  11. // furnished to do so, subject to the following conditions:
  12. //
  13. // The above copyright notice and this permission notice shall be included in
  14. // all copies or substantial portions of the Software.
  15. //
  16. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22. // SOFTWARE.
  23. //
  24. #ifndef COMM_COMM_DEVICE_H_
  25. #define COMM_COMM_DEVICE_H_
  26. #include <stdint.h>
  27. namespace livox_ros {
  28. const uint32_t kDevNameLengthMax = 256;
  29. /** Communication device type define */
  30. enum CommDeviceType {
  31. kCommDevUart,
  32. kCommDevUsb,
  33. kCommDevCan,
  34. kCommDevEthernet,
  35. kCommDevUndef
  36. };
  37. /** Communication device uart config */
  38. struct CommDevUartConfig {
  39. uint8_t baudrate;
  40. uint8_t parity;
  41. };
  42. /** Communication device usb config */
  43. struct CommDevUsbConfig {
  44. void *data;
  45. };
  46. /** Communication device can config */
  47. struct CommDevCanConfig {
  48. void *data;
  49. };
  50. /** Communication device config */
  51. typedef struct {
  52. uint8_t type;
  53. char name[kDevNameLengthMax];
  54. union {
  55. CommDevUartConfig uart;
  56. CommDevUsbConfig usb;
  57. CommDevCanConfig can;
  58. } config;
  59. } CommDevConfig;
  60. } // namespace livox_ros
  61. #endif // COMM_COMM_DEVICE_H_