void test_set_access_point(kaa_transport_channel_interface_t *channel)
{
    ASSERT_NOT_NULL(channel);
    //Fill with fake pointers, just for non null
    kaa_transport_context_t transport_context;
    transport_context.kaa_context = (kaa_context_t*)calloc(1, sizeof(kaa_context_t));
    transport_context.kaa_context->platform_protocol = (kaa_platform_protocol_t *)CONNECTION_DATA;
    transport_context.kaa_context->bootstrap_manager = (kaa_bootstrap_manager_t *)CONNECTION_DATA;

    kaa_error_t error_code = channel->init(channel->context, &transport_context);
    ASSERT_EQUAL(error_code, KAA_ERR_NONE);

    //Keepalive will be tested latter during CONNECT message creation
    error_code = kaa_tcp_channel_set_keepalive_timeout(channel, KEEPALIVE);
    ASSERT_EQUAL(error_code, KAA_ERR_NONE);

    error_code = kaa_tcp_channel_set_socket_events_callback(channel, kaa_tcp_channel_event_callback_fn, channel);
    //Use connection data to destination 192.168.77.2:9888
    kaa_access_point_t access_point;
    access_point.id = 10;
    access_point.connection_data = CONNECTION_DATA;
    access_point.connection_data_len = sizeof(CONNECTION_DATA);

    reset_access_point_test_info();

    error_code = channel->set_access_point(channel->context, &access_point);
    ASSERT_EQUAL(error_code, KAA_ERR_NONE);
    error_code= kaa_tcp_channel_check_keepalive(channel);
    ASSERT_EQUAL(error_code, KAA_ERR_NONE);
    //Check correct call of gethostbyaddr
    ASSERT_EQUAL(access_point_test_info.gethostbyaddr_requested, true);
    //Check if new socket created
    ASSERT_EQUAL(access_point_test_info.new_socket_created, true);

    kaa_fd_t fd = -1;

    error_code = kaa_tcp_channel_get_descriptor(channel,&fd);
    ASSERT_EQUAL(error_code, KAA_ERR_NONE);
    //Check assigned fd
    ASSERT_EQUAL(fd, ACCESS_POINT_SOCKET_FD);

    access_point_test_info.fd = fd;


    //Check correct RD,WR operation, in this point we waiting for correct Connect to destination
    //So RD should be false, WR true
    CHECK_SOCKET_RW(channel,false,true);
}
Esempio n. 2
0
kaa_error_t kaa_client_init_channel(kaa_client_t *kaa_client, kaa_client_channel_type_t channel_type)
{
    KAA_RETURN_IF_NIL(kaa_client, KAA_ERR_BADPARAM);

    kaa_error_t error_code = KAA_ERR_NONE;

    KAA_LOG_TRACE(kaa_client->context->logger, KAA_ERR_NONE, "Initializing channel....");

    switch (channel_type) {
        case KAA_CLIENT_CHANNEL_TYPE_BOOTSTRAP:
            error_code = kaa_tcp_channel_create(&kaa_client->channel
                                              , kaa_client->context->logger
                                              , BOOTSTRAP_SERVICE
                                              , BOOTSTRAP_SERVICE_COUNT);
            break;
        case KAA_CLIENT_CHANNEL_TYPE_OPERATIONS:
            error_code = kaa_tcp_channel_create(&kaa_client->channel
                                              , kaa_client->context->logger
                                              , OPERATIONS_SERVICES
                                              , OPERATIONS_SERVICES_COUNT);
            break;
    }

    if (error_code) {
        KAA_LOG_ERROR(kaa_client->context->logger, error_code, "Failed to create transport channel, type %d", channel_type);
        return error_code;
    }

    error_code = kaa_tcp_channel_set_socket_events_callback(&kaa_client->channel, &on_kaa_tcp_channel_event, kaa_client);
    if (error_code) {
        KAA_LOG_ERROR(kaa_client->context->logger, error_code,
                "Failed to set socket events callback, channel type %d", channel_type);
        return error_code;
    }

    error_code = kaa_channel_manager_add_transport_channel(kaa_client->context->channel_manager
                                                         , &kaa_client->channel
                                                         , &kaa_client->channel_id);
    if (error_code) {
        KAA_LOG_ERROR(kaa_client->context->logger, error_code, "Failed to add transport channel, type %d", channel_type);
        return error_code;
    }

    KAA_LOG_INFO(kaa_client->context->logger, KAA_ERR_NONE, "Channel [0x%08X] initialized successfully (type %d)"
                                                                                , kaa_client->channel_id, channel_type);

    return error_code;
}
Esempio n. 3
0
kaa_error_t kaa_client_start(kaa_client_t *kaa_client
                           , external_process_fn external_process
                           , void *external_process_context
                           , kaa_time_t max_delay)
{
    KAA_RETURN_IF_NIL(kaa_client, KAA_ERR_BADPARAM);
    KAA_LOG_TRACE(kaa_client->kaa_context->logger, KAA_ERR_NONE, "Kaa client starting ...");
    print_mem_stat(kaa_client);
    kaa_error_t error_code = KAA_ERR_NONE;

    error_code = kaa_tcp_channel_create(&kaa_client->bootstrap_channel
                                      , kaa_client->kaa_context->logger
                                      , BOOTSTRAP_SERVICE
                                      , BOOTSTRAP_SERVICE_COUNT);
    if (error_code) {
        KAA_LOG_ERROR(kaa_client->kaa_context->logger, error_code, "Error during Kaa bootstrap channel creation");
        return error_code;
    }

    error_code = kaa_tcp_channel_set_socket_events_callback(&kaa_client->bootstrap_channel,
                                                        on_kaa_tcp_channel_event, (void*)kaa_client);
    if (error_code) {
        KAA_LOG_ERROR(kaa_client->kaa_context->logger, error_code, "Error setting callback bootstrap channel");
        return error_code;
    }


    KAA_LOG_TRACE(kaa_client->kaa_context->logger, KAA_ERR_NONE, "Kaa client - bootstrap channel initialized");
    print_mem_stat(kaa_client);

    error_code = kaa_channel_manager_add_transport_channel(kaa_client->kaa_context->channel_manager
                                                         , &kaa_client->bootstrap_channel
                                                         , &kaa_client->bootstrap_channel_id);

    if (error_code) {
        KAA_LOG_ERROR(kaa_client->kaa_context->logger, error_code, "Error setting bootstrap channel setting as transport");
        return error_code;
    }

    //Push running thread
    sndc_sem_post(&kaa_client->start_semophore);
    KAA_LOG_INFO(kaa_client->kaa_context->logger, KAA_ERR_NONE, "Kaa client started");

    return KAA_ERR_NONE;
}