Fawkes API  Fawkes Development Version
firevision::SharedMemoryImageBuffer Class Reference

Shared memory image buffer. More...

#include <>>

Inheritance diagram for firevision::SharedMemoryImageBuffer:

Public Member Functions

 SharedMemoryImageBuffer (const char *image_id, colorspace_t cspace, unsigned int width, unsigned int height)
 Write Constructor. More...
 
 SharedMemoryImageBuffer (const char *image_id, bool is_read_only=true)
 Read Constructor. More...
 
 ~SharedMemoryImageBuffer ()
 Destructor. More...
 
const char * image_id () const
 Get Image ID. More...
 
const char * frame_id () const
 Get frame ID. More...
 
unsigned char * buffer () const
 Get image buffer. More...
 
colorspace_t colorspace () const
 Get color space. More...
 
unsigned int width () const
 Get image width. More...
 
unsigned int height () const
 Get image height. More...
 
unsigned int roi_x () const
 Get ROI X. More...
 
unsigned int roi_y () const
 Get ROI Y. More...
 
unsigned int roi_width () const
 Get ROI width. More...
 
unsigned int roi_height () const
 Get ROI height. More...
 
int circle_x () const
 Get circle X. More...
 
int circle_y () const
 Get circle Y. More...
 
unsigned int circle_radius () const
 Get circle radius. More...
 
bool circle_found () const
 Check if circle was found . More...
 
void set_roi_x (unsigned int roi_x)
 Set ROI X. More...
 
void set_roi_y (unsigned int roi_y)
 Set ROI Y. More...
 
void set_roi_width (unsigned int roi_w)
 Set ROI width. More...
 
void set_roi_height (unsigned int roi_h)
 Set ROI height. More...
 
void set_roi (unsigned int roi_x, unsigned int roi_y, unsigned int roi_w, unsigned int roi_h)
 Set ROI data. More...
 
void set_circle_x (int circle_x)
 Set circle X. More...
 
void set_circle_y (int circle_y)
 Set circle Y. More...
 
void set_circle_radius (unsigned int circle_radius)
 Set circle radius. More...
 
void set_circle (int x, int y, unsigned int r)
 Set circle data. More...
 
void set_circle_found (bool found)
 Set circle found. More...
 
bool set_image_id (const char *image_id)
 Set image number. More...
 
void set_frame_id (const char *frame_id)
 Set frame ID. More...
 
fawkes::Time capture_time () const
 Get the time when the image was captured. More...
 
void capture_time (long int *sec, long int *usec) const
 Get the time when the image was captured. More...
 
void set_capture_time (fawkes::Time *time)
 Set the capture time. More...
 
void set_capture_time (long int sec, long int usec)
 Set the capture time. More...
 
- Public Member Functions inherited from fawkes::SharedMemory
 SharedMemory (const char *magic_token, SharedMemoryHeader *header, bool is_read_only, bool create, bool destroy_on_delete, const char *registry_name=0)
 Create a new shared memory segment. More...
 
 SharedMemory (const SharedMemory &s)
 Copy constructor. More...
 
virtual ~SharedMemory ()
 Destructor. More...
 
bool is_read_only () const
 Check for read-only mode. More...
 
bool is_destroyed () const
 Check if segment has been destroyed This can be used if the segment has been destroyed. More...
 
bool is_swapable () const
 Check if memory can be swapped out. More...
 
bool is_valid () const
 Check validity of shared memory segment. More...
 
bool is_creator () const
 Determine if the shared memory segment has been created by this instance. More...
 
bool is_protected () const
 Check if memory segment is protected. More...
 
void * memptr () const
 Get a pointer to the shared memory This method returns a pointer to the data-segment of the shared memory segment. More...
 
size_t data_size () const
 Get the size of the data-segment. More...
 
int shmem_id () const
 Get shared memory ID. More...
 
unsigned int num_attached () const
 Get number of attached processes. More...
 
void set (void *memptr)
 Copies data from the memptr to shared memory. More...
 
void set_destroy_on_delete (bool destroy)
 Set deletion behaviour. More...
 
void add_semaphore ()
 Add semaphore to shared memory segment. More...
 
void set_swapable (bool swapable)
 Set shared memory swapable. More...
 
void lock_for_read ()
 Lock shared memory segment for reading. More...
 
bool try_lock_for_read ()
 Try to aquire lock on shared memory segment for reading. More...
 
void lock_for_write ()
 Lock shared memory segment for writing. More...
 
bool try_lock_for_write ()
 Try to aquire lock on shared memory segment for writing. More...
 
void unlock ()
 Unlock memory. More...
 
void * ptr (void *addr) const
 Get the real pointer to the data based on an address. More...
 
void * addr (void *ptr) const
 Get an address from a real pointer. More...
 

Static Public Member Functions

static void list ()
 List all shared memory segments that contain a FireVision image. More...
 
static void cleanup (bool use_lister=true)
 Erase all shared memory segments that contain FireVision images. More...
 
static bool exists (const char *image_id)
 Check image availability. More...
 
static void wipe (const char *image_id)
 Erase a specific shared memory segment that contains an image. More...
 
static std::list< SharedMemoryImageBufferMetaDatalist_meta_data ()
 Get meta data about image buffers. More...
 
- Static Public Member Functions inherited from fawkes::SharedMemory
static void list (const char *magic_token, SharedMemoryHeader *header, SharedMemoryLister *lister, const char *registry_name=0)
 List shared memory segments of a given type. More...
 
static void erase (const char *magic_token, SharedMemoryHeader *header, SharedMemoryLister *lister=0, const char *registry_name=0)
 Erase shared memory segments of a given type. More...
 
static void erase_orphaned (const char *magic_token, SharedMemoryHeader *header, SharedMemoryLister *lister=0, const char *registry_name=0)
 Erase orphaned (attach count = 0) shared memory segments of a given type. More...
 
static bool exists (const char *magic_token, SharedMemoryHeader *header, const char *registry_name=0)
 Check if a specific shared memory segment exists. More...
 
static bool is_destroyed (int shm_id)
 Check if a segment has been destroyed. More...
 
static bool is_swapable (int shm_id)
 Check if memory can be swapped out. More...
 
static unsigned int num_attached (int shm_id)
 Get number of attached processes. More...
 
static SharedMemoryIterator find (const char *magic_token, SharedMemoryHeader *header, const char *registry_name=0)
 Find SharedMemory segments. More...
 
static SharedMemoryIterator end ()
 Get invalid iterator. More...
 

Additional Inherited Members

- Static Public Attributes inherited from fawkes::SharedMemory
static const unsigned int MagicTokenSize = MAGIC_TOKEN_SIZE
 The magic token size. More...
 
static const short MaxNumConcurrentReaders = 8
 Maximum number of concurrent readers. More...
 
- Protected Member Functions inherited from fawkes::SharedMemory
 SharedMemory (const char *magic_token, bool is_read_only, bool create, bool destroy_on_delete, const char *registry_name=0)
 Constructor for derivates. More...
 
void attach ()
 Attach to the shared memory segment. More...
 
void free ()
 Detach from and maybe destroy the shared memory segment. More...
 
- Protected Attributes inherited from fawkes::SharedMemory
void * _memptr
 Pointer to the data segment. More...
 
size_t _mem_size
 Total size of the segment, including headers. More...
 
size_t _data_size
 Size of the data segment only. More...
 
SharedMemoryHeader_header
 Data-specific header. More...
 
bool _is_read_only
 Read-only. More...
 
bool _destroy_on_delete
 destroy on delete. More...
 
bool _should_create
 Create shared memory segment. More...
 
char * _magic_token
 Magic token. More...
 
char * _shm_magic_token
 Magic token as stored in the shared memory segment. More...
 
SharedMemory_header_t_shm_header
 general header as stored in the shared memory segment More...
 
void * _shm_upper_bound
 Upper bound of memory. More...
 
long unsigned int _shm_offset
 Offset to the master's base addr. More...
 

Detailed Description

Shared memory image buffer.

Write images to or retrieve images from a shared memory segment.

Author
Tim Niemueller

Definition at line 181 of file shm_image.h.

Constructor & Destructor Documentation

◆ SharedMemoryImageBuffer() [1/2]

firevision::SharedMemoryImageBuffer::SharedMemoryImageBuffer ( const char *  image_id,
colorspace_t  cspace,
unsigned int  width,
unsigned int  height 
)

Write Constructor.

Create a new shared memory segment. Will open a shared memory segment that exactly fits the given information. Will throw an error if image with id image_id exists. I will create a new segment if no matching segment was found. The segment is accessed in read-write mode.

Use this constructor to open a shared memory image buffer for writing.

Parameters
image_idimage ID to open
cspacecolorspace
widthimage width
heightimage height

Definition at line 64 of file shm_image.cpp.

References fawkes::SharedMemory::add_semaphore().

◆ SharedMemoryImageBuffer() [2/2]

firevision::SharedMemoryImageBuffer::SharedMemoryImageBuffer ( const char *  image_id,
bool  is_read_only = true 
)

Read Constructor.

This constructor is used to search for an existing shared memory segment. It will throw an error if it cannot find a segment with the specified data. The segment is opened read-only by default, but this can be overridden with the is_read_only argument if needed.

Use this constructor to open an image for reading.

Parameters
image_idImage ID to open
is_read_onlytrue to open image read-only

Definition at line 88 of file shm_image.cpp.

References fawkes::SharedMemory::_header, fawkes::SharedMemory::_is_read_only, fawkes::Exception::append(), fawkes::SharedMemory::attach(), fawkes::SharedMemory::free(), height(), image_id(), fawkes::SharedMemory::is_read_only(), firevision::SharedMemoryImageBufferHeader::raw_header(), and width().

◆ ~SharedMemoryImageBuffer()

firevision::SharedMemoryImageBuffer::~SharedMemoryImageBuffer ( )

Destructor.

Definition at line 123 of file shm_image.cpp.

References fawkes::SharedMemory::free().

Member Function Documentation

◆ buffer()

◆ capture_time() [1/2]

Time firevision::SharedMemoryImageBuffer::capture_time ( ) const

◆ capture_time() [2/2]

void firevision::SharedMemoryImageBuffer::capture_time ( long int *  sec,
long int *  usec 
) const

Get the time when the image was captured.

Parameters
secupon return contains the seconds part of the time
usecupon return contains the micro seconds part of the time

Definition at line 185 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::capture_time_sec, and firevision::SharedMemoryImageBuffer_header_t::capture_time_usec.

◆ circle_found()

bool firevision::SharedMemoryImageBuffer::circle_found ( ) const

Check if circle was found .

Returns
true if circle was found, false otherwise

Definition at line 483 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::flag_circle_found.

Referenced by Firestation::get_window().

◆ circle_radius()

unsigned int firevision::SharedMemoryImageBuffer::circle_radius ( ) const

Get circle radius.

Returns
circle radius

Definition at line 335 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::circle_radius.

Referenced by set_circle_radius().

◆ circle_x()

int firevision::SharedMemoryImageBuffer::circle_x ( ) const

Get circle X.

Returns
circle X

Definition at line 315 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::circle_x.

Referenced by set_circle_x().

◆ circle_y()

int firevision::SharedMemoryImageBuffer::circle_y ( ) const

Get circle Y.

Returns
circle Y

Definition at line 325 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::circle_y.

Referenced by set_circle_y().

◆ cleanup()

void firevision::SharedMemoryImageBuffer::cleanup ( bool  use_lister = true)
static

Erase all shared memory segments that contain FireVision images.

Parameters
use_listerif true a lister is used to print the shared memory segments to stdout while cleaning up.

Definition at line 531 of file shm_image.cpp.

◆ colorspace()

◆ exists()

bool firevision::SharedMemoryImageBuffer::exists ( const char *  image_id)
static

Check image availability.

Parameters
image_idimage ID to check
Returns
true if shared memory segment with requested image exists

Definition at line 552 of file shm_image.cpp.

◆ frame_id()

const char * firevision::SharedMemoryImageBuffer::frame_id ( ) const

◆ height()

◆ image_id()

const char * firevision::SharedMemoryImageBuffer::image_id ( ) const

◆ list()

void firevision::SharedMemoryImageBuffer::list ( )
static

List all shared memory segments that contain a FireVision image.

Definition at line 491 of file shm_image.cpp.

◆ list_meta_data()

std::list< SharedMemoryImageBufferMetaData > firevision::SharedMemoryImageBuffer::list_meta_data ( )
static

Get meta data about image buffers.

Returns
list of meta data

Definition at line 507 of file shm_image.cpp.

◆ roi_height()

unsigned int firevision::SharedMemoryImageBuffer::roi_height ( ) const

Get ROI height.

Returns
ROI height

Definition at line 305 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_height.

Referenced by Firestation::get_window().

◆ roi_width()

unsigned int firevision::SharedMemoryImageBuffer::roi_width ( ) const

Get ROI width.

Returns
ROI width

Definition at line 295 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_width.

Referenced by Firestation::get_window().

◆ roi_x()

unsigned int firevision::SharedMemoryImageBuffer::roi_x ( ) const

Get ROI X.

Returns
ROI X

Definition at line 275 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_x.

Referenced by Firestation::get_window(), set_roi(), and set_roi_x().

◆ roi_y()

unsigned int firevision::SharedMemoryImageBuffer::roi_y ( ) const

Get ROI Y.

Returns
ROI Y

Definition at line 285 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_y.

Referenced by Firestation::get_window(), set_roi(), and set_roi_y().

◆ set_capture_time() [1/2]

◆ set_capture_time() [2/2]

void firevision::SharedMemoryImageBuffer::set_capture_time ( long int  sec,
long int  usec 
)

Set the capture time.

Parameters
secseconds part of capture time
usecmicroseconds part of capture time

Definition at line 221 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, firevision::SharedMemoryImageBuffer_header_t::capture_time_sec, and firevision::SharedMemoryImageBuffer_header_t::capture_time_usec.

◆ set_circle()

void firevision::SharedMemoryImageBuffer::set_circle ( int  x,
int  y,
unsigned int  r 
)

◆ set_circle_found()

void firevision::SharedMemoryImageBuffer::set_circle_found ( bool  found)

Set circle found.

Parameters
foundtrue if circle found

Definition at line 473 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::flag_circle_found.

◆ set_circle_radius()

void firevision::SharedMemoryImageBuffer::set_circle_radius ( unsigned int  circle_radius)

Set circle radius.

Parameters
circle_radiusnew circle radius

Definition at line 443 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, firevision::SharedMemoryImageBuffer_header_t::circle_radius, and circle_radius().

◆ set_circle_x()

void firevision::SharedMemoryImageBuffer::set_circle_x ( int  circle_x)

Set circle X.

Parameters
circle_xnew circle X

Definition at line 417 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, firevision::SharedMemoryImageBuffer_header_t::circle_x, and circle_x().

◆ set_circle_y()

void firevision::SharedMemoryImageBuffer::set_circle_y ( int  circle_y)

Set circle Y.

Parameters
circle_ynew circle Y

Definition at line 430 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, firevision::SharedMemoryImageBuffer_header_t::circle_y, and circle_y().

◆ set_frame_id()

void firevision::SharedMemoryImageBuffer::set_frame_id ( const char *  frame_id)

◆ set_image_id()

bool firevision::SharedMemoryImageBuffer::set_image_id ( const char *  image_id)

Set image number.

This will close the currently opened image and will try to open the new image. This operation should be avoided.

Parameters
image_idnew image ID
Returns
true on success

Definition at line 137 of file shm_image.cpp.

References fawkes::SharedMemory::_memptr, fawkes::SharedMemory::attach(), fawkes::SharedMemory::free(), firevision::SharedMemoryImageBufferHeader::raw_header(), and firevision::SharedMemoryImageBufferHeader::set_image_id().

◆ set_roi()

void firevision::SharedMemoryImageBuffer::set_roi ( unsigned int  roi_x,
unsigned int  roi_y,
unsigned int  roi_w,
unsigned int  roi_h 
)

◆ set_roi_height()

void firevision::SharedMemoryImageBuffer::set_roi_height ( unsigned int  roi_h)

Set ROI height.

Parameters
roi_hnew ROI height

Definition at line 384 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, and firevision::SharedMemoryImageBuffer_header_t::roi_height.

◆ set_roi_width()

void firevision::SharedMemoryImageBuffer::set_roi_width ( unsigned int  roi_w)

Set ROI width.

Parameters
roi_wnew ROI width

Definition at line 371 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, and firevision::SharedMemoryImageBuffer_header_t::roi_width.

◆ set_roi_x()

void firevision::SharedMemoryImageBuffer::set_roi_x ( unsigned int  roi_x)

Set ROI X.

Parameters
roi_xnew ROI X

Definition at line 345 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, firevision::SharedMemoryImageBuffer_header_t::roi_x, and roi_x().

◆ set_roi_y()

void firevision::SharedMemoryImageBuffer::set_roi_y ( unsigned int  roi_y)

Set ROI Y.

Parameters
roi_ynew ROI Y

Definition at line 358 of file shm_image.cpp.

References fawkes::SharedMemory::_is_read_only, firevision::SharedMemoryImageBuffer_header_t::roi_y, and roi_y().

◆ width()

◆ wipe()

void firevision::SharedMemoryImageBuffer::wipe ( const char *  image_id)
static

Erase a specific shared memory segment that contains an image.

Parameters
image_idID of image to wipe

Definition at line 567 of file shm_image.cpp.


The documentation for this class was generated from the following files: