ApraLinuxUtils 1.0.0
C++ utility library for embedded Linux systems
 
Loading...
Searching...
No Matches
I2CInterface.h
Go to the documentation of this file.
1/*
2 * I2CInterface.h
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#ifndef SRC_APRA_CONTROLLERS_I2CINTERFACE_H_
13#define SRC_APRA_CONTROLLERS_I2CINTERFACE_H_
14
15#include <map>
16#include <string>
17#include <utils/ProcessThread.h>
19#include "utils/I2CBus.h"
20#include "utils/Mutex.h"
21
22namespace apra
23{
24
26{
27public:
28 I2C_Interface(string i2cPath, string processName, uint64_t processFpsHz,
29 bool shouldPrint);
30 virtual ~I2C_Interface();
31 virtual void process(Message *obj);
32 uint64_t registerEvent(I2C_Transaction_Message message);
33 void unregisterEvent(uint64_t messageHandle);
35 bool isSuccessfullSetup();
36protected:
37 virtual void processEvents();
38 virtual void processSingleEvent();
41
42 I2CError performRead(uint8_t chipNumber, I2C_Message &message);
43 I2CError performCompareRead(uint8_t chipNumber, I2C_Message &message,
44 bool compareEquals);
45 I2CError performWrite(uint8_t chipNumber, I2C_Message &message);
46 void performTransactionDelay(const uint64_t timeDelay);
47 uint64_t getNormalizedDelay(int64_t largerTime, int64_t smallerTime, uint64_t timeDelay);
48
49 string m_i2cPath;
51 map<uint64_t, I2C_Transaction_Message> m_registeredEvents;
52 vector<uint64_t> m_processedEvents;
57};
58
59} /* namespace apra */
60
61#endif /* SRC_APRA_CONTROLLERS_I2CINTERFACE_H_ */
void processI2CTransaction(I2C_Transaction_Message *txMessage)
uint64_t registerEvent(I2C_Transaction_Message message)
I2CError performCompareRead(uint8_t chipNumber, I2C_Message &message, bool compareEquals)
void unregisterEvent(uint64_t messageHandle)
virtual void processEvents()
apra::Mutex m_eventMessageLock
virtual void processSingleEvent()
I2CError performWrite(uint8_t chipNumber, I2C_Message &message)
vector< uint64_t > m_processedEvents
void processMessage(I2C_Transaction_Message *txMessage)
int64_t m_lastProcessedEventTs
map< uint64_t, I2C_Transaction_Message > m_registeredEvents
apra::Mutex m_processLock
void performTransactionDelay(const uint64_t timeDelay)
virtual void process(Message *obj)
uint64_t getNormalizedDelay(int64_t largerTime, int64_t smallerTime, uint64_t timeDelay)
I2CError performRead(uint8_t chipNumber, I2C_Message &message)