#include #include #include #include "node.h" #include "dstar.h" int onoff(void); void main() { struct usb_bus *bus; struct usb_device *dev; usb_dev_handle *udev; int dev_found, ret, i, k; unsigned char buffer[8]; char string[10]; usb_init(); usb_find_busses(); usb_find_devices(); udev = NULL; dev_found = FALSE; for (bus = usb_get_busses(); bus && !dev_found; bus = bus->next) { for (dev = bus->devices; dev && !dev_found; dev = dev->next) { if ((dev->descriptor.idVendor == 0x04D8) && (dev->descriptor.idProduct == 0x0004)) { dev_found = TRUE; udev = usb_open(dev); } } } if (!dev_found) { printf("No matching device found...\n"); } usb_set_configuration (udev,1); /* PIC VERSION READ */ ret = 8; while (ret == 8) { ret = usb_control_msg(udev, 0xC0, GET_VERSION, 0, 0, buffer, 8, 100); for (i = 0 ; i < ret ; i++) { printf ("%c",buffer[i]); } } printf ("\n\n"); i = 99; while (i != 0) { usb_control_msg(udev, 0xC0, GET_TimeOut, 0, 0, buffer, 1, 100); printf ("Time Out : %3d Sec.\n",buffer[0]*10); usb_control_msg(udev, 0xC0, GET_DelayTime, 0, 0, buffer, 1, 100); printf ("Delay Time : %3d mSec.\n",buffer[0]*10); usb_control_msg(udev, 0xC0, GET_KeepAlive, 0, 0, buffer, 1, 100); printf ("Keep Alive : %3d mSec.\n",buffer[0]); usb_control_msg(udev, 0xC0, GET_RESYNC_ERROR_BITS, 0, 0, buffer, 1, 100); printf ("ReSync Error Bits : %3d\n",buffer[0]); usb_control_msg(udev, 0xC0, GET_MODE, 0, 0, buffer, 1, 100); printf ("MODE RAW OUTPUT : "); if (buffer[0] & 0x01) { printf ("ON\n"); } else { printf ("OFF\n"); } printf (" CRC Check : "); if (buffer[0] & 0x02) { printf ("ON\n"); } else { printf ("OFF\n"); } printf (" COS Check : "); if (buffer[0] & 0x04) { printf ("ON\n"); } else { printf ("OFF\n"); } printf (" Last Frame Send : "); if (buffer[0] & 0x08) { printf ("ON\n"); } else { printf ("OFF\n"); } printf (" Slow Data Conv. : "); if (buffer[0] & 0x10) { printf ("ON\n"); } else { printf ("OFF\n"); } usb_control_msg(udev, 0xC0, GET_MyRPTCALL, 0, 0, buffer, 8, 100); printf ("My Repeater Call : %.8s\n\n",buffer); printf ("Time Out : 1\n"); printf ("Delay Time : 2\n"); printf ("Keep Alive : 3\n"); printf ("ReSync Error Bits : 4\n"); printf ("Mode Set : 5\n"); printf ("My Repeater Call : 6\n"); printf ("Exit : 0\n"); printf ("\nEnter Select Number : "); gets(string); i = atoi(string); switch (i) { case 0: break; case 1: /* 1 Time Out */ printf ("Enter New Time Out Value : "); gets(string); k = atoi(string); usb_control_msg(udev, 0x40, SET_TimeOut, k/10, 1, buffer, 0, 100); break; case 2: /* 2 Delay Time */ printf ("Enter New Delay Time Value : "); gets(string); k = atoi(string); usb_control_msg(udev, 0x40, SET_DelayTime, k/10, 1, buffer, 0, 100); break; case 3: /* 3 Keep Alive */ printf ("Enter New Keep Alive Value : "); gets(string); k = atoi(string); usb_control_msg(udev, 0x40, SET_KeepAlive, k, 1, buffer, 0, 100); break; case 4: /* 4 ReSync Error Bits */ printf ("Enter New ReSync Error Bits Value : "); gets(string); k = atoi(string); usb_control_msg(udev, 0x40, SET_RESYNC_ERROR_BITS, k, 1, buffer, 0, 100); break; case 5: /* 5 Mode Set */ printf ("\n\n\n"); printf ("RAW OutPut : 1\n"); printf ("CRC Check : 2\n"); printf ("COS Check : 3\n"); printf ("Last Frame Send : 4\n"); printf ("Slow data Conv. : 5\n"); printf ("Return : 0\n"); printf ("\nEnter Select Number : "); gets(string); k = atoi(string); switch (k) { case 1: if (onoff()) { usb_control_msg(udev, 0x40, SET_RAW_OUTPUT, ON, 1, buffer, 0, 100); } else { usb_control_msg(udev, 0x40, SET_RAW_OUTPUT, OFF, 1, buffer, 0, 100); } break; case 2: if (onoff()) { usb_control_msg(udev, 0x40, SET_CRC_CHECK, ON, 1, buffer, 0, 100); } else { usb_control_msg(udev, 0x40, SET_CRC_CHECK, OFF, 1, buffer, 0, 100); } break; case 3: if (onoff()) { usb_control_msg(udev, 0x40, SET_COS, ON, 1, buffer, 0, 100); } else { usb_control_msg(udev, 0x40, SET_COS, OFF, 1, buffer, 0, 100); } break; case 4: if (onoff()) { usb_control_msg(udev, 0x40, SET_LastFrame, ON, 1, buffer, 0, 100); } else { usb_control_msg(udev, 0x40, SET_LastFrame, OFF, 1, buffer, 0, 100); } break; case 5: if (onoff()) { usb_control_msg(udev, 0x40, SET_SD_CONV, ON, 1, buffer, 0, 100); } else { usb_control_msg(udev, 0x40, SET_SD_CONV, OFF, 1, buffer, 0, 100); } break; case 0: break; } break; case 6: /* 6 My repeater Call */ printf ("Enter New My Repeater Call : "); gets(string); while ((k = strlen(string)) < 8) { string[k] = 0x20; string[k+1] = 0x00; } for (k = 0 ; k < 8 ; k++) { string[k] = toupper(string[k]); } usb_control_msg(udev, 0x40, SET_MyRPTCALL, 0, 0, string, 8, 100); break; default: break; } printf ("\n\n"); } usb_close(udev); } int onoff (void) { char string[10]; int i,k; printf (" Enter ON/OFF : "); gets (string); k = strlen(string); for (i = 0 ; i < k ; i++) string[i] = toupper(string[i]); if (strcmp (string,"ON")) return 0; else return 1; }