diff options
| author | hathach <[email protected]> | 2013-01-30 11:35:37 +0700 |
|---|---|---|
| committer | hathach <[email protected]> | 2013-01-30 11:35:37 +0700 |
| commit | 07048b943e6b57aeee4a671b85d76a2f592e3205 (patch) | |
| tree | 63af67247cbd779590cb4f0aa6798faccf680b5d /tinyusb | |
| parent | 6db8af20236cfecba5aef54da148309982b28396 (diff) | |
add primitive_types.h for portable with uint8,16,32_t, and bool
add osal_common.h to ease the complaint of MISRA 19.1
implement OSAL_NONE Task loop, semaphore wait/post and its test code
Diffstat (limited to 'tinyusb')
| -rw-r--r-- | tinyusb/common/common.h | 4 | ||||
| -rw-r--r-- | tinyusb/common/primitive_types.h | 67 | ||||
| -rw-r--r-- | tinyusb/osal/osal.h | 21 | ||||
| -rw-r--r-- | tinyusb/osal/osal_common.h | 72 | ||||
| -rw-r--r-- | tinyusb/osal/osal_none.h | 61 |
5 files changed, 209 insertions, 16 deletions
diff --git a/tinyusb/common/common.h b/tinyusb/common/common.h index 3a02f27f3..17c70429e 100644 --- a/tinyusb/common/common.h +++ b/tinyusb/common/common.h @@ -56,8 +56,7 @@ extern "C" { #endif -#include <stdbool.h> -#include <stdint.h> +#include "primitive_types.h" #include <stddef.h> #include <string.h> #include <stdio.h> @@ -71,7 +70,6 @@ #include "hal/hal.h" #include "core/tusb_types.h" #include "core/std_descriptors.h" -#include "osal/osal.h" // TODO try to manipulate gcc cmd option instead #ifndef _TEST_ diff --git a/tinyusb/common/primitive_types.h b/tinyusb/common/primitive_types.h new file mode 100644 index 000000000..063d6e443 --- /dev/null +++ b/tinyusb/common/primitive_types.h @@ -0,0 +1,67 @@ +/* + * primitive_types.h + * + * Created on: Jan 29, 2013 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the tiny usb stack. + */ + +/** \file + * \brief TBD + * + * \note TBD + */ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_PRIMITIVE_TYPES_H_ +#define _TUSB_PRIMITIVE_TYPES_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#include <stdbool.h> +#include <stdint.h> + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_PRIMITIVE_TYPES_H_ */ + +/** @} */ diff --git a/tinyusb/osal/osal.h b/tinyusb/osal/osal.h index 844c3c083..7e3977d1c 100644 --- a/tinyusb/osal/osal.h +++ b/tinyusb/osal/osal.h @@ -55,7 +55,7 @@ extern "C" { #endif -#include "common/common.h" +#include "tusb_option.h" #define TUSB_OS_NONE 1 #define TUSB_OS_CMSIS 2 @@ -68,22 +68,21 @@ #error TUSB_CFG_OS is not defined or OS is not supported yet #endif -typedef uint32_t osal_status_t; // TODO OSAL port -typedef uint32_t osal_timeout_t; // TODO OSAL port - -enum -{ - OSAL_TIMEOUT_WAIT_FOREVER = 0 -}; +//--------------------------------------------------------------------+ +// SEMAPHORE API +//--------------------------------------------------------------------+ //--------------------------------------------------------------------+ // QUEUE API //--------------------------------------------------------------------+ typedef uint32_t osal_queue_id_t; -//osal_queue_id_t osal_queue_create(osal_queue_t *queue, uint8_t *buffer); +////osal_queue_id_t osal_queue_create(osal_queue_t *queue, uint8_t *buffer); osal_queue_id_t osal_queue_create(osal_queue_id_t *queue, uint8_t *buffer); -tusb_error_t osal_queue_put(osal_queue_id_t qid, uint32_t data, osal_timeout_t msec); -tusb_error_t osal_queue_get(osal_queue_id_t qid, uint32_t *data, osal_timeout_t msec); +//tusb_error_t osal_queue_put(osal_queue_id_t qid, uint32_t data, osal_timeout_t msec); +//tusb_error_t osal_queue_get(osal_queue_id_t qid, uint32_t *data, osal_timeout_t msec); + + + #ifdef __cplusplus } diff --git a/tinyusb/osal/osal_common.h b/tinyusb/osal/osal_common.h new file mode 100644 index 000000000..cb7a775eb --- /dev/null +++ b/tinyusb/osal/osal_common.h @@ -0,0 +1,72 @@ +/* + * osal_common.h + * + * Created on: Jan 30, 2013 + * Author: hathach + */ + +/* + * Software License Agreement (BSD License) + * Copyright (c) 2012, hathach (tinyusb.net) + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, + * are permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, + * this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright notice, + * this list of conditions and the following disclaimer in the documentation + * and/or other materials provided with the distribution. + * 3. The name of the author may not be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT + * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING + * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * This file is part of the tiny usb stack. + */ + +/** \file + * \brief TBD + * + * \note TBD + */ + +/** \ingroup TBD + * \defgroup TBD + * \brief TBD + * + * @{ + */ + +#ifndef _TUSB_OSAL_COMMON_H_ +#define _TUSB_OSAL_COMMON_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#include "common/common.h" + +enum +{ + OSAL_TIMEOUT_NOTIMEOUT = 0, // for use within ISR, return immediately + OSAL_TIMEOUT_WAIT_FOREVER = 1 +}; + +#ifdef __cplusplus + } +#endif + +#endif /* _TUSB_OSAL_COMMON_H_ */ + +/** @} */ diff --git a/tinyusb/osal/osal_none.h b/tinyusb/osal/osal_none.h index c3be90fad..7219c06ca 100644 --- a/tinyusb/osal/osal_none.h +++ b/tinyusb/osal/osal_none.h @@ -55,7 +55,63 @@ extern "C" { #endif -#include "osal.h" +#include "osal_common.h" + +typedef uint32_t osal_timeout_t; + +//--------------------------------------------------------------------+ +// TASK API +// NOTES: Each blocking OSAL_NONE services such as semaphore wait, +// queue receive embedded return statement, therefore local variable +// retain value before/after such services needed to declare as static +// OSAL_TASK_LOOP +// { +// OSAL_TASK_LOOP_BEGIN +// +// task body statements +// +// OSAL_TASK_LOOP_ENG +// } +//--------------------------------------------------------------------+ +#define OSAL_TASK_LOOP \ + static uint16_t state = 0;\ + switch(state)\ + +#define OSAL_TASK_LOOP_BEGIN \ + case 0: + +#define OSAL_TASK_LOOP_END \ + default:\ + state = 0; +//--------------------------------------------------------------------+ +// Semaphore API +//--------------------------------------------------------------------+ +typedef uint8_t osal_semaphore_t; +typedef osal_semaphore_t * osal_semaphore_handle_t; + +static inline osal_semaphore_handle_t osal_semaphore_create(osal_semaphore_t * const sem) ATTR_CONST ATTR_ALWAYS_INLINE; +static inline osal_semaphore_handle_t osal_semaphore_create(osal_semaphore_t * const sem) +{ + (*sem) = 0; + return (osal_semaphore_handle_t) sem; +} + +static inline tusb_error_t osal_semaphore_post(osal_semaphore_handle_t const sem_hdl) ATTR_ALWAYS_INLINE; +static inline tusb_error_t osal_semaphore_post(osal_semaphore_handle_t const sem_hdl) +{ + (*sem_hdl)++; + + return TUSB_ERROR_NONE; +} + +#define osal_semaphore_wait(sem_hdl, msec) \ + do {\ + state = __LINE__; case __LINE__:\ + if( (*sem_hdl) == 0 ) \ + return;\ + else\ + (*sem_hdl)--;\ + }while(0) //--------------------------------------------------------------------+ // QUEUE API @@ -68,8 +124,9 @@ typedef struct{ volatile uint16_t rd_ptr ; ///< read pointer } osal_queue_t; -//typedef osal_queue_t osal_queue_id_t*; +typedef osal_queue_t * osal_queue_handle_t; +// queue_send, queue_receive #define OSAL_DEF_QUEUE(name, size)\ osal_queue_t name;\ uint8_t buffer_##name[size] |
