diff --git a/conf/gcs/solar.xml b/conf/gcs/solar.xml new file mode 100644 index 0000000000..17de1ebbf7 --- /dev/null +++ b/conf/gcs/solar.xml @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sw/airborne/modules/MPPT/MPPT.c b/sw/airborne/modules/MPPT/MPPT.c index ba796c5c88..782a5fb212 100644 --- a/sw/airborne/modules/MPPT/MPPT.c +++ b/sw/airborne/modules/MPPT/MPPT.c @@ -30,9 +30,8 @@ #define MPPT_SLAVE_ADDR 0x40 -#define NB_DATA 8 +#define NB_I2C_DATA 8 #define MPPT_MODE_ADDR 0xf -#define MPPT_IBAT_INDEX 1 /** 0: VBat (mV) @@ -43,6 +42,8 @@ 5: PSol (mW) 6: IConv (mA) 7: PConv (mW) + + 9: IBat + IConv */ @@ -67,7 +68,7 @@ static uint8_t MPPT_status; static uint8_t data_index = 0xff; -int16_t MPPT_data[NB_DATA]; +static int16_t MPPT_data[NB_DATA]; void MPPT_init( void ) { MPPT_mode = 0; @@ -79,11 +80,11 @@ void MPPT_init( void ) { static void MPPT_ask( void ) { data_index++; - if (data_index >= NB_DATA) { + if (data_index >= NB_I2C_DATA) { /* Setting the current value */ fbw_current_milliamp = MPPT_data[MPPT_IBAT_INDEX]; - + MPPT_data[MPPT_ITOTAL_INDEX] = MPPT_data[MPPT_IBAT_INDEX] + MPPT_data[MPPT_ICONV_INDEX]; DOWNLINK_SEND_MPPT(DefaultChannel, NB_DATA, MPPT_data); data_index = 0; } @@ -127,7 +128,7 @@ void MPPT_periodic( void ) { case MPPT_STATUS_READING: /* We got 2 bytes */ - if (data_index < NB_DATA) + if (data_index < NB_I2C_DATA) MPPT_data[data_index] = (i2c0_buf[0]<<8) | i2c0_buf[1]; MPPT_status = MPPT_STATUS_IDLE; break; diff --git a/sw/airborne/modules/MPPT/MPPT.h b/sw/airborne/modules/MPPT/MPPT.h index 2a5326256a..04f4c614b3 100644 --- a/sw/airborne/modules/MPPT/MPPT.h +++ b/sw/airborne/modules/MPPT/MPPT.h @@ -36,6 +36,11 @@ #define MPPT_MODE_PASSIVE 2 #define MPPT_MODE_ACTIVE 3 +#define NB_DATA 9 +#define MPPT_IBAT_INDEX 1 +#define MPPT_ICONV_INDEX 6 +#define MPPT_ITOTAL_INDEX 8 + extern uint8_t MPPT_mode; diff --git a/sw/airborne/modules/MPPT/sim_MPPT.c b/sw/airborne/modules/MPPT/sim_MPPT.c index 9639d68594..8a9297f2a4 100644 --- a/sw/airborne/modules/MPPT/sim_MPPT.c +++ b/sw/airborne/modules/MPPT/sim_MPPT.c @@ -24,9 +24,27 @@ #include "MPPT.h" +#ifndef DOWNLINK_DEVICE +#define DOWNLINK_DEVICE DOWNLINK_AP_DEVICE +#endif +#include "messages.h" +#include "downlink.h" + + + +uint8_t MPPT_mode; + +static int16_t MPPT_data[NB_DATA]; void MPPT_init( void ) { + uint8_t i = 0; + + for(i = 0; i < NB_DATA; i++) + MPPT_data[i] = 42 + i; } void MPPT_periodic( void ) { + MPPT_data[MPPT_ITOTAL_INDEX] = MPPT_data[MPPT_IBAT_INDEX] + MPPT_data[MPPT_ICONV_INDEX]; + + RunOnceEvery(8, DOWNLINK_SEND_MPPT(DefaultChannel, NB_DATA, MPPT_data)); }