diff options
25 files changed, 252 insertions, 28 deletions
diff --git a/src/bsp/system_stm32f4xx.c b/src/bsp/system_stm32f4xx.c index 8695313..673eaa1 100644 --- a/src/bsp/system_stm32f4xx.c +++ b/src/bsp/system_stm32f4xx.c @@ -413,8 +413,6 @@ static void SetSysClock(void) /* Wait till the main PLL is used as system clock source */
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS ) != RCC_CFGR_SWS_PLL);
- {
- }
}
else
{ /* If HSE fails to start-up, the application will have wrong clock
diff --git a/src/common/includes/Audio/audio.h b/src/common/includes/Audio/audio.h index 6531879..a4ac2da 100644 --- a/src/common/includes/Audio/audio.h +++ b/src/common/includes/Audio/audio.h @@ -15,8 +15,8 @@ extern int buffer_number; extern bool dma_running; void audio_initialize_platform(int plln, int pllr, int i2sdiv, int i2sodd, int rate); -void audio_start_dma_and_request_buffers(); -void audio_stop_dma(); +void audio_start_dma_and_request_buffers(void); +void audio_stop_dma(void); #define Audio8000HzSettings 256,5,12,1,8000 #define Audio16000HzSettings 213,2,13,0,16000 @@ -35,8 +35,8 @@ void audio_stop_dma(); void audio_initialize(int plln,int pllr,int i2sdiv,int i2sodd, int rate); // Power up and down the audio hardware. -void audio_on(); -void audio_off(); +void audio_on(void); +void audio_off(void); // Set audio volume in steps of 0.5 dB. 0xff is +12 dB. void audio_set_volume(int volume); @@ -48,7 +48,7 @@ void audio_output_sample_without_blocking(int16_t sample); // Start and stop audio playback using DMA. // Callback is optional, and called whenever a new buffer is needed. void audio_play_with_callback(AudioCallbackFunction *callback,void *context); -void audio_stop(); +void audio_stop(void); // Provide a new buffer to the audio DMA. Output is double buffered, so // at least two buffers must be maintained by the program. It is not allowed diff --git a/src/common/includes/Audio/cw.h b/src/common/includes/Audio/cw.h index 384918d..ccb13ab 100644 --- a/src/common/includes/Audio/cw.h +++ b/src/common/includes/Audio/cw.h @@ -45,5 +45,7 @@ size_t cw_psk31_fill_buffer(int16_t *buf, size_t bufsize); // Return 1 if the CW or PSK31 generator is running int cw_psk31_busy(void); +void cw_message_sent(const char*); + #endif // __CW_H_ diff --git a/src/common/includes/Core/common.h b/src/common/includes/Core/common.h index 80739cf..950085c 100644 --- a/src/common/includes/Core/common.h +++ b/src/common/includes/Core/common.h @@ -58,3 +58,6 @@ int random_bool(void); #define FAULT_SOURCE_USART 4 void trigger_fault(int source); +#ifdef SIMULATOR +void __disable_irq(void); +#endif diff --git a/src/common/includes/Core/delay.h b/src/common/includes/Core/delay.h index 67ff3b7..4cc3f07 100644 --- a/src/common/includes/Core/delay.h +++ b/src/common/includes/Core/delay.h @@ -28,7 +28,12 @@ // High-precisions delay (with approximations) // These functions only work if interupts are disabled +#ifdef SIMULATOR +void delay_us(int micros); +void delay_ms(int millis); +#else void delay_us(uint32_t micros); void delay_ms(uint32_t millis); +#endif -void delay_init(); +void delay_init(void); diff --git a/src/common/includes/GPIO/pio.h b/src/common/includes/GPIO/pio.h index 19d3e15..10b83bf 100644 --- a/src/common/includes/GPIO/pio.h +++ b/src/common/includes/GPIO/pio.h @@ -41,7 +41,7 @@ void pio_set_qrp(int on); void pio_set_fsm_signals(struct fsm_input_signals_t* sig); -int pio_read_button(); +int pio_read_button(void); #endif // _PIO_H_ diff --git a/src/common/includes/GPIO/temperature.h b/src/common/includes/GPIO/temperature.h index a67d16b..a0e5b5d 100644 --- a/src/common/includes/GPIO/temperature.h +++ b/src/common/includes/GPIO/temperature.h @@ -37,3 +37,4 @@ int temperature_valid(); // Get current temperature float temperature_get(); +void temperature_task(void *); diff --git a/src/common/includes/GPIO/usart.h b/src/common/includes/GPIO/usart.h index 0ad1034..ed7d441 100644 --- a/src/common/includes/GPIO/usart.h +++ b/src/common/includes/GPIO/usart.h @@ -62,12 +62,14 @@ void usart_debug_puts_header(const char* hdr, const char* str); // Return 1 on success int usart_get_nmea_sentence(char* nmea); -void usart_debug_timestamp(); +void usart_debug_timestamp(void); -void usart_gps_specific_init(); +void usart_gps_specific_init(void); void usart_process_char(char); void usart_gps_process_char(char); +void usart_puts(USART_TypeDef*, const char*); + #endif //__USART_H_ diff --git a/src/common/src/GPIO/usart.c b/src/common/src/GPIO/usart.c index b96fa27..ee7e96d 100644 --- a/src/common/src/GPIO/usart.c +++ b/src/common/src/GPIO/usart.c @@ -53,7 +53,7 @@ void usart_gps_init() { void usart_gps_puts(const char* str) { vTaskSuspendAll(); - return usart_puts(USART3, str); + usart_puts(USART3, str); xTaskResumeAll(); } diff --git a/src/glutt-o-logique/Makefile b/src/glutt-o-logique/Makefile index 4f0aa14..6762514 100644 --- a/src/glutt-o-logique/Makefile +++ b/src/glutt-o-logique/Makefile @@ -39,6 +39,7 @@ MCFLAGS=-mcpu=cortex-m4 -mthumb -mlittle-endian \ -mfpu=fpv4-sp-d16 -mfloat-abi=softfp -mthumb-interwork # COMPILE FLAGS DEFS=-DUSE_STDPERIPH_DRIVER -DSTM32F4XX -DARM_MATH_CM4 -D__FPU_PRESENT=1 + CFLAGS =-Wall -ggdb -std=c99 -c $(MCFLAGS) $(DEFS) $(INCLUDES) # LINKER FLAGS LDSCRIPT= $(SRCDIR)/bsp/stm32_flash.ld diff --git a/src/glutt-o-logique/ds18b20/tm_stm32f4_onewire.c b/src/glutt-o-logique/ds18b20/tm_stm32f4_onewire.c index 44ec8db..4fdce73 100644 --- a/src/glutt-o-logique/ds18b20/tm_stm32f4_onewire.c +++ b/src/glutt-o-logique/ds18b20/tm_stm32f4_onewire.c @@ -20,11 +20,13 @@ void delay_us(uint32_t);
+/*
static void
TM_GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
GPIO_SetBits(GPIOx, GPIO_Pin);
}
+*/
static void
TM_GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
diff --git a/src/simulator/src/Audio/audio.c b/src/simulator/src/Audio/audio.c index 51a7f3d..851b1d9 100644 --- a/src/simulator/src/Audio/audio.c +++ b/src/simulator/src/Audio/audio.c @@ -33,12 +33,12 @@ pa_simple *s = NULL; int current_buffer_length = 0; int16_t * current_buffer_samples; -static void audio_buffer_sent(); +static void audio_buffer_sent(void); static void audio_buffer_sender(void *args); extern char gui_audio_on; -void audio_initialize_platform(int plln, int pllr, int i2sdiv, int i2sodd, int rate) { +void audio_initialize_platform(int __attribute__ ((unused))plln, int __attribute__ ((unused))pllr, int __attribute__ ((unused))i2sdiv, int __attribute__ ((unused))i2sodd, int rate) { int error; @@ -50,7 +50,9 @@ void audio_initialize_platform(int plln, int pllr, int i2sdiv, int i2sodd, int r ss.rate = rate; - if (s = pa_simple_new(NULL, "Glutte", PA_STREAM_PLAYBACK, NULL, "playback", &ss, NULL, NULL, &error)) { + s = pa_simple_new(NULL, "Glutte", PA_STREAM_PLAYBACK, NULL, "playback", &ss, NULL, NULL, &error); + + if (s) { } else { printf("Pulseaudio playback init error\n"); @@ -69,7 +71,7 @@ void audio_initialize_platform(int plln, int pllr, int i2sdiv, int i2sodd, int r } -static void audio_buffer_sender(void *args) { +static void audio_buffer_sender(void __attribute__ ((unused)) *args) { while(1) { @@ -102,11 +104,11 @@ void audio_off() { gui_audio_on = 0; } -void audio_set_volume(int volume) { +void audio_set_volume(int __attribute__ ((unused))volume) { } -void audio_output_sample_without_blocking(int16_t sample) { +void audio_output_sample_without_blocking(int16_t __attribute__ ((unused))sample) { } void audio_play_with_callback(AudioCallbackFunction *callback, void *context) { diff --git a/src/simulator/src/Audio/cw.c b/src/simulator/src/Audio/cw.c index e9321da..f745297 100644 --- a/src/simulator/src/Audio/cw.c +++ b/src/simulator/src/Audio/cw.c @@ -22,9 +22,14 @@ * SOFTWARE. */ +#include "Audio/cw.h" + extern char gui_cw_text[4096]; int gui_cw_text_pointer = 0; +void cw_move_buffer_up(void); +void cw_move_buffer_up(void); + void cw_move_buffer_up() { for (int i = 0; i <= 4010; i++) { diff --git a/src/simulator/src/Core/common.c b/src/simulator/src/Core/common.c index 8b2fe09..56281a8 100644 --- a/src/simulator/src/Core/common.c +++ b/src/simulator/src/Core/common.c @@ -1,2 +1,5 @@ +#include "Core/common.h" + +// Fake the function void __disable_irq() { } diff --git a/src/simulator/src/Core/delay.c b/src/simulator/src/Core/delay.c index 96f8dd5..eeda587 100644 --- a/src/simulator/src/Core/delay.c +++ b/src/simulator/src/Core/delay.c @@ -1,4 +1,7 @@ -void delay_init() { +#include "Core/delay.h" +#include <unistd.h> + +void delay_init(void) { } void delay_us(int micros) { diff --git a/src/simulator/src/Core/main.c b/src/simulator/src/Core/main.c index faf7fd7..d190bce 100644 --- a/src/simulator/src/Core/main.c +++ b/src/simulator/src/Core/main.c @@ -32,8 +32,14 @@ #include "task.h" #include "timers.h" #include "semphr.h" +#include "src/GPS/gps_sim.h" +#include "src/Gui/gui.h" -static void thread_gui(void *arg) { + +void init(void); + + +static void thread_gui(void __attribute__ ((unused))*arg) { main_gui(); } @@ -67,7 +73,7 @@ int gui_gps_custom_month_len; char gui_gps_custom_year[4]; int gui_gps_custom_year_len; -static void thread_gui_gps(void *arg) { +static void thread_gui_gps(void __attribute__ ((unused))*arg) { while(1) { vTaskDelay(1000 / portTICK_RATE_MS); diff --git a/src/simulator/src/GPIO/i2c.c b/src/simulator/src/GPIO/i2c.c index e529543..5de3180 100644 --- a/src/simulator/src/GPIO/i2c.c +++ b/src/simulator/src/GPIO/i2c.c @@ -1,2 +1,28 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + +#include "i2c.h" + void i2c_init() { } diff --git a/src/simulator/src/GPIO/i2c.h b/src/simulator/src/GPIO/i2c.h index e69de29..df761af 100644 --- a/src/simulator/src/GPIO/i2c.h +++ b/src/simulator/src/GPIO/i2c.h @@ -0,0 +1,27 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + +#pragma once + +void i2c_init(void); diff --git a/src/simulator/src/GPIO/pio.c b/src/simulator/src/GPIO/pio.c index 36a6baf..cc16f73 100644 --- a/src/simulator/src/GPIO/pio.c +++ b/src/simulator/src/GPIO/pio.c @@ -1,4 +1,29 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + #include "Core/fsm.h" +#include "GPIO/pio.h" extern char gui_out_tx; extern char gui_out_mod_off; diff --git a/src/simulator/src/GPIO/temperature.c b/src/simulator/src/GPIO/temperature.c index 7c343be..34b079c 100644 --- a/src/simulator/src/GPIO/temperature.c +++ b/src/simulator/src/GPIO/temperature.c @@ -1,3 +1,28 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + + #include "GPIO/temperature.h" #include "FreeRTOS.h" #include "task.h" @@ -5,7 +30,7 @@ extern int gui_temperature_valid; extern float gui_temperature; -void temperature_task(void *pvParameters) { +void temperature_task(void __attribute__ ((unused))*pvParameters) { while (1) { diff --git a/src/simulator/src/GPIO/usart.c b/src/simulator/src/GPIO/usart.c index 37822d6..3782b9f 100644 --- a/src/simulator/src/GPIO/usart.c +++ b/src/simulator/src/GPIO/usart.c @@ -23,13 +23,15 @@ */ -#include "../../../common/includes/GPIO/usart.h" +#include "GPIO/usart.h" +#include "src/Gui/gui.h" extern char uart_recv_txt[4096]; int uart_recv_pointer = 0; -void usart_move_buffer_up(); +void usart_move_buffer_up(void); +void gui_usart_send(char *); void usart_init() { diff --git a/src/simulator/src/GPS/gps.c b/src/simulator/src/GPS/gps.c index 728d165..763e78f 100644 --- a/src/simulator/src/GPS/gps.c +++ b/src/simulator/src/GPS/gps.c @@ -1,4 +1,5 @@ #include "GPIO/usart.h" +#include "src/GPS/gps_sim.h" void gps_usart_send(char * string) { diff --git a/src/simulator/src/GPS/gps_sim.h b/src/simulator/src/GPS/gps_sim.h new file mode 100644 index 0000000..b0c8cdf --- /dev/null +++ b/src/simulator/src/GPS/gps_sim.h @@ -0,0 +1,27 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + +#pragma once + +void gps_usart_send(char *); diff --git a/src/simulator/src/Gui/gui.c b/src/simulator/src/Gui/gui.c index 713b18a..b1be5a8 100644 --- a/src/simulator/src/Gui/gui.c +++ b/src/simulator/src/Gui/gui.c @@ -1,3 +1,27 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + #include "FreeRTOS.h" #include "FreeRTOSConfig.h" #include "task.h" @@ -13,6 +37,8 @@ #include <time.h> #include <limits.h> +#include "gui.h" + #define NK_INCLUDE_FIXED_TYPES #define NK_INCLUDE_STANDARD_IO #define NK_INCLUDE_DEFAULT_ALLOCATOR @@ -22,7 +48,14 @@ #define NK_IMPLEMENTATION #define NK_XLIB_GL3_IMPLEMENTATION #define NK_XLIB_LOAD_OPENGL_EXTENSIONS + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wunused-but-set-variable" +#pragma GCC diagnostic ignored "-Wunused-value" +#pragma GCC diagnostic ignored "-Wunused-function" #include "nuklear.h" +#pragma GCC diagnostic pop + #include "nuklear_xlib_gl3.h" #define WINDOW_WIDTH 1200 @@ -152,8 +185,7 @@ struct XWindow { }; static int gl_err = FALSE; -static int gl_error_handler(Display *dpy, XErrorEvent *ev) { - UNUSED((dpy, ev)); +static int gl_error_handler(Display __attribute__ ((unused))*dpy, XErrorEvent __attribute__ ((unused))*ev) { gl_err = TRUE; return 0; } @@ -191,7 +223,7 @@ static int has_extension(const char *string, const char *ext) { } -int main_gui() { +void main_gui() { /* Platform */ int running = 1; struct XWindow win; @@ -848,6 +880,5 @@ int main_gui() { XFreeColormap(win.dpy, win.cmap); XDestroyWindow(win.dpy, win.win); XCloseDisplay(win.dpy); - return 0; } diff --git a/src/simulator/src/Gui/gui.h b/src/simulator/src/Gui/gui.h new file mode 100644 index 0000000..fac0013 --- /dev/null +++ b/src/simulator/src/Gui/gui.h @@ -0,0 +1,27 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2016 Matthias P. Braendli, Maximilien Cuony + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. +*/ + +#pragma once + +void main_gui(void); |