ApraLinuxUtils 1.0.0
C++ utility library for embedded Linux systems
 
Loading...
Searching...
No Matches
I2CMessage.cpp
Go to the documentation of this file.
1/*
2 * I2CMessage.cpp
3 *
4 * Copyright (c) 2024 Apra Labs
5 *
6 * This file is part of ApraUtils.
7 *
8 * Licensed under the MIT License.
9 * See LICENSE file in the project root for full license information.
10 */
11
12#include "models/I2CMessage.h"
13#include "utils/Utils.h"
14
15namespace apra
16{
17
19 m_error(), m_type(I2C_READ), m_registerNumber(), m_data(), m_compareData(), m_retryCount(
20 0), m_delayInUsec(0), m_retryDelayInUsec(
21 I2C_RETRY_FAILURE_DELAY), m_allowOtherProcessOnIdle(false), m_registerSize(
22 0), m_dataSize(0)
23{
24}
25
29
30void I2C_Message::configureWrite(vector<uint8_t> registerNumber,
31 vector<uint8_t> data)
32{
33 m_registerNumber = registerNumber;
34 m_registerSize = registerNumber.size();
35 m_data = data;
36 m_dataSize = data.size();
38}
39void I2C_Message::configureWrite(uint64_t registerNumber, uint64_t data,
40 uint64_t registerSize, uint64_t dataSize)
41{
42 m_registerNumber = Utils::extractBytes(registerNumber, registerSize);
43 m_registerSize = registerSize;
44 m_data = Utils::extractBytes(data, dataSize);
45 m_dataSize = dataSize;
47}
48void I2C_Message::configureRead(vector<uint8_t> registerNumber,
49 uint64_t expectedDataSize)
50{
51 m_registerNumber = registerNumber;
52 m_registerSize = registerNumber.size();
53 m_dataSize = expectedDataSize;
55}
56void I2C_Message::configureRead(uint64_t registerNumber, uint64_t registerSize,
57 uint64_t expectedDataSize)
58{
59 m_registerNumber = Utils::extractBytes(registerNumber, registerSize);
60 m_registerSize = registerSize;
61 m_dataSize = expectedDataSize;
63}
64
65void I2C_Message::configureReadWithComparison(vector<uint8_t> registerNumber,
66 uint64_t expectedDataSize, const vector<uint8_t> dataCompare,
67 bool compareEquals)
68{
69 m_registerNumber = registerNumber;
70 m_registerSize = registerNumber.size();
71 m_dataSize = expectedDataSize;
72 m_compareData = dataCompare;
73 m_type =
75}
76void I2C_Message::configureReadWithComparison(uint64_t registerNumber,
77 uint64_t registerSize, uint64_t expectedDataSize,
78 const uint64_t dataCompare, bool compareEquals)
79{
80 m_registerNumber = Utils::extractBytes(registerNumber, registerSize);
81 m_registerSize = registerSize;
82 m_dataSize = expectedDataSize;
83 m_compareData = Utils::extractBytes(dataCompare, expectedDataSize);
84 m_type =
86
87}
88void I2C_Message::addDelay(uint64_t delayInUsec)
89{
90 if (delayInUsec)
91 {
92 m_delayInUsec = delayInUsec;
93 }
94}
95void I2C_Message::setRetries(uint64_t retryCount)
96{
97 if (retryCount)
98 {
99 m_retryCount = retryCount;
100 }
101}
102
107
112
114{
115 return m_dataSize;
116}
117
118} /* namespace apra */
#define I2C_RETRY_FAILURE_DELAY
Definition I2CMessage.h:20
vector< uint8_t > m_compareData
Definition I2CMessage.h:52
uint64_t getCombinedRegister()
I2C_MESSAGE_TYPE m_type
Definition I2CMessage.h:49
uint64_t m_delayInUsec
Definition I2CMessage.h:54
void setRetries(uint64_t retryCount)
uint64_t getDataSize()
uint64_t m_registerSize
Definition I2CMessage.h:58
vector< uint8_t > m_registerNumber
Definition I2CMessage.h:50
void addDelay(uint64_t delayInUsec)
void configureRead(vector< uint8_t > registerNumber, uint64_t expectedDataSize)
vector< uint8_t > m_data
Definition I2CMessage.h:51
uint64_t getCombinedData()
void configureReadWithComparison(vector< uint8_t > registerNumber, uint64_t expectedDataSize, const vector< uint8_t > dataCompare, bool compareEquals)
void configureWrite(vector< uint8_t > registerNumber, vector< uint8_t > data)
uint64_t m_retryCount
Definition I2CMessage.h:53
virtual ~I2C_Message()
uint64_t m_dataSize
Definition I2CMessage.h:59
static vector< uint8_t > extractBytes(uint64_t hexData, uint8_t numberOfBytes)
Definition Utils.cpp:84
static uint64_t combineBytes(vector< uint8_t > byteArray)
Definition Utils.cpp:97
@ I2C_READ_COMPARE_EQUAL
@ I2C_READ_COMPARE_NOT_EQUAL