Fawkes API  Fawkes Development Version
Visca Class Reference

Visca control protocol implementation over a serial line. More...

#include "visca.h"

Inheritance diagram for Visca:

Public Member Functions

 Visca (const char *device_file, unsigned int def_timeout_ms=10, bool blocking=true)
 Constructor. More...
 
virtual ~Visca ()
 Destructor. More...
 
void open ()
 Open serial port. More...
 
void close ()
 Close port. More...
 
void set_address ()
 Set addresses of cameras. More...
 
void clear ()
 Clear command buffers. More...
 
void set_power (bool powered)
 Set power state. More...
 
bool is_powered ()
 Check if camera is powered. More...
 
void send ()
 Send outbound queue. More...
 
void recv (unsigned int timeout_ms=0xFFFFFFFF)
 Receive data. More...
 
void recv_ack (unsigned int *socket=NULL)
 Receive ACK packet. More...
 
void send_with_reply ()
 Send and wait for reply, blocking. More...
 
void send_nonblocking (unsigned int *socket=NULL)
 Send non-blocking. More...
 
void cancel_command (unsigned int socket)
 Cancel a running command. More...
 
bool data_available ()
 Check data availability. More...
 
void process ()
 Process incoming data. More...
 
void reset_pan_tilt ()
 Reset pan/tilt. More...
 
void start_get_pan_tilt ()
 Query for pan/tilt but do not wait until finished This will send an inquire to the camera that asks for pan/tilt values but it does not wait for the data! A later call to getPanTilt will then block and wait until the results arrive. More...
 
void set_pan_tilt (int pan, int tilt)
 Set pan tilt. More...
 
void get_pan_tilt (int &pan, int &tilt)
 Get pan and tilt values. More...
 
void set_pan_tilt_limit (int pan_left, int pan_right, int tilt_up, int tilt_down)
 Set pan tilt limit. More...
 
void reset_pan_tilt_limit ()
 Reset pan/tilt limit. More...
 
void set_pan_tilt_speed (unsigned char pan_speed, unsigned char tilt_speed)
 Set pan/tilt speed. More...
 
void get_pan_tilt_speed (unsigned char &pan_speed, unsigned char &tilt_speed)
 Get pan/tilt speed. More...
 
bool is_nonblocking_finished (unsigned int item) const
 Check if a non-blocking operation has been finished. More...
 
void reset_zoom ()
 Reset zoom. More...
 
void set_zoom (unsigned int zoom)
 Set zoom. More...
 
void get_zoom (unsigned int &zoom)
 Get zoom. More...
 
void set_zoom_speed_tele (unsigned int speed)
 Set zoom speed in tele. More...
 
void set_zoom_speed_wide (unsigned int speed)
 Set zoom speed in wide angle. More...
 
void set_zoom_digital_enabled (bool enabled)
 Enable or disable digital zoome. More...
 
void reset_effect ()
 Reset effects. More...
 
void apply_effect (unsigned char effect)
 Apply effect. More...
 
void apply_effect_pastel ()
 Apply pastel effect. More...
 
void apply_effect_neg_art ()
 Apply negative art effect. More...
 
void apply_effect_sepia ()
 Apply sepia effect. More...
 
void apply_effect_bnw ()
 Apply B/W effect. More...
 
void apply_effect_solarize ()
 Apply solarize effect. More...
 
void apply_effect_mosaic ()
 Apply mosaic effect. More...
 
void apply_effect_slim ()
 Apply slim effect. More...
 
void apply_effect_stretch ()
 Apply stretch effect. More...
 
unsigned int get_white_balance_mode ()
 Get white balance mode. More...
 
bool get_mirror ()
 Get mirror sate. More...
 
void set_mirror (bool mirror)
 Sett mirror sate. More...
 

Static Public Attributes

static const unsigned int VISCA_WHITEBLANCE_AUTO = VISCA_WB_AUTO
 Automatic white balance. More...
 
static const unsigned int VISCA_WHITEBALANCE_INDOOR = VISCA_WB_INDOOR
 Indoor white balance preset. More...
 
static const unsigned int VISCA_WHITEBALANCE_OUTDOOR = VISCA_WB_OUTDOOR
 Outdoor white balance preset. More...
 
static const unsigned int VISCA_WHITEBALANCE_ONE_PUSH = VISCA_WB_ONE_PUSH
 One push white balance preset. More...
 
static const unsigned int VISCA_WHITEBALANCE_ATW = VISCA_WB_ATW
 ATW white balance preset. More...
 
static const unsigned int VISCA_WHITEBALANCE_MANUAL = VISCA_WB_MANUAL
 Manual white balance. More...
 
static const unsigned int NONBLOCKING_PANTILT = 0
 Non-blocking pan/tilt item. More...
 
static const unsigned int NONBLOCKING_ZOOM = 1
 Non-blocking zoom item. More...
 
static const unsigned int NONBLOCKING_NUM = 2
 Number of non-blocking items. More...
 
static const unsigned int MAX_PAN_SPEED = 0x18
 Number of non-blocking items. More...
 
static const unsigned int MAX_TILT_SPEED = 0x14
 Number of non-blocking items. More...
 
static const unsigned int VISCA_ZOOM_VALUE_WIDE = 0x0000
 Zoom value: wide. More...
 
static const unsigned int VISCA_ZOOM_VALUE_1X = 0x0E6D
 Zoom value: 1x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_2X = 0x188E
 Zoom value: 2x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_3X = 0x2507
 Zoom value: 3x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_4X = 0x2B82
 Zoom value: 4x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_5X = 0x3130
 Zoom value: 5x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_6X = 0x352E
 Zoom value: 6x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_7X = 0x385D
 Zoom value: 7x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_8X = 0x3B48
 Zoom value: 8x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_9X = 0x3E01
 Zoom value: 9x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_10X = 0x4000
 Zoom value: 10x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_DIG_20X = 0x5000
 Zoom value: 20x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_DIG_30X = 0x6000
 Zoom value: 30x. More...
 
static const unsigned int VISCA_ZOOM_VALUE_DIG_40X = 0x7000
 Zoom value: 40x. More...
 

Detailed Description

Visca control protocol implementation over a serial line.

Author
Tim Niemueller

Definition at line 50 of file visca.h.

Constructor & Destructor Documentation

◆ Visca()

Visca::Visca ( const char *  device_file,
unsigned int  def_timeout_ms = 10,
bool  blocking = true 
)

Constructor.

Parameters
device_fileserial device file (e.g. /dev/ttyUSB0)
def_timeout_msdefault timeout for read operations applied if no explicit timeout is given.
blockingif true, setting the pan/tilt values will only cause sending the request, you need to call process() when there is time to process and handle incoming messages.

Definition at line 104 of file visca.cpp.

References clear(), MAX_PAN_SPEED, MAX_TILT_SPEED, NONBLOCKING_NUM, open(), and set_address().

◆ ~Visca()

Visca::~Visca ( )
virtual

Destructor.

Definition at line 126 of file visca.cpp.

References close().

Member Function Documentation

◆ apply_effect()

void Visca::apply_effect ( unsigned char  filter)

◆ apply_effect_bnw()

void Visca::apply_effect_bnw ( )

Apply B/W effect.

Definition at line 1140 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ apply_effect_mosaic()

void Visca::apply_effect_mosaic ( )

Apply mosaic effect.

Definition at line 1164 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ apply_effect_neg_art()

void Visca::apply_effect_neg_art ( )

Apply negative art effect.

Definition at line 1116 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ apply_effect_pastel()

void Visca::apply_effect_pastel ( )

Apply pastel effect.

Definition at line 1104 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ apply_effect_sepia()

void Visca::apply_effect_sepia ( )

Apply sepia effect.

Definition at line 1128 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ apply_effect_slim()

void Visca::apply_effect_slim ( )

Apply slim effect.

Definition at line 1176 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ apply_effect_solarize()

void Visca::apply_effect_solarize ( )

Apply solarize effect.

Definition at line 1152 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ apply_effect_stretch()

void Visca::apply_effect_stretch ( )

Apply stretch effect.

Definition at line 1188 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ cancel_command()

void Visca::cancel_command ( unsigned int  socket)

Cancel a running command.

Parameters
socketsocket that the command was send on

Definition at line 519 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ clear()

void Visca::clear ( void  )

Clear command buffers.

Definition at line 242 of file visca.cpp.

References fawkes::Exception::append(), recv(), and send().

Referenced by Visca().

◆ close()

void Visca::close ( )

Close port.

Definition at line 211 of file visca.cpp.

Referenced by open(), and ~Visca().

◆ data_available()

bool Visca::data_available ( )

Check data availability.

Returns
true if data is available, false otherwise

Definition at line 291 of file visca.cpp.

Referenced by process().

◆ get_mirror()

bool Visca::get_mirror ( )

Get mirror sate.

Returns
true if image is mirrored, false otherwise

Definition at line 1260 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ get_pan_tilt()

void Visca::get_pan_tilt ( int &  pan,
int &  tilt 
)

Get pan and tilt values.

If you used startGetPanTilt() to initiate the query the result is received and returned, otherwise a request is sent and the method blocks until the answer has been received.

Parameters
pancontains pan upon return
tiltcontains tilt upon return

Definition at line 720 of file visca.cpp.

References recv(), send(), and send_with_reply().

Referenced by SonyEviD100PVisca::get_pan_tilt_rad().

◆ get_pan_tilt_speed()

void Visca::get_pan_tilt_speed ( unsigned char &  pan_speed,
unsigned char &  tilt_speed 
)

Get pan/tilt speed.

Parameters
pan_speedupon return contains pan speed index
tilt_speedupon return contains tilt speed index

Definition at line 684 of file visca.cpp.

Referenced by SonyEviD100PVisca::get_speed_radsec().

◆ get_white_balance_mode()

unsigned int Visca::get_white_balance_mode ( )

Get white balance mode.

Returns
white balance mode

Definition at line 1202 of file visca.cpp.

References fawkes::Exception::append(), recv(), and send_with_reply().

◆ get_zoom()

void Visca::get_zoom ( unsigned int &  zoom)

Get zoom.

Parameters
zoomcontains zoom upon return.

Definition at line 1016 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ is_nonblocking_finished()

bool Visca::is_nonblocking_finished ( unsigned int  item) const

Check if a non-blocking operation has been finished.

Parameters
itemthe non-blocking item to check
Returns
true if the non-blocking operation has been finished, false otherwise

Definition at line 403 of file visca.cpp.

References NONBLOCKING_NUM.

◆ is_powered()

bool Visca::is_powered ( )

Check if camera is powered.

Returns
true if camera is powered, false otherwise

Definition at line 582 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

Referenced by PanTiltSonyEviD100PThread::init().

◆ open()

void Visca::open ( )

Open serial port.

Definition at line 134 of file visca.cpp.

References close().

Referenced by Visca().

◆ process()

void Visca::process ( )

Process incoming data.

Definition at line 543 of file visca.cpp.

References data_available(), and recv().

◆ recv()

void Visca::recv ( unsigned int  timeout_ms = 0xFFFFFFFF)

Receive data.

Parameters
timeout_msread timeout in miliseconds

Definition at line 302 of file visca.cpp.

References fawkes::Exception::append().

Referenced by clear(), get_pan_tilt(), get_white_balance_mode(), process(), send_with_reply(), and set_address().

◆ recv_ack()

void Visca::recv_ack ( unsigned int *  socket = NULL)

Receive ACK packet.

Parameters
socketcontains the socket that the ACK was received on upon return

Definition at line 338 of file visca.cpp.

References fawkes::Exception::append().

Referenced by send_nonblocking(), and send_with_reply().

◆ reset_effect()

void Visca::reset_effect ( )

Reset effects.

Definition at line 1092 of file visca.cpp.

References fawkes::Exception::append(), and apply_effect().

◆ reset_pan_tilt()

void Visca::reset_pan_tilt ( )

Reset pan/tilt.

Definition at line 905 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ reset_pan_tilt_limit()

void Visca::reset_pan_tilt_limit ( )

Reset pan/tilt limit.

Definition at line 825 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ reset_zoom()

void Visca::reset_zoom ( )

Reset zoom.

Definition at line 922 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ send()

void Visca::send ( )

Send outbound queue.

Definition at line 263 of file visca.cpp.

Referenced by clear(), get_pan_tilt(), send_nonblocking(), send_with_reply(), set_address(), and start_get_pan_tilt().

◆ send_nonblocking()

void Visca::send_nonblocking ( unsigned int *  socket = NULL)

Send non-blocking.

Does a non-blocking send.

Parameters
socketthe socket that was used to send the request.

Definition at line 370 of file visca.cpp.

References fawkes::Exception::append(), recv_ack(), and send().

Referenced by set_pan_tilt(), and set_zoom().

◆ send_with_reply()

◆ set_address()

void Visca::set_address ( )

Set addresses of cameras.

Definition at line 221 of file visca.cpp.

References recv(), and send().

Referenced by Visca().

◆ set_mirror()

void Visca::set_mirror ( bool  mirror)

Sett mirror sate.

Parameters
mirrortrue to enable mirroring, false to disable

Definition at line 1240 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

Referenced by PanTiltSonyEviD100PThread::init().

◆ set_pan_tilt()

void Visca::set_pan_tilt ( int  pan,
int  tilt 
)

Set pan tilt.

Parameters
panpan
tilttilt

Definition at line 610 of file visca.cpp.

References fawkes::Exception::append(), NONBLOCKING_PANTILT, send_nonblocking(), and send_with_reply().

Referenced by SonyEviD100PVisca::set_pan_tilt_rad().

◆ set_pan_tilt_limit()

void Visca::set_pan_tilt_limit ( int  pan_left,
int  pan_right,
int  tilt_up,
int  tilt_down 
)

Set pan tilt limit.

Parameters
pan_leftmost left pan value
pan_rightmost right pan value
tilt_upmost up tilt value
tilt_downmost down tilt value

Definition at line 861 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ set_pan_tilt_speed()

void Visca::set_pan_tilt_speed ( unsigned char  pan_speed,
unsigned char  tilt_speed 
)

Set pan/tilt speed.

Parameters
pan_speeda value between 0 and MAX_PAN_SPEED
tilt_speeda value between 0 and MAX_TILT_SPEED
Exceptions
Exceptionthrown if desired pan or tilt speed is too high

Definition at line 666 of file visca.cpp.

References MAX_PAN_SPEED, and MAX_TILT_SPEED.

Referenced by SonyEviD100PVisca::set_speed_radsec().

◆ set_power()

void Visca::set_power ( bool  powered)

Set power state.

Parameters
poweredtrue to power on, false to power off

Definition at line 562 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

Referenced by PanTiltSonyEviD100PThread::finalize(), and PanTiltSonyEviD100PThread::init().

◆ set_zoom()

void Visca::set_zoom ( unsigned int  zoom)

Set zoom.

Parameters
zoomzoom value

Definition at line 986 of file visca.cpp.

References fawkes::Exception::append(), NONBLOCKING_ZOOM, send_nonblocking(), and send_with_reply().

◆ set_zoom_digital_enabled()

void Visca::set_zoom_digital_enabled ( bool  enabled)

Enable or disable digital zoome.

Parameters
enabledtrue to enable digital zoom, false to disable

Definition at line 1050 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ set_zoom_speed_tele()

void Visca::set_zoom_speed_tele ( unsigned int  speed)

Set zoom speed in tele.

Parameters
speedspeed

Definition at line 942 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ set_zoom_speed_wide()

void Visca::set_zoom_speed_wide ( unsigned int  speed)

Set zoom speed in wide angle.

Parameters
speedspeed

Definition at line 964 of file visca.cpp.

References fawkes::Exception::append(), and send_with_reply().

◆ start_get_pan_tilt()

void Visca::start_get_pan_tilt ( )

Query for pan/tilt but do not wait until finished This will send an inquire to the camera that asks for pan/tilt values but it does not wait for the data! A later call to getPanTilt will then block and wait until the results arrive.

Initiate a pan/tilt request, but do not wait for the reply.

Not that you can not run another inquire (get*) method until this call has finished! You will get VISCA_E_INQRUNNING as error message.

Definition at line 692 of file visca.cpp.

References fawkes::Exception::append(), and send().

Member Data Documentation

◆ MAX_PAN_SPEED

const unsigned int Visca::MAX_PAN_SPEED = 0x18
static

Number of non-blocking items.

Definition at line 64 of file visca.h.

Referenced by set_pan_tilt_speed(), and Visca().

◆ MAX_TILT_SPEED

const unsigned int Visca::MAX_TILT_SPEED = 0x14
static

Number of non-blocking items.

Definition at line 65 of file visca.h.

Referenced by set_pan_tilt_speed(), and Visca().

◆ NONBLOCKING_NUM

const unsigned int Visca::NONBLOCKING_NUM = 2
static

Number of non-blocking items.

Definition at line 62 of file visca.h.

Referenced by is_nonblocking_finished(), and Visca().

◆ NONBLOCKING_PANTILT

const unsigned int Visca::NONBLOCKING_PANTILT = 0
static

Non-blocking pan/tilt item.

Definition at line 60 of file visca.h.

Referenced by set_pan_tilt().

◆ NONBLOCKING_ZOOM

const unsigned int Visca::NONBLOCKING_ZOOM = 1
static

Non-blocking zoom item.

Definition at line 61 of file visca.h.

Referenced by set_zoom().

◆ VISCA_WHITEBALANCE_ATW

const unsigned int Visca::VISCA_WHITEBALANCE_ATW = VISCA_WB_ATW
static

ATW white balance preset.

Definition at line 57 of file visca.h.

◆ VISCA_WHITEBALANCE_INDOOR

const unsigned int Visca::VISCA_WHITEBALANCE_INDOOR = VISCA_WB_INDOOR
static

Indoor white balance preset.

Definition at line 54 of file visca.h.

◆ VISCA_WHITEBALANCE_MANUAL

const unsigned int Visca::VISCA_WHITEBALANCE_MANUAL = VISCA_WB_MANUAL
static

Manual white balance.

Definition at line 58 of file visca.h.

◆ VISCA_WHITEBALANCE_ONE_PUSH

const unsigned int Visca::VISCA_WHITEBALANCE_ONE_PUSH = VISCA_WB_ONE_PUSH
static

One push white balance preset.

Definition at line 56 of file visca.h.

◆ VISCA_WHITEBALANCE_OUTDOOR

const unsigned int Visca::VISCA_WHITEBALANCE_OUTDOOR = VISCA_WB_OUTDOOR
static

Outdoor white balance preset.

Definition at line 55 of file visca.h.

◆ VISCA_WHITEBLANCE_AUTO

const unsigned int Visca::VISCA_WHITEBLANCE_AUTO = VISCA_WB_AUTO
static

Automatic white balance.

Definition at line 53 of file visca.h.

◆ VISCA_ZOOM_VALUE_10X

const unsigned int Visca::VISCA_ZOOM_VALUE_10X = 0x4000
static

Zoom value: 10x.

Definition at line 88 of file visca.h.

◆ VISCA_ZOOM_VALUE_1X

const unsigned int Visca::VISCA_ZOOM_VALUE_1X = 0x0E6D
static

Zoom value: 1x.

Definition at line 70 of file visca.h.

◆ VISCA_ZOOM_VALUE_2X

const unsigned int Visca::VISCA_ZOOM_VALUE_2X = 0x188E
static

Zoom value: 2x.

Definition at line 72 of file visca.h.

◆ VISCA_ZOOM_VALUE_3X

const unsigned int Visca::VISCA_ZOOM_VALUE_3X = 0x2507
static

Zoom value: 3x.

Definition at line 74 of file visca.h.

◆ VISCA_ZOOM_VALUE_4X

const unsigned int Visca::VISCA_ZOOM_VALUE_4X = 0x2B82
static

Zoom value: 4x.

Definition at line 76 of file visca.h.

◆ VISCA_ZOOM_VALUE_5X

const unsigned int Visca::VISCA_ZOOM_VALUE_5X = 0x3130
static

Zoom value: 5x.

Definition at line 78 of file visca.h.

◆ VISCA_ZOOM_VALUE_6X

const unsigned int Visca::VISCA_ZOOM_VALUE_6X = 0x352E
static

Zoom value: 6x.

Definition at line 80 of file visca.h.

◆ VISCA_ZOOM_VALUE_7X

const unsigned int Visca::VISCA_ZOOM_VALUE_7X = 0x385D
static

Zoom value: 7x.

Definition at line 82 of file visca.h.

◆ VISCA_ZOOM_VALUE_8X

const unsigned int Visca::VISCA_ZOOM_VALUE_8X = 0x3B48
static

Zoom value: 8x.

Definition at line 84 of file visca.h.

◆ VISCA_ZOOM_VALUE_9X

const unsigned int Visca::VISCA_ZOOM_VALUE_9X = 0x3E01
static

Zoom value: 9x.

Definition at line 86 of file visca.h.

◆ VISCA_ZOOM_VALUE_DIG_20X

const unsigned int Visca::VISCA_ZOOM_VALUE_DIG_20X = 0x5000
static

Zoom value: 20x.

Definition at line 90 of file visca.h.

◆ VISCA_ZOOM_VALUE_DIG_30X

const unsigned int Visca::VISCA_ZOOM_VALUE_DIG_30X = 0x6000
static

Zoom value: 30x.

Definition at line 92 of file visca.h.

◆ VISCA_ZOOM_VALUE_DIG_40X

const unsigned int Visca::VISCA_ZOOM_VALUE_DIG_40X = 0x7000
static

Zoom value: 40x.

Definition at line 94 of file visca.h.

◆ VISCA_ZOOM_VALUE_WIDE

const unsigned int Visca::VISCA_ZOOM_VALUE_WIDE = 0x0000
static

Zoom value: wide.

Definition at line 68 of file visca.h.


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