Re: [PATCH 1/3] unit/avrcp: Add /TP/CFG/BV-01-C test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Luiz,

On Wed, Feb 26, 2014 at 01:59:30PM +0200, Luiz Augusto von Dentz wrote:
> Hi Andrei,
> 
> On Tue, Feb 25, 2014 at 3:56 PM, Andrei Emeltchenko
> <Andrei.Emeltchenko.news@xxxxxxxxx> wrote:
> > From: Andrei Emeltchenko <andrei.emeltchenko@xxxxxxxxx>
> >
> > Test verifies that the get capabilities command issued from the
> > Controller. For that we add the command to avrcp-lib and it will be used
> > in AVRCP later.
> > ---
> >  android/avrcp-lib.c | 40 ++++++++++++++++++++++++++++++++++++++++
> >  android/avrcp-lib.h |  2 ++
> >  android/avrcp.c     |  1 +
> >  unit/test-avrcp.c   | 17 +++++++++++++++++
> >  4 files changed, 60 insertions(+)
> >
> > diff --git a/android/avrcp-lib.c b/android/avrcp-lib.c
> > index c280cf8..136801e 100644
> > --- a/android/avrcp-lib.c
> > +++ b/android/avrcp-lib.c
> > @@ -50,6 +50,12 @@
> >  #define AVRCP_STATUS_NO_AVAILABLE_PLAYERS      0x15
> >  #define AVRCP_STATUS_ADDRESSED_PLAYER_CHANGED  0x16
> >
> > +/* Packet types */
> > +#define AVRCP_PACKET_TYPE_SINGLE       0x00
> > +#define AVRCP_PACKET_TYPE_START                0x01
> > +#define AVRCP_PACKET_TYPE_CONTINUING   0x02
> > +#define AVRCP_PACKET_TYPE_END          0x03
> > +
> >  #if __BYTE_ORDER == __LITTLE_ENDIAN
> >
> >  struct avrcp_header {
> > @@ -202,6 +208,18 @@ static bool handle_passthrough_pdu(struct avctp *conn, uint8_t op,
> >         return handler->func(session);
> >  }
> >
> > +/*
> > + * set_company_id:
> > + *
> > + * Set three-byte Company_ID into outgoing AVRCP message
> > + */
> > +static void set_company_id(uint8_t cid[3], const uint32_t cid_in)
> > +{
> > +       cid[0] = cid_in >> 16;
> > +       cid[1] = cid_in >> 8;
> > +       cid[2] = cid_in;
> > +}
> 
> Check out what I did with ntoh24, you need to check the byte order as
> well and create hton24.
> 
> >  struct avrcp *avrcp_new(int fd, size_t imtu, size_t omtu, uint16_t version)
> >  {
> >         struct avrcp *session;
> > @@ -253,3 +271,25 @@ int avrcp_init_uinput(struct avrcp *session, const char *name,
> >  {
> >         return avctp_init_uinput(session->conn, name, address);
> >  }
> > +
> > +#define AVRCP_GET_CAPABILITIES_PARAM_LENGTH 1
> > +void avrcp_get_capabilities(struct avrcp *session, avctp_rsp_cb func)
> > +{
> > +       uint8_t buf[AVRCP_HEADER_LENGTH + AVRCP_GET_CAPABILITIES_PARAM_LENGTH];
> > +       struct avrcp_header *pdu = (void *) buf;
> > +       uint8_t length;
> > +
> > +       memset(buf, 0, sizeof(buf));
> > +
> > +       set_company_id(pdu->company_id, IEEEID_BTSIG);
> > +       pdu->pdu_id = AVRCP_GET_CAPABILITIES;
> > +       pdu->packet_type = AVRCP_PACKET_TYPE_SINGLE;
> > +       pdu->params[0] = CAP_EVENTS_SUPPORTED;
> > +       pdu->params_len = htons(AVRCP_GET_CAPABILITIES_PARAM_LENGTH);
> > +
> > +       length = AVRCP_HEADER_LENGTH + ntohs(pdu->params_len);
> > +
> > +       avctp_send_vendordep_req(session->conn, AVC_CTYPE_STATUS,
> > +                                       AVC_SUBUNIT_PANEL, buf, length,
> > +                                       func, session);
> > +}
> 
> I would create a helper function called avrc_send_req which takes the
> callback + params and params_len, also Im not sure if it is a good
> idea to reuse avctp_rsp_cb or have a different callback so we can
> treat AVCTP internally.

So avrcp_send_req does not really help here since it would be just wrapper
for avctp_send functions. Maybe then this unit test is not needed at all?

Best regards 
Andrei Emeltchenko 

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux