/**
* Start this component and all of its subcomponents.
*
- * @return SUCCESS if the component was successfully turned on<br>
+ * @return SUCCESS if the component was either already on or was
+ * successfully turned on<br>
* FAIL otherwise
*/
async command error_t start();
* Stop the component and any pertinent subcomponents (not all
* subcomponents may be turned off due to wakeup timers, etc.).
*
- * @return SUCCESS if the component was successfully turned off<br>
+ * @return SUCCESS if the component was either already off or was
+ * successfully turned off<br>
* FAIL otherwise
*/
async command error_t stop();
* values of SUCCESS will always result in a <code>startDone()</code>
* event being signalled.
*
- * @return SUCCESS if issuing the start command was successful<br>
+ * @return SUCCESS if the device is already in the process of
+ * starting or the device was off and the device is now ready to turn
+ * on. After receiving this return value, you should expect a
+ * <code>startDone</code> event in the near future.<br>
* EBUSY if the component is in the middle of powering down
* i.e. a <code>stop()</code> command has been called,
* and a <code>stopDone()</code> event is pending<br>
+ * EALREADY if the device is already on <br>
* FAIL Otherwise
*/
command error_t start();
event void startDone(error_t error);
/**
- * Stop the component and pertinent subcomponents (not all
- * subcomponents may be turned off due to wakeup timers, etc.).
- * Return values of SUCCESS will always result in a
- * <code>stopDone()</code> event being signalled.
+ * Start this component and all of its subcomponents. Return
+ * values of SUCCESS will always result in a <code>startDone()</code>
+ * event being signalled.
*
- * @return SUCCESS if issuing the stop command was successful<br>
+ * @return SUCCESS if the device is already in the process of
+ * stopping or the device was on and the device is now ready to turn
+ * off. After receiving this return value, you should expect a
+ * <code>stopDone</code> event in the near future.<br>
* EBUSY if the component is in the middle of powering up
* i.e. a <code>start()</code> command has been called,
* and a <code>startDone()</code> event is pending<br>
+ * EALREADY if the device is already off <br>
* FAIL Otherwise
*/
command error_t stop();
interface StdControl
{
/**
- * Start this component and all of its subcomponents.
- *
- * @return SUCCESS if the component was successfully turned on<br>
- * FAIL otherwise
- */
+ * Start this component and all of its subcomponents.
+ *
+ * @return SUCCESS if the component was either already on or was
+ * successfully turned on<br>
+ * FAIL otherwise
+ */
command error_t start();
/**
- * Stop the component and any pertinent subcomponents (not all
- * subcomponents may be turned off due to wakeup timers, etc.).
- *
- * @return SUCCESS if the component was successfully turned off<br>
- * FAIL otherwise
- */
+ * Stop the component and any pertinent subcomponents (not all
+ * subcomponents may be turned off due to wakeup timers, etc.).
+ *
+ * @return SUCCESS if the component was either already off or was
+ * successfully turned off<br>
+ * FAIL otherwise
+ */
command error_t stop();
}
EINVAL = 6, // An invalid parameter was passed
ERETRY = 7, // A rare and transient failure: can retry
ERESERVE = 8, // Reservation required before usage
+ EALREADY = 9, // The device state you are requesting is already set
};
typedef uint8_t error_t __attribute__((combine(ecombine)));