24 #include <interfaces/CameraControlInterface.h>
26 #include <core/exceptions/software.h>
45 CameraControlInterface::CameraControlInterface() : Interface()
47 data_size =
sizeof(CameraControlInterface_data_t);
48 data_ptr = malloc(data_size);
49 data = (CameraControlInterface_data_t *)data_ptr;
50 data_ts = (interface_data_ts_t *)data_ptr;
51 memset(data_ptr, 0, data_size);
52 enum_map_Effect[(int)EFF_NONE] =
"EFF_NONE";
53 enum_map_Effect[(int)EFF_PASTEL] =
"EFF_PASTEL";
54 enum_map_Effect[(int)EFF_NEGATIVE] =
"EFF_NEGATIVE";
55 enum_map_Effect[(int)EFF_BW] =
"EFF_BW";
56 enum_map_Effect[(int)EFF_SOLARIZE] =
"EFF_SOLARIZE";
57 add_fieldinfo(IFT_ENUM,
"effect", 1, &data->effect,
"Effect", &enum_map_Effect);
58 add_fieldinfo(IFT_BOOL,
"effect_supported", 1, &data->effect_supported);
59 add_fieldinfo(IFT_UINT32,
"zoom", 1, &data->zoom);
60 add_fieldinfo(IFT_BOOL,
"zoom_supported", 1, &data->zoom_supported);
61 add_fieldinfo(IFT_UINT32,
"zoom_max", 1, &data->zoom_max);
62 add_fieldinfo(IFT_UINT32,
"zoom_min", 1, &data->zoom_min);
63 add_fieldinfo(IFT_BOOL,
"mirror", 1, &data->mirror);
64 add_fieldinfo(IFT_BOOL,
"mirror_supported", 1, &data->mirror_supported);
65 add_messageinfo(
"SetEffectMessage");
66 add_messageinfo(
"SetZoomMessage");
67 add_messageinfo(
"SetMirrorMessage");
68 unsigned char tmp_hash[] = {0xc, 0xc9, 0x4a, 0x24, 0x89, 0xb8, 0x9c, 0xd1, 0x7f, 0xf5, 0xc4, 0xa3, 0x41, 0xca, 0x9a, 0xc1};
73 CameraControlInterface::~CameraControlInterface()
82 CameraControlInterface::tostring_Effect(
Effect value)
const
85 case EFF_NONE:
return "EFF_NONE";
86 case EFF_PASTEL:
return "EFF_PASTEL";
87 case EFF_NEGATIVE:
return "EFF_NEGATIVE";
88 case EFF_BW:
return "EFF_BW";
89 case EFF_SOLARIZE:
return "EFF_SOLARIZE";
90 default:
return "UNKNOWN";
99 CameraControlInterface::effect()
const
109 CameraControlInterface::maxlenof_effect()
const
119 CameraControlInterface::set_effect(
const Effect new_effect)
129 CameraControlInterface::is_effect_supported()
const
131 return data->effect_supported;
139 CameraControlInterface::maxlenof_effect_supported()
const
149 CameraControlInterface::set_effect_supported(
const bool new_effect_supported)
151 data_changed |=
change_field(data->effect_supported, new_effect_supported);
159 CameraControlInterface::zoom()
const
169 CameraControlInterface::maxlenof_zoom()
const
179 CameraControlInterface::set_zoom(
const uint32_t new_zoom)
189 CameraControlInterface::is_zoom_supported()
const
191 return data->zoom_supported;
199 CameraControlInterface::maxlenof_zoom_supported()
const
209 CameraControlInterface::set_zoom_supported(
const bool new_zoom_supported)
211 data_changed |=
change_field(data->zoom_supported, new_zoom_supported);
219 CameraControlInterface::zoom_max()
const
221 return data->zoom_max;
229 CameraControlInterface::maxlenof_zoom_max()
const
239 CameraControlInterface::set_zoom_max(
const uint32_t new_zoom_max)
241 data_changed |=
change_field(data->zoom_max, new_zoom_max);
249 CameraControlInterface::zoom_min()
const
251 return data->zoom_min;
259 CameraControlInterface::maxlenof_zoom_min()
const
269 CameraControlInterface::set_zoom_min(
const uint32_t new_zoom_min)
271 data_changed |=
change_field(data->zoom_min, new_zoom_min);
279 CameraControlInterface::is_mirror()
const
289 CameraControlInterface::maxlenof_mirror()
const
299 CameraControlInterface::set_mirror(
const bool new_mirror)
309 CameraControlInterface::is_mirror_supported()
const
311 return data->mirror_supported;
319 CameraControlInterface::maxlenof_mirror_supported()
const
329 CameraControlInterface::set_mirror_supported(
const bool new_mirror_supported)
331 data_changed |=
change_field(data->mirror_supported, new_mirror_supported);
336 CameraControlInterface::create_message(
const char *type)
const
338 if ( strncmp(
"SetEffectMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
340 }
else if ( strncmp(
"SetZoomMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
342 }
else if ( strncmp(
"SetMirrorMessage", type, INTERFACE_MESSAGE_TYPE_SIZE_ - 1) == 0 ) {
346 "message type for this interface type.", type);
355 CameraControlInterface::copy_values(
const Interface *other)
360 type(), other->
type());
362 memcpy(data, oi->data,
sizeof(CameraControlInterface_data_t));
366 CameraControlInterface::enum_tostring(
const char *enumtype,
int val)
const
368 if (strcmp(enumtype,
"Effect") == 0) {
369 return tostring_Effect((
Effect)val);
385 CameraControlInterface::SetEffectMessage::SetEffectMessage(
const Effect ini_effect) :
Message(
"SetEffectMessage")
387 data_size =
sizeof(SetEffectMessage_data_t);
390 data = (SetEffectMessage_data_t *)
data_ptr;
392 data->effect = ini_effect;
393 enum_map_Effect[(int)
EFF_NONE] =
"EFF_NONE";
394 enum_map_Effect[(int)
EFF_PASTEL] =
"EFF_PASTEL";
396 enum_map_Effect[(int)
EFF_BW] =
"EFF_BW";
403 data_size =
sizeof(SetEffectMessage_data_t);
406 data = (SetEffectMessage_data_t *)
data_ptr;
408 enum_map_Effect[(int)
EFF_NONE] =
"EFF_NONE";
409 enum_map_Effect[(int)
EFF_PASTEL] =
"EFF_PASTEL";
411 enum_map_Effect[(int)
EFF_BW] =
"EFF_BW";
430 data = (SetEffectMessage_data_t *)
data_ptr;
487 data_size =
sizeof(SetZoomMessage_data_t);
490 data = (SetZoomMessage_data_t *)
data_ptr;
492 data->zoom = ini_zoom;
493 enum_map_Effect[(int)
EFF_NONE] =
"EFF_NONE";
494 enum_map_Effect[(int)
EFF_PASTEL] =
"EFF_PASTEL";
496 enum_map_Effect[(int)
EFF_BW] =
"EFF_BW";
503 data_size =
sizeof(SetZoomMessage_data_t);
506 data = (SetZoomMessage_data_t *)
data_ptr;
508 enum_map_Effect[(int)
EFF_NONE] =
"EFF_NONE";
509 enum_map_Effect[(int)
EFF_PASTEL] =
"EFF_PASTEL";
511 enum_map_Effect[(int)
EFF_BW] =
"EFF_BW";
530 data = (SetZoomMessage_data_t *)
data_ptr;
587 data_size =
sizeof(SetMirrorMessage_data_t);
590 data = (SetMirrorMessage_data_t *)
data_ptr;
592 data->mirror = ini_mirror;
593 enum_map_Effect[(int)
EFF_NONE] =
"EFF_NONE";
594 enum_map_Effect[(int)
EFF_PASTEL] =
"EFF_PASTEL";
596 enum_map_Effect[(int)
EFF_BW] =
"EFF_BW";
603 data_size =
sizeof(SetMirrorMessage_data_t);
606 data = (SetMirrorMessage_data_t *)
data_ptr;
608 enum_map_Effect[(int)
EFF_NONE] =
"EFF_NONE";
609 enum_map_Effect[(int)
EFF_PASTEL] =
"EFF_PASTEL";
611 enum_map_Effect[(int)
EFF_BW] =
"EFF_BW";
630 data = (SetMirrorMessage_data_t *)
data_ptr;
SetEffectMessage Fawkes BlackBoard Interface Message.
Effect effect() const
Get effect value.
SetEffectMessage()
Constructor.
~SetEffectMessage()
Destructor.
void set_effect(const Effect new_effect)
Set effect value.
size_t maxlenof_effect() const
Get maximum length of effect value.
virtual Message * clone() const
Clone this message.
SetMirrorMessage Fawkes BlackBoard Interface Message.
virtual Message * clone() const
Clone this message.
void set_mirror(const bool new_mirror)
Set mirror value.
bool is_mirror() const
Get mirror value.
~SetMirrorMessage()
Destructor.
size_t maxlenof_mirror() const
Get maximum length of mirror value.
SetMirrorMessage()
Constructor.
SetZoomMessage Fawkes BlackBoard Interface Message.
void set_zoom(const uint32_t new_zoom)
Set zoom value.
~SetZoomMessage()
Destructor.
size_t maxlenof_zoom() const
Get maximum length of zoom value.
SetZoomMessage()
Constructor.
virtual Message * clone() const
Clone this message.
uint32_t zoom() const
Get zoom value.
CameraControlInterface Fawkes BlackBoard Interface.
Effect
Enumeration defining the possible effects.
@ EFF_SOLARIZE
Enhanced Contrast.
@ EFF_NEGATIVE
Negative/Positive Reversal.
@ EFF_PASTEL
Pastel colors.
@ EFF_BW
Monochrome Image.
virtual bool message_valid(const Message *message) const
Check if message is valid and can be enqueued.
Base class for all Fawkes BlackBoard interfaces.
const char * type() const
Get type of interface.
void * data_ptr
Pointer to local memory storage.
Base class for all messages passed through interfaces in Fawkes BlackBoard.
void add_fieldinfo(interface_fieldtype_t type, const char *name, size_t length, void *value, const char *enumtype=0, const interface_enum_map_t *enum_map=0)
Add an entry to the info list.
void * data_ptr
Pointer to memory that contains local data.
message_data_ts_t * data_ts
data timestamp aliasing pointer
unsigned int data_size
Size of memory needed to hold all data.
Fawkes library namespace.
@ IFT_UINT32
32 bit unsigned integer field
@ IFT_ENUM
field with interface specific enum type
bool change_field(FieldT &field, const DataT &value)
Set a field and return whether it changed.
Timestamp data, must be present and first entries for each interface data structs!...