aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2012-08-20 17:26:59 +0200
committerLorenz Meier <lm@inf.ethz.ch>2012-08-20 17:26:59 +0200
commitd17bbc7a0bdc30302df0001ddad91733064d3d11 (patch)
treeab9d48990b34a465022b9436ba8fcde53154f8f5
parente3fffa23e0665f2e9ce58cdf9035134785124f62 (diff)
downloadpx4-firmware-d17bbc7a0bdc30302df0001ddad91733064d3d11.tar.gz
px4-firmware-d17bbc7a0bdc30302df0001ddad91733064d3d11.tar.bz2
px4-firmware-d17bbc7a0bdc30302df0001ddad91733064d3d11.zip
Minor fixes to EEPROM params
-rw-r--r--apps/mavlink/mavlink_parameters.c41
-rw-r--r--apps/systemcmds/eeprom/eeprom.c4
2 files changed, 42 insertions, 3 deletions
diff --git a/apps/mavlink/mavlink_parameters.c b/apps/mavlink/mavlink_parameters.c
index 103b8afd0..ab788c461 100644
--- a/apps/mavlink/mavlink_parameters.c
+++ b/apps/mavlink/mavlink_parameters.c
@@ -145,6 +145,43 @@ int mavlink_pm_send_param(param_t param)
return mavlink_missionlib_send_message(&tx_msg);
}
+static int
+mavlink_pm_save_eeprom()
+{
+ const char* name = "/eeprom";
+ int fd = open("/eeprom", O_WRONLY | O_CREAT | O_EXCL);
+
+ if (fd < 0)
+ warn(1, "opening '%s' failed", name);
+
+ int result = param_export(fd, false);
+ close(fd);
+
+ if (result < 0) {
+ warn(1, "error exporting to '%s'", name);
+ }
+
+ return 0;
+}
+
+static int
+mavlink_pm_load_eeprom()
+{
+ const char* name = "/eeprom";
+ int fd = open(name, O_RDONLY);
+
+ if (fd < 0)
+ warn(1, "open '%s' failed", name);
+
+ int result = param_import(fd);
+ close(fd);
+
+ if (result < 0)
+ warn(1, "error importing from '%s'", name);
+
+ return 0;
+}
+
void mavlink_pm_message_handler(const mavlink_channel_t chan, const mavlink_message_t *msg)
{
switch (msg->msgid) {
@@ -221,7 +258,7 @@ void mavlink_pm_message_handler(const mavlink_channel_t chan, const mavlink_mess
if (((int)(cmd_mavlink.param1)) == 0) {
- if (OK == get_params_from_eeprom(global_data_parameter_storage)) {
+ if (OK == mavlink_pm_load_eeprom()) {
//printf("[mavlink pm] Loaded EEPROM params in RAM\n");
mavlink_missionlib_send_gcs_string("[mavlink pm] CMD Loaded EEPROM params in RAM");
result = MAV_RESULT_ACCEPTED;
@@ -236,7 +273,7 @@ void mavlink_pm_message_handler(const mavlink_channel_t chan, const mavlink_mess
} else if (((int)(cmd_mavlink.param1)) == 1) {
- if (OK == store_params_in_eeprom(global_data_parameter_storage)) {
+ if (OK == mavlink_pm_save_eeprom()) {
//printf("[mavlink pm] RAM params written to EEPROM\n");
mavlink_missionlib_send_gcs_string("[mavlink pm] RAM params written to EEPROM");
result = MAV_RESULT_ACCEPTED;
diff --git a/apps/systemcmds/eeprom/eeprom.c b/apps/systemcmds/eeprom/eeprom.c
index fa1bcc8b4..90a8a5b9b 100644
--- a/apps/systemcmds/eeprom/eeprom.c
+++ b/apps/systemcmds/eeprom/eeprom.c
@@ -111,6 +111,8 @@ eeprom_start(void)
/* find the right I2C */
struct i2c_dev_s *i2c = up_i2cinitialize(PX4_I2C_BUS_ONBOARD);
+ /* this resets the I2C bus, set correct bus speed again */
+ I2C_SETFREQUENCY(i2c, 400000);
if (i2c == NULL)
errx(1, "failed to locate I2C bus");
@@ -158,7 +160,7 @@ eeprom_save(const char *name)
int fd = open(name, O_WRONLY | O_CREAT | O_EXCL);
if (fd < 0)
- err(1, "create '%s'", name);
+ err(1, "opening '%s' failed", name);
int result = param_export(fd, false);
close(fd);