Example #1
0
/* modem_delete */
void modem_delete(Modem * modem)
{
	if(modem->modem != NULL)
		modem_stop(modem);
	if(modem->plugin != NULL)
		plugin_delete(modem->plugin);
	string_delete(modem->name);
	object_delete(modem);
}
int test_loopback()
{
    int ret;
    pthread_t rx_thread;

    ret = setup_signal_handler();
    if (ret < 0)
        return 1;


    ret = modem_setup();
    if(ret) {
        perror(": Failed to setup modem");
        return ret;
    }

    ret = modem_reset();
    if(ret) {
        perror(": Failed to reset modem");
        return 1;
    }

    ret = modem_start();
    if(ret) {
        perror(": Failed to start modem");
        return 1;
    }

    ret = pthread_create(&rx_thread, NULL, rx_thread_fnc, NULL);
    if(ret) {
        perror(": Error - pthread_create");
        return 1;
    }


    printf("Setup modem defaults\n");
    defaults(INTERNAL_PACKET_GEN, IP_LOOPBACK_MODE);

    if (INTERNAL_PACKET_GEN) {
        sleep(1);
        fill_in_internal_pgen_data();
        printf("Sending 1 packet from internal IP\n");
        reg_write(0x120, 1);
        reg_write(0x120, 0);
        sleep(3);
    } else {
        sleep(1);
        printf("Sending data\n");
        ret = receive_data();
        sleep(3);
    }
    modem_stop();
    pthread_join(rx_thread, NULL);
    modem_close();

    int i;
    bool b = false;
    for(i = 0; i < TX_BUF_SIZE-HEADER_DATA_SIZE; i++) {
        b |= rx_buffer[i] != tx_buffer[i+HEADER_DATA_SIZE];
    }

    if (b) {
        printf("\n---------RX|TX---------\n");
        for(i = 0; i < TX_BUF_SIZE-HEADER_DATA_SIZE; i++) {
            printf("%d %d\n", rx_buffer[i]>>0, tx_buffer[i+HEADER_DATA_SIZE]);
        }
    }

    printf("Exiting test\n");

    return (int) b;
}