Ejemplo n.º 1
0
static void avb_1722_1_create_adp_packet(int message_type, guid_t guid)
{
	  ethernet_hdr_t *hdr = (ethernet_hdr_t*) &avb_1722_1_buf[0];
	  avb_1722_1_adp_packet_t *pkt = (avb_1722_1_adp_packet_t*) (hdr + AVB_1722_1_PACKET_BODY_POINTER_OFFSET);

	  memset(pkt, 0, sizeof(avb_1722_1_adp_packet_t));

	  avb_1722_1_create_1722_1_header(avb_1722_1_adp_dest_addr, DEFAULT_1722_1_ADP_SUBTYPE, message_type,
			  (message_type==ENTITY_AVAILABLE)?AVB_1722_1_ADP_VALID_TIME:0, AVB_1722_1_ADP_CD_LENGTH, hdr);

	  SET_LONG_WORD(pkt->entity_guid, guid);

	  if (message_type != ENTITY_DISCOVER)
	  {
		  HTON_U32(pkt->vendor_id, AVB_1722_1_ADP_VENDOR_ID);
		  HTON_U32(pkt->model_id, AVB_1722_1_ADP_MODEL_ID);
		  HTON_U32(pkt->entity_capabilities, AVB_1722_1_ADP_ENTITY_CAPABILITIES);
		  HTON_U16(pkt->talker_stream_sources, AVB_1722_1_ADP_TALKER_STREAM_SOURCES);
		  HTON_U16(pkt->talker_capabilities, AVB_1722_1_ADP_TALKER_CAPABILITIES);
		  HTON_U16(pkt->listener_stream_sinks, AVB_1722_1_ADP_LISTENER_STREAM_SINKS);
		  HTON_U16(pkt->listener_capabilites, AVB_1722_1_ADP_LISTENER_CAPABILITIES);
		  HTON_U32(pkt->controller_capabilities, AVB_1722_1_ADP_CONTROLLER_CAPABILITIES);
		  HTON_U32(pkt->available_index, avb_1722_1_available_index);
		  SET_LONG_WORD(pkt->as_grandmaster_id, as_grandmaster_id);
		  HTON_U32(pkt->default_audio_format, AVB_1722_1_ADP_DEFAULT_AUDIO_FORMAT);
		  HTON_U32(pkt->default_video_format, AVB_1722_1_ADP_DEFAULT_VIDEO_FORMAT);
		  HTON_U32(pkt->association_id, AVB_1722_1_ADP_ASSOCIATION_ID);
		  HTON_U32(pkt->entity_type, AVB_1722_1_ADP_ENTITY_TYPE_OTHER);
	  }
}
Ejemplo n.º 2
0
static unsigned char *avb_1722_1_create_aecp_packet(unsigned char dest_addr[6], int message_type, avb_1722_1_aecp_packet_t* cmd_pkt)
{
	struct ethernet_hdr_t *hdr = (ethernet_hdr_t*) &avb_1722_1_buf[0];
	avb_1722_1_aecp_packet_t *pkt = (avb_1722_1_aecp_packet_t*) (hdr + AVB_1722_1_PACKET_BODY_POINTER_OFFSET);

	avb_1722_1_create_1722_1_header(dest_addr, DEFAULT_1722_1_AECP_SUBTYPE, message_type, 0, 40, hdr);

	memcpy(pkt->target_guid, cmd_pkt->target_guid, (pkt->data.payload - pkt->target_guid));

	return pkt->data.payload;
}
Ejemplo n.º 3
0
/**
 * Creates a valid ACMP Ethernet packet in avb_1722_1_buf[] from a supplied command structure
 */
void avb_1722_1_create_acmp_packet(avb_1722_1_acmp_cmd_resp *cr, int message_type, int status)
{
    struct ethernet_hdr_t *hdr = (ethernet_hdr_t*) &avb_1722_1_buf[0];
    avb_1722_1_acmp_packet_t *pkt = (avb_1722_1_acmp_packet_t*) (hdr + AVB_1722_1_PACKET_BODY_POINTER_OFFSET);

    avb_1722_1_create_1722_1_header(avb_1722_1_acmp_dest_addr, DEFAULT_1722_1_ACMP_SUBTYPE, message_type, status, AVB_1722_1_ACMP_CD_LENGTH, hdr);

    set_64(pkt->stream_id, cr->stream_id.c);
    set_64(pkt->controller_guid, cr->controller_guid.c);
    set_64(pkt->listener_guid, cr->listener_guid.c);
    set_64(pkt->talker_guid, cr->talker_guid.c);
    hton_16(pkt->talker_unique_id, cr->talker_unique_id);
    hton_16(pkt->listener_unique_id, cr->listener_unique_id);
    hton_16(pkt->connection_count, cr->connection_count);
    hton_16(pkt->sequence_id, cr->sequence_id);
    hton_16(pkt->flags, cr->flags);
    hton_16(pkt->vlan_id, cr->vlan_id);
    memcpy(pkt->dest_mac, cr->stream_dest_mac, 6);
}