aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2017-05-11 16:51:57 +0200
committerHarald Welte <laforge@gnumonks.org>2017-05-20 14:46:57 +0100
commitc47fc5febf54347e7696b9c512ceb1a6f30fe331 (patch)
treee1c9070a90246f3e6995eb5b695c70cd11df2510
parent02d0ec6e08d9abb0fbdce0b44d865130aa963cb2 (diff)
set local slot LED according to remote/local state.
The LED is illuminated as long as the slot is in local (physical SIM card) mode.
-rw-r--r--firmware/libboard/common/source/sim_switch.c6
-rw-r--r--firmware/libboard/qmod/include/board.h3
-rw-r--r--firmware/libcommon/source/mode_cardemu.c3
3 files changed, 12 insertions, 0 deletions
diff --git a/firmware/libboard/common/source/sim_switch.c b/firmware/libboard/common/source/sim_switch.c
index 8ed16ac..5e5c9cc 100644
--- a/firmware/libboard/common/source/sim_switch.c
+++ b/firmware/libboard/common/source/sim_switch.c
@@ -2,6 +2,7 @@
#include "board.h"
#include "trace.h"
+#include "led.h"
#include "sim_switch.h"
#ifdef PIN_SIM_SWITCH1
@@ -16,6 +17,7 @@ static int initialized = 0;
int sim_switch_use_physical(unsigned int nr, int physical)
{
const Pin *pin;
+ enum led led;
if (!initialized) {
TRACE_ERROR("Somebody forgot to call sim_switch_init()\r\n");
@@ -29,11 +31,13 @@ int sim_switch_use_physical(unsigned int nr, int physical)
#ifdef PIN_SIM_SWITCH1
case 0:
pin = &pin_conn_usim1;
+ led = LED_USIM1;
break;
#endif
#ifdef PIN_SIM_SWITCH2
case 1:
pin = &pin_conn_usim2;
+ led = LED_USIM2;
break;
#endif
default:
@@ -44,9 +48,11 @@ int sim_switch_use_physical(unsigned int nr, int physical)
if (physical) {
TRACE_INFO("%u: Use local/physical SIM\r\n", nr);
PIO_Clear(pin);
+ led_blink(led, BLINK_ALWAYS_ON);
} else {
TRACE_INFO("%u: Use remote/emulated SIM\r\n", nr);
PIO_Set(pin);
+ led_blink(led, BLINK_ALWAYS_OFF);
}
return 0;
diff --git a/firmware/libboard/qmod/include/board.h b/firmware/libboard/qmod/include/board.h
index d49ff9d..b8af8d8 100644
--- a/firmware/libboard/qmod/include/board.h
+++ b/firmware/libboard/qmod/include/board.h
@@ -1,6 +1,9 @@
#pragma once
#include "board_common.h"
+#define LED_USIM1 LED_GREEN
+#define LED_USIM2 LED_RED
+
/** Name of the board */
#define BOARD_NAME "QMOD"
/** Board definition */
diff --git a/firmware/libcommon/source/mode_cardemu.c b/firmware/libcommon/source/mode_cardemu.c
index 16fd224..17039e1 100644
--- a/firmware/libcommon/source/mode_cardemu.c
+++ b/firmware/libcommon/source/mode_cardemu.c
@@ -399,6 +399,7 @@ void mode_cardemu_init(void)
PIO_EnableIt(&pin_usim1_vcc);
#endif /* DETECT_VCC_BY_ADC */
cardem_inst[0].ch = card_emu_init(0, 2, 0, PHONE_DATAIN, PHONE_INT);
+ sim_switch_use_physical(0, 1);
#ifdef CARDEMU_SECOND_UART
INIT_LLIST_HEAD(&cardem_inst[1].usb_out_queue);
@@ -413,7 +414,9 @@ void mode_cardemu_init(void)
PIO_EnableIt(&pin_usim2_vcc);
#endif /* DETECT_VCC_BY_ADC */
cardem_inst[1].ch = card_emu_init(1, 0, 1, CARDEM_USIM2_DATAIN, CARDEM_USIM2_INT);
+ sim_switch_use_physical(1, 1);
#endif /* CARDEMU_SECOND_UART */
+
}
/* called if config is deactivated */