ArvGvcp

ArvGvcp — Gvcp packet handling (control)

Synopsis

#define             ARV_GVCP_PORT
enum                ArvGvcpPacketType;
enum                ArvGvcpCommand;
                    ArvGvcpHeader;
                    ArvGvcpPacket;
void                arv_gvcp_packet_free                (ArvGvcpPacket *packet);
ArvGvcpPacketType   arv_gvcp_packet_get_packet_type     (ArvGvcpPacket *packet);
ArvGvcpCommand      arv_gvcp_packet_get_command         (ArvGvcpPacket *packet);
guint16             arv_gvcp_packet_get_packet_id       (ArvGvcpPacket *packet);
void *              arv_gvcp_packet_get_read_memory_ack_data
                                                        (const ArvGvcpPacket *packet);
size_t              arv_gvcp_packet_get_read_memory_ack_size
                                                        (guint32 data_size);
void                arv_gvcp_packet_get_read_memory_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address,
                                                         guint32 *size);
guint32             arv_gvcp_packet_get_read_register_ack_value
                                                        (const ArvGvcpPacket *packet);
void                arv_gvcp_packet_get_read_register_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address);
size_t              arv_gvcp_packet_get_write_memory_ack_size
                                                        (void);
void *              arv_gvcp_packet_get_write_memory_cmd_data
                                                        (const ArvGvcpPacket *packet);
void                arv_gvcp_packet_get_write_memory_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address,
                                                         guint32 *size);
void                arv_gvcp_packet_get_write_register_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address,
                                                         guint32 *value);
void                arv_gvcp_packet_set_packet_id       (ArvGvcpPacket *packet,
                                                         guint16 id);
ArvGvcpPacket *     arv_gvcp_packet_new_read_memory_cmd (guint32 address,
                                                         guint32 size,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_read_memory_ack (guint32 address,
                                                         guint32 size,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_write_memory_cmd
                                                        (guint32 address,
                                                         guint32 size,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_write_memory_ack
                                                        (guint32 address,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_read_register_cmd
                                                        (guint32 address,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_read_register_ack
                                                        (guint32 value,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_write_register_cmd
                                                        (guint32 address,
                                                         guint32 value,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_write_register_ack
                                                        (guint32 address,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_discovery_cmd   (size_t *size);
ArvGvcpPacket *     arv_gvcp_packet_new_discovery_ack   (size_t *packet_size);
ArvGvcpPacket *     arv_gvcp_packet_new_packet_resend_cmd
                                                        (guint32 frame_id,
                                                         guint32 first_block,
                                                         guint32 last_block,
                                                         guint16 packet_id,
                                                         size_t *packet_size);
char *              arv_gvcp_packet_to_string           (const ArvGvcpPacket *packet);
void                arv_gvcp_packet_debug               (const ArvGvcpPacket *packet,
                                                         ArvDebugLevel level);
guint16             arv_gvcp_next_packet_id             (guint16 packet_id);

Description

Details

ARV_GVCP_PORT

#define ARV_GVCP_PORT 3956

Standard device listening port for GVCP packets


enum ArvGvcpPacketType

typedef enum {
	ARV_GVCP_PACKET_TYPE_ACK =		0x0000,
	ARV_GVCP_PACKET_TYPE_RESEND =		0x4200,
	ARV_GVCP_PACKET_TYPE_CMD = 		0x4201,
	ARV_GVCP_PACKET_TYPE_ERROR =		0x8006
} ArvGvcpPacketType;

ARV_GVCP_PACKET_TYPE_ACK

acknowledge packet

ARV_GVCP_PACKET_TYPE_RESEND

resend request packet

ARV_GVCP_PACKET_TYPE_CMD

command packet

ARV_GVCP_PACKET_TYPE_ERROR

error packet

enum ArvGvcpCommand

typedef enum {
	ARV_GVCP_COMMAND_DISCOVERY_CMD = 0x0002,
	ARV_GVCP_COMMAND_DISCOVERY_ACK = 0x0003,
	ARV_GVCP_COMMAND_BYE_CMD = 		0x0004,
	ARV_GVCP_COMMAND_BYE_ACK = 		0x0005,
	ARV_GVCP_COMMAND_PACKET_RESEND_CMD = 0x0040,
	ARV_GVCP_COMMAND_PACKET_RESEND_ACK = 0x0041,
	ARV_GVCP_COMMAND_READ_REGISTER_CMD = 0x0080,
	ARV_GVCP_COMMAND_READ_REGISTER_ACK = 0x0081,
	ARV_GVCP_COMMAND_WRITE_REGISTER_CMD = 0x0082,
	ARV_GVCP_COMMAND_WRITE_REGISTER_ACK = 0x0083,
	ARV_GVCP_COMMAND_READ_MEMORY_CMD = 0x0084,
	ARV_GVCP_COMMAND_READ_MEMORY_ACK = 0x0085,
	ARV_GVCP_COMMAND_WRITE_MEMORY_CMD = 0x0086,
	ARV_GVCP_COMMAND_WRITE_MEMORY_ACK = 0x0087,
	ARV_GVCP_COMMAND_PENDING_ACK =		0x0089
} ArvGvcpCommand;

ARV_GVCP_COMMAND_DISCOVERY_CMD

discovery command

ARV_GVCP_COMMAND_DISCOVERY_ACK

discovery acknowledge

ARV_GVCP_COMMAND_BYE_CMD

goodbye command, for connection termination

ARV_GVCP_COMMAND_BYE_ACK

goodbye acknowledge

ARV_GVCP_COMMAND_PACKET_RESEND_CMD

packet resend request

ARV_GVCP_COMMAND_PACKET_RESEND_ACK

packet resend acknowledge (not used ?)

ARV_GVCP_COMMAND_READ_REGISTER_CMD

read register command

ARV_GVCP_COMMAND_READ_REGISTER_ACK

read register acknowledge

ARV_GVCP_COMMAND_WRITE_REGISTER_CMD

write register command

ARV_GVCP_COMMAND_WRITE_REGISTER_ACK

write register acknowledge

ARV_GVCP_COMMAND_READ_MEMORY_CMD

read memory command

ARV_GVCP_COMMAND_READ_MEMORY_ACK

read memory acknowledge

ARV_GVCP_COMMAND_WRITE_MEMORY_CMD

write memory command

ARV_GVCP_COMMAND_WRITE_MEMORY_ACK

write memory acknowledge

ARV_GVCP_COMMAND_PENDING_ACK

pending command acknowledge

ArvGvcpHeader

typedef struct {
	guint16 packet_type;
	guint16 command;
	guint16 size;
	guint16 id;
} ArvGvcpHeader;

GVCP packet header structure.

guint16 packet_type;

a ArvGvcpPacketType identifier

guint16 command;

a ArvGvcpCommand identifier

guint16 size;

data size

guint16 id;

packet identifier

ArvGvcpPacket

typedef struct {
	ArvGvcpHeader header;
	unsigned char data[];
} ArvGvcpPacket;

GVCP packet structure.

ArvGvcpHeader header;

packet header

unsigned char data[];

variable size byte array

arv_gvcp_packet_free ()

void                arv_gvcp_packet_free                (ArvGvcpPacket *packet);

arv_gvcp_packet_get_packet_type ()

ArvGvcpPacketType   arv_gvcp_packet_get_packet_type     (ArvGvcpPacket *packet);

packet :

a ArvGvcpPacket

Returns :

The ArvGvcpPacketType code of packet.

arv_gvcp_packet_get_command ()

ArvGvcpCommand      arv_gvcp_packet_get_command         (ArvGvcpPacket *packet);

packet :

a ArvGvcpPacket

Returns :

The ArvGvcpCommand code of packet.

arv_gvcp_packet_get_packet_id ()

guint16             arv_gvcp_packet_get_packet_id       (ArvGvcpPacket *packet);

arv_gvcp_packet_get_read_memory_ack_data ()

void *              arv_gvcp_packet_get_read_memory_ack_data
                                                        (const ArvGvcpPacket *packet);

arv_gvcp_packet_get_read_memory_ack_size ()

size_t              arv_gvcp_packet_get_read_memory_ack_size
                                                        (guint32 data_size);

arv_gvcp_packet_get_read_memory_cmd_infos ()

void                arv_gvcp_packet_get_read_memory_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address,
                                                         guint32 *size);

arv_gvcp_packet_get_read_register_ack_value ()

guint32             arv_gvcp_packet_get_read_register_ack_value
                                                        (const ArvGvcpPacket *packet);

arv_gvcp_packet_get_read_register_cmd_infos ()

void                arv_gvcp_packet_get_read_register_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address);

arv_gvcp_packet_get_write_memory_ack_size ()

size_t              arv_gvcp_packet_get_write_memory_ack_size
                                                        (void);

arv_gvcp_packet_get_write_memory_cmd_data ()

void *              arv_gvcp_packet_get_write_memory_cmd_data
                                                        (const ArvGvcpPacket *packet);

arv_gvcp_packet_get_write_memory_cmd_infos ()

void                arv_gvcp_packet_get_write_memory_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address,
                                                         guint32 *size);

arv_gvcp_packet_get_write_register_cmd_infos ()

void                arv_gvcp_packet_get_write_register_cmd_infos
                                                        (const ArvGvcpPacket *packet,
                                                         guint32 *address,
                                                         guint32 *value);

arv_gvcp_packet_set_packet_id ()

void                arv_gvcp_packet_set_packet_id       (ArvGvcpPacket *packet,
                                                         guint16 id);

arv_gvcp_packet_new_read_memory_cmd ()

ArvGvcpPacket *     arv_gvcp_packet_new_read_memory_cmd (guint32 address,
                                                         guint32 size,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

address :

read address

size :

read size, in bytes

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a memory read command. [transfer full]

arv_gvcp_packet_new_read_memory_ack ()

ArvGvcpPacket *     arv_gvcp_packet_new_read_memory_ack (guint32 address,
                                                         guint32 size,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

address :

read address

size :

read size, in bytes

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a memory read acknowledge. [transfer full]

arv_gvcp_packet_new_write_memory_cmd ()

ArvGvcpPacket *     arv_gvcp_packet_new_write_memory_cmd
                                                        (guint32 address,
                                                         guint32 size,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

address :

write address

size :

write size, in bytes

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a memory write command. [transfer full]

arv_gvcp_packet_new_write_memory_ack ()

ArvGvcpPacket *     arv_gvcp_packet_new_write_memory_ack
                                                        (guint32 address,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

address :

write address

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a memory write acknowledge. [transfer full]

arv_gvcp_packet_new_read_register_cmd ()

ArvGvcpPacket *     arv_gvcp_packet_new_read_register_cmd
                                                        (guint32 address,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

address :

write address

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a register read command. [transfer full]

arv_gvcp_packet_new_read_register_ack ()

ArvGvcpPacket *     arv_gvcp_packet_new_read_register_ack
                                                        (guint32 value,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

value :

read value

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a register read acknowledge. [transfer full]

arv_gvcp_packet_new_write_register_cmd ()

ArvGvcpPacket *     arv_gvcp_packet_new_write_register_cmd
                                                        (guint32 address,
                                                         guint32 value,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

address :

write address

value :

value to write

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a register write command. [transfer full]

arv_gvcp_packet_new_write_register_ack ()

ArvGvcpPacket *     arv_gvcp_packet_new_write_register_ack
                                                        (guint32 address,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

address :

write address

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a register write acknowledge. [transfer full]

arv_gvcp_packet_new_discovery_cmd ()

ArvGvcpPacket *     arv_gvcp_packet_new_discovery_cmd   (size_t *size);

size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a discovery command. [transfer full]

arv_gvcp_packet_new_discovery_ack ()

ArvGvcpPacket *     arv_gvcp_packet_new_discovery_ack   (size_t *packet_size);

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket Create a gvcp packet for a discovery acknowledge. [transfer full]

arv_gvcp_packet_new_packet_resend_cmd ()

ArvGvcpPacket *     arv_gvcp_packet_new_packet_resend_cmd
                                                        (guint32 frame_id,
                                                         guint32 first_block,
                                                         guint32 last_block,
                                                         guint16 packet_id,
                                                         size_t *packet_size);

Create a gvcp packet for a packet resend command.

frame_id :

frame id

first_block :

first missing packet

last_block :

last missing packet

packet_id :

packet id

packet_size :

packet size, in bytes. [out]

Returns :

a new ArvGvcpPacket. [transfer full]

arv_gvcp_packet_to_string ()

char *              arv_gvcp_packet_to_string           (const ArvGvcpPacket *packet);

Converts packet into a human readable string.

packet :

a ArvGvcpPacket

Returns :

A newly allocated string. [transfer full]

arv_gvcp_packet_debug ()

void                arv_gvcp_packet_debug               (const ArvGvcpPacket *packet,
                                                         ArvDebugLevel level);

Dumps the content of packet if level is lower or equal to the current debug level for the gvcp debug category. See arv_debug_enable().

packet :

a ArvGvcpPacket

level :

debug level

arv_gvcp_next_packet_id ()

guint16             arv_gvcp_next_packet_id             (guint16 packet_id);