Exemple #1
0
static void
found_resource(struct sol_oic_client *cli, struct sol_oic_resource *res, void *data)
{
    const char *query = NULL;
    struct sol_str_slice *slice;
    uint16_t idx;
    char addr[SOL_INET_ADDR_STRLEN];

    if (!sol_network_addr_to_str(&res->addr, addr, sizeof(addr))) {
        SOL_WRN("Could not convert network address to string");
        return;
    }

    printf("Found resource: coap://%s%.*s <observable: %s>\n", addr,
        (int)res->href.len, res->href.data, res->observable ? "yes" : "no");

    printf("Resource types:\n");
    SOL_VECTOR_FOREACH_IDX (&res->types, slice, idx)
        printf("\t\t%.*s\n", (int)slice->len, slice->data);

    printf("Resource interfaces:\n");
    SOL_VECTOR_FOREACH_IDX (&res->interfaces, slice, idx)
        printf("\t\t%.*s\n", (int)slice->len, slice->data);

    printf("Issuing GET %.*s on resource...\n", (int)res->href.len, res->href.data);
    sol_oic_client_resource_request(cli, res, SOL_COAP_METHOD_GET, NULL, 0,
        got_get_response, data);

    printf("\n");
}
Exemple #2
0
static void
got_get_response(struct sol_oic_client *cli, const struct sol_network_link_addr *cliaddr,
    const struct sol_str_slice *href, const struct sol_str_slice *payload, void *data)
{
    char addr[SOL_INET_ADDR_STRLEN];

    if (!sol_network_addr_to_str(cliaddr, addr, sizeof(addr))) {
        SOL_WRN("Could not convert network address to string");
        return;
    }

    printf("Received payload for GET from %s (%.*s): %.*s\n",
        addr, (int)href->len, href->data, (int)payload->len, payload->data);
}
Exemple #3
0
static void
got_get_response(struct sol_oic_client *cli, const struct sol_network_link_addr *cliaddr,
    const struct sol_str_slice *href, const struct sol_vector *repr, void *data)
{
    struct sol_oic_repr_field *field;
    char addr[SOL_INET_ADDR_STRLEN];
    uint16_t idx;

    if (!sol_network_addr_to_str(cliaddr, addr, sizeof(addr))) {
        SOL_WRN("Could not convert network address to string");
        return;
    }

    printf("Dumping payload received from addr %s {\n", addr);
    SOL_VECTOR_FOREACH_IDX (repr, field, idx) {
        printf("\tkey: '%s', value: ", field->key);

        switch (field->type) {
        case SOL_OIC_REPR_TYPE_UINT:
            printf("uint(%" PRIu64 ")\n", field->v_uint);
            break;
        case SOL_OIC_REPR_TYPE_INT:
            printf("int(%" PRIi64 ")\n", field->v_int);
            break;
        case SOL_OIC_REPR_TYPE_SIMPLE:
            printf("simple(%d)\n", field->v_simple);
            break;
        case SOL_OIC_REPR_TYPE_TEXT_STRING:
            printf("str(%.*s)\n", (int)field->v_slice.len, field->v_slice.data);
            break;
        case SOL_OIC_REPR_TYPE_BYTE_STRING:
            printf("bytestr() [not dumping]\n");
            break;
        case SOL_OIC_REPR_TYPE_HALF_FLOAT:
            printf("hfloat(%p)\n", field->v_voidptr);
            break;
        case SOL_OIC_REPR_TYPE_FLOAT:
            printf("float(%f)\n", field->v_float);
            break;
        case SOL_OIC_REPR_TYPE_DOUBLE:
            printf("float(%g)\n", field->v_double);
            break;
        case SOL_OIC_REPR_TYPE_BOOLEAN:
            printf("boolean(%s)\n", field->v_boolean ? "true" : "false");
            break;
        default:
            printf("unknown(%d)\n", field->type);
        }
    }