|
|
|
@ -1,10 +1,6 @@
@@ -1,10 +1,6 @@
|
|
|
|
|
/****************************************************************************
|
|
|
|
|
* |
|
|
|
|
* Copyright (c) 2013 PX4 Development Team. All rights reserved. |
|
|
|
|
* Author: Jean Cyr |
|
|
|
|
* Lorenz Meier |
|
|
|
|
* Julian Oes |
|
|
|
|
* Thomas Gubler |
|
|
|
|
* Copyright (c) 2013, 2014 PX4 Development Team. All rights reserved. |
|
|
|
|
* |
|
|
|
|
* Redistribution and use in source and binary forms, with or without |
|
|
|
|
* modification, are permitted provided that the following conditions |
|
|
|
@ -37,6 +33,11 @@
@@ -37,6 +33,11 @@
|
|
|
|
|
/**
|
|
|
|
|
* @file dataman.c |
|
|
|
|
* DATAMANAGER driver. |
|
|
|
|
* |
|
|
|
|
* @author Jean Cyr |
|
|
|
|
* @author Lorenz Meier |
|
|
|
|
* @author Julian Oes |
|
|
|
|
* @author Thomas Gubler |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
#include <nuttx/config.h> |
|
|
|
@ -62,7 +63,7 @@ __EXPORT ssize_t dm_write(dm_item_t item, unsigned char index, dm_persitence_t
@@ -62,7 +63,7 @@ __EXPORT ssize_t dm_write(dm_item_t item, unsigned char index, dm_persitence_t
|
|
|
|
|
__EXPORT int dm_clear(dm_item_t item); |
|
|
|
|
__EXPORT int dm_restart(dm_reset_reason restart_type); |
|
|
|
|
|
|
|
|
|
/* Types of function calls supported by the worker task */ |
|
|
|
|
/** Types of function calls supported by the worker task */ |
|
|
|
|
typedef enum { |
|
|
|
|
dm_write_func = 0, |
|
|
|
|
dm_read_func, |
|
|
|
@ -71,7 +72,7 @@ typedef enum {
@@ -71,7 +72,7 @@ typedef enum {
|
|
|
|
|
dm_number_of_funcs |
|
|
|
|
} dm_function_t; |
|
|
|
|
|
|
|
|
|
/* Work task work item */ |
|
|
|
|
/** Work task work item */ |
|
|
|
|
typedef struct { |
|
|
|
|
sq_entry_t link; /**< list linkage */ |
|
|
|
|
sem_t wait_sem; |
|
|
|
@ -411,7 +412,7 @@ _clear(dm_item_t item)
@@ -411,7 +412,7 @@ _clear(dm_item_t item)
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Tell the data manager about the type of the last reset */ |
|
|
|
|
/** Tell the data manager about the type of the last reset */ |
|
|
|
|
static int |
|
|
|
|
_restart(dm_reset_reason reason) |
|
|
|
|
{ |
|
|
|
@ -480,7 +481,7 @@ _restart(dm_reset_reason reason)
@@ -480,7 +481,7 @@ _restart(dm_reset_reason reason)
|
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* write to the data manager file */ |
|
|
|
|
/** Write to the data manager file */ |
|
|
|
|
__EXPORT ssize_t |
|
|
|
|
dm_write(dm_item_t item, unsigned char index, dm_persitence_t persistence, const void *buf, size_t count) |
|
|
|
|
{ |
|
|
|
@ -505,7 +506,7 @@ dm_write(dm_item_t item, unsigned char index, dm_persitence_t persistence, const
@@ -505,7 +506,7 @@ dm_write(dm_item_t item, unsigned char index, dm_persitence_t persistence, const
|
|
|
|
|
return (ssize_t)enqueue_work_item_and_wait_for_result(work); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* Retrieve from the data manager file */ |
|
|
|
|
/** Retrieve from the data manager file */ |
|
|
|
|
__EXPORT ssize_t |
|
|
|
|
dm_read(dm_item_t item, unsigned char index, void *buf, size_t count) |
|
|
|
|
{ |
|
|
|
@ -736,7 +737,7 @@ start(void)
@@ -736,7 +737,7 @@ start(void)
|
|
|
|
|
sem_init(&g_init_sema, 1, 0); |
|
|
|
|
|
|
|
|
|
/* start the worker thread */ |
|
|
|
|
if ((task = task_spawn_cmd("dataman", SCHED_DEFAULT, SCHED_PRIORITY_MAX - 5, 2048, task_main, NULL)) <= 0) { |
|
|
|
|
if ((task = task_spawn_cmd("dataman", SCHED_DEFAULT, SCHED_PRIORITY_MAX - 5, 2000, task_main, NULL)) <= 0) { |
|
|
|
|
warn("task start failed"); |
|
|
|
|
return -1; |
|
|
|
|
} |
|
|
|
|