Beispiel #1
0
VISCA_API uint32_t libviscaEVIHD1::set_manual_exposure(VISCAInterface_t* iface, VISCACamera_t* camera)
{
  VISCAPacket_t packet;
  
  // set up header appropriately
  _VISCA_init_packet(&packet);
  _VISCA_append_byte(&packet, VISCA_COMMAND);
  _VISCA_append_byte(&packet, 0x04);
  _VISCA_append_byte(&packet, 0x39);
  _VISCA_append_byte(&packet, 0x03);

  return _VISCA_send_packet_with_reply(iface, camera, &packet);  
}
uint32_t
_VISCA_send_packet(VISCAInterface_t *iface, VISCACamera_t *camera, VISCAPacket_t *packet)
{
    // check data:
    if ((iface->address>7)||(camera->address>7)||(iface->broadcast>1))
    {
#if DEBUG
        fprintf(stderr,"(%s): Invalid header parameters\n",__FILE__);
        fprintf(stderr," %d %d %d   \n",iface->address,camera->address,iface->broadcast);
#endif
        return VISCA_FAILURE;
    }

    // build header:
    packet->bytes[0]=0x80;
    packet->bytes[0]|=(iface->address << 4);
    if (iface->broadcast>0)
    {
        packet->bytes[0]|=(iface->broadcast << 3);
        packet->bytes[0]&=0xF8;
    }
    else
        packet->bytes[0]|=camera->address;

    // append footer
    _VISCA_append_byte(packet,VISCA_TERMINATOR);

    return _VISCA_write_packet_data(iface,camera,packet);
}
Beispiel #3
0
uint32_t
_VISCA_send_packet(VISCAInterface_t *iface, VISCACamera_t *camera, VISCAPacket_t *packet)
{
    // check data:
    if ((iface->address>7)||(camera->address>7)||(iface->broadcast>1))
    {
#ifdef DEBUG
	dbg_ReportStrP(PSTR("_VISCA_send_packet: bad header parms\n"));
#endif
	return VISCA_FAILURE;
    }

    // build header:
    packet->bytes[0]=0x80;
    packet->bytes[0]|=(iface->address << 4);
    if (iface->broadcast>0)
    {
	packet->bytes[0]|=(iface->broadcast << 3);
	packet->bytes[0]&=0xF8;
    }
    else
	packet->bytes[0]|=camera->address;
    
    // append footer
    _VISCA_append_byte(packet,VISCA_TERMINATOR);


    return _VISCA_write_packet_data(iface,camera,packet);
}
Beispiel #4
0
// TODO: adapt this method so it's not a clone of the BRC300 version
VISCA_API uint32_t libviscaEVIHD1::set_camera_power(VISCAInterface_t* iface, VISCACamera_t* camera, bool powerStatus)
{
  VISCAPacket_t packet;

  // set up header appropriately
  _VISCA_init_packet(&packet);
  _VISCA_append_byte(&packet, VISCA_COMMAND);
  _VISCA_append_byte(&packet, 0x04);
  _VISCA_append_byte(&packet, 0x00);

  if(powerStatus)
    _VISCA_append_byte(&packet, 0x02); // power ON with byte 0x02
  else
    _VISCA_append_byte(&packet, 0x03); // power OFF with byte 0x03

  return _VISCA_send_packet_with_reply(iface, camera, &packet);
}
Beispiel #5
0
// set absolute pan/tilt position
VISCA_API uint32_t libviscaEVIHD1::set_pantilt_absolute_position(VISCAInterface_t *iface, VISCACamera_t *camera, uint32_t speed, uint32_t pan_position, uint32_t tilt_position)
{
  // Set up the packet we'll send
  VISCAPacket_t packet;
  _VISCA_init_packet(&packet);

  
  // Used proper codes for sending to camera
  _VISCA_append_byte(&packet, VISCA_COMMAND);
  _VISCA_append_byte(&packet, 0x06);
  _VISCA_append_byte(&packet, 0x02);
  _VISCA_append_byte(&packet, 0x18 ); // pan rate of motion: 0x18 is fastest
  _VISCA_append_byte(&packet, 0x14 ); // tilt rate of motion: 0x14 is fastest

  
  // needed to have five bytes for pan, four bytes for tilt
  _VISCA_append_byte(&packet, (pan_position & 0x0f000) >> 12);
  _VISCA_append_byte(&packet, (pan_position & 0x00f00) >>  8);
  _VISCA_append_byte(&packet, (pan_position & 0x000f0) >>  4);
  _VISCA_append_byte(&packet,  pan_position & 0x0000f       );

  _VISCA_append_byte(&packet, (tilt_position & 0xf000) >> 12);
  _VISCA_append_byte(&packet, (tilt_position & 0x0f00) >> 8);
  _VISCA_append_byte(&packet, (tilt_position & 0x00f0) >> 4);
  _VISCA_append_byte(&packet, tilt_position & 0x000f);
 

  //_VISCA_append_byte(&packet, 0xFF); // it is NOT REQUIRED to add the terminating 0xff byte


  return _VISCA_send_packet_with_reply(iface, camera, &packet);
}
Beispiel #6
0
// manually set the gain -- 0x00 = -3db, 0x01 = normal, 0x07 = max
VISCA_API uint32_t libviscaEVIHD1::set_absolute_gain(VISCAInterface_t* iface, VISCACamera_t* camera, char value)
{
  // set end stops
  if(value > 0x07) value = 0x07;
  
  VISCAPacket_t packet;

  // set up header appropriately
  _VISCA_init_packet(&packet);
  _VISCA_append_byte(&packet, VISCA_COMMAND);
  _VISCA_append_byte(&packet, 0x04);
  _VISCA_append_byte(&packet, 0x0C); // set to C for gain
  _VISCA_append_byte(&packet, 0x00);
  _VISCA_append_byte(&packet, 0x00);
  _VISCA_append_byte(&packet, ((value & 0xF0) >> 4) );
  _VISCA_append_byte(&packet, ((value & 0x0F)     ) );

  return _VISCA_send_packet_with_reply(iface, camera, &packet);
}