[ACT] Simu is back

This commit is contained in:
bsongis
2013-01-11 08:01:55 +00:00
parent 5a5c9828d5
commit 45458792bc
15 changed files with 190 additions and 36 deletions
+4 -4
View File
@@ -471,13 +471,13 @@ RUN_FROM_FLASH = 1
ifeq ($(PCB), ACT)
# ACT radio
OPT = 2
CPPDEFS += -DPCBACT -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD260 -DSTM32F10X_HD
CPPDEFS += -DPCBACT -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD=260 -DSTM32F10X_HD
EXTRAINCDIRS += sky9x CoOS/kernel CoOS/portable
EXTRAINCDIRS += act/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/STM32F10x_StdPeriph_Driver/inc act/STM32F10x_StdPeriph_Lib_V3.5.0/Libraries/CMSIS/CM3/DeviceSupport/ST/STM32F10x
BOARDSRC = x9d/board_x9d.cpp
BOARDSRC = act/board_act.cpp
EXTRABOARDSRC += x9d/lcd_driver.cpp
SRC += CoOS/kernel/core.c CoOS/kernel/hook.c CoOS/kernel/task.c CoOS/kernel/event.c CoOS/kernel/time.c CoOS/kernel/timer.c CoOS/kernel/flag.c CoOS/kernel/mutex.c CoOS/kernel/serviceReq.c CoOS/portable/GCC/port.c CoOS/portable/arch.c
EEPROMSRC = eeprom_arm.cpp eeprom_conversions.cpp
EEPROMSRC = eeprom_avr.cpp # TODO later eeprom_conversions.cpp
CPPSRC += x9d/eeprom_driver.cpp x9d/pulses_driver.cpp act/keys_driver.cpp x9d/audio_driver.cpp
CPPSRC += sky9x/audio.cpp
PULSESSRC = pulses_arm.cpp
@@ -487,7 +487,7 @@ endif
ifeq ($(PCB), X9D)
# X9D radio
OPT = 2
CPPDEFS += -DPCBX9D -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD212
CPPDEFS += -DPCBX9D -DCPUARM -DEEPROM_VARIANT=0 -DAUDIO -DPXX -DDSM2 -DDSM2_PPM -DROTARY_ENCODERS=1 -DLCD=212
EXTRAINCDIRS += sky9x CoOS/kernel CoOS/portable
EXTRAINCDIRS += x9d/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/STM32F2xx_StdPeriph_Driver/inc x9d/STM32F2xx_StdPeriph_Lib_V1.1.0/Libraries/CMSIS/Device/ST/STM32F2xx/Include
BOARDSRC = x9d/board_x9d.cpp
+124
View File
@@ -0,0 +1,124 @@
/*
* Authors (alphabetical order)
* - Bertrand Songis <bsongis@gmail.com>
* - Bryan J. Rentoul (Gruvin) <gruvin@gmail.com>
* - Cameron Weeks <th9xer@gmail.com>
* - Erez Raviv
* - Jean-Pierre Parisy
* - Karl Szmutny <shadow@privy.de>
* - Michael Blandford
* - Michal Hlavinka
* - Pat Mackenzie
* - Philip Moss
* - Rob Thomson
* - Romolo Manfredini <romolo.manfredini@gmail.com>
* - Thomas Husterer
*
* open9x is based on code named
* gruvin9x by Bryan J. Rentoul: http://code.google.com/p/gruvin9x/,
* er9x by Erez Raviv: http://code.google.com/p/er9x/,
* and the original (and ongoing) project by
* Thomas Husterer, th9x: http://code.google.com/p/th9x/
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 as
* published by the Free Software Foundation.
*
* 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.
*
*/
#include "../open9x.h"
// TODO needed?
uint8_t temperature = 0; // Raw temp reading
uint8_t maxTemperature = 0 ; // Raw temp reading
volatile uint32_t Tenms ; // TODO to remove everywhere / use a #define
uint8_t getTemperature()
{
return temperature + g_eeGeneral.temperatureCalib;
}
void start_ppm_capture()
{
}
void usbBootloader()
{
}
void usbMassStorage()
{
}
// Starts TIMER at 200Hz, 5mS period
void init5msTimer()
{
/*
// Timer14
RCC->APB1ENR |= RCC_APB1ENR_TIM14EN ; // Enable clock
TIM14->ARR = 4999 ; // 5mS
TIM14->PSC = (PERI1_FREQUENCY * TIMER_MULT) / 1000000 - 1 ; // 1uS from 30MHz
TIM14->CCER = 0 ;
TIM14->CCMR1 = 0 ;
TIM14->EGR = 0 ;
TIM14->CR1 = 5 ;
TIM14->DIER |= 1 ;
NVIC_EnableIRQ(TIM8_TRG_COM_TIM14_IRQn) ;
*/
}
void stop5msTimer( void )
{
/*
TIM14->CR1 = 0 ; // stop timer
NVIC_DisableIRQ(TIM8_TRG_COM_TIM14_IRQn) ;
RCC->APB1ENR &= ~RCC_APB1ENR_TIM14EN ; // Disable clock
*/
}
// TODO use the same than board_sky9x.cpp
void interrupt5ms()
{
static uint32_t pre_scale ; // Used to get 10 Hz counter
// HAPTIC_HEARTBEAT();
// AUDIO_HEARTBEAT();
if ( ++pre_scale >= 2 ) {
/* if ( Buzzer_count ) {
if ( --Buzzer_count == 0 )
buzzer_off() ;
} */
pre_scale = 0 ;
per10ms();
}
}
extern "C" void TIM8_TRG_COM_TIM14_IRQHandler()
{
TIM14->SR &= ~TIM_SR_UIF ;
interrupt5ms() ;
}
#if !defined(SIMU)
void boardInit()
{
pwrInit();
keysInit();
adcInit();
delaysInit();
init5msTimer();
__enable_irq() ;
eepromInit();
}
#endif
+8 -1
View File
@@ -108,11 +108,18 @@ extern uint16_t sessionTimer;
#define wdt_reset()
#endif
uint32_t check_soft_power();
#define check_soft_power() e_power_on
#define setBacklight(xx)
#define __BACKLIGHT_ON
#define __BACKLIGHT_OFF
#define IS_BACKLIGHT_ON() (1)
#if !defined(SIMU)
#define eeprom_read_block(...)
#define eeWriteBlockCmp(...)
#else
void eeWriteBlockCmp(const void *pointer_ram, uint16_t pointer_eeprom, size_t size);
#endif
#endif
+7 -2
View File
@@ -78,12 +78,17 @@ void readKeysAndTrims()
++enuk;
}
in = readTrims();
/* in = readTrims();
for (i = 1; i < 256; i <<= 1) {
keys[enuk].input(in & i, (EnumKeys) enuk);
++enuk;
}
} */
}
uint32_t keyState(EnumKeys enuk)
{
return 0;
}
#if !defined(SIMU)
+2 -2
View File
@@ -112,7 +112,7 @@ void eeWriteBlockCmp(const void *i_pointer_ram, uint16_t i_pointer_eeprom, size_
static uint8_t EeFsRead(blkid_t blk, uint8_t ofs)
{
uint8_t ret;
#if defined(PCBX9D)
#if defined(CPUARM)
eeprom_read_block(&ret, (uint16_t)(blk*BS+ofs+BLOCKS_OFFSET), 1);
#elif defined(SIMU)
eeprom_read_block(&ret, (const void*)(uint64_t)(blk*BS+ofs+BLOCKS_OFFSET), 1);
@@ -915,7 +915,7 @@ void eeLoadModel(uint8_t id)
FRSKY_setModelAlarms();
#endif
#if defined(PCBX9D) && defined(SDCARD)
#if defined(CPUARM) && defined(SDCARD)
refreshModelAudioFiles();
#endif
+1 -1
View File
@@ -40,7 +40,7 @@
#define xcoord_t uint16_t
#define CENTER "\015"
#define CENTER_OFS (7*FW-FW/2)
#elif defined(LCD212)
#elif LCD >= 212
#define DISPLAY_W 212
#define DISPLAY_H 64
#define xcoord_t uint16_t
+3 -3
View File
@@ -33,7 +33,7 @@
#include "open9x.h"
#if defined(LCD212) || defined(LCD260)
#if LCD >= 212
#define BOX_WIDTH 31
#define LBOX_CENTERX (BOX_WIDTH/2 + 17)
#define LBOX_CENTERY (DISPLAY_H-BOX_WIDTH/2-10)
@@ -174,7 +174,7 @@ void displaySliders()
}
#endif
#if defined(LCD212)
#if LCD >= 212
void displayTimers()
{
// Main timer
@@ -392,7 +392,7 @@ void menuMainView(uint8_t event)
s_gvar_timer = 0;
}
#endif
#if !defined(LCD212) && !defined(LCD260)
#if LCD < 212
else if (view == VIEW_TIMER2) {
resetTimer(1);
}
+3 -3
View File
@@ -63,7 +63,7 @@ void displayScreenIndex(uint8_t index, uint8_t count, uint8_t attr)
}
#if !defined(PCBSTD)
void displayScrollbar(uint8_t x, uint8_t y, uint8_t h, uint16_t offset, uint16_t count, uint8_t visible)
void displayScrollbar(xcoord_t x, uint8_t y, uint8_t h, uint16_t offset, uint16_t count, uint8_t visible)
{
lcd_vlineStip(x, y, h, SOLID, ERASE);
lcd_vlineStip(x, y, h, DOTTED);
@@ -389,7 +389,7 @@ bool check(check_event_t event, uint8_t curr, const MenuFuncP *menuTab, uint8_t
s_noScroll = 0;
displayScreenIndex(curr, menuTabSize, attr);
#if defined(LCD212)
#if LCD >= 212
if (maxrow > 7)
displayScrollbar(DISPLAY_W-1, FH, DISPLAY_H-FH, s_pgOfs, maxrow, 7);
#endif
@@ -726,7 +726,7 @@ int8_t gvarMenuItem(uint8_t x, uint8_t y, int8_t value, int8_t min, int8_t max,
}
#endif
#if defined(LCD212)
#if LCD >= 212
#define MENU_X 30
#define MENU_W DISPLAY_W-60
#else
+1 -1
View File
@@ -47,7 +47,7 @@ typedef void (*MenuFuncP)(uint8_t event);
void displayScreenIndex(uint8_t index, uint8_t count, uint8_t attr);
#if defined(LCD212)
#if LCD >= 212
#define MENUS_SCROLLBAR_WIDTH 2
#else
#define MENUS_SCROLLBAR_WIDTH 0
+9 -9
View File
@@ -646,7 +646,7 @@ enum menuModelSetupItems {
#define FIELD_TIMER_MAX 2
#endif
#if defined(LCD212)
#if LCD >= 212
#define MODEL_SETUP_2ND_COLUMN (DISPLAY_W-17*FW-MENUS_SCROLLBAR_WIDTH)
#else
#define MODEL_SETUP_2ND_COLUMN (DISPLAY_W-11*FW-MENUS_SCROLLBAR_WIDTH)
@@ -961,7 +961,7 @@ static uint8_t s_currIdx;
#define MIXES_2ND_COLUMN (11*FW)
#endif
#if defined(LCD212)
#if LCD >= 212
#define EXPO_ONE_2ND_COLUMN (DISPLAY_W - 88)
#define EXPO_ONE_FP_WIDTH (9*FW)
#else
@@ -991,12 +991,12 @@ PhasesType editPhases(uint8_t x, uint8_t y, uint8_t event, PhasesType value, uin
uint8_t posHorz = m_posHorz;
#if defined(CPUARM) && !defined(LCD212)
#if defined(CPUARM) && LCD < 212
bool expoMenu = (x==EXPO_ONE_2ND_COLUMN-2*FW);
#endif
for (uint8_t p=0; p<MAX_PHASES; p++) {
#if defined(CPUARM) && !defined(LCD212)
#if defined(CPUARM) && LCD < 212
if (expoMenu && ((attr && p < posHorz-4) || (x > EXPO_ONE_2ND_COLUMN+2*FW)))
continue;
#endif
@@ -1260,7 +1260,7 @@ void menuModelPhasesAll(uint8_t event)
}
#endif
}
#if defined(LCD212)
#if LCD >= 212
if (p->fadeIn || p->fadeOut) {
lcd_outdezAtt(24*FW, y, 5*p->fadeIn, PREC1|LEFT);
lcd_putc(lcdLastPos, y, '/');
@@ -2173,7 +2173,7 @@ void menuModelExpoMix(uint8_t expo, uint8_t event)
putsSwitches(11*FW, y, ed->swtch, 0);
lcd_putsnAtt(DISPLAY_W-sizeof(ed->name)*FW-MENUS_SCROLLBAR_WIDTH, y, ed->name, sizeof(ed->name), ZCHAR | (isExpoActive(i) ? BOLD : 0));
}
#if !defined(LCD212)
#if LCD < 212
else
#endif
#endif
@@ -2194,7 +2194,7 @@ void menuModelExpoMix(uint8_t expo, uint8_t event)
if (md->name[0]) {
lcd_putsnAtt(DISPLAY_W-sizeof(md->name)*FW-MENUS_SCROLLBAR_WIDTH, y, md->name, sizeof(md->name), ZCHAR | (isMixActive(i) ? BOLD : 0));
}
#if !defined(LCD212)
#if LCD < 212
else
#endif
#endif
@@ -2377,7 +2377,7 @@ void menuModelLimits(uint8_t event)
LimitData *ld = limitaddress(k) ;
#if defined(LCD212) || !defined(PPM_CENTER_ADJUSTABLE)
#if LCD >= 212 || !defined(PPM_CENTER_ADJUSTABLE)
int16_t v = (ld->revert) ? -ld->offset : ld->offset;
char swVal = '-'; // '-', '<', '>'
if((g_chans512[k] - v) > 50) swVal = (ld->revert ? 127 : 126); // Switch to raw inputs? - remove trim!
@@ -2442,7 +2442,7 @@ void menuModelLimits(uint8_t event)
if (active) ld->max = -100 + checkIncDecModel(event, ld->max+100, -25, limit);
break;
case ITEM_LIMITS_DIRECTION:
#if defined(PPM_CENTER_ADJUSTABLE) && !defined(LCD212)
#if defined(PPM_CENTER_ADJUSTABLE) && LCD < 212
lcd_putcAtt(LIMITS_REVERT_POS, y, ld->revert ? 127 : 126, attr);
#else
lcd_putsiAtt(LIMITS_REVERT_POS, y, STR_MMMINV, ld->revert, attr);
+1 -1
View File
@@ -80,7 +80,7 @@ PACK(typedef struct t_FrSkyRSSIAlarm {
int8_t value:6;
}) FrSkyRSSIAlarm;
#if defined(LCD212) || defined(LCD260)
#if LCD >= 212 || defined(LCD260)
enum MainViews {
VIEW_INPUTS,
VIEW_SWITCHES,
+1 -1
View File
@@ -1393,7 +1393,7 @@ void message(const pm_char *title, const pm_char *t, const char *last MESSAGE_SO
{
lcd_clear();
#if defined(LCD212)
#if LCD >= 212
lcd_img(DISPLAY_W-29, 0, asterisk_lbm, 0, 0);
#endif
#if !defined(CPUM64) || defined(EXTSTD)
+7 -6
View File
@@ -97,7 +97,8 @@ sem_t *eeprom_write_sem;
void setSwitch(int8_t swtch)
{
switch (swtch) {
#if defined(PCBX9D) || defined(PCBACT)
#if defined(PCBACT)
#elif defined(PCBX9D)
case DSW(SW_SA0):
GPIOE->IDR |= PIN_SW_A_L;
GPIOB->IDR &= ~PIN_SW_A_H;
@@ -259,7 +260,7 @@ uint16_t getTmr16KHz()
return get_tmr10ms() * 160;
}
#if !defined(PCBX9D)
#if !defined(PCBX9D) && !defined(PCBACT)
bool eeprom_thread_running = true;
void *eeprom_write_function(void *)
{
@@ -390,7 +391,7 @@ void StartEepromThread(const char *filename)
sem_init(eeprom_write_sem, 0, 0);
#endif
#if !defined(PCBX9D)
#if !defined(PCBX9D) && !defined(PCBACT)
eeprom_thread_running = true;
assert(!pthread_create(&eeprom_thread_pid, NULL, &eeprom_write_function, NULL));
#endif
@@ -398,14 +399,14 @@ void StartEepromThread(const char *filename)
void StopEepromThread()
{
#if !defined(PCBX9D)
#if !defined(PCBX9D) && !defined(PCBACT)
eeprom_thread_running = false;
sem_post(eeprom_write_sem);
pthread_join(eeprom_thread_pid, NULL);
#endif
}
#if defined(PCBX9D)
#if defined(PCBX9D) || defined(PCBACT)
void eeprom_read_block (void *pointer_ram, uint16_t pointer_eeprom, size_t size)
#else
void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t size)
@@ -423,7 +424,7 @@ void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t si
}
}
#if defined(PCBX9D)
#if defined(PCBX9D) || defined(PCBACT)
void eeWriteBlockCmp(const void *pointer_ram, uint16_t pointer_eeprom, size_t size)
{
assert(size);
+1 -1
View File
@@ -317,7 +317,7 @@ void StartMainThread(bool tests=true);
void StartEepromThread(const char *filename="eeprom.bin");
extern const char *eepromFile;
#if defined(PCBX9D)
#if defined(PCBX9D) || defined(PCBACT)
void eeprom_read_block (void *pointer_ram, uint16_t pointer_eeprom, size_t size);
#else
void eeprom_read_block (void *pointer_ram, const void *pointer_eeprom, size_t size);
+18 -1
View File
@@ -49,7 +49,24 @@
int g_snapshot_idx = 0;
uint64_t toto = 0;
#if defined(PCBX9D) || defined(PCBACT)
#if defined(PCBACT)
#define ERSKY9X_RETURN_PIO GPIOC->IDR
#define ERSKY9X_RETURN_MASK 0x00000020
#define ERSKY9X_EXIT_PIO GPIOC->IDR
#define ERSKY9X_EXIT_MASK 0x01000000
#define ERSKY9X_UP_PIO GPIOC->IDR
#define ERSKY9X_UP_MASK 0x00
#define ERSKY9X_DOWN_PIO GPIOC->IDR
#define ERSKY9X_DOWN_MASK 0x00
#define ERSKY9X_RIGHT_PIO GPIOC->IDR
#define ERSKY9X_RIGHT_MASK 0x00000010
#define ERSKY9X_LEFT_PIO GPIOC->IDR
#define ERSKY9X_LEFT_MASK 0x00000008
#define KEY_MENU_PIO GPIOC->IDR
#define KEY_MENU_MASK 0x00000002
#define KEY_PAGE_PIO GPIOC->IDR
#define KEY_PAGE_MASK 0x00000040
#elif defined(PCBX9D)
#define ERSKY9X_RETURN_PIO GPIOE->IDR
#define ERSKY9X_RETURN_MASK PIN_BUTTON_ENTER
#define ERSKY9X_EXIT_PIO GPIOD->IDR