1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-25 09:16:01 +03:00

Merge pull request #1130 from martinbudden/inav_pg34_beeperConfig

Added beeperConfig parameter group
This commit is contained in:
Martin Budden 2017-01-18 23:51:43 +00:00 committed by GitHub
commit c896ad4480
9 changed files with 47 additions and 32 deletions

View file

@ -40,7 +40,6 @@
#include "drivers/pwm_rx.h"
#include "drivers/accgyro.h"
#include "drivers/light_led.h"
#include "drivers/sound_beeper.h"
#include "drivers/gyro_sync.h"
#include "sensors/sensors.h"

View file

@ -52,9 +52,6 @@ typedef struct master_s {
profile_t profile[MAX_PROFILE_COUNT];
uint32_t beeper_off_flags;
uint32_t preferred_beeper_off_flags;
uint8_t magic_ef; // magic number, should be 0xEF
uint8_t chk; // XOR checksum
/*

View file

@ -84,6 +84,7 @@
#define PG_NAV_CONFIG 1002
#define PG_MODE_ACTIVATION_OPERATOR_CONFIG 1003
#define PG_OSD_CONFIG 1004
#define PG_BEEPER_CONFIG 1005
// OSD configuration (subject to change)
//#define PG_OSD_FONT_CONFIG 2047

View file

@ -49,7 +49,7 @@ void systemBeepToggle(void)
#endif
}
void beeperInit(const beeperConfig_t *config)
void beeperInit(const beeperDevConfig_t *config)
{
#ifndef BEEPER
UNUSED(config);

View file

@ -29,13 +29,13 @@
#define BEEP_ON do {} while(0)
#endif
typedef struct beeperConfig_s {
typedef struct beeperDevConfig_s {
ioTag_t ioTag;
unsigned isInverted : 1;
unsigned isOD : 1;
} beeperConfig_t;
} beeperDevConfig_t;
void systemBeep(bool on);
void systemBeepToggle(void);
void beeperInit(const beeperConfig_t *beeperConfig);
void beeperInit(const beeperDevConfig_t *beeperConfig);

View file

@ -92,14 +92,16 @@ PG_REGISTER(profileSelection_t, profileSelection, PG_PROFILE_SELECTION, 0);
PG_REGISTER_WITH_RESET_TEMPLATE(systemConfig_t, systemConfig, PG_SYSTEM_CONFIG, 0);
PG_RESET_TEMPLATE(systemConfig_t, systemConfig,
.debug_mode = DEBUG_NONE,
.i2c_overclock = 0,
.accTaskFrequency = ACC_TASK_FREQUENCY_DEFAULT,
.attitudeTaskFrequency = ATTITUDE_TASK_FREQUENCY_DEFAULT,
.asyncMode = ASYNC_MODE_NONE,
.throttle_tilt_compensation_strength = 0 // 0-100, 0 - disabled
.debug_mode = DEBUG_NONE,
.i2c_overclock = 0,
.accTaskFrequency = ACC_TASK_FREQUENCY_DEFAULT,
.attitudeTaskFrequency = ATTITUDE_TASK_FREQUENCY_DEFAULT,
.asyncMode = ASYNC_MODE_NONE,
.throttle_tilt_compensation_strength = 0 // 0-100, 0 - disabled
);
PG_REGISTER(beeperConfig_t, beeperConfig, PG_BEEPER_CONFIG, 0);
#ifdef NAV
void validateNavConfig(void)
{
@ -608,40 +610,40 @@ void changeProfile(uint8_t profileIndex)
void beeperOffSet(uint32_t mask)
{
masterConfig.beeper_off_flags |= mask;
beeperConfigMutable()->beeper_off_flags |= mask;
}
void beeperOffSetAll(uint8_t beeperCount)
{
masterConfig.beeper_off_flags = (1 << beeperCount) -1;
beeperConfigMutable()->beeper_off_flags = (1 << beeperCount) -1;
}
void beeperOffClear(uint32_t mask)
{
masterConfig.beeper_off_flags &= ~(mask);
beeperConfigMutable()->beeper_off_flags &= ~(mask);
}
void beeperOffClearAll(void)
{
masterConfig.beeper_off_flags = 0;
beeperConfigMutable()->beeper_off_flags = 0;
}
uint32_t getBeeperOffMask(void)
{
return masterConfig.beeper_off_flags;
return beeperConfig()->beeper_off_flags;
}
void setBeeperOffMask(uint32_t mask)
{
masterConfig.beeper_off_flags = mask;
beeperConfigMutable()->beeper_off_flags = mask;
}
uint32_t getPreferredBeeperOffMask(void)
{
return masterConfig.preferred_beeper_off_flags;
return beeperConfig()->preferred_beeper_off_flags;
}
void setPreferredBeeperOffMask(uint32_t mask)
{
masterConfig.preferred_beeper_off_flags = mask;
beeperConfigMutable()->preferred_beeper_off_flags = mask;
}

View file

@ -91,6 +91,13 @@ typedef struct systemConfig_s {
PG_DECLARE(systemConfig_t, systemConfig);
typedef struct beeperConfig_s {
uint32_t beeper_off_flags;
uint32_t preferred_beeper_off_flags;
} beeperConfig_t;
PG_DECLARE(beeperConfig_t, beeperConfig);
void beeperOffSet(uint32_t mask);
void beeperOffSetAll(uint8_t beeperCount);
void beeperOffClear(uint32_t mask);

View file

@ -339,7 +339,7 @@ void init(void)
systemState |= SYSTEM_STATE_MOTORS_READY;
#ifdef BEEPER
beeperConfig_t beeperConfig = {
beeperDevConfig_t beeperDevConfig = {
.ioTag = IO_TAG(BEEPER),
#ifdef BEEPER_INVERTED
.isOD = false,
@ -353,12 +353,12 @@ void init(void)
#if defined(NAZE) && defined(USE_HARDWARE_REVISION_DETECTION)
if (hardwareRevision >= NAZE32_REV5) {
// naze rev4 and below used opendrain to PNP for buzzer. Rev5 and above use PP to NPN.
beeperConfig.isOD = false;
beeperConfig.isInverted = true;
beeperDevConfig.isOD = false;
beeperDevConfig.isInverted = true;
}
#endif
beeperInit(&beeperConfig);
beeperInit(&beeperDevConfig);
#endif
#ifdef INVERTER

View file

@ -1151,6 +1151,9 @@ static ledStripConfig_t ledStripConfigCopy;
static osdConfig_t osdConfigCopy;
#endif
static systemConfig_t systemConfigCopy;
#ifdef BEEPER
static beeperConfig_t beeperConfigCopy;
#endif
static void backupConfigs(void)
{
@ -1223,6 +1226,9 @@ static void backupConfigs(void)
osdConfigCopy = *osdConfig();
#endif
systemConfigCopy = *systemConfig();
#ifdef BEEPER
beeperConfigCopy = *beeperConfig();
#endif
}
static void restoreConfigs(void)
@ -1295,6 +1301,9 @@ static void restoreConfigs(void)
*osdConfigMutable() = osdConfigCopy;
#endif
*systemConfigMutable() = systemConfigCopy;
#ifdef BEEPER
*beeperConfigMutable() = beeperConfigCopy;
#endif
}
static void *getDefaultPointer(const void *valuePointer, const master_t *defaultConfig)
@ -2808,12 +2817,12 @@ static void cliFeature(char *cmdline)
}
#ifdef BEEPER
static void printBeeper(uint8_t dumpMask, const master_t *defaultConfig)
static void printBeeper(uint8_t dumpMask, const beeperConfig_t *beeperConfig, const beeperConfig_t *beeperConfigDefault)
{
uint8_t beeperCount = beeperTableEntryCount();
uint32_t mask = getBeeperOffMask();
uint32_t defaultMask = defaultConfig->beeper_off_flags;
for (int32_t i = 0; i < beeperCount - 2; i++) {
const uint8_t beeperCount = beeperTableEntryCount();
const uint32_t mask = beeperConfig->beeper_off_flags;
const uint32_t defaultMask = beeperConfigDefault->beeper_off_flags;
for (int i = 0; i < beeperCount - 2; i++) {
const char *formatOff = "beeper -%s\r\n";
const char *formatOn = "beeper %s\r\n";
cliDefaultPrintf(dumpMask, ~(mask ^ defaultMask) & (1 << i), mask & (1 << i) ? formatOn : formatOff, beeperNameForTableIndex(i));
@ -3521,7 +3530,7 @@ static void printConfig(char *cmdline, bool doDiff)
#ifdef BEEPER
cliPrintHashLine("beeper");
printBeeper(dumpMask, &defaultConfig);
printBeeper(dumpMask, &beeperConfigCopy, beeperConfig());
#endif
cliPrintHashLine("map");