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:
commit
c896ad4480
9 changed files with 47 additions and 32 deletions
|
@ -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"
|
||||
|
|
|
@ -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
|
||||
/*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -49,7 +49,7 @@ void systemBeepToggle(void)
|
|||
#endif
|
||||
}
|
||||
|
||||
void beeperInit(const beeperConfig_t *config)
|
||||
void beeperInit(const beeperDevConfig_t *config)
|
||||
{
|
||||
#ifndef BEEPER
|
||||
UNUSED(config);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue