mirror of https://github.com/wb2osz/direwolf.git
				
				
				
			Add AIOC to list for cm108 ptt.
This commit is contained in:
		
							parent
							
								
									a3d3143d21
								
							
						
					
					
						commit
						415a08da1e
					
				
							
								
								
									
										28
									
								
								src/cm108.c
								
								
								
								
							
							
						
						
									
										28
									
								
								src/cm108.c
								
								
								
								
							| 
						 | 
					@ -34,6 +34,7 @@
 | 
				
			||||||
 *	We have a few commercial products:
 | 
					 *	We have a few commercial products:
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 *		DINAH		https://hamprojects.info/dinah/
 | 
					 *		DINAH		https://hamprojects.info/dinah/
 | 
				
			||||||
 | 
					 *		PAUL		https://hamprojects.info/paul/
 | 
				
			||||||
 *		DMK URI		http://www.dmkeng.com/URI_Order_Page.htm
 | 
					 *		DMK URI		http://www.dmkeng.com/URI_Order_Page.htm
 | 
				
			||||||
 *		RB-USB RIM	http://www.repeater-builder.com/products/usb-rim-lite.html
 | 
					 *		RB-USB RIM	http://www.repeater-builder.com/products/usb-rim-lite.html
 | 
				
			||||||
 *		RA-35		http://www.masterscommunications.com/products/radio-adapter/ra35.html
 | 
					 *		RA-35		http://www.masterscommunications.com/products/radio-adapter/ra35.html
 | 
				
			||||||
| 
						 | 
					@ -93,6 +94,12 @@
 | 
				
			||||||
 *	with a single USB Audio Adapter, but does not automatically handle the multiple device case.
 | 
					 *	with a single USB Audio Adapter, but does not automatically handle the multiple device case.
 | 
				
			||||||
 *	Manual configuration needs to be used in this case.
 | 
					 *	Manual configuration needs to be used in this case.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 | 
					 *	Here is something new and interesting.  The All in One cable (AIOC).
 | 
				
			||||||
 | 
					 *	https://github.com/skuep/AIOC/tree/master
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 *	A microcontroller is used to emulate a CM108-compatible soundcard
 | 
				
			||||||
 | 
					 *	and a serial port.  It fits right on the side of a Bao Feng or similar.
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 *---------------------------------------------------------------*/
 | 
					 *---------------------------------------------------------------*/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "direwolf.h"
 | 
					#include "direwolf.h"
 | 
				
			||||||
| 
						 | 
					@ -178,6 +185,11 @@ static int cm108_write (char *name, int iomask, int iodata);
 | 
				
			||||||
#define SSS_PID2 0x1607
 | 
					#define SSS_PID2 0x1607
 | 
				
			||||||
#define SSS_PID3 0x160b
 | 
					#define SSS_PID3 0x160b
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// https://github.com/skuep/AIOC/blob/master/stm32/aioc-fw/Src/usb_descriptors.h
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define AIOC_VID 0x1209
 | 
				
			||||||
 | 
					#define AIOC_PID 0x7388
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//	Device		VID	PID		Number of GPIO
 | 
					//	Device		VID	PID		Number of GPIO
 | 
				
			||||||
//	------		---	---		--------------
 | 
					//	------		---	---		--------------
 | 
				
			||||||
| 
						 | 
					@ -217,7 +229,9 @@ static int cm108_write (char *name, int iomask, int iodata);
 | 
				
			||||||
							|| p == CMEDIA_PID_CM119A \
 | 
												|| p == CMEDIA_PID_CM119A \
 | 
				
			||||||
							|| p == CMEDIA_PID_CM119B )) \
 | 
												|| p == CMEDIA_PID_CM119B )) \
 | 
				
			||||||
				 || \
 | 
									 || \
 | 
				
			||||||
				  (v == SSS_VID && (p == SSS_PID1 || p == SSS_PID2 || p == SSS_PID3))  )
 | 
									  (v == SSS_VID && (p == SSS_PID1 || p == SSS_PID2 || p == SSS_PID3)) \
 | 
				
			||||||
 | 
									 || \
 | 
				
			||||||
 | 
									  (v == AIOC_VID && p == AIOC_PID)  )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Look out for null source pointer, and avoid buffer overflow on destination.
 | 
					// Look out for null source pointer, and avoid buffer overflow on destination.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -243,6 +257,12 @@ static void substr_se (char *dest, const char *src, int start, int endp1)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Maximum length of name for PTT HID.
 | 
				
			||||||
 | 
					// For Linux, this was originally 17 to handle names like /dev/hidraw3.
 | 
				
			||||||
 | 
					// Windows has more complicated names.  The longest I saw was 95 but longer have been reported.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define MAXX_HIDRAW_NAME_LEN 128
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Result of taking inventory of USB soundcards and USB HIDs.
 | 
					 * Result of taking inventory of USB soundcards and USB HIDs.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					@ -258,7 +278,8 @@ struct thing_s {
 | 
				
			||||||
				// Oversized to silence a compiler warning.
 | 
									// Oversized to silence a compiler warning.
 | 
				
			||||||
	char plughw2[72];	// With name rather than number.
 | 
						char plughw2[72];	// With name rather than number.
 | 
				
			||||||
	char devpath[128];	// Kernel dev path.  Does not include /sys mount point.
 | 
						char devpath[128];	// Kernel dev path.  Does not include /sys mount point.
 | 
				
			||||||
	char devnode_hidraw[128]; // e.g. /dev/hidraw3  -  for Linux - was length 17
 | 
						char devnode_hidraw[MAXX_HIDRAW_NAME_LEN];
 | 
				
			||||||
 | 
									// e.g. /dev/hidraw3  -  for Linux - was length 17
 | 
				
			||||||
				// The Windows path for a HID looks like this, lengths up to 95 seen.
 | 
									// The Windows path for a HID looks like this, lengths up to 95 seen.
 | 
				
			||||||
				// \\?\hid#vid_0d8c&pid_000c&mi_03#8&164d11c9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
 | 
									// \\?\hid#vid_0d8c&pid_000c&mi_03#8&164d11c9&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}
 | 
				
			||||||
	char devnode_usb[25];	// e.g. /dev/bus/usb/001/012
 | 
						char devnode_usb[25];	// e.g. /dev/bus/usb/001/012
 | 
				
			||||||
| 
						 | 
					@ -852,7 +873,7 @@ void cm108_find_ptt (char *output_audio_device, char *ptt_device,  int ptt_devic
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Errors:	A descriptive error message will be printed for any problem.
 | 
					 * Errors:	A descriptive error message will be printed for any problem.
 | 
				
			||||||
 *
 | 
					 *
 | 
				
			||||||
 * Future:	For our initial implementation we are making the simplifying
 | 
					 * Shortcut:	For our initial implementation we are making the simplifying
 | 
				
			||||||
 *		restriction of using only one GPIO pin per device and limit
 | 
					 *		restriction of using only one GPIO pin per device and limit
 | 
				
			||||||
 *		configuration to PTT only.
 | 
					 *		configuration to PTT only.
 | 
				
			||||||
 *		Longer term, we might want to have DCD, and maybe other
 | 
					 *		Longer term, we might want to have DCD, and maybe other
 | 
				
			||||||
| 
						 | 
					@ -882,7 +903,6 @@ int cm108_set_gpio_pin (char *name, int num, int state)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	iomask = 1 << (num - 1);	// 0=input, 1=output
 | 
						iomask = 1 << (num - 1);	// 0=input, 1=output
 | 
				
			||||||
	iodata = state << (num - 1);	// 0=low, 1=high
 | 
						iodata = state << (num - 1);	// 0=low, 1=high
 | 
				
			||||||
 | 
					 | 
				
			||||||
	return (cm108_write (name, iomask, iodata));
 | 
						return (cm108_write (name, iomask, iodata));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}  /* end cm108_set_gpio_pin */
 | 
					}  /* end cm108_set_gpio_pin */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue