Paparazzi UAS v7.1_unstable
Paparazzi is a free software Unmanned Aircraft System.
Loading...
Searching...
No Matches
settings.c
Go to the documentation of this file.
1/*
2 * Copyright (C) 2009-2014 The Paparazzi Team
3 *
4 * This file is part of paparazzi.
5 *
6 * paparazzi is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * paparazzi is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with paparazzi; see the file COPYING. If not, write to
18 * the Free Software Foundation, 59 Temple Place - Suite 330,
19 * Boston, MA 02111-1307, USA.
20 */
21
29#include "generated/settings.h"
30#include "generated/airframe.h"
31#if FLIGHTRECORDER_SDLOG
34#endif
35#include "pprzlink/messages.h"
36#include "pprzlink/dl_protocol.h"
37
39
46
48
49
50static void settings_send_dl_value(struct link_device *dev, struct transport_tx *trans,
51 uint8_t receiver_id, uint8_t index, float value)
52{
53 struct pprzlink_msg msg;
54 msg.trans = trans;
55 msg.dev = dev;
56 msg.sender_id = AC_ID;
57 msg.receiver_id = receiver_id;
58 msg.component_id = 0;
59 pprzlink_msg_send_DL_VALUE(&msg, &index, &value);
60
61#if FLIGHTRECORDER_SDLOG
62 pprz_msg_send_DL_VALUE(&pprzlog_tp.trans_tx, &flightrecorder_sdlog.device, AC_ID, &index, &value);
63#endif
64}
65
66
67void settings_init(void)
68{
69#if USE_PERSISTENT_SETTINGS
70 if (persistent_read((void *)&pers_settings, sizeof(struct PersistentSettings))) {
71 return; // return -1 ?
72 }
73 /* from generated/settings.h */
75#endif
76}
77
82{
83#if USE_PERSISTENT_SETTINGS
85 /* from generated/settings.h */
87 if (!persistent_write((void *)&pers_settings, sizeof(struct PersistentSettings))) {
88 /* persistent write was successful */
90 return 0;
91 }
92 }
93#endif
94 settings_store_flag = false;
95 return -1;
96}
97
102{
103#if USE_PERSISTENT_SETTINGS
105 if (!persistent_clear()) {
106 /* clearing all persistent settings was successful */
107 settings_clear_flag = true;
108 return 0;
109 }
110 }
111#endif
112 settings_clear_flag = false;
113 return -1;
114}
115
117{
118#ifndef INTERMCU_FBW
119 if (DL_SETTING_ac_id(buf) != AC_ID) { return; }
121 uint8_t i = DL_SETTING_index(buf);
122 float var = DL_SETTING_value(buf);
123 DlSetting(i, var);
125#else
126 (void)dev;
127 (void)trans;
128 (void)buf;
129#endif
130}
131
133{
134#ifndef INTERMCU_FBW
135 if (DL_GET_SETTING_ac_id(buf) != AC_ID) { return; }
138 float val = settings_get_value(i);
140#else
141 (void)dev;
142 (void)trans;
143 (void)buf;
144#endif
145}
146
int32_t persistent_write(void *ptr, uint32_t size)
int32_t persistent_read(void *ptr, uint32_t size)
static struct uart_periph * dev
uint8_t msg[10]
Buffer used for general comunication over SPI (out buffer)
int32_t persistent_clear(void)
uint16_t foo
Definition main_demo5.c:58
struct pprzlog_transport pprzlog_tp
PPRZLOG transport structure.
Definition pprzlog_tp.c:29
Initialize pprzlog transport.
bool settings_clear_flag
Definition settings.c:47
void settings_parse_msg_GET_SETTING(struct link_device *dev, struct transport_tx *trans, uint8_t *buf)
Definition settings.c:132
void settings_init(void)
Definition settings.c:67
int32_t settings_clear(void)
clear all persistent settings from flash
Definition settings.c:101
static void settings_send_dl_value(struct link_device *dev, struct transport_tx *trans, uint8_t receiver_id, uint8_t index, float value)
Definition settings.c:50
void settings_parse_msg_SETTING(struct link_device *dev, struct transport_tx *trans, uint8_t *buf)
Definition settings.c:116
bool settings_store_flag
flag for setting feedback.
Definition settings.c:45
struct PersistentSettings pers_settings
Definition settings.c:38
int32_t settings_store(void)
store settings marked as persistent to flash
Definition settings.c:81
Persistent settings interface.
uint16_t val[TCOUPLE_NB]
int int32_t
Typedef defining 32 bit int type.
unsigned char uint8_t
Typedef defining 8 bit unsigned char type.