Fawkes API  Fawkes Development Version
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
firevision::SharedMemoryImageBuffer Class Reference

Shared memory image buffer. More...

#include <>>

Inheritance diagram for firevision::SharedMemoryImageBuffer:

List of all members.

Public Member Functions

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

Static Public Member Functions

static void list ()
 List all shared memory segments that contain a FireVision image.
static void cleanup (bool use_lister=true)
 Erase all shared memory segments that contain FireVision images.
static bool exists (const char *image_id)
 Check image availability.
static void wipe (const char *image_id)
 Erase a specific shared memory segment that contains an image.
- 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.
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.
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.
static bool exists (const char *magic_token, SharedMemoryHeader *header, const char *registry_name=0)
 Check if a specific shared memory segment exists.
static bool is_destroyed (int shm_id)
 Check if a segment has been destroyed.
static bool is_swapable (int shm_id)
 Check if memory can be swapped out.
static unsigned int num_attached (int shm_id)
 Get number of attached processes.
static SharedMemoryIterator find (const char *magic_token, SharedMemoryHeader *header, const char *registry_name=0)
 Find SharedMemory segments.
static SharedMemoryIterator end ()
 Get invalid iterator.

Additional Inherited Members

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

Detailed Description

Shared memory image buffer.

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

Author:
Tim Niemueller

Definition at line 135 of file shm_image.h.


Constructor & Destructor Documentation

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 63 of file shm_image.cpp.

References fawkes::SharedMemory::add_semaphore().

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 87 of file shm_image.cpp.

firevision::SharedMemoryImageBuffer::~SharedMemoryImageBuffer ( )

Destructor.

Definition at line 122 of file shm_image.cpp.

References fawkes::SharedMemory::free().


Member Function Documentation

unsigned char * firevision::SharedMemoryImageBuffer::buffer ( ) const
Time firevision::SharedMemoryImageBuffer::capture_time ( ) const
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 184 of file shm_image.cpp.

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

bool firevision::SharedMemoryImageBuffer::circle_found ( ) const

Check if circle was found .

Returns:
true if circle was found, false otherwise

Definition at line 482 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::flag_circle_found.

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

Get circle radius.

Returns:
circle radius

Definition at line 334 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::circle_radius.

Referenced by set_circle_radius().

int firevision::SharedMemoryImageBuffer::circle_x ( ) const

Get circle X.

Returns:
circle X

Definition at line 314 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::circle_x.

Referenced by set_circle_x().

int firevision::SharedMemoryImageBuffer::circle_y ( ) const

Get circle Y.

Returns:
circle Y

Definition at line 324 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::circle_y.

Referenced by set_circle_y().

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 507 of file shm_image.cpp.

References fawkes::SharedMemory::erase_orphaned().

colorspace_t firevision::SharedMemoryImageBuffer::colorspace ( ) const

Get color space.

Returns:
colorspace

Definition at line 244 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::colorspace.

Referenced by firevision::FuseImageContent::FuseImageContent().

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 528 of file shm_image.cpp.

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

Get frame ID.

Returns:
frame id

Definition at line 173 of file shm_image.cpp.

References firevision::SharedMemoryImageBufferHeader::frame_id().

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

Get image height.

Returns:
image height

Definition at line 264 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::height.

Referenced by firevision::FuseImageContent::FuseImageContent(), and OpenNiPclOnlyThread::init().

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

Get Image ID.

Returns:
image id

Definition at line 163 of file shm_image.cpp.

Referenced by firevision::FuseImageContent::FuseImageContent().

void firevision::SharedMemoryImageBuffer::list ( )
static

List all shared memory segments that contain a FireVision image.

Definition at line 490 of file shm_image.cpp.

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

Get ROI height.

Returns:
ROI height

Definition at line 304 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_height.

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

Get ROI width.

Returns:
ROI width

Definition at line 294 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_width.

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

Get ROI X.

Returns:
ROI X

Definition at line 274 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_x.

Referenced by set_roi(), and set_roi_x().

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

Get ROI Y.

Returns:
ROI Y

Definition at line 284 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::roi_y.

Referenced by set_roi(), and set_roi_y().

void firevision::SharedMemoryImageBuffer::set_capture_time ( fawkes::Time time)
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 220 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.

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

Set circle found.

Parameters:
foundtrue if circle found

Definition at line 472 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::flag_circle_found.

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

Set circle radius.

Parameters:
circle_radiusnew circle radius

Definition at line 442 of file shm_image.cpp.

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

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

Set circle X.

Parameters:
circle_xnew circle X

Definition at line 416 of file shm_image.cpp.

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

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

Set circle Y.

Parameters:
circle_ynew circle Y

Definition at line 429 of file shm_image.cpp.

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

void firevision::SharedMemoryImageBuffer::set_frame_id ( const char *  frame_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 136 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().

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

Set ROI height.

Parameters:
roi_hnew ROI height

Definition at line 383 of file shm_image.cpp.

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

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

Set ROI width.

Parameters:
roi_wnew ROI width

Definition at line 370 of file shm_image.cpp.

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

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

Set ROI X.

Parameters:
roi_xnew ROI X

Definition at line 344 of file shm_image.cpp.

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

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

Set ROI Y.

Parameters:
roi_ynew ROI Y

Definition at line 357 of file shm_image.cpp.

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

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

Get image width.

Returns:
width

Definition at line 254 of file shm_image.cpp.

References firevision::SharedMemoryImageBuffer_header_t::width.

Referenced by firevision::FuseImageContent::FuseImageContent(), and OpenNiPclOnlyThread::init().

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 543 of file shm_image.cpp.

References fawkes::SharedMemory::erase().


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