/* 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; }