bool valid;
const void *raw_data;
size_t raw_size;
- uint8_t cont_len;
+ uint16_t cont_len;
};
struct test_data {
#define define_sa(name, args...) define_test("/TP/SERVER/SA/" name, 48, args)
#define define_ssa(name, args...) define_test("/TP/SERVER/SSA/" name, 48, args)
#define define_brw(name, args...) define_test("/TP/SERVER/BRW/" name, 672, args)
+#define define_rob(name, args...) define_test("/TP/SERVER/ROB/" name, 48, args)
/* SDP Data Element (DE) tests */
struct test_data_de {
memcpy(buf, req_pdu->raw_data, req_pdu->raw_size);
- if (context->cont_size > 0)
+ if (context->cont_size > 0) {
memcpy(buf + req_pdu->raw_size, context->cont_data,
- context->cont_size);
+ context->cont_size);
+ if (context->cont_size != req_pdu->cont_len)
+ put_be16(req_pdu->cont_len,
+ buf + req_pdu->raw_size + 4);
+ }
len = write(context->fd, buf, pdu_len);
0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00)));
+ /*
+ * Service Attribute Request
+ *
+ * Verify the correct behaviour of the IUT when searching
+ * for existing Attribute, using invalid continuation state.
+ */
+ define_rob("BI-01-C",
+ raw_pdu(0x02, 0x00, 0x01, 0x00, 0x16, 0x35, 0x11, 0x1c,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x10, 0x00,
+ 0x80, 0x00, 0x00, 0x80, 0x5f, 0x9b, 0x34, 0xfb,
+ 0x00, 0x01, 0x00),
+ raw_pdu(0x03, 0x00, 0x01, 0x00, 0x09, 0x00, 0x01, 0x00,
+ 0x01, 0x00, 0x01, 0x00, 0x00, 0x00),
+ raw_pdu(0x04, 0x00, 0x01, 0x00, 0x0f, 0x00, 0x01, 0x00,
+ 0x00, 0x00, 0x07, 0x35, 0x06, 0x09, 0x00, 0x00,
+ 0x09, 0x00, 0x01, 0x00),
+ raw_pdu_cont(8, 0x05, 0x00, 0x01, 0x00, 0x12, 0x00, 0x07, 0x35,
+ 0x10, 0x09, 0x00, 0x00, 0x0a, 0x00, 0x08),
+ raw_pdu_cont(0xffff, 0x04, 0x00, 0x02, 0x00, 0x17, 0x00, 0x01,
+ 0x00, 0x00, 0x00, 0x07, 0x35, 0x06, 0x09, 0x00,
+ 0x00, 0x09, 0x00, 0x01, 0x08),
+ raw_pdu(0x01, 0x00, 0x02, 0x00, 0x02, 0x00, 0x05));
+
return tester_run();
}