summaryrefslogtreecommitdiff
path: root/nuttx
diff options
context:
space:
mode:
authorpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-09-01 15:09:49 +0000
committerpatacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3>2011-09-01 15:09:49 +0000
commit0c65db21d1bdc2ca3419f947288e08033f890662 (patch)
treec5a3ae24fb1e857edd2ea9b40faddf11a2be7024 /nuttx
parent0ec4fcc28f0c8601c4205d73a7e7f93f44f3c8e3 (diff)
downloadpx4-nuttx-0c65db21d1bdc2ca3419f947288e08033f890662.tar.gz
px4-nuttx-0c65db21d1bdc2ca3419f947288e08033f890662.tar.bz2
px4-nuttx-0c65db21d1bdc2ca3419f947288e08033f890662.zip
Add NSH date command
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@3932 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx')
-rw-r--r--nuttx/Documentation/NuttX.html2
-rw-r--r--nuttx/arch/arm/src/stm32/stm32_rtc.c13
-rwxr-xr-xnuttx/configs/vsn/nsh/defconfig6
-rw-r--r--nuttx/include/nuttx/pm.h175
4 files changed, 151 insertions, 45 deletions
diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html
index 383e7d6a7..4e603e0d0 100644
--- a/nuttx/Documentation/NuttX.html
+++ b/nuttx/Documentation/NuttX.html
@@ -1377,6 +1377,8 @@
</li>
<li>
Support for the NetClamps VSN was included in version 5.18 of NuttX.
+ Uros Platise added support for timers, RTC, I2C, FLASH, extended power management
+ and other features.
</li>
</ul>
<p>
diff --git a/nuttx/arch/arm/src/stm32/stm32_rtc.c b/nuttx/arch/arm/src/stm32/stm32_rtc.c
index 17b611008..68c4bc30d 100644
--- a/nuttx/arch/arm/src/stm32/stm32_rtc.c
+++ b/nuttx/arch/arm/src/stm32/stm32_rtc.c
@@ -222,11 +222,12 @@ clock_t up_rtc_getclock(void)
*
* \param time The unit depends on the prescaler value
**/
-void up_rtc_setclock(clock_t clock)
+
+void up_rtc_setclock(clock_t newclock)
{
stm32_rtc_beginwr();
- putreg16(clock >> 16, STM32_RTC_CNTH);
- putreg16(clock & 0xFFFF, STM32_RTC_CNTL);
+ putreg16(newclock >> 16, STM32_RTC_CNTH);
+ putreg16(newclock & 0xFFFF, STM32_RTC_CNTL);
stm32_rtc_endwr();
}
@@ -263,14 +264,14 @@ time_t up_rtc_gettime(void)
}
-void up_rtc_settime(time_t time)
+void up_rtc_settime(time_t newtime)
{
/* Do reverse compared to gettime above */
- uint32_t time_lsb = time << RTC_CLOCKS_SHIFT |
+ uint32_t time_lsb = newtime << RTC_CLOCKS_SHIFT |
(up_rtc_getclock() & ((1<<RTC_CLOCKS_SHIFT)-1));
- uint32_t time_msb = time >> (32-RTC_CLOCKS_SHIFT);
+ uint32_t time_msb = newtime >> (32-RTC_CLOCKS_SHIFT);
irqstate_t irqs = irqsave();
diff --git a/nuttx/configs/vsn/nsh/defconfig b/nuttx/configs/vsn/nsh/defconfig
index 1b979ad16..06da39faa 100755
--- a/nuttx/configs/vsn/nsh/defconfig
+++ b/nuttx/configs/vsn/nsh/defconfig
@@ -398,9 +398,9 @@ CONFIG_ARCH_LOWPUTC=y
CONFIG_RR_INTERVAL=200
CONFIG_SCHED_INSTRUMENTATION=n
CONFIG_TASK_NAME_SIZE=16
-CONFIG_START_YEAR=2009
-CONFIG_START_MONTH=9
-CONFIG_START_DAY=21
+CONFIG_START_YEAR=2011
+CONFIG_START_MONTH=8
+CONFIG_START_DAY=23
CONFIG_GREGORIAN_TIME=n
CONFIG_JULIAN_TIME=n
CONFIG_DEV_CONSOLE=y
diff --git a/nuttx/include/nuttx/pm.h b/nuttx/include/nuttx/pm.h
index f40bca61f..184f00e9c 100644
--- a/nuttx/include/nuttx/pm.h
+++ b/nuttx/include/nuttx/pm.h
@@ -33,6 +33,27 @@
* POSSIBILITY OF SUCH DAMAGE.
*
****************************************************************************/
+/* Definition of terms. Various "sleep" and low power consumption states
+ * have various names and are sometimes used in conflicting ways. In the
+ * PM logic, we will use the following terminology:
+ *
+ * NORMAL - The normal, full power operating mode.
+ * REDUCED - This is still basically normal operational mode, but with some
+ * simple changes to reduce power consumption. Perhaps this just
+ * means just dimming the backlight.
+ * STANDBY - Standby is a very low power consumption mode. It is the lowest
+ * power from which the system can recover quickly.
+ * SLEEP - The lowest power consumption mode. It may require some time
+ * to get back to normal operation from SLEEP (some parts may
+ * even require going through reset).
+ *
+ * State changes always proceed from higher to lower power usage:
+ *
+ * NORMAL->REDUCED->STANDBY->SLEEP
+ * ^ | | |
+ * | V V V
+ * +-------+---------+--------+
+ */
#ifndef __INCLUDE_NUTTX_PM_H
#define __INCLUDE_NUTTX_PM_H
@@ -42,11 +63,30 @@
****************************************************************************/
#include <nuttx/config.h>
-#include <nuttx/fs.h>
+
+#ifdef CONFIG_PM
/****************************************************************************
* Pre-Processor Definitions
****************************************************************************/
+/* Configuration ************************************************************/
+/* Time slices */
+
+#ifndef CONFIG_PM_SLICEMS
+# define CONFIG_PM_SLICEMS 100 /* Default is 100 msec */
+#endif
+
+#ifndef CONFIG_PM_NREDUCED
+# define CONFIG_PM_NREDUCED 30 /* Thiry IDLE slices to enter reduced mode */
+#endif
+
+#ifndef CONFIG_PM_NSTANDBY
+# define CONFIG_PM_NSTANDBY 80 /* Eight IDLE slices to enter standby mode */
+#endif
+
+#ifndef CONFIG_PM_NSLEEP
+# define CONFIG_PM_NSLEEP 150 /* 150 IDLE slices to enter standby mode */
+#endif
/****************************************************************************
* Public Types
@@ -56,33 +96,31 @@
* state indication is the state transition event.
*/
-enum pm_event_e
+enum pm_state_e
{
- PM_IDLE = 0, /* Drivers will receive periodic idle indications. The driver
- * may use these IDLE indications to perform driver-specific
- * power optimizations.
- */
- PM_SLEEP_PREP, /* This is a warning that the system is about to enter into
- * sleep mode. The driver should begin whatever operations
- * that may be required to enter sleep mode. The driver
- * may abort the sleep mode by returning a non-zero value
- * from the callback function.
- */
- PM_STOP_PREP, /* This is a warning that the system is about to enter into
- * stop mode. The driver should begin whatever operations
- * that may be required to enter stop mode. The driver
- * may abort the stop mode by returning a non-zero value
- * from the callback function.
- */
- PM_SLEEP, /* The system is entering sleep mode. The driver should
- * already be prepared for this mode.
- */
- PM_STOP, /* The system is entering stop mode. The driver should
- * already be prepared for this mode.
- */
- PM_RESUME, /* The system resuming normal operation. The driver should
- * reinitialize for normal operation.
- */
+ PM_REDUCED = 0, /* Drivers will receive periodic this indications if it is
+ * appropriate to enter a simple reduced power state. This
+ * would include simple things such as displaying display back-
+ * lighting. The driver should essentially be ready to resume
+ * normal activity instantly.
+ *
+ * PM_REDUCED may be followed by PM_STANDBY or PM_RESUME.
+ */
+ PM_STANDBY, /* The system is entering standby mode. The driver should
+ * already be prepared for this mode.
+ *
+ * PM_STANDBY may be followed PM_SLEEP or by PM_RESUME
+ */
+ PM_SLEEP, /* The system is entering deep sleep mode. The driver should
+ * already be prepared for this mode.
+ *
+ * PM_SLEEP may be following by PM_RESUME
+ */
+ PM_RESUME, /* The system is resuming normal operation. The driver should
+ * reinitialize for normal operation.
+ *
+ * PM_RESUME may be followed by PM_REDUCED.
+ */
}
/* This structure contain pointers callback functions in the driver. These
@@ -93,7 +131,53 @@ enum pm_event_e
struct pm_callback_s
{
struct pm_callback_s *flink; /* Supports a singly linked list */
- int (*notify)(enum pm_event_e pmevent); /* PM event callback */
+
+ /**************************************************************************
+ * Name: prepare
+ *
+ * Description:
+ * Notify the driver to prepare for a new power confition .This is a
+ * warning that the system is about to enter into a new power state. The
+ * driver should begin whatever operations that may be required to enter
+ * power state. The driver may abort the state change mode by returning
+ * a non-zero value from the callback function
+ *
+ * Input Parameters:
+ * cb - Returned to the driver. The driver version of the callback
+ * strucure may include additional, driver-specific state
+ * data at the end of the structure.
+ * pmstate - Idenfifies the new PM state
+ *
+ * Returned Value:
+ * 0 (OK) means the event was successfully processed. Non-zero means
+ * means that the driver is not prepared to perform the tasks needed
+ * achieve this power setting.
+ *
+ **************************************************************************/
+
+ int (*prepare)(FAR struct pm_callback_s *cb, enum pm_state_e pmstate);
+
+ /**************************************************************************
+ * Name: notify
+ *
+ * Description:
+ * Notify the driver of new power state. This callback is called after
+ * all drivers have had the opportunity to prepare for the new power
+ * state.
+ *
+ * Input Parameters:
+ * cb - Returned to the driver. The driver version of the callback
+ * strucure may include additional, driver-specific state
+ * data at the end of the structure.
+ * pmstate - Idenfifies the new PM state
+ *
+ * Returned Value:
+ * 0 (OK) means the event was successfully processed. Non-zero means
+ * means that the driver failed to enter the power mode.
+ *
+ **************************************************************************/
+
+ int (*notify)(FAR struct pm_callback_s *cb, enum pm_state_e pmstate);
}
/****************************************************************************
@@ -128,29 +212,41 @@ extern "C" {
*
****************************************************************************/
-EXTERN int pm_register(FAR const struct pm_callback_s *callbacks);
+EXTERN int pm_register(FAR struct pm_callback_s *callbacks);
/****************************************************************************
- * Name: pm_broadcast
+ * Name: pm_changestate
*
* Description:
* This function is used to platform-specific power managmeent logic. It
- * will announce the power management event to all drivers that have
- * registered for power management event callbacks.
+ * will announce the power management power management state change to all
+ * drivers that have registered for power management event callbacks.
*
- *
+ * Input Parameters:
+ * pmstate - Idenfifies the new PM state
+ *
+ * Returned Value:
+ * 0 (OK) means that the callback function for all registered drivers
+ * returned OK (meaning that they accept the state change).
*
****************************************************************************/
-EXTERN int pm_broadcast(enum pm_event_s pmevent);
+EXTERN int pm_changestate(enum pm_event_s pmstate);
/****************************************************************************
* Name: pm_activity
*
* Description:
* This function is called by a device driver to indicate that it is
- * performing meaningful activities (non-idle). This will restart a
- * idle timer and prevent entering reduced power states.
+ * performing meaningful activities (non-idle). This increment an activty
+ * cound and/or will restart a idle timer and prevent entering reduced
+ * power states.
+ *
+ * Input Parameters:
+ * None
+ *
+ * Returned Value:
+ * The current activity count.
*
****************************************************************************/
@@ -164,6 +260,12 @@ EXTERN int pm_activity(void);
* was called. A count of zero will indicate that no meaningful activity
* occurred since the last time this function was called.
*
+ * Input Parameters:
+ * None
+ *
+ * Returned Value:
+ * The current activity count.
+ *
****************************************************************************/
EXTERN int pm_checkactivity(void);
@@ -174,4 +276,5 @@ EXTERN int pm_checkactivity(void);
#endif
#endif /* __ASSEMBLY__ */
+#endif /* CONFIG_PM */
#endif /* __INCLUDE_NUTTX_PM_H */