/workspaces/astro/sol3-sdk/cpp/sol3/base_unit/i2c.h Source File

Space-ng SDK: /workspaces/astro/sol3-sdk/cpp/sol3/base_unit/i2c.h Source File
Space-ng SDK
i2c.h
Go to the documentation of this file.
1 // Copyright (c) Space-ng, inc. All rights reserved.
2 
3 #pragma once
4 #include <sol3/base_unit/msg/i2c.h>
5 
6 namespace sol3 {
7 namespace base_unit {
8 
11 inline uint8_t getI2CBusId(msg::I2CDevice device) {
12  return uint8_t(device >> uint16_t(8));
13 }
14 
17 inline uint8_t getI2CDeviceAddress(msg::I2CDevice device) {
18  return uint8_t(device & uint16_t(0x00FF));
19 }
20 
21 inline msg::I2CDevice makeI2CDevice(uint8_t bus, uint8_t address) {
22  uint16_t bus_addr = uint16_t(uint16_t(bus) << 8) | uint16_t(address);
23  return static_cast<msg::I2CDevice>(bus_addr);
24 }
25 
26 inline char const* getI2CDeviceName(msg::I2CDevice device) {
27  char const* name = msg::EnumNameI2CDevice(device);
28  if (std::string("") == name) {
29  // fallback to 0 bus
30  name =
31  msg::EnumNameI2CDevice(makeI2CDevice(0, getI2CDeviceAddress(device)));
32  }
33  return name;
34 }
35 
36 } // namespace base_unit
37 } // namespace sol3
uint8_t getI2CBusId(msg::I2CDevice device)
Definition: i2c.h:11
uint8_t getI2CDeviceAddress(msg::I2CDevice device)
Definition: i2c.h:17
char const * getI2CDeviceName(msg::I2CDevice device)
Definition: i2c.h:26
msg::I2CDevice makeI2CDevice(uint8_t bus, uint8_t address)
Definition: i2c.h:21
Definition: carrier_board_msg_spec.h:10