diff --git a/platform/mcu/MK22FN512xxx12/drivers/rtc.c b/platform/mcu/MK22FN512xxx12/drivers/rtc.c new file mode 100644 index 00000000..83a78312 --- /dev/null +++ b/platform/mcu/MK22FN512xxx12/drivers/rtc.c @@ -0,0 +1,72 @@ +/*************************************************************************** + * Copyright (C) 2020 by Federico Amedeo Izzo IU2NUO, * + * Niccolò Izzo IU2KIN * + * Frederik Saraci IU2NRO * + * Silvano Seva IU2KWO * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 3 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, see * + ***************************************************************************/ + +#include +#include "rtc.h" + +/* + * NOTE: even if the MK22FN512 MCU has an RTC, it is unusable in GDx platforms + * because they lacks of the proper hardware necessary to run the RTC also when + * the MCU is powered off. + * We thus provide a stub implementation of the RTC API to avoid cluttering the + * main code with #ifdefs checking wheter or not the RTC can be actually used. + */ + +void rtc_init() { } + +void rtc_shutdown() { } + +void rtc_setTime(curTime_t t) +{ + (void) t; +} + +void rtc_setHour(uint8_t hours, uint8_t minutes, uint8_t seconds) +{ + (void) hours; + (void) minutes; + (void) seconds; +} + +void rtc_setDate(uint8_t date, uint8_t month, uint8_t year) +{ + (void) date; + (void) month; + (void) year; +} + +curTime_t rtc_getTime() +{ + curTime_t t; + + t.hour = 12; + t.minute = 12; + t.second = 12; + t.year = 20; + t.day = 4; + t.month = 12; + t.date = 12; + + return t; +} + +void rtc_dstSet() { } + +void rtc_dstClear() { } diff --git a/platform/targets/GD77/hwconfig.h b/platform/targets/GD77/hwconfig.h index f2cf591c..21c1dee7 100644 --- a/platform/targets/GD77/hwconfig.h +++ b/platform/targets/GD77/hwconfig.h @@ -23,10 +23,6 @@ #include "MK22F51212.h" -/* Signalling LEDs */ -#define GREEN_LED GPIOB,18 -#define RED_LED GPIOC,14 - /* Screen dimensions */ #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 @@ -42,6 +38,10 @@ #define LCD_CLK GPIOC,11 #define LCD_DAT GPIOC,12 +/* Signalling LEDs */ +#define GREEN_LED GPIOB,18 +#define RED_LED GPIOC,14 + /* Keyboard */ #define KB_ROW0 GPIOB,19 #define KB_ROW1 GPIOB,20 diff --git a/platform/targets/GD77/platform.c b/platform/targets/GD77/platform.c index 73ea952b..0b7fda89 100644 --- a/platform/targets/GD77/platform.c +++ b/platform/targets/GD77/platform.c @@ -21,35 +21,24 @@ #include #include #include "hwconfig.h" -#include "rtc.h" - -curTime_t rtc_getTime() -{ - /* TODO */ - curTime_t t; - t.hour = 12; - t.minute = 12; - t.second = 12; - t.year = 20; - t.day = 4; - t.month = 12; - t.date = 12; - return t; -} void platform_init() { /* Configure GPIOs */ gpio_setMode(GREEN_LED, OUTPUT); - gpio_setMode(RED_LED, OUTPUT); + gpio_setMode(RED_LED, OUTPUT); gpio_setMode(LCD_BKLIGHT, OUTPUT); gpio_clearPin(LCD_BKLIGHT); + + gpio_setMode(PTT_SW, INPUT); } void platform_terminate() { - /* TODO */ + gpio_clearPin(LCD_BKLIGHT); + gpio_clearPin(RED_LED); + gpio_clearPin(GREEN_LED); } float platform_getVbat() @@ -72,14 +61,14 @@ float platform_getVolumeLevel() uint8_t platform_getChSelector() { - /* TODO */ + /* GD77 does not have a channel selector */ return 0; } bool platform_getPttStatus() { - /* TODO */ - return false; + /* PTT line has a pullup resistor with PTT switch closing to ground */ + return (gpio_readPin(PTT_SW) == 0) ? true : false; } void platform_ledOn(led_t led) @@ -119,6 +108,7 @@ void platform_ledOff(led_t led) void platform_beepStart(uint16_t freq) { /* TODO */ + (void) freq; } @@ -129,7 +119,7 @@ void platform_beepStop() void platform_setBacklightLevel(uint8_t level) { - /* TODO */ + /* TODO: backlight dimming */ if(level > 1) { gpio_setPin(LCD_BKLIGHT);