aboutsummaryrefslogtreecommitdiff
path: root/armen.h
diff options
context:
space:
mode:
authorOtto Mattik <otto@mattik.org>2021-07-08 18:10:55 +0200
committerOtto Mattik <otto@mattik.org>2021-07-08 18:10:55 +0200
commitda34d97efb21719b2b332f8c60b2750d11bcde1f (patch)
tree2de9fe89f6d79b8ebfcde64c5e86204e904aedf2 /armen.h
downloadarmen-1.0.tar.gz
armen-1.0.zip
git: update to v1.0HEADv1.0master
Diffstat (limited to 'armen.h')
-rw-r--r--armen.h197
1 files changed, 197 insertions, 0 deletions
diff --git a/armen.h b/armen.h
new file mode 100644
index 0000000..404d05a
--- /dev/null
+++ b/armen.h
@@ -0,0 +1,197 @@
+/************************************************************************/
+/* */
+/* - armen a tiny operating system - */
+/* */
+/* File: armen.h */
+/* Description: armen api */
+/* Version: 1.0 */
+/* Author: Otto Mattik */
+/* */
+/* (C)Copyright Otto Mattik 2014-2021. */
+/* */
+/* This file is a part of 'armen' (a tiny operating system). */
+/* 'armen" is distributed under the CeCILL-V2.1 licence. For more */
+/* details about this licence, please visit the website cecill.info */
+/* */
+/************************************************************************/
+
+#ifndef _ARMEN_H_
+#define _ARMEN_H_
+
+#include <stdint.h>
+
+#define FALSE 0
+#define TRUE 1
+
+/*
+ * events
+*/
+#define EVENT_UART0 0x0001
+#define EVENT_UART1 0x0002
+#define EVENT_UART2 0x0004
+#define EVENT_UART3 0x0008
+#define EVENT_TIMER1 0x0010
+#define EVENT_TIMER2 0x0020
+#define EVENT_INT0 0x0040
+#define EVENT_INT1 0x0080
+#define EVENT_INT2 0x0100
+#define EVENT_PCINT0 0x0200
+#define EVENT_PCINT1 0x0400
+#define EVENT_PCINT2 0x0800
+#define EVENT_USER 0x2000
+
+#define EVENT_PCINT EVENT_PCINT0
+
+/*
+ * gpio
+*/
+#define GPIO_INPUT 0
+#define GPIO_OUTPUT 1
+
+#define GPIO_LOW 0
+#define GPIO_HIGH 1
+
+#define GPIO0 0
+#define GPIO1 1
+#define GPIO2 2
+#define GPIO3 3
+#define GPIO4 4
+#define GPIO5 5
+#define GPIO6 6
+#define GPIO7 7
+#define GPIO8 8
+#define GPIO9 9
+#define GPIO10 10
+#define GPIO11 11
+#define GPIO12 12
+#define GPIO13 13
+#define GPIO14 14
+#define GPIO15 15
+#define GPIO16 16
+#define GPIO17 17
+#define GPIO18 18
+#define GPIO19 19
+#define GPIO20 20
+#define GPIO21 21
+#define GPIO22 22
+#define GPIO23 23
+
+/*
+ * uart features
+*/
+#if defined(UART) && (UART != 0)
+ #define B1200 0
+ #define B2400 1
+ #define B4800 2
+ #define B9600 3
+ #define B19200 4
+ #define B38400 5
+ #define B57600 6
+ #define B115200 7
+ #define BAUDRATE 7
+ #define ECHOO 8 /* echo on output */
+#endif
+
+/*
+ * analog conversion
+*/
+#ifdef USE_ADC
+ #define ADC_REF_VCC 0
+ #define ADC_REF_EXT 1
+ #define ADC_REF_INT1V1 2
+ #define ADC_REF_INT2V2 3
+ #define ADC_REF_INT2V56 3
+ #define ADC_REF_INT4V096 4
+#endif
+
+/*
+ * pulse witdth modulation
+*/
+#ifdef USE_PWM
+ #define PWM_SCALE_1 1
+ #define PWM_SCALE_8 2
+ #define PWM_SCALE_64 3
+ #define PWM_SCALE_256 4
+ #define PWM_SCALE_1024 5
+#endif
+
+/*
+ * pin change interruptions
+*/
+#ifdef USE_PCINT
+ #define INT_LOW 0
+ #define INT_CHANGE 1
+ #define INT_RISING 2
+ #define INT_FALLING 3
+ #define INT_DISABLE 4
+#endif
+
+typedef int8_t thread_t;
+typedef uint32_t sem_t;
+#ifdef USE_BIG_TIMER
+typedef uint32_t timer_t;
+#else
+typedef uint16_t timer_t;
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+extern void armen_start( void );
+
+extern uint16_t wait_event( uint16_t events );
+extern void send_user_event( void );
+extern timer_t get_timer( uint8_t timer );
+extern int8_t set_timer( uint8_t timer, timer_t msecs );
+extern void sleep( timer_t msecs );
+extern void delay( uint16_t usecs );
+extern uint32_t get_time( void );
+
+extern thread_t thread_self( void );
+extern thread_t thread_create( void* (*start)(void*), void* arg );
+extern void thread_exit( void* retval );
+#ifdef USE_FULL_THREAD
+extern void thread_cancel( thread_t thread );
+extern void thread_join( thread_t thread, void** retval );
+extern uint8_t thread_nice( thread_t thread, uint8_t priority );
+#endif
+
+extern uint8_t test_and_set( void* lock );
+#ifdef USE_SEM
+extern void sem_init( sem_t* sem, uint8_t value );
+extern void sem_wait( sem_t* sem );
+extern void sem_post( sem_t* sem );
+#endif
+
+extern void gpio_pin_mode( uint8_t gpio, uint8_t mode, ... );
+extern int8_t gpio_pin_get( uint8_t gpio );
+extern void gpio_pin_set( uint8_t gpio, uint8_t value );
+#ifdef USE_ADC
+extern void gpio_adc_ref( uint8_t ref );
+extern int16_t gpio_adc_get( uint8_t gpio );
+#endif
+#ifdef USE_PWM
+extern void gpio_pwm_freq( uint8_t scale );
+extern void gpio_pwm_set( uint8_t gpio, uint8_t percent );
+#endif
+#ifdef USE_PCINT
+extern void gpio_int_enable( uint8_t interrupt, uint8_t mode );
+extern void gpio_pcint_enable( uint8_t gpio, uint8_t enable );
+#endif
+
+#if defined(UART) && (UART != 0)
+extern int8_t uart_open( uint8_t device, uint8_t config );
+extern int8_t uart_close( uint8_t device );
+extern int8_t uart_read( uint8_t device, uint8_t* byte );
+extern int8_t uart_write( uint8_t device, uint8_t byte );
+extern char uart_getchar( uint8_t device );
+extern void uart_putchar( uint8_t device, char c );
+extern void uart_putstr( uint8_t device, char* s );
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif