Galaxis Codebase
1.0.0
Team Galaxis software stack for the Carolo Cup 2023 - ROS2 based software
SharedMemory.hpp
Go to the documentation of this file.
1
#ifndef SHARED_MEMORY_HPP
2
#define SHARED_MEMORY_HPP
3
4
#include <thread>
5
#include <mutex>
6
#include <memory>
7
#include <vector>
8
#include <utility>
9
#include <fcntl.h>
10
#include <map>
11
12
// shared mutex
13
#include <semaphore.h>
14
15
namespace
com
{
16
17
struct
SharedData
{
18
int32_t
tv_sec
;
19
uint32_t
tv_nsec
;
20
uint8_t*
data
;
21
size_t
dataSize
;
22
};
23
24
class
SharedMemory
{
25
private
:
26
std::string
m_shmName
;
27
std::string
m_semaphoreName
;
28
int
m_shmAddress
= -1;
29
int
m_shmSize
= -1;
30
31
sem_t*
m_semaphore
=
nullptr
;
32
void
*
m_sharedArea
=
nullptr
;
33
34
uint32_t
m_lastDataSec
= 0;
35
uint32_t
m_lastDataNSec
= 0;
36
37
public
:
38
SharedMemory
(std::string name);
39
SharedMemory
() =
delete
;
40
~SharedMemory
();
41
42
size_t
get_data_size
();
43
44
bool
allocate
(
size_t
sizeBytes);
45
bool
deallocate
();
46
47
bool
write_mutexed
(
com::SharedData
const
& data);
48
49
bool
is_new_data_available
();
50
size_t
read_mutexed
(
com::SharedData
& data,
size_t
sizeToRead);
51
52
private
:
53
bool
acquire_semaphore
(
bool
timedWait =
false
);
54
bool
release_semaphore
();
55
};
56
57
}
58
59
#endif
com::SharedMemory::m_shmAddress
int m_shmAddress
Definition:
SharedMemory.hpp:28
com::SharedMemory::m_semaphore
sem_t * m_semaphore
Definition:
SharedMemory.hpp:31
com::SharedMemory::m_shmSize
int m_shmSize
Definition:
SharedMemory.hpp:29
com::SharedMemory
Definition:
SharedMemory.hpp:24
com::SharedMemory::acquire_semaphore
bool acquire_semaphore(bool timedWait=false)
Definition:
SharedMemory.cpp:214
com::SharedData::data
uint8_t * data
Definition:
SharedMemory.hpp:20
com::SharedMemory::~SharedMemory
~SharedMemory()
Definition:
SharedMemory.cpp:30
com::SharedData::dataSize
size_t dataSize
Definition:
SharedMemory.hpp:21
com::SharedMemory::SharedMemory
SharedMemory()=delete
com::SharedMemory::write_mutexed
bool write_mutexed(com::SharedData const &data)
Definition:
SharedMemory.cpp:126
com::SharedMemory::get_data_size
size_t get_data_size()
Definition:
SharedMemory.cpp:122
com::SharedData::tv_sec
int32_t tv_sec
Definition:
SharedMemory.hpp:18
com::SharedData::tv_nsec
uint32_t tv_nsec
Definition:
SharedMemory.hpp:19
com::SharedMemory::is_new_data_available
bool is_new_data_available()
Definition:
SharedMemory.cpp:159
com::SharedMemory::allocate
bool allocate(size_t sizeBytes)
Definition:
SharedMemory.cpp:34
com::SharedData
Definition:
SharedMemory.hpp:17
com::SharedMemory::deallocate
bool deallocate()
Definition:
SharedMemory.cpp:89
com::SharedMemory::read_mutexed
size_t read_mutexed(com::SharedData &data, size_t sizeToRead)
Definition:
SharedMemory.cpp:183
com::SharedMemory::release_semaphore
bool release_semaphore()
Definition:
SharedMemory.cpp:234
com::SharedMemory::m_semaphoreName
std::string m_semaphoreName
Definition:
SharedMemory.hpp:27
com
Definition:
SharedMemory.hpp:15
com::SharedMemory::m_shmName
std::string m_shmName
Definition:
SharedMemory.hpp:26
com::SharedMemory::m_lastDataNSec
uint32_t m_lastDataNSec
Definition:
SharedMemory.hpp:35
com::SharedMemory::m_sharedArea
void * m_sharedArea
Definition:
SharedMemory.hpp:32
com::SharedMemory::m_lastDataSec
uint32_t m_lastDataSec
Definition:
SharedMemory.hpp:34
utilities
include
com
SharedMemory.hpp
Generated by
1.8.17