Browse Source

first working (kind of) vario meter.

Still some problem of understanding with itoa and friends.
fertito
Marc 12 years ago
parent
commit
119a728287
  1. 10
      driver/timer.c
  2. 4
      ezchronos.c
  3. 19
      logic/menu.c
  4. 4
      logic/menu.h
  5. 173
      logic/vario.c
  6. 78
      logic/vario.h
  7. 2
      makefile
  8. 5
      tools/config.py

10
driver/timer.c

@ -60,8 +60,13 @@
#include "rfsimpliciti.h"
#include "simpliciti.h"
#include "acceleration.h"
#include "prout.h"
#ifdef CONFIG_VARIO
#include "vario.h"
#endif
//pfs
#ifndef ELIMINATE_BLUEROBIN
#include "bluerobin.h"
@ -334,6 +339,11 @@ __interrupt void TIMER0_A0_ISR(void)
#ifdef CONFIG_PROUT
if (is_prout()) prout_tick();
#endif
#ifdef CONFIG_VARIO
if(is_vario()) vario_tick();
#endif
// Do a temperature measurement each second while menu item is active
if (is_temp_measurement()) request.flag.temperature_measurement = 1;

4
ezchronos.c

@ -385,6 +385,10 @@ void init_global_variables(void)
reset_prout();
#endif
#ifdef CONFIG_VARIO
reset_vario();
#endif
#ifdef CONFIG_PHASE_CLOCK
// default program
sPhase.program = 0;

19
logic/menu.c

@ -75,6 +75,10 @@
#include "prout.h"
#endif
#ifdef CONFIG_VARIO
#include "vario.h"
#endif
// *************************************************************************************************
// Defines section
#define FUNCTION(function) function
@ -215,8 +219,23 @@ const struct menu menu_L2_Date =
FUNCTION(mx_date), // sub menu function
FUNCTION(display_date), // display function
FUNCTION(update_date), // new display data
#ifndef CONFIG_VARIO
&menu_L2_Stopwatch,
};
#else
&menu_L2_Vario,
};
//Line 2 - Vario
const struct menu menu_L2_Vario =
{
FUNCTION(sx_vario), // direct function
FUNCTION(mx_vario), // sub menu function
FUNCTION(display_vario), // display function
FUNCTION(update_vario), // new display data
&menu_L2_Stopwatch,
};
#endif
// Line2 - Stopwatch
const struct menu menu_L2_Stopwatch =
{

4
logic/menu.h

@ -97,6 +97,10 @@ extern const struct menu menu_L2_RFBSL;
#ifdef CONFIG_PROUT
extern const struct menu menu_L2_Prout;
#endif
#ifdef CONFIG_VARIO
extern const struct menu menu_L2_Vario;
#endif
// Pointers to current menu item
extern const struct menu * ptrMenu_L1;
extern const struct menu * ptrMenu_L2;

173
logic/vario.c

@ -0,0 +1,173 @@
/*
Vario function for ez430 chronos watch.
Copyright (C) 2010 Marc Poulhiès <dkm@kataplop.net>
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 <http://www.gnu.org/licenses/>.
*/
// *************************************************************************************************
//
// Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
//
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the
// distribution.
//
// Neither the name of Texas Instruments Incorporated nor the names of
// its contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
#include "project.h"
#ifdef CONFIG_VARIO
// driver
#include "altitude.h"
#include "display.h"
#include "vti_ps.h"
#include "ports.h"
#include "timer.h"
#include "stopwatch.h"
// logic
#include "user.h"
#include "vario.h"
#include "menu.h"
struct vario svario;
/**
* called every sec
*/
void vario_tick()
{
if (is_altitude_measurement()){
svario.previous_alt = svario.current_alt;
svario.current_alt = sAlt.altitude;
}
display_vario(0, 0);
}
u8 is_vario(void)
{
return (svario.state == VARIO_RUN && (ptrMenu_L2 == &menu_L2_Vario));
}
void update_vario()
{
}
void start_vario()
{
svario.state = VARIO_RUN;
display_symbol(LCD_ICON_HEART, SEG_ON_BLINK_ON);
}
void stop_vario()
{
svario.state = VARIO_STOP;
display_symbol(LCD_ICON_HEART, SEG_OFF);
// Call draw routine immediately
display_vario(LINE2, DISPLAY_LINE_UPDATE_FULL);
}
void sx_vario(u8 line)
{
if (button.flag.down)
{
if (svario.state == VARIO_STOP){
start_vario();
} else {
stop_vario();
}
}
}
void mx_vario(u8 line)
{
}
void display_vario(u8 line, u8 update)
{
if (svario.state != VARIO_RUN) {
display_chars(LCD_SEG_L2_5_0, (u8*) " idle", SEG_ON);
return;
}
if (is_altitude_measurement()){
u8 *str;
s16 diff = svario.current_alt - svario.previous_alt;
u8 is_neg = 0;
u8 i;
if (diff < 0){
is_neg = 1;
diff = diff*(-1);
}
str = itoa(diff, 3, 7);
for (i=0; i<7; i++){
if (str[i] == '0' || str[i] == ' '){
if (is_neg)
str[i] = '-';
else
str[i] = ' ';
} else {
break;
}
}
display_chars(LCD_SEG_L2_5_0, str, SEG_ON);
} else {
display_chars(LCD_SEG_L2_5_0, (u8*) " NOALT", SEG_ON);
// display_chars(LCD_SEG_L2_5_0, cur, SEG_ON);
}
}
void reset_vario(void)
{
svario.state = VARIO_STOP;
svario.previous_alt = 0;
}
#endif /* CONFIG_VARIO */

78
logic/vario.h

@ -0,0 +1,78 @@
/*
Vario function for ez430 chronos watch.
Copyright (C) 2010 Marc Poulhiès <dkm@kataplop.net>
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 <http://www.gnu.org/licenses/>.
*/
// *************************************************************************************************
//
// Copyright (C) 2009 Texas Instruments Incorporated - http://www.ti.com/
//
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
//
// Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
//
// Redistributions in binary form must reproduce the above copyright
// notice, this list of conditions and the following disclaimer in the
// documentation and/or other materials provided with the
// distribution.
//
// Neither the name of Texas Instruments Incorporated nor the names of
// its contributors may be used to endorse or promote products derived
// from this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
#ifndef VARIO_H_
#define VARIO_H_
// menu functions
extern void sx_vario(u8 line);
extern void mx_vario(u8 line);
extern void display_vario(u8 line, u8 update);
extern void reset_vario(void);
extern void vario_tick(void);
extern void update_vario(void);
extern u8 is_vario(void);
#define VARIO_STOP (0u)
#define VARIO_RUN (1u)
struct vario
{
u8 state;
u8 previous_alt;
u8 current_alt;
};
extern struct vario svario;
#endif

2
makefile

@ -19,7 +19,7 @@ CC_INCLUDE = -I$(PROJ_DIR)/ -I$(PROJ_DIR)/include/ -I$(PROJ_DIR)/gcc/ -I$(PROJ_D
CC_COPT = $(CC_CMACH) $(CC_DMACH) $(CC_DOPT) $(CC_INCLUDE)
LOGIC_SOURCE = logic/acceleration.c logic/alarm.c logic/altitude.c logic/battery.c logic/clock.c logic/date.c logic/menu.c logic/rfbsl.c logic/rfsimpliciti.c logic/stopwatch.c logic/temperature.c logic/test.c logic/user.c logic/phase_clock.c logic/eggtimer.c logic/prout.c
LOGIC_SOURCE = logic/acceleration.c logic/alarm.c logic/altitude.c logic/battery.c logic/clock.c logic/date.c logic/menu.c logic/rfbsl.c logic/rfsimpliciti.c logic/stopwatch.c logic/temperature.c logic/test.c logic/user.c logic/phase_clock.c logic/eggtimer.c logic/prout.c logic/vario.c
LOGIC_O = $(addsuffix .o,$(basename $(LOGIC_SOURCE)))

5
tools/config.py

@ -85,6 +85,11 @@ DATA["CONFIG_PHASE_CLOCK"] = {
"default": False}
DATA["CONFIG_VARIO"] = {
"name": "Combined with alti, gives vertical speed",
"depends": [],
"default": False}
DATA["CONFIG_PROUT"] = {
"name": "Simple example that displays a text",
"depends": [],

Loading…
Cancel
Save