Skip to content

Commit a918b00

Browse files
author
ve9qrp
committedOct 21, 2010
added library to control Kenwood THD7 radio
1 parent 7ddbfaa commit a918b00

File tree

2 files changed

+251
-0
lines changed

2 files changed

+251
-0
lines changed
 

‎Arduino/libraries/THD7/THD7.cpp

+197
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,197 @@
1+
#include "WProgram.h"
2+
#include "THD7.h"
3+
#include <../NewSoftSerial/NewSoftSerial.h>
4+
#define DEBUG false
5+
extern NewSoftSerial rigSoftSerial(16,17);
6+
7+
THD7::THD7()
8+
{
9+
//pass in serial port here?
10+
pinMode(13, OUTPUT);
11+
12+
}
13+
14+
void THD7::assignSerial(NewSoftSerial s) {
15+
rigSoftSerial = s;
16+
}
17+
18+
void THD7::begin(int baud) {
19+
rigSoftSerial.begin(baud);
20+
21+
}
22+
23+
void THD7::setLockOff() {
24+
rigSoftSerial.println("TXH 0");
25+
}
26+
27+
void THD7::duplexOn() {
28+
rigSoftSerial.println("DUP 1");
29+
}
30+
31+
void THD7::duplexOff() {
32+
rigSoftSerial.println("DUP 0");
33+
}
34+
35+
void THD7::setCTCSSEncoderOn() {
36+
rigSoftSerial.println("CT 1");
37+
}
38+
39+
void THD7::setCTCSSOff() {
40+
rigSoftSerial.println("CT 0");
41+
}
42+
43+
void THD7::setCTCSSFreq(unsigned int freq) {
44+
rigSoftSerial.print("CTN ");
45+
rigSoftSerial.println(freq);
46+
}
47+
48+
void FT817::rigComError(char * string) {
49+
//blink();
50+
Serial.print("Rigcomm error: ");
51+
Serial.println(string);
52+
//instead loop the getFreqMode until we get good data
53+
}
54+
55+
void THD7::verifiedSetFreq(unsigned long freq, int band) {
56+
if (setFreqTest(freq, band)) {
57+
return;
58+
}
59+
else if (setFreqTest(freq, band)) {
60+
return;
61+
62+
}
63+
else {
64+
rigComError("Serious rig setting failure");
65+
}
66+
}
67+
68+
69+
void THD7::rigComError(char * string) {
70+
//blink();
71+
Serial.print("Rigcomm error: ");
72+
Serial.println(string);
73+
//instead loop the getFreqMode until we get good data
74+
}
75+
76+
void THD7::setMode(int mode) {
77+
rigSoftSerial.print("MD ");
78+
rigSoftSerial.println(mode);
79+
}
80+
81+
byte THD7::getMode() {
82+
/*
83+
unsigned long l = getFreqMode();
84+
return mode;
85+
*/
86+
return '0';//TODO fix me.
87+
}
88+
89+
boolean THD7::setFreqTest(unsigned long freq, int band) {
90+
setFreq(freq, int);
91+
//delay(100);
92+
unsigned long freqOut = getFreqMode();
93+
if (freqOut == freq) {
94+
95+
/*Serial.print("pass: ");
96+
Serial.println(freqOut);
97+
*/
98+
return true;
99+
}
100+
else {
101+
if (DEBUG) {
102+
Serial.print("sent in: ");
103+
Serial.print(freq);
104+
Serial.print("got out: ");
105+
Serial.println(freqOut);
106+
}
107+
// rigComError("failed setfreqtest");
108+
return false;
109+
}
110+
}
111+
112+
void THD7::setFreq(long freq, int band) {
113+
unsigned char foo[4];
114+
// char bar[] = {0x11, 0x22};
115+
rigSoftSerial.print("FQ 00");
116+
rigSoftSerial.print(freq);
117+
rigSoftSerial.print(",")
118+
rigSoftSerial.println(band);
119+
}
120+
121+
122+
unsigned long THD7::getFreqMode() {
123+
rigSoftSerial.println("FQ");
124+
char fq[14];
125+
int x = 0;
126+
unsigned long startTime = millis();
127+
while (fq[x] != '\n' && millis() < startTime + 2000) {
128+
if (risSoftSerial.available() > 0 {
129+
fq[x] = rigSoftSerial.read();
130+
x++;
131+
}
132+
133+
}
134+
fq[x+1] = '\0';//null terminate to make string
135+
return atol(fq);
136+
}
137+
138+
139+
140+
141+
142+
143+
144+
void THD7::flush() {
145+
rigSoftSerial.flush();
146+
}
147+
void THD7::off() {
148+
//can't do it.
149+
}
150+
151+
void THD7::on() {
152+
//can't do it.
153+
}
154+
155+
void THD7::setSplitModeOn() {
156+
rigSoftSerial.println("DUP 1");
157+
}
158+
159+
160+
void THD7::setSplitModeOff() {
161+
rigSoftSerial.println("DUP 0");
162+
}
163+
164+
void
165+
166+
//2m or 70cm?
167+
void THD7::setHamBand(int band) {
168+
rigSoftSerial.print("RBN ");
169+
rigSoftSerial.println(band);
170+
}
171+
172+
/*Band A or B */
173+
void THD7::setBand(int band) {
174+
rigSoftSerial.print("BC ");
175+
rigSoftSerial.println(band);
176+
}
177+
178+
void THD7::listenToBand(int band) {
179+
rigSoftSerial.print("BAL ");
180+
int balance = band * 4;
181+
rigSoftSerial.println(balance);
182+
}
183+
184+
boolean THD7::txState() {
185+
return false;
186+
}
187+
188+
void THD7::tncOff() {
189+
rigSoftSerial.println("TNC 0");
190+
}
191+
192+
void THD7::tncOn() {
193+
rigSoftSerial.println("TNC 1");
194+
}
195+
196+
void setBand()
197+

‎Arduino/libraries/THD7/THD7.h

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
2+
#ifndef THD7_h
3+
#define THD7_h
4+
5+
#include "WProgram.h"
6+
#include <../NewSoftSerial/NewSoftSerial.h>
7+
#define THD7_BAND_A 0
8+
#define THD7_BAND_B 1
9+
#define THD7_RX_BAND 0 //A is rx
10+
#define THD7_TX_BAND 1 // B is tx
11+
#define THD7_SIMPLEX_MODE 0
12+
#define THD7_DUPLEX_MODE 1
13+
#define THD7_BAND_2M 2
14+
#define THD7_BAND_70CM 6
15+
#define THD7_MODE_AM 1
16+
#define THD7_MODE_FM 0
17+
18+
class THD7
19+
{
20+
public:
21+
THD7();
22+
boolean txState();
23+
24+
void flush();
25+
void setMode(int mode);
26+
void verifiedSetFreq(unsigned long freq, int band);
27+
byte getMode();
28+
boolean setFreqTest(unsigned long freq, int band);
29+
void setFreq(long freq, int band);
30+
unsigned long getFreqMode();
31+
void setSplitModeOn();
32+
void setSplitModeOff();
33+
void setCTCSSEncoderOn();
34+
void setCTCSSOff();
35+
void setCTCSSFreq(unsigned int);
36+
void switchVFO();
37+
void setLockOff();
38+
void off();
39+
void on();
40+
void assignSerial(NewSoftSerial s);
41+
void begin(int baud);
42+
void listenToBand(int band);
43+
void setBand(int band);
44+
void duplexOn();
45+
void duplexOff();
46+
void tncOff();
47+
void tncOn();
48+
void setHamBand(int band);
49+
void rigCommError(char * string);
50+
private:
51+
52+
};
53+
54+
#endif

0 commit comments

Comments
 (0)
Please sign in to comment.