added morse out to serial transceiver, fixed some library version issues
This commit is contained in:
parent
8ab7f97cbd
commit
e55cb9f221
|
@ -0,0 +1,119 @@
|
||||||
|
/* Serial glue to send messages over APRS
|
||||||
|
*
|
||||||
|
* To do: add message receive code
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define DDS_REFCLK_DEFAULT 9600
|
||||||
|
|
||||||
|
#include <HamShield.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <avr/wdt.h>
|
||||||
|
|
||||||
|
HamShield radio;
|
||||||
|
DDS dds;
|
||||||
|
String messagebuff = "";
|
||||||
|
String origin_call = "";
|
||||||
|
String destination_call = "";
|
||||||
|
String textmessage = "";
|
||||||
|
int msgptr = 0;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
Wire.begin();
|
||||||
|
pinMode(2, OUTPUT);
|
||||||
|
pinMode(3, OUTPUT);
|
||||||
|
radio.initialize();
|
||||||
|
radio.frequency(144390);
|
||||||
|
radio.setRfPower(15);
|
||||||
|
dds.start();
|
||||||
|
radio.afsk.start(&dds);
|
||||||
|
pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
|
||||||
|
delay(100);
|
||||||
|
Serial.println("HELLO");
|
||||||
|
}
|
||||||
|
|
||||||
|
String temp[1] = "";
|
||||||
|
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
messagebuff = "KC7IBT,KC7IBT,:HAMSHIELD TEST";
|
||||||
|
prepMessage();
|
||||||
|
delay(10000);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void prepMessage() {
|
||||||
|
radio.setModeTransmit();
|
||||||
|
delay(500);
|
||||||
|
origin_call = messagebuff.substring(0,messagebuff.indexOf(',')); // get originating callsign
|
||||||
|
destination_call = messagebuff.substring(messagebuff.indexOf(',')+1,messagebuff.indexOf(',',messagebuff.indexOf(',')+1)); // get the destination call
|
||||||
|
textmessage = messagebuff.substring(messagebuff.indexOf(":")+1);
|
||||||
|
|
||||||
|
Serial.print("From: "); Serial.print(origin_call); Serial.print(" To: "); Serial.println(destination_call); Serial.println("Text: "); Serial.println(textmessage);
|
||||||
|
|
||||||
|
AFSK::Packet *packet = AFSK::PacketBuffer::makePacket(22 + 32);
|
||||||
|
|
||||||
|
packet->start();
|
||||||
|
packet->appendCallsign(origin_call.c_str(),0);
|
||||||
|
packet->appendCallsign(destination_call.c_str(),15,true);
|
||||||
|
packet->appendFCS(0x03);
|
||||||
|
packet->appendFCS(0xf0);
|
||||||
|
packet->print(textmessage);
|
||||||
|
packet->finish();
|
||||||
|
|
||||||
|
|
||||||
|
bool ret = radio.afsk.putTXPacket(packet);
|
||||||
|
|
||||||
|
if(radio.afsk.txReady()) {
|
||||||
|
Serial.println(F("txReady"));
|
||||||
|
radio.setModeTransmit();
|
||||||
|
//delay(100);
|
||||||
|
if(radio.afsk.txStart()) {
|
||||||
|
Serial.println(F("txStart"));
|
||||||
|
} else {
|
||||||
|
radio.setModeReceive();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Wait 2 seconds before we send our beacon again.
|
||||||
|
Serial.println("tick");
|
||||||
|
// Wait up to 2.5 seconds to finish sending, and stop transmitter.
|
||||||
|
// TODO: This is hackery.
|
||||||
|
for(int i = 0; i < 500; i++) {
|
||||||
|
if(radio.afsk.encoder.isDone())
|
||||||
|
break;
|
||||||
|
delay(50);
|
||||||
|
}
|
||||||
|
Serial.println("Done sending");
|
||||||
|
delay(3000);
|
||||||
|
radio.setModeReceive();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ISR(TIMER2_OVF_vect) {
|
||||||
|
TIFR2 = _BV(TOV2);
|
||||||
|
static uint8_t tcnt = 0;
|
||||||
|
if(++tcnt == 8) {
|
||||||
|
digitalWrite(2, HIGH);
|
||||||
|
dds.clockTick();
|
||||||
|
digitalWrite(2, LOW);
|
||||||
|
tcnt = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ISR(ADC_vect) {
|
||||||
|
static uint8_t tcnt = 0;
|
||||||
|
TIFR1 = _BV(ICF1); // Clear the timer flag
|
||||||
|
PORTD |= _BV(2); // Diagnostic pin (D2)
|
||||||
|
dds.clockTick();
|
||||||
|
if(++tcnt == 1) {
|
||||||
|
if(radio.afsk.encoder.isSending()) {
|
||||||
|
radio.afsk.timer();
|
||||||
|
}
|
||||||
|
tcnt = 0;
|
||||||
|
}
|
||||||
|
PORTD &= ~(_BV(2)); // Pin D2 off again
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,126 @@
|
||||||
|
/* Serial glue to send messages over APRS
|
||||||
|
*
|
||||||
|
* To do: add message receive code
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#define DDS_REFCLK_DEFAULT 9600
|
||||||
|
|
||||||
|
#include <HamShield.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
#include <avr/wdt.h>
|
||||||
|
|
||||||
|
HamShield radio;
|
||||||
|
DDS dds;
|
||||||
|
String messagebuff = "";
|
||||||
|
String origin_call = "";
|
||||||
|
String destination_call = "";
|
||||||
|
String textmessage = "";
|
||||||
|
int msgptr = 0;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Serial.begin(115200);
|
||||||
|
Wire.begin();
|
||||||
|
pinMode(2, OUTPUT);
|
||||||
|
pinMode(3, OUTPUT);
|
||||||
|
radio.initialize();
|
||||||
|
radio.frequency(145570);
|
||||||
|
radio.setRfPower(15);
|
||||||
|
dds.start();
|
||||||
|
radio.afsk.start(&dds);
|
||||||
|
pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
|
||||||
|
delay(100);
|
||||||
|
Serial.println("HELLO");
|
||||||
|
}
|
||||||
|
|
||||||
|
String temp[1] = "";
|
||||||
|
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
if(Serial.available()) {
|
||||||
|
char temp = (char)Serial.read();
|
||||||
|
if(temp == '`') {
|
||||||
|
prepMessage(); msgptr = 0; Serial.print("!!"); }
|
||||||
|
else {
|
||||||
|
messagebuff += temp;
|
||||||
|
msgptr++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(msgptr > 254) { messagebuff = ""; Serial.print("X!"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void prepMessage() {
|
||||||
|
radio.setModeTransmit();
|
||||||
|
delay(500);
|
||||||
|
origin_call = messagebuff.substring(0,messagebuff.indexOf(',')); // get originating callsign
|
||||||
|
destination_call = messagebuff.substring(messagebuff.indexOf(',')+1,
|
||||||
|
messagebuff.indexOf(',',messagebuff.indexOf(',')+1)); // get the destination call
|
||||||
|
textmessage = messagebuff.substring(messagebuff.indexOf(":"));
|
||||||
|
|
||||||
|
AFSK::Packet *packet = AFSK::PacketBuffer::makePacket(22 + 32);
|
||||||
|
|
||||||
|
packet->start();
|
||||||
|
packet->appendCallsign(origin_call.c_str(),0);
|
||||||
|
packet->appendCallsign(destination_call.c_str(),15,true);
|
||||||
|
packet->appendFCS(0x03);
|
||||||
|
packet->appendFCS(0xf0);
|
||||||
|
packet->print(textmessage);
|
||||||
|
packet->finish();
|
||||||
|
|
||||||
|
textmessage = "";
|
||||||
|
|
||||||
|
bool ret = radio.afsk.putTXPacket(packet);
|
||||||
|
|
||||||
|
if(radio.afsk.txReady()) {
|
||||||
|
Serial.println(F("txReady"));
|
||||||
|
radio.setModeTransmit();
|
||||||
|
//delay(100);
|
||||||
|
if(radio.afsk.txStart()) {
|
||||||
|
Serial.println(F("txStart"));
|
||||||
|
} else {
|
||||||
|
radio.setModeReceive();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Wait 2 seconds before we send our beacon again.
|
||||||
|
Serial.println("tick");
|
||||||
|
// Wait up to 2.5 seconds to finish sending, and stop transmitter.
|
||||||
|
// TODO: This is hackery.
|
||||||
|
for(int i = 0; i < 500; i++) {
|
||||||
|
if(radio.afsk.encoder.isDone())
|
||||||
|
break;
|
||||||
|
delay(50);
|
||||||
|
}
|
||||||
|
Serial.println("Done sending");
|
||||||
|
delay(3000);
|
||||||
|
radio.setModeReceive();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ISR(TIMER2_OVF_vect) {
|
||||||
|
TIFR2 = _BV(TOV2);
|
||||||
|
static uint8_t tcnt = 0;
|
||||||
|
if(++tcnt == 8) {
|
||||||
|
digitalWrite(2, HIGH);
|
||||||
|
dds.clockTick();
|
||||||
|
digitalWrite(2, LOW);
|
||||||
|
tcnt = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ISR(ADC_vect) {
|
||||||
|
static uint8_t tcnt = 0;
|
||||||
|
TIFR1 = _BV(ICF1); // Clear the timer flag
|
||||||
|
PORTD |= _BV(2); // Diagnostic pin (D2)
|
||||||
|
dds.clockTick();
|
||||||
|
if(++tcnt == 1) {
|
||||||
|
if(radio.afsk.encoder.isSending()) {
|
||||||
|
radio.afsk.timer();
|
||||||
|
}
|
||||||
|
tcnt = 0;
|
||||||
|
}
|
||||||
|
PORTD &= ~(_BV(2)); // Pin D2 off again
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,13 @@
|
||||||
|
chrome.app.runtime.onLaunched.addListener(function() {
|
||||||
|
chrome.app.window.create("window.html", {
|
||||||
|
"bounds": {
|
||||||
|
"width": 685,
|
||||||
|
"height": 800
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
$( "#tabs" ).tabs();
|
||||||
|
});
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"name": "HamShield",
|
||||||
|
"description": "HamShield",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"app": {
|
||||||
|
"background": {
|
||||||
|
"scripts": ["background.js"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
chromeApp
|
|
@ -0,0 +1,48 @@
|
||||||
|
body{
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn {
|
||||||
|
background: #adadad;
|
||||||
|
background-image: -webkit-linear-gradient(top, #adadad, #3d3d3d);
|
||||||
|
background-image: -moz-linear-gradient(top, #adadad, #3d3d3d);
|
||||||
|
background-image: -ms-linear-gradient(top, #adadad, #3d3d3d);
|
||||||
|
background-image: -o-linear-gradient(top, #adadad, #3d3d3d);
|
||||||
|
background-image: linear-gradient(to bottom, #adadad, #3d3d3d);
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
-moz-border-radius: 0;
|
||||||
|
border-radius: 0px;
|
||||||
|
font-family: Arial;
|
||||||
|
color: #ffffff;
|
||||||
|
font-size: 20px;
|
||||||
|
padding: 10px 20px 10px 20px;
|
||||||
|
text-decoration: none;
|
||||||
|
float: left;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn:hover {
|
||||||
|
background: #3d3d3d;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lcd {
|
||||||
|
-webkit-border-radius: 0;
|
||||||
|
-moz-border-radius: 0;
|
||||||
|
border-radius: 0px;
|
||||||
|
font-family: Courier New;
|
||||||
|
color: #00ff00;
|
||||||
|
font-size: 50px;
|
||||||
|
background: #000000;
|
||||||
|
padding: 10px 20px 10px 20px;
|
||||||
|
text-decoration: none;
|
||||||
|
width: 500px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lcd:hover {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bs1 { width: 50px; }
|
||||||
|
.bs2 { width: 100px; }
|
||||||
|
.bs3 { width: 200px; }
|
|
@ -0,0 +1,61 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" type="text/css" href="styles.css">
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>APRSMessenger</title>
|
||||||
|
<link rel="stylesheet" href="jquery-ui.css">
|
||||||
|
<script src="jquery-1.10.2.js"></script>
|
||||||
|
<script src="jquery-ui.js"></script>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="lcd" style="width: 768px">
|
||||||
|
144.390 MHz | APRS | <img src="bars-3.png" style="height: 32px; width: 32px;">
|
||||||
|
</div>
|
||||||
|
<div class="lcd" style="width: 768px; font-size: 15px;">
|
||||||
|
2M | BW: 25KHz | TX CTCSS: OFF | RX CTCSS: OFF | Filter: OFF | Presence: Available
|
||||||
|
</div>
|
||||||
|
<div class="btn" style="width: 75px">
|
||||||
|
Tune
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
Presence
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
GPS
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
SSTV
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
WX
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
MSG
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
SQ-
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
SQ+
|
||||||
|
</div>
|
||||||
|
<div class="btn">
|
||||||
|
VOL
|
||||||
|
</div>
|
||||||
|
<br/><br/>
|
||||||
|
<div id="tabs">
|
||||||
|
<ul>
|
||||||
|
<li><a href="#tabs-1">Console</a></li>
|
||||||
|
<li><a href="#tabs-2">KG7OGM</a></li>
|
||||||
|
<li><a href="#tabs-3">KC7IBT</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="tabs-1">
|
||||||
|
Debug messages
|
||||||
|
</div>
|
||||||
|
<div id="tabs-2">
|
||||||
|
</div>
|
||||||
|
<div id="tabs-3">
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -30,16 +30,17 @@ void setup() {
|
||||||
|
|
||||||
// Tell the HamShield to start up
|
// Tell the HamShield to start up
|
||||||
radio.initialize();
|
radio.initialize();
|
||||||
|
radio.setRfPower(15);
|
||||||
// Configure the HamShield to transmit and recieve on 446.000MHz
|
// Configure the HamShield to transmit and recieve on 446.000MHz
|
||||||
radio.frequency(446000);
|
radio.frequency(145570);
|
||||||
|
pinMode(11, INPUT); // Bodge for now, as pin 3 is hotwired to pin 11
|
||||||
|
|
||||||
Serial.println("Radio Configured.");
|
Serial.println("Radio Configured.");
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
// We'll wait up to 30 seconds for a clear channel, requiring that the channel is clear for 2 seconds before we transmit
|
// We'll wait up to 30 seconds for a clear channel, requiring that the channel is clear for 2 seconds before we transmit
|
||||||
if (radio.waitForChannel(30000,2000,-50)) {
|
if (radio.waitForChannel(30000,2000,-5)) {
|
||||||
// If we get here, the channel is clear. Let's print the RSSI to the serial port as well.
|
// If we get here, the channel is clear. Let's print the RSSI to the serial port as well.
|
||||||
Serial.print("Signal is clear, RSSI: ");
|
Serial.print("Signal is clear, RSSI: ");
|
||||||
Serial.println(radio.readRSSI());
|
Serial.println(radio.readRSSI());
|
||||||
|
@ -49,14 +50,14 @@ void loop() {
|
||||||
radio.setModeTransmit();
|
radio.setModeTransmit();
|
||||||
|
|
||||||
// Send a message out in morse code
|
// Send a message out in morse code
|
||||||
radio.morseOut("CALLSIGN LOCATOR ARDUINO HAMSHIELD");
|
radio.morseOut("KC7IBT ARDUINO HAMSHIELD");
|
||||||
|
|
||||||
// We're done sending the message, set the radio back into recieve mode.
|
// We're done sending the message, set the radio back into recieve mode.
|
||||||
radio.setModeReceive();
|
radio.setModeReceive();
|
||||||
Serial.println("Done.");
|
Serial.println("Done.");
|
||||||
|
|
||||||
// Wait 30 seconds before we send our beacon again.
|
// Wait 30 seconds before we send our beacon again.
|
||||||
delay(30000);
|
delay(1000);
|
||||||
} else {
|
} else {
|
||||||
// If we get here, the channel is busy. Let's also print out the RSSI.
|
// If we get here, the channel is busy. Let's also print out the RSSI.
|
||||||
Serial.print("The channel was busy. Waiting 10 seconds. RSSI: ");
|
Serial.print("The channel was busy. Waiting 10 seconds. RSSI: ");
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
/* HamShield Functional Test */
|
||||||
|
|
||||||
|
#include <HamShield.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
|
||||||
|
HamShield radio;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Wire.begin();
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.println("If the sketch freezes at radio status, there is something wrong with power or the shield");
|
||||||
|
Serial.print("Radio status: ");
|
||||||
|
int result = radio.testConnection();
|
||||||
|
Serial.println(result,DEC);
|
||||||
|
Serial.println("Setting radio to its defaults..");
|
||||||
|
radio.initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
radio.setModeReceive();
|
||||||
|
radio.setSQLoThresh(0);
|
||||||
|
radio.setSQOn();
|
||||||
|
radio.setVolume1(0xF);
|
||||||
|
radio.setVolume2(0xF);
|
||||||
|
delay(1000);
|
||||||
|
Serial.println("Changing frequency to 446.000 and waiting 10 seconds. You should hear static fading in.");
|
||||||
|
radio.frequency(446000);
|
||||||
|
for(int x = 0; x < 16; x++) { radio.setVolume1(x); delay(500); Serial.print(x); Serial.print(".."); }
|
||||||
|
for(int x = 0; x < 16; x++) { radio.setVolume2(x); delay(500); Serial.print(x); Serial.print(".."); }
|
||||||
|
radio.setVolume1(0xF);
|
||||||
|
radio.setVolume2(0xF);
|
||||||
|
|
||||||
|
delay(10000);
|
||||||
|
Serial.println("Changing frequency to 450.000 and waiting 10 seconds. You should hear static.");
|
||||||
|
radio.frequency(446000);
|
||||||
|
delay(10000);
|
||||||
|
Serial.println("Changing frequency to 220.000 and waiting 10 seconds. you should hear static.");
|
||||||
|
radio.frequency(220000);
|
||||||
|
delay(10000);
|
||||||
|
Serial.println("Changing frequency to 144.520 and waiting 10 seconds. you should hear static.");
|
||||||
|
radio.frequency(144520);
|
||||||
|
delay(10000);
|
||||||
|
Serial.println("Now lets scan for a weather radio station and listen for a while....");
|
||||||
|
radio.setWXChannel(radio.scanWXChannel());
|
||||||
|
Serial.println("If you hear weather radio, it means the scanWXChannel() and setWXChannel() and VHF works.");
|
||||||
|
Serial.println("We will sit here for 30 seconds because weather is important.");
|
||||||
|
delay(30000);
|
||||||
|
Serial.println("We will now tune to 446.000 and send morse code");
|
||||||
|
radio.frequency(446000);
|
||||||
|
radio.setModeTransmit();
|
||||||
|
radio.morseOut("HELLO PERSON");
|
||||||
|
radio.setModeReceive();
|
||||||
|
Serial.println("Now we are receiving on the call frequency. Starting over again.");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
/* Just Transmit */
|
||||||
|
|
||||||
|
#include <HamShield.h>
|
||||||
|
#include <Wire.h>
|
||||||
|
|
||||||
|
HamShield radio;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
Wire.begin();
|
||||||
|
Serial.begin(9600);
|
||||||
|
Serial.println("If the sketch freezes at radio status, there is something wrong with power or the shield");
|
||||||
|
Serial.print("Radio status: ");
|
||||||
|
int result = radio.testConnection();
|
||||||
|
Serial.println(result,DEC);
|
||||||
|
Serial.println("Setting radio to its defaults..");
|
||||||
|
radio.initialize();
|
||||||
|
radio.setRfPower(15);
|
||||||
|
radio.setChanMode(3);
|
||||||
|
}
|
||||||
|
|
||||||
|
void loop() {
|
||||||
|
radio.bypassPreDeEmph();
|
||||||
|
radio.frequency(144000);
|
||||||
|
// radio.setTxSourceNone();
|
||||||
|
radio.setModeTransmit();
|
||||||
|
for(;;) { }
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,7 @@ Frequency F<freq>; Set the receive frequency in KHz, if offset is disabl
|
||||||
CDCSS In G<code>; <code> must be a valid CDCSS code No
|
CDCSS In G<code>; <code> must be a valid CDCSS code No
|
||||||
CDCSS Out H<code>; <code> must be a valid CDCSS code No
|
CDCSS Out H<code>; <code> must be a valid CDCSS code No
|
||||||
Print tones I Prints out all configured tones and codes, coma delimited in format: CTCSS In, CTCSS Out, CDCSS In, CDCSS Out No
|
Print tones I Prints out all configured tones and codes, coma delimited in format: CTCSS In, CTCSS Out, CDCSS In, CDCSS Out No
|
||||||
|
Morse Out M<text>; A small buffer for morse code (32 chars)
|
||||||
Power level P<level>; Set the power amp level, 0 = lowest, 15 = highest No
|
Power level P<level>; Set the power amp level, 0 = lowest, 15 = highest No
|
||||||
Enable Offset R<state>; 1 turns on repeater offset mode, 0 turns off repeater offset mode No
|
Enable Offset R<state>; 1 turns on repeater offset mode, 0 turns off repeater offset mode No
|
||||||
Squelch S<level>; Set the squelch level No
|
Squelch S<level>; Set the squelch level No
|
||||||
|
@ -46,7 +47,7 @@ Debug Msg @<text>; 32 character debug message
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Wire.h"
|
#include "Wire.h"
|
||||||
#include "HAMShield.h"
|
#include "HamShield.h"
|
||||||
|
|
||||||
int state;
|
int state;
|
||||||
int txcount = 0;
|
int txcount = 0;
|
||||||
|
@ -62,7 +63,7 @@ int cdcssin = 0;
|
||||||
int cdcssout = 0;
|
int cdcssout = 0;
|
||||||
|
|
||||||
|
|
||||||
HAMShield radio;
|
HamShield radio;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -137,6 +138,14 @@ void loop() {
|
||||||
if(radio.frequency(freq) == true) { Serial.print("@"); Serial.print(freq,DEC); Serial.print(";!;"); } else { Serial.print("X1;"); }
|
if(radio.frequency(freq) == true) { Serial.print("@"); Serial.print(freq,DEC); Serial.print(";!;"); } else { Serial.print("X1;"); }
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'M':
|
||||||
|
getValue();
|
||||||
|
radio.setModeTransmit();
|
||||||
|
delay(300);
|
||||||
|
radio.morseOut(cmdbuff);
|
||||||
|
state = 10;
|
||||||
|
break;
|
||||||
|
|
||||||
case 80: // P - power level
|
case 80: // P - power level
|
||||||
getValue();
|
getValue();
|
||||||
temp = atol(cmdbuff);
|
temp = atol(cmdbuff);
|
||||||
|
|
Loading…
Reference in New Issue