kopia lustrzana https://github.com/mobilinkd/tnc3-firmware
Use TNC_DEBUG instead of DEBUG because DEBUG is defined by STM32CubeIDE.
rodzic
f35e38a92f
commit
f37e2cb65f
|
@ -85,7 +85,7 @@ hdlc::IoFrame* Afsk1200Demodulator::operator()(const q15_t* samples)
|
|||
*/
|
||||
float Afsk1200Demodulator::readTwist()
|
||||
{
|
||||
DEBUG("enter Afsk1200Demodulator::readTwist");
|
||||
TNC_DEBUG("enter Afsk1200Demodulator::readTwist");
|
||||
|
||||
float g1200 = 0.0f;
|
||||
float g2200 = 0.0f;
|
||||
|
@ -133,14 +133,14 @@ float Afsk1200Demodulator::readTwist()
|
|||
INFO("Twist = %d / 100 (%d - %d)", int(result * 100), int(g1200),
|
||||
int(g2200));
|
||||
|
||||
DEBUG("exit readTwist");
|
||||
TNC_DEBUG("exit readTwist");
|
||||
return result;
|
||||
}
|
||||
|
||||
uint32_t Afsk1200Demodulator::readBatteryLevel()
|
||||
{
|
||||
#ifndef NUCLEOTNC
|
||||
DEBUG("enter Afsk1200Demodulator::readBatteryLevel");
|
||||
TNC_DEBUG("enter Afsk1200Demodulator::readBatteryLevel");
|
||||
|
||||
ADC_ChannelConfTypeDef sConfig;
|
||||
|
||||
|
@ -206,7 +206,7 @@ uint32_t Afsk1200Demodulator::readBatteryLevel()
|
|||
INFO("Vref = %lumV", vref);
|
||||
INFO("Vbat = %lumV", vbat);
|
||||
|
||||
DEBUG("exit Afsk1200Demodulator::readBatteryLevel");
|
||||
TNC_DEBUG("exit Afsk1200Demodulator::readBatteryLevel");
|
||||
return vbat;
|
||||
#else
|
||||
return 0;
|
||||
|
|
|
@ -62,7 +62,7 @@ extern "C" void HAL_ADC_ErrorCallback(ADC_HandleTypeDef* /* hadc */) {
|
|||
extern "C" void startAudioInputTask(void const*) {
|
||||
|
||||
using namespace mobilinkd::tnc::audio;
|
||||
DEBUG("startAudioInputTask");
|
||||
TNC_DEBUG("startAudioInputTask");
|
||||
|
||||
adcPool.init();
|
||||
|
||||
|
@ -75,7 +75,7 @@ extern "C" void startAudioInputTask(void const*) {
|
|||
|
||||
switch (adcState) {
|
||||
case STOPPED:
|
||||
DEBUG("STOPPED");
|
||||
TNC_DEBUG("STOPPED");
|
||||
// stop();
|
||||
break;
|
||||
case DEMODULATOR:
|
||||
|
@ -83,41 +83,41 @@ extern "C" void startAudioInputTask(void const*) {
|
|||
demodulatorTask();
|
||||
break;
|
||||
case STREAM_AMPLIFIED_INPUT_LEVEL:
|
||||
DEBUG("STREAM_AMPLIFIED_INPUT_LEVEL");
|
||||
TNC_DEBUG("STREAM_AMPLIFIED_INPUT_LEVEL");
|
||||
streamAmplifiedInputLevels();
|
||||
break;
|
||||
case POLL_AMPLIFIED_INPUT_LEVEL:
|
||||
DEBUG("POLL_AMPLIFIED_INPUT_LEVEL");
|
||||
TNC_DEBUG("POLL_AMPLIFIED_INPUT_LEVEL");
|
||||
pollAmplifiedInputLevel();
|
||||
break;
|
||||
#ifndef NUCLEOTNC
|
||||
case POLL_BATTERY_LEVEL:
|
||||
DEBUG("POLL_BATTERY_LEVEL");
|
||||
TNC_DEBUG("POLL_BATTERY_LEVEL");
|
||||
pollBatteryLevel();
|
||||
break;
|
||||
#endif
|
||||
case POLL_TWIST_LEVEL:
|
||||
DEBUG("POLL_TWIST_LEVEL");
|
||||
TNC_DEBUG("POLL_TWIST_LEVEL");
|
||||
pollInputTwist();
|
||||
break;
|
||||
case STREAM_AVERAGE_TWIST_LEVEL:
|
||||
DEBUG("STREAM_AVERAGE_TWIST_LEVEL");
|
||||
TNC_DEBUG("STREAM_AVERAGE_TWIST_LEVEL");
|
||||
// streamAverageInputTwist();
|
||||
break;
|
||||
case STREAM_INSTANT_TWIST_LEVEL:
|
||||
DEBUG("STREAM_INSTANT_TWIST_LEVEL");
|
||||
TNC_DEBUG("STREAM_INSTANT_TWIST_LEVEL");
|
||||
// streamInstantInputTwist();
|
||||
break;
|
||||
case AUTO_ADJUST_INPUT_LEVEL:
|
||||
DEBUG("AUTO_ADJUST_INPUT_LEVEL");
|
||||
TNC_DEBUG("AUTO_ADJUST_INPUT_LEVEL");
|
||||
autoAudioInputLevel();
|
||||
break;
|
||||
case CONFIGURE_INPUT_LEVELS:
|
||||
DEBUG("CONFIGURE_INPUT_LEVELS");
|
||||
TNC_DEBUG("CONFIGURE_INPUT_LEVELS");
|
||||
setAudioInputLevels();
|
||||
break;
|
||||
case UPDATE_SETTINGS:
|
||||
DEBUG("UPDATE_SETTINGS");
|
||||
TNC_DEBUG("UPDATE_SETTINGS");
|
||||
setAudioInputLevels();
|
||||
updateModulator();
|
||||
break;
|
||||
|
@ -191,7 +191,7 @@ IDemodulator* getDemodulator()
|
|||
|
||||
void demodulatorTask() {
|
||||
|
||||
DEBUG("enter demodulatorTask");
|
||||
TNC_DEBUG("enter demodulatorTask");
|
||||
|
||||
bool dcd_status{false};
|
||||
auto demodulator = getDemodulator();
|
||||
|
@ -238,7 +238,7 @@ void demodulatorTask() {
|
|||
demodulator->stop();
|
||||
|
||||
dcd_off();
|
||||
DEBUG("exit demodulatorTask");
|
||||
TNC_DEBUG("exit demodulatorTask");
|
||||
}
|
||||
|
||||
|
||||
|
@ -297,13 +297,13 @@ void streamLevels(uint8_t cmd) {
|
|||
}
|
||||
|
||||
demodulator->stop();
|
||||
DEBUG("exit streamLevels");
|
||||
TNC_DEBUG("exit streamLevels");
|
||||
}
|
||||
|
||||
levels_type readLevels(uint32_t)
|
||||
{
|
||||
|
||||
DEBUG("enter readLevels");
|
||||
TNC_DEBUG("enter readLevels");
|
||||
|
||||
// Return Vpp, Vavg, Vmin, Vmax as four 16-bit values, right justified.
|
||||
|
||||
|
@ -385,7 +385,7 @@ float readTwist()
|
|||
*/
|
||||
void pollInputTwist()
|
||||
{
|
||||
DEBUG("enter pollInputTwist");
|
||||
TNC_DEBUG("enter pollInputTwist");
|
||||
|
||||
float g1200 = 0.0f;
|
||||
float g2200 = 0.0f;
|
||||
|
@ -424,7 +424,7 @@ void pollInputTwist()
|
|||
|
||||
IDemodulator::stopADC();
|
||||
|
||||
DEBUG("pollInputTwist: MARK=%d, SPACE=%d (x100)",
|
||||
TNC_DEBUG("pollInputTwist: MARK=%d, SPACE=%d (x100)",
|
||||
int(g1200 * 100.0 / AVG_SAMPLES), int(g2200 * 100.0 / AVG_SAMPLES));
|
||||
|
||||
int16_t g1200i = int16_t(g1200 * 256 / AVG_SAMPLES);
|
||||
|
@ -439,17 +439,17 @@ void pollInputTwist()
|
|||
|
||||
ioport->write(buffer, 5, 6, 10);
|
||||
|
||||
DEBUG("exit pollInputTwist");
|
||||
TNC_DEBUG("exit pollInputTwist");
|
||||
}
|
||||
|
||||
void streamAmplifiedInputLevels() {
|
||||
DEBUG("enter streamAmplifiedInputLevels");
|
||||
TNC_DEBUG("enter streamAmplifiedInputLevels");
|
||||
streamLevels(kiss::hardware::POLL_INPUT_LEVEL);
|
||||
DEBUG("exit streamAmplifiedInputLevels");
|
||||
TNC_DEBUG("exit streamAmplifiedInputLevels");
|
||||
}
|
||||
|
||||
void pollAmplifiedInputLevel() {
|
||||
DEBUG("enter pollAmplifiedInputLevel");
|
||||
TNC_DEBUG("enter pollAmplifiedInputLevel");
|
||||
|
||||
uint16_t Vpp, Vavg, Vmin, Vmax;
|
||||
std::tie(Vpp, Vavg, Vmin, Vmax) = readLevels(AUDIO_IN);
|
||||
|
@ -471,7 +471,7 @@ void pollAmplifiedInputLevel() {
|
|||
data[8] = (Vmax & 0xFF);
|
||||
|
||||
ioport->write(data, 9, 6, 10);
|
||||
DEBUG("exit pollAmplifiedInputLevel");
|
||||
TNC_DEBUG("exit pollAmplifiedInputLevel");
|
||||
}
|
||||
|
||||
#ifndef NUCLEOTNC
|
||||
|
@ -496,7 +496,7 @@ void stop() {
|
|||
kiss::settings().input_offset += 6;
|
||||
setAudioInputLevels();
|
||||
kiss::settings().input_offset -= 6;
|
||||
DEBUG("Stop");
|
||||
TNC_DEBUG("Stop");
|
||||
// __disable_irq();
|
||||
vTaskSuspendAll();
|
||||
SysTick->CTRL = 0;
|
||||
|
@ -514,7 +514,7 @@ void stop() {
|
|||
xTaskResumeAll();
|
||||
setAudioInputLevels();
|
||||
// adcState = DEMODULATOR;
|
||||
DEBUG("Wake");
|
||||
TNC_DEBUG("Wake");
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ hdlc::IoFrame* Fsk9600Demodulator::operator()(const q15_t* samples)
|
|||
*/
|
||||
float Fsk9600Demodulator::readTwist()
|
||||
{
|
||||
DEBUG("enter Fsk9600Demodulator::readTwist");
|
||||
TNC_DEBUG("enter Fsk9600Demodulator::readTwist");
|
||||
|
||||
float g120 = 0.0f;
|
||||
float g4800 = 0.0f;
|
||||
|
@ -117,14 +117,14 @@ float Fsk9600Demodulator::readTwist()
|
|||
INFO("9600 Twist = %d / 100 (%d - %d)", int(result * 100), int(g120 * 100),
|
||||
int(g4800 * 100));
|
||||
|
||||
DEBUG("exit Fsk9600Demodulator::readTwist");
|
||||
TNC_DEBUG("exit Fsk9600Demodulator::readTwist");
|
||||
return result;
|
||||
}
|
||||
|
||||
uint32_t Fsk9600Demodulator::readBatteryLevel()
|
||||
{
|
||||
#ifndef NUCLEOTNC
|
||||
DEBUG("enter Fsk9600Demodulator::readBatteryLevel");
|
||||
TNC_DEBUG("enter Fsk9600Demodulator::readBatteryLevel");
|
||||
|
||||
ADC_ChannelConfTypeDef sConfig;
|
||||
|
||||
|
@ -190,7 +190,7 @@ uint32_t Fsk9600Demodulator::readBatteryLevel()
|
|||
INFO("Vref = %lumV", vref)
|
||||
INFO("Vbat = %lumV", vbat);
|
||||
|
||||
DEBUG("exit Fsk9600Demodulator::readBatteryLevel");
|
||||
TNC_DEBUG("exit Fsk9600Demodulator::readBatteryLevel");
|
||||
return vbat;
|
||||
#else
|
||||
return 0;
|
||||
|
|
|
@ -70,7 +70,7 @@ private:
|
|||
checksum <<= 16; // Shift
|
||||
asm volatile("rbit %0, %0" : "+r" (checksum)); // Reverse
|
||||
uint16_t result = checksum & 0xFFFF;
|
||||
DEBUG("CRC = %hx", result);
|
||||
TNC_DEBUG("CRC = %hx", result);
|
||||
return result;
|
||||
}
|
||||
#else
|
||||
|
@ -132,7 +132,7 @@ public:
|
|||
fcs_ = (*it);
|
||||
++it;
|
||||
fcs_ |= (*it) << 8;
|
||||
DEBUG("FCS = %hx", fcs_);
|
||||
TNC_DEBUG("FCS = %hx", fcs_);
|
||||
crc_ = compute_crc(data_.begin());
|
||||
complete_ = true;
|
||||
}
|
||||
|
|
|
@ -92,7 +92,7 @@ void startIOEventTask(void const*)
|
|||
// FIXME: this is probably not right
|
||||
if (HAL_GPIO_ReadPin(BT_STATE2_GPIO_Port, BT_STATE2_Pin) == GPIO_PIN_RESET)
|
||||
{
|
||||
DEBUG("BT Connected at start");
|
||||
TNC_DEBUG("BT Connected at start");
|
||||
openSerial();
|
||||
INFO("BT Opened");
|
||||
indicate_connected_via_ble();
|
||||
|
@ -103,10 +103,10 @@ void startIOEventTask(void const*)
|
|||
}
|
||||
} else {
|
||||
if (!usb_wake_state) {
|
||||
DEBUG("USB disconnected -- shutdown");
|
||||
TNC_DEBUG("USB disconnected -- shutdown");
|
||||
shutdown(0);
|
||||
} else {
|
||||
DEBUG("USB connected -- negotiate");
|
||||
TNC_DEBUG("USB connected -- negotiate");
|
||||
HAL_GPIO_WritePin(BT_SLEEP_GPIO_Port, BT_SLEEP_Pin,
|
||||
GPIO_PIN_RESET);
|
||||
osTimerStart(usbShutdownTimerHandle, 5000);
|
||||
|
@ -193,14 +193,14 @@ void startIOEventTask(void const*)
|
|||
osWaitForever);
|
||||
break;
|
||||
case CMD_POWER_BUTTON_UP:
|
||||
DEBUG("Power Up");
|
||||
TNC_DEBUG("Power Up");
|
||||
if (power_button_counter == 0) break; // reset_requested
|
||||
power_button_duration = osKernelSysTick() - power_button_counter;
|
||||
DEBUG("Button pressed for %lums", power_button_duration);
|
||||
TNC_DEBUG("Button pressed for %lums", power_button_duration);
|
||||
shutdown(0); // ***NO RETURN***
|
||||
break;
|
||||
case CMD_BOOT_BUTTON_DOWN:
|
||||
DEBUG("BOOT Down");
|
||||
TNC_DEBUG("BOOT Down");
|
||||
// If the TNC has USB power, reboot. The boot pin is being
|
||||
// held so it will boot into the bootloader. This is a bit
|
||||
// of a hack, since we really should check if the port is a
|
||||
|
@ -211,7 +211,7 @@ void startIOEventTask(void const*)
|
|||
}
|
||||
break;
|
||||
case CMD_BOOT_BUTTON_UP:
|
||||
DEBUG("BOOT Up");
|
||||
TNC_DEBUG("BOOT Up");
|
||||
osMessagePut(audioInputQueueHandle,
|
||||
audio::AUTO_ADJUST_INPUT_LEVEL,
|
||||
osWaitForever);
|
||||
|
@ -227,7 +227,7 @@ void startIOEventTask(void const*)
|
|||
}
|
||||
break;
|
||||
case CMD_BT_CONNECT:
|
||||
DEBUG("BT Connect");
|
||||
TNC_DEBUG("BT Connect");
|
||||
if (openSerial())
|
||||
{
|
||||
osMessagePut(audioInputQueueHandle,
|
||||
|
@ -343,7 +343,7 @@ void startIOEventTask(void const*)
|
|||
|
||||
if (frame->source() & IoFrame::RF_DATA)
|
||||
{
|
||||
DEBUG("RF frame");
|
||||
TNC_DEBUG("RF frame");
|
||||
frame->source(frame->source() & 0x70);
|
||||
if (!ioport->write(frame, frame->size() + 100))
|
||||
{
|
||||
|
@ -354,7 +354,7 @@ void startIOEventTask(void const*)
|
|||
}
|
||||
else
|
||||
{
|
||||
DEBUG("Serial frame");
|
||||
TNC_DEBUG("Serial frame");
|
||||
if ((frame->type() & 0x0F) == IoFrame::DATA)
|
||||
{
|
||||
kiss::getAFSKTestTone().stop();
|
||||
|
|
20
TNC/Kiss.cpp
20
TNC/Kiss.cpp
|
@ -20,55 +20,55 @@ void handle_frame(uint8_t frame_type, hdlc::IoFrame* frame) {
|
|||
uint8_t value = *(frame->begin());
|
||||
switch (frame_type) {
|
||||
case kiss::FRAME_DATA:
|
||||
DEBUG("FRAME_DATA");
|
||||
TNC_DEBUG("FRAME_DATA");
|
||||
// osMessagePut(hdlcOutputQueueHandle, (uint32_t) frame, 0);
|
||||
break;
|
||||
case kiss::FRAME_TX_DELAY:
|
||||
DEBUG("FRAME_TX_DELAY");
|
||||
TNC_DEBUG("FRAME_TX_DELAY");
|
||||
kiss::settings().txdelay = value;
|
||||
hdlc::release(frame);
|
||||
updateModulator();
|
||||
break;
|
||||
case kiss::FRAME_P_PERSIST:
|
||||
DEBUG("FRAME_P_PERSIST");
|
||||
TNC_DEBUG("FRAME_P_PERSIST");
|
||||
kiss::settings().ppersist = value;
|
||||
hdlc::release(frame);
|
||||
updateModulator();
|
||||
break;
|
||||
case kiss::FRAME_SLOT_TIME:
|
||||
DEBUG("FRAME_SLOT_TIME");
|
||||
TNC_DEBUG("FRAME_SLOT_TIME");
|
||||
kiss::settings().slot = value;
|
||||
hdlc::release(frame);
|
||||
updateModulator();
|
||||
break;
|
||||
case kiss::FRAME_TX_TAIL:
|
||||
DEBUG("FRAME_TX_TAIL");
|
||||
TNC_DEBUG("FRAME_TX_TAIL");
|
||||
// Ignore.
|
||||
hdlc::release(frame);
|
||||
break;
|
||||
case kiss::FRAME_DUPLEX:
|
||||
DEBUG("FRAME_DUPLEX");
|
||||
TNC_DEBUG("FRAME_DUPLEX");
|
||||
kiss::settings().duplex = value;
|
||||
hdlc::release(frame);
|
||||
updateModulator();
|
||||
break;
|
||||
case kiss::FRAME_HARDWARE:
|
||||
DEBUG("FRAME_HARDWARE");
|
||||
TNC_DEBUG("FRAME_HARDWARE");
|
||||
kiss::settings().handle_request(frame);
|
||||
hdlc::release(frame);
|
||||
break;
|
||||
case kiss::FRAME_LOG:
|
||||
DEBUG("FRAME_LOG");
|
||||
TNC_DEBUG("FRAME_LOG");
|
||||
hdlc::release(frame);
|
||||
// IGNORE
|
||||
break;
|
||||
case kiss::FRAME_RETURN:
|
||||
DEBUG("FRAME_RETURN");
|
||||
TNC_DEBUG("FRAME_RETURN");
|
||||
hdlc::release(frame);
|
||||
// Leave KISS mode
|
||||
break;
|
||||
default:
|
||||
DEBUG("Unknown KISS frame type");
|
||||
TNC_DEBUG("Unknown KISS frame type");
|
||||
hdlc::release(frame);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -43,10 +43,10 @@ int powerOffViaUSB(void)
|
|||
namespace mobilinkd { namespace tnc { namespace kiss {
|
||||
|
||||
#ifdef NUCLEOTNC
|
||||
const char FIRMWARE_VERSION[] = "2.3.0";
|
||||
const char FIRMWARE_VERSION[] = "2.3.1";
|
||||
const char HARDWARE_VERSION[] = "Mobilinkd NucleoTNC";
|
||||
#else
|
||||
const char FIRMWARE_VERSION[] = "2.3.0";
|
||||
const char FIRMWARE_VERSION[] = "2.3.1";
|
||||
const char HARDWARE_VERSION[] = "Mobilinkd TNC3 2.1.1";
|
||||
#endif
|
||||
|
||||
|
@ -223,7 +223,7 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
reply8(hardware::SAVE_EEPROM_SETTINGS, hardware::OK);
|
||||
break;
|
||||
case hardware::POLL_INPUT_LEVEL:
|
||||
DEBUG("POLL_INPUT_VOLUME");
|
||||
TNC_DEBUG("POLL_INPUT_VOLUME");
|
||||
reply8(hardware::POLL_INPUT_LEVEL, 0);
|
||||
osMessagePut(audioInputQueueHandle, audio::POLL_AMPLIFIED_INPUT_LEVEL,
|
||||
osWaitForever);
|
||||
|
@ -231,43 +231,43 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
osWaitForever);
|
||||
break;
|
||||
case hardware::STREAM_INPUT_LEVEL:
|
||||
DEBUG("STREAM_INPUT_VOLUME");
|
||||
TNC_DEBUG("STREAM_INPUT_VOLUME");
|
||||
osMessagePut(audioInputQueueHandle, audio::STREAM_AMPLIFIED_INPUT_LEVEL,
|
||||
osWaitForever);
|
||||
break;
|
||||
case hardware::GET_BATTERY_LEVEL:
|
||||
DEBUG("GET_BATTERY_LEVEL");
|
||||
TNC_DEBUG("GET_BATTERY_LEVEL");
|
||||
osMessagePut(audioInputQueueHandle, audio::POLL_BATTERY_LEVEL,
|
||||
osWaitForever);
|
||||
osMessagePut(audioInputQueueHandle, audio::DEMODULATOR,
|
||||
osWaitForever);
|
||||
break;
|
||||
case hardware::SEND_MARK:
|
||||
DEBUG("SEND_MARK");
|
||||
TNC_DEBUG("SEND_MARK");
|
||||
osMessagePut(audioInputQueueHandle, audio::IDLE,
|
||||
osWaitForever);
|
||||
getAFSKTestTone().mark();
|
||||
break;
|
||||
case hardware::SEND_SPACE:
|
||||
DEBUG("SEND_SPACE");
|
||||
TNC_DEBUG("SEND_SPACE");
|
||||
osMessagePut(audioInputQueueHandle, audio::IDLE,
|
||||
osWaitForever);
|
||||
getAFSKTestTone().space();
|
||||
break;
|
||||
case hardware::SEND_BOTH:
|
||||
DEBUG("SEND_BOTH");
|
||||
TNC_DEBUG("SEND_BOTH");
|
||||
osMessagePut(audioInputQueueHandle, audio::IDLE,
|
||||
osWaitForever);
|
||||
getAFSKTestTone().both();
|
||||
break;
|
||||
case hardware::STOP_TX:
|
||||
DEBUG("STOP_TX");
|
||||
TNC_DEBUG("STOP_TX");
|
||||
getAFSKTestTone().stop();
|
||||
osMessagePut(audioInputQueueHandle, audio::IDLE,
|
||||
osWaitForever);
|
||||
break;
|
||||
case hardware::RESET:
|
||||
DEBUG("RESET");
|
||||
TNC_DEBUG("RESET");
|
||||
osMessagePut(audioInputQueueHandle, audio::DEMODULATOR,
|
||||
osWaitForever);
|
||||
break;
|
||||
|
@ -275,21 +275,21 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
output_gain = *it << 8;
|
||||
++it;
|
||||
output_gain += *it;
|
||||
DEBUG("SET_OUTPUT_GAIN = %hd", output_gain);
|
||||
TNC_DEBUG("SET_OUTPUT_GAIN = %hd", output_gain);
|
||||
audio::setAudioOutputLevel();
|
||||
update_crc();
|
||||
[[fallthrough]];
|
||||
case hardware::GET_OUTPUT_GAIN:
|
||||
DEBUG("GET_OUTPUT_GAIN");
|
||||
TNC_DEBUG("GET_OUTPUT_GAIN");
|
||||
reply16(hardware::GET_OUTPUT_GAIN, output_gain);
|
||||
break;
|
||||
|
||||
case hardware::STREAM_DCD_VALUE:
|
||||
DEBUG("STREAM_DCD_VALUE");
|
||||
TNC_DEBUG("STREAM_DCD_VALUE");
|
||||
break;
|
||||
|
||||
case hardware::POLL_INPUT_TWIST:
|
||||
DEBUG("POLL_INPUT_TWIST");
|
||||
TNC_DEBUG("POLL_INPUT_TWIST");
|
||||
osMessagePut(audioInputQueueHandle, audio::POLL_TWIST_LEVEL,
|
||||
osWaitForever);
|
||||
osMessagePut(audioInputQueueHandle, audio::DEMODULATOR,
|
||||
|
@ -297,19 +297,19 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
break;
|
||||
|
||||
case hardware::STREAM_AVG_INPUT_TWIST:
|
||||
DEBUG("STREAM_AVG_INPUT_TWIST");
|
||||
TNC_DEBUG("STREAM_AVG_INPUT_TWIST");
|
||||
osMessagePut(audioInputQueueHandle, audio::STREAM_AVERAGE_TWIST_LEVEL,
|
||||
osWaitForever);
|
||||
break;
|
||||
|
||||
case hardware::STREAM_INPUT_TWIST:
|
||||
DEBUG("STREAM_INPUT_TWIST");
|
||||
TNC_DEBUG("STREAM_INPUT_TWIST");
|
||||
osMessagePut(audioInputQueueHandle, audio::STREAM_INSTANT_TWIST_LEVEL,
|
||||
osWaitForever);
|
||||
break;
|
||||
|
||||
case hardware::ADJUST_INPUT_LEVELS:
|
||||
DEBUG("ADJUST_INPUT_LEVELS");
|
||||
TNC_DEBUG("ADJUST_INPUT_LEVELS");
|
||||
osMessagePut(audioInputQueueHandle, audio::AUTO_ADJUST_INPUT_LEVEL,
|
||||
osWaitForever);
|
||||
osMessagePut(audioInputQueueHandle, audio::STREAM_AMPLIFIED_INPUT_LEVEL,
|
||||
|
@ -320,7 +320,7 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
input_gain = *it << 8;
|
||||
++it;
|
||||
input_gain += *it;
|
||||
DEBUG("SET_INPUT_GAIN = %d", input_gain);
|
||||
TNC_DEBUG("SET_INPUT_GAIN = %d", input_gain);
|
||||
update_crc();
|
||||
osMessagePut(audioInputQueueHandle, audio::UPDATE_SETTINGS,
|
||||
osWaitForever);
|
||||
|
@ -328,12 +328,12 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
osWaitForever);
|
||||
[[fallthrough]];
|
||||
case hardware::GET_INPUT_GAIN:
|
||||
DEBUG("GET_INPUT_GAIN");
|
||||
TNC_DEBUG("GET_INPUT_GAIN");
|
||||
reply16(hardware::GET_INPUT_GAIN, input_gain);
|
||||
break;
|
||||
|
||||
case hardware::SET_INPUT_TWIST:
|
||||
DEBUG("SET_INPUT_TWIST");
|
||||
TNC_DEBUG("SET_INPUT_TWIST");
|
||||
rx_twist = *it;
|
||||
update_crc();
|
||||
osMessagePut(audioInputQueueHandle, audio::UPDATE_SETTINGS,
|
||||
|
@ -342,7 +342,7 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
osWaitForever);
|
||||
[[fallthrough]];
|
||||
case hardware::GET_INPUT_TWIST:
|
||||
DEBUG("GET_INPUT_TWIST");
|
||||
TNC_DEBUG("GET_INPUT_TWIST");
|
||||
reply8(hardware::GET_INPUT_TWIST, rx_twist);
|
||||
break;
|
||||
|
||||
|
@ -350,65 +350,65 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
tx_twist = *it;
|
||||
if (tx_twist < 0) tx_twist = 0;
|
||||
if (tx_twist > 100) tx_twist = 100;
|
||||
DEBUG("SET_OUTPUT_TWIST: %d", int(tx_twist));
|
||||
TNC_DEBUG("SET_OUTPUT_TWIST: %d", int(tx_twist));
|
||||
getModulator().init(*this);
|
||||
update_crc();
|
||||
[[fallthrough]];
|
||||
case hardware::GET_OUTPUT_TWIST:
|
||||
DEBUG("GET_OUTPUT_TWIST");
|
||||
TNC_DEBUG("GET_OUTPUT_TWIST");
|
||||
reply8(hardware::GET_OUTPUT_TWIST, tx_twist);
|
||||
break;
|
||||
|
||||
case hardware::STREAM_AMPLIFIED_INPUT:
|
||||
DEBUG("STREAM_AMPLIFIED_INPUT");
|
||||
TNC_DEBUG("STREAM_AMPLIFIED_INPUT");
|
||||
osMessagePut(audioInputQueueHandle, audio::STREAM_AMPLIFIED_INPUT_LEVEL,
|
||||
osWaitForever);
|
||||
break;
|
||||
|
||||
case hardware::GET_TXDELAY:
|
||||
DEBUG("GET_TXDELAY");
|
||||
TNC_DEBUG("GET_TXDELAY");
|
||||
reply8(hardware::GET_TXDELAY, txdelay);
|
||||
break;
|
||||
|
||||
case hardware::GET_PERSIST:
|
||||
DEBUG("GET_PERSIST");
|
||||
TNC_DEBUG("GET_PERSIST");
|
||||
reply8(hardware::GET_PERSIST, ppersist);
|
||||
break;
|
||||
|
||||
case hardware::GET_TIMESLOT:
|
||||
DEBUG("GET_TIMESLOT");
|
||||
TNC_DEBUG("GET_TIMESLOT");
|
||||
reply8(hardware::GET_TIMESLOT, slot);
|
||||
break;
|
||||
|
||||
case hardware::GET_TXTAIL:
|
||||
DEBUG("GET_TXTAIL");
|
||||
TNC_DEBUG("GET_TXTAIL");
|
||||
reply8(hardware::GET_TXTAIL, txtail);
|
||||
break;
|
||||
|
||||
case hardware::GET_DUPLEX:
|
||||
DEBUG("GET_DUPLEX");
|
||||
TNC_DEBUG("GET_DUPLEX");
|
||||
reply8(hardware::GET_DUPLEX, duplex);
|
||||
break;
|
||||
|
||||
case hardware::GET_FIRMWARE_VERSION:
|
||||
DEBUG("GET_FIRMWARE_VERSION");
|
||||
TNC_DEBUG("GET_FIRMWARE_VERSION");
|
||||
reply(hardware::GET_FIRMWARE_VERSION, (uint8_t*) FIRMWARE_VERSION,
|
||||
sizeof(FIRMWARE_VERSION) - 1);
|
||||
break;
|
||||
case hardware::GET_HARDWARE_VERSION:
|
||||
DEBUG("GET_HARDWARE_VERSION");
|
||||
TNC_DEBUG("GET_HARDWARE_VERSION");
|
||||
reply(hardware::GET_HARDWARE_VERSION, (uint8_t*) HARDWARE_VERSION,
|
||||
sizeof(HARDWARE_VERSION) - 1);
|
||||
break;
|
||||
|
||||
case hardware::GET_SERIAL_NUMBER:
|
||||
DEBUG("GET_SERIAL_NUMBER");
|
||||
TNC_DEBUG("GET_SERIAL_NUMBER");
|
||||
reply(hardware::GET_SERIAL_NUMBER, (uint8_t*) serial_number_64,
|
||||
sizeof(serial_number_64) - 1);
|
||||
break;
|
||||
|
||||
case hardware::SET_PTT_CHANNEL:
|
||||
DEBUG("SET_PTT_CHANNEL");
|
||||
TNC_DEBUG("SET_PTT_CHANNEL");
|
||||
if (*it) {
|
||||
options &= ~KISS_OPTION_PTT_SIMPLEX;
|
||||
osMessagePut(ioEventQueueHandle, CMD_SET_PTT_MULTIPLEX, osWaitForever);
|
||||
|
@ -419,13 +419,13 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
update_crc();
|
||||
break;
|
||||
case hardware::GET_PTT_CHANNEL:
|
||||
DEBUG("GET_PTT_CHANNEL");
|
||||
TNC_DEBUG("GET_PTT_CHANNEL");
|
||||
reply8(hardware::GET_PTT_CHANNEL,
|
||||
options & KISS_OPTION_PTT_SIMPLEX ? 0 : 1);
|
||||
break;
|
||||
|
||||
case hardware::SET_PASSALL:
|
||||
DEBUG("SET_PASSALL");
|
||||
TNC_DEBUG("SET_PASSALL");
|
||||
if (*it) {
|
||||
options |= KISS_OPTION_PASSALL;
|
||||
} else {
|
||||
|
@ -434,12 +434,12 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
update_crc();
|
||||
[[fallthrough]];
|
||||
case hardware::GET_PASSALL:
|
||||
DEBUG("GET_PASSALL");
|
||||
TNC_DEBUG("GET_PASSALL");
|
||||
reply8(hardware::GET_PASSALL, options & KISS_OPTION_PASSALL ? 1 : 0);
|
||||
break;
|
||||
|
||||
case hardware::SET_RX_REV_POLARITY:
|
||||
DEBUG("SET_RX_REV_POLARITY");
|
||||
TNC_DEBUG("SET_RX_REV_POLARITY");
|
||||
if (*it) {
|
||||
options |= KISS_OPTION_RX_REV_POLARITY;
|
||||
} else {
|
||||
|
@ -448,12 +448,12 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
update_crc();
|
||||
[[fallthrough]];
|
||||
case hardware::GET_RX_REV_POLARITY:
|
||||
DEBUG("GET_RX_REV_POLARITY");
|
||||
TNC_DEBUG("GET_RX_REV_POLARITY");
|
||||
reply8(hardware::GET_RX_REV_POLARITY, options & KISS_OPTION_RX_REV_POLARITY ? 1 : 0);
|
||||
break;
|
||||
|
||||
case hardware::SET_TX_REV_POLARITY:
|
||||
DEBUG("SET_TX_REV_POLARITY");
|
||||
TNC_DEBUG("SET_TX_REV_POLARITY");
|
||||
if (*it) {
|
||||
options |= KISS_OPTION_TX_REV_POLARITY;
|
||||
} else {
|
||||
|
@ -462,13 +462,13 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
update_crc();
|
||||
[[fallthrough]];
|
||||
case hardware::GET_TX_REV_POLARITY:
|
||||
DEBUG("GET_TX_REV_POLARITY");
|
||||
TNC_DEBUG("GET_TX_REV_POLARITY");
|
||||
reply8(hardware::GET_TX_REV_POLARITY, options & KISS_OPTION_TX_REV_POLARITY ? 1 : 0);
|
||||
break;
|
||||
|
||||
#ifndef NUCLEOTNC
|
||||
case hardware::SET_USB_POWER_OFF:
|
||||
DEBUG("SET_USB_POWER_OFF");
|
||||
TNC_DEBUG("SET_USB_POWER_OFF");
|
||||
if (*it) {
|
||||
options |= KISS_OPTION_VIN_POWER_OFF;
|
||||
} else {
|
||||
|
@ -477,13 +477,13 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
update_crc();
|
||||
[[fallthrough]];
|
||||
case hardware::GET_USB_POWER_OFF:
|
||||
DEBUG("GET_USB_POWER_OFF");
|
||||
TNC_DEBUG("GET_USB_POWER_OFF");
|
||||
reply8(hardware::GET_USB_POWER_OFF,
|
||||
options & KISS_OPTION_VIN_POWER_OFF ? 1 : 0);
|
||||
break;
|
||||
|
||||
case hardware::SET_USB_POWER_ON:
|
||||
DEBUG("SET_USB_POWER_ON");
|
||||
TNC_DEBUG("SET_USB_POWER_ON");
|
||||
if (*it) {
|
||||
options |= KISS_OPTION_VIN_POWER_ON;
|
||||
} else {
|
||||
|
@ -492,23 +492,23 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
update_crc();
|
||||
[[fallthrough]];
|
||||
case hardware::GET_USB_POWER_ON:
|
||||
DEBUG("GET_USB_POWER_ON");
|
||||
TNC_DEBUG("GET_USB_POWER_ON");
|
||||
reply8(hardware::GET_USB_POWER_ON,
|
||||
options & KISS_OPTION_VIN_POWER_ON ? 1 : 0);
|
||||
break;
|
||||
#endif
|
||||
|
||||
case hardware::SET_DATETIME:
|
||||
DEBUG("SET_DATETIME");
|
||||
TNC_DEBUG("SET_DATETIME");
|
||||
set_rtc_datetime(static_cast<const uint8_t*>(&*it));
|
||||
[[fallthrough]];
|
||||
case hardware::GET_DATETIME:
|
||||
DEBUG("GET_DATETIME");
|
||||
TNC_DEBUG("GET_DATETIME");
|
||||
reply(hardware::GET_DATETIME, get_rtc_datetime(), 7);
|
||||
break;
|
||||
|
||||
case hardware::GET_CAPABILITIES:
|
||||
DEBUG("GET_CAPABILITIES");
|
||||
TNC_DEBUG("GET_CAPABILITIES");
|
||||
#ifndef NUCLEOTNC
|
||||
reply16(hardware::GET_CAPABILITIES,
|
||||
hardware::CAP_EEPROM_SAVE|hardware::CAP_BATTERY_LEVEL|
|
||||
|
@ -522,7 +522,7 @@ void Hardware::handle_request(hdlc::IoFrame* frame)
|
|||
break;
|
||||
|
||||
case hardware::GET_ALL_VALUES:
|
||||
DEBUG("GET_ALL_VALUES");
|
||||
TNC_DEBUG("GET_ALL_VALUES");
|
||||
// GET_API_VERSION must always come first.
|
||||
reply16(hardware::GET_API_VERSION, hardware::KISS_API_VERSION);
|
||||
#ifndef NUCLEOTNC
|
||||
|
@ -597,13 +597,13 @@ void Hardware::handle_ext_request(hdlc::IoFrame* frame) {
|
|||
switch (ext_command) {
|
||||
|
||||
case hardware::EXT_SET_MODEM_TYPE[1]:
|
||||
DEBUG("SET_MODEM_TYPE");
|
||||
TNC_DEBUG("SET_MODEM_TYPE");
|
||||
if ((*it == hardware::MODEM_TYPE_1200)
|
||||
or (*it == hardware::MODEM_TYPE_9600)
|
||||
or (*it == hardware::MODEM_TYPE_M17))
|
||||
{
|
||||
modem_type = *it;
|
||||
DEBUG(modem_type_lookup[modem_type]);
|
||||
TNC_DEBUG(modem_type_lookup[modem_type]);
|
||||
update_crc();
|
||||
}
|
||||
else
|
||||
|
@ -615,11 +615,11 @@ void Hardware::handle_ext_request(hdlc::IoFrame* frame) {
|
|||
osWaitForever);
|
||||
[[fallthrough]];
|
||||
case hardware::EXT_GET_MODEM_TYPE[1]:
|
||||
DEBUG("EXT_GET_MODEM_TYPE");
|
||||
TNC_DEBUG("EXT_GET_MODEM_TYPE");
|
||||
ext_reply(hardware::EXT_GET_MODEM_TYPE, modem_type);
|
||||
break;
|
||||
case hardware::EXT_GET_MODEM_TYPES[1]:
|
||||
DEBUG("EXT_GET_MODEM_TYPES");
|
||||
TNC_DEBUG("EXT_GET_MODEM_TYPES");
|
||||
ext_reply(hardware::EXT_GET_MODEM_TYPES, supported_modem_types);
|
||||
break;
|
||||
default:
|
||||
|
@ -667,7 +667,7 @@ bool I2C_Storage::load(void* ptr, size_t len)
|
|||
{
|
||||
if (HAL_I2C_Init(&eeprom_i2c) != HAL_OK) CxxErrorHandler();
|
||||
|
||||
DEBUG("Attempting to read %d bytes from EEPROM...", len);
|
||||
TNC_DEBUG("Attempting to read %d bytes from EEPROM...", len);
|
||||
|
||||
uint32_t timeout = 1000; // systicks... milliseconds
|
||||
|
||||
|
|
|
@ -329,44 +329,44 @@ struct Hardware
|
|||
memset(beacons, 0, sizeof(beacons));
|
||||
update_crc();
|
||||
|
||||
DEBUG("Settings initialized");
|
||||
TNC_DEBUG("Settings initialized");
|
||||
}
|
||||
|
||||
void debug() {
|
||||
#ifdef KISS_LOGGING
|
||||
DEBUG("Hardware Settings (size=%d):", sizeof(Hardware));
|
||||
DEBUG("TX Delay: %d", (int)txdelay);
|
||||
DEBUG("P* Persistence: %d", (int)ppersist);
|
||||
DEBUG("Slot Time: %d", (int)slot);
|
||||
DEBUG("TX Tail: %d", (int)txtail);
|
||||
DEBUG("Duplex: %d", (int)duplex);
|
||||
DEBUG("Modem Type: %s", modem_type_lookup[modem_type]);
|
||||
DEBUG("TX Gain: %d", (int)output_gain);
|
||||
DEBUG("RX Gain: %d", (int)input_gain);
|
||||
DEBUG("TX Twist: %d", (int)tx_twist);
|
||||
DEBUG("RX Twist: %d", (int)rx_twist);
|
||||
DEBUG("Log Level: %d", (int)log_level);
|
||||
DEBUG("Options: %04hx", options);
|
||||
DEBUG("MYCALL: %s", mycall.data());
|
||||
DEBUG("Dedupe time (secs): %d", (int)dedupe_seconds);
|
||||
DEBUG("Aliases:");
|
||||
TNC_DEBUG("Hardware Settings (size=%d):", sizeof(Hardware));
|
||||
TNC_DEBUG("TX Delay: %d", (int)txdelay);
|
||||
TNC_DEBUG("P* Persistence: %d", (int)ppersist);
|
||||
TNC_DEBUG("Slot Time: %d", (int)slot);
|
||||
TNC_DEBUG("TX Tail: %d", (int)txtail);
|
||||
TNC_DEBUG("Duplex: %d", (int)duplex);
|
||||
TNC_DEBUG("Modem Type: %s", modem_type_lookup[modem_type]);
|
||||
TNC_DEBUG("TX Gain: %d", (int)output_gain);
|
||||
TNC_DEBUG("RX Gain: %d", (int)input_gain);
|
||||
TNC_DEBUG("TX Twist: %d", (int)tx_twist);
|
||||
TNC_DEBUG("RX Twist: %d", (int)rx_twist);
|
||||
TNC_DEBUG("Log Level: %d", (int)log_level);
|
||||
TNC_DEBUG("Options: %04hx", options);
|
||||
TNC_DEBUG("MYCALL: %s", mycall.data());
|
||||
TNC_DEBUG("Dedupe time (secs): %d", (int)dedupe_seconds);
|
||||
TNC_DEBUG("Aliases:");
|
||||
for (auto& a : aliases) {
|
||||
if (!a.set) continue;
|
||||
DEBUG(" call: %s", a.call.data());
|
||||
DEBUG(" use: %d", (int)a.use);
|
||||
DEBUG(" insert: %d", (int)a.insert_id);
|
||||
DEBUG(" preempt: %d", (int)a.preempt);
|
||||
DEBUG(" hops: %d", (int)a.hops);
|
||||
TNC_DEBUG(" call: %s", a.call.data());
|
||||
TNC_DEBUG(" use: %d", (int)a.use);
|
||||
TNC_DEBUG(" insert: %d", (int)a.insert_id);
|
||||
TNC_DEBUG(" preempt: %d", (int)a.preempt);
|
||||
TNC_DEBUG(" hops: %d", (int)a.hops);
|
||||
}
|
||||
DEBUG("Beacons:");
|
||||
TNC_DEBUG("Beacons:");
|
||||
for (auto& b : this->beacons) {
|
||||
if (b.seconds == 0) continue;
|
||||
DEBUG(" dest: %s", b.dest.data());
|
||||
DEBUG(" path: %s", (char*)b.path);
|
||||
DEBUG(" text: %s", (char*)b.text);
|
||||
DEBUG(" frequency (secs): %d", (int)b.seconds);
|
||||
TNC_DEBUG(" dest: %s", b.dest.data());
|
||||
TNC_DEBUG(" path: %s", (char*)b.path);
|
||||
TNC_DEBUG(" text: %s", (char*)b.text);
|
||||
TNC_DEBUG(" frequency (secs): %d", (int)b.seconds);
|
||||
}
|
||||
DEBUG("Checksum: %04hx", checksum);
|
||||
TNC_DEBUG("Checksum: %04hx", checksum);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -139,7 +139,7 @@ struct M17Demodulator : IDemodulator
|
|||
uint32_t readBatteryLevel() override
|
||||
{
|
||||
#ifndef NUCLEOTNC
|
||||
DEBUG("enter M17Demodulator::readBatteryLevel");
|
||||
TNC_DEBUG("enter M17Demodulator::readBatteryLevel");
|
||||
|
||||
ADC_ChannelConfTypeDef sConfig;
|
||||
|
||||
|
@ -205,7 +205,7 @@ struct M17Demodulator : IDemodulator
|
|||
INFO("Vref = %lumV", vref)
|
||||
INFO("Vbat = %lumV", vbat);
|
||||
|
||||
DEBUG("exit M17Demodulator::readBatteryLevel");
|
||||
TNC_DEBUG("exit M17Demodulator::readBatteryLevel");
|
||||
return vbat;
|
||||
#else
|
||||
return 0;
|
||||
|
|
|
@ -52,11 +52,11 @@ void log_frame(mobilinkd::tnc::hdlc::IoFrame* frame)
|
|||
if (isprint(int(c))) pos += sprintf((char*)tmpBuffer2 + pos, " %c ", c);
|
||||
else pos += sprintf((char*)tmpBuffer2 + pos, "/%02x", c);
|
||||
if (pos > 80) {
|
||||
DEBUG((char*)tmpBuffer2);
|
||||
TNC_DEBUG((char*)tmpBuffer2);
|
||||
pos = 0;
|
||||
}
|
||||
}
|
||||
DEBUG((char*)tmpBuffer2);
|
||||
TNC_DEBUG((char*)tmpBuffer2);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -569,7 +569,7 @@ bool SerialPort::write(hdlc::IoFrame* frame, uint32_t timeout)
|
|||
osMutexRelease(mutex_);
|
||||
hdlc::release(frame);
|
||||
|
||||
DEBUG("SerialPort::write COMPLETE");
|
||||
TNC_DEBUG("SerialPort::write COMPLETE");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -224,7 +224,7 @@ bool write_eeprom()
|
|||
ERROR("%s transmit data failed", __PRETTY_FUNCTION__);
|
||||
return false;
|
||||
} else {
|
||||
DEBUG("%s transmit succeeded %d bytes at 0x%02X%02X",
|
||||
TNC_DEBUG("%s transmit succeeded %d bytes at 0x%02X%02X",
|
||||
__FUNCTION__, cmd[6], cmd[4], cmd[5]);
|
||||
}
|
||||
|
||||
|
@ -486,7 +486,7 @@ void bm78_wait_until_ready()
|
|||
HAL_Delay(100);
|
||||
bt_state2 = HAL_GPIO_ReadPin(BT_STATE2_GPIO_Port, BT_STATE2_Pin);
|
||||
bt_state1 = HAL_GPIO_ReadPin(BT_STATE1_GPIO_Port, BT_STATE1_Pin);
|
||||
DEBUG("bt_state2=%d, bt_state1=%d", bt_state2, bt_state1);
|
||||
TNC_DEBUG("bt_state2=%d, bt_state1=%d", bt_state2, bt_state1);
|
||||
} while (!((bt_state2 == GPIO_PIN_SET) and (bt_state1 == GPIO_PIN_RESET)));
|
||||
}
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue