From bae425ca05d861f5ae078530b3c02be978d0e60d Mon Sep 17 00:00:00 2001 From: Glenn Ruben Bakke Date: Tue, 3 Jan 2017 22:16:00 +0100 Subject: [PATCH] nrf5/drivers: Adding template for c-implementation of lcd, epaper and oled drivers as a display module. --- .../display/epaper/moddisplay_epaper.c | 41 +++++++++++++++++ .../display/epaper/moddisplay_epaper.h | 32 +++++++++++++ nrf5/drivers/display/lcd/moddisplay_lcd.c | 43 +++++++++++++++++ nrf5/drivers/display/lcd/moddisplay_lcd.h | 32 +++++++++++++ nrf5/drivers/display/moddisplay.c | 46 +++++++++++++++++++ nrf5/drivers/display/moddisplay.h | 32 +++++++++++++ nrf5/drivers/display/oled/moddisplay_oled.c | 42 +++++++++++++++++ nrf5/drivers/display/oled/moddisplay_oled.h | 32 +++++++++++++ 8 files changed, 300 insertions(+) create mode 100644 nrf5/drivers/display/epaper/moddisplay_epaper.c create mode 100644 nrf5/drivers/display/epaper/moddisplay_epaper.h create mode 100644 nrf5/drivers/display/lcd/moddisplay_lcd.c create mode 100644 nrf5/drivers/display/lcd/moddisplay_lcd.h create mode 100644 nrf5/drivers/display/moddisplay.c create mode 100644 nrf5/drivers/display/moddisplay.h create mode 100644 nrf5/drivers/display/oled/moddisplay_oled.c create mode 100644 nrf5/drivers/display/oled/moddisplay_oled.h diff --git a/nrf5/drivers/display/epaper/moddisplay_epaper.c b/nrf5/drivers/display/epaper/moddisplay_epaper.c new file mode 100644 index 0000000000..7a08e19a1f --- /dev/null +++ b/nrf5/drivers/display/epaper/moddisplay_epaper.c @@ -0,0 +1,41 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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 "py/obj.h" + +STATIC const mp_map_elem_t epaper_module_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_epaper) }, +#if 0 + { MP_OBJ_NEW_QSTR(MP_QSTR_sld00200p), (mp_obj_t)&epaper_sld00200p_type }, +#endif +}; + +STATIC MP_DEFINE_CONST_DICT(epaper_module_globals, epaper_module_globals_table); + +const mp_obj_module_t display_epaper_module = { + .base = { &mp_type_module }, + .globals = (mp_obj_dict_t*)&epaper_module_globals, +}; diff --git a/nrf5/drivers/display/epaper/moddisplay_epaper.h b/nrf5/drivers/display/epaper/moddisplay_epaper.h new file mode 100644 index 0000000000..5a90a001fa --- /dev/null +++ b/nrf5/drivers/display/epaper/moddisplay_epaper.h @@ -0,0 +1,32 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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. + */ + +#ifndef MODDISPLAY_EPAPER_H__ +#define MODDISPLAY_EPAPER_H__ + +extern const mp_obj_module_t display_epaper_module; + +#endif // MODDISPLAY_EPAPER_H__ diff --git a/nrf5/drivers/display/lcd/moddisplay_lcd.c b/nrf5/drivers/display/lcd/moddisplay_lcd.c new file mode 100644 index 0000000000..a456c326d4 --- /dev/null +++ b/nrf5/drivers/display/lcd/moddisplay_lcd.c @@ -0,0 +1,43 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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 "py/obj.h" + +STATIC const mp_map_elem_t lcd_module_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_lcd) }, +#if 0 + { MP_OBJ_NEW_QSTR(MP_QSTR_sld10261p), (mp_obj_t)&lcd_sld10261p_type }, + { MP_OBJ_NEW_QSTR(MP_QSTR_ssd1289), (mp_obj_t)&lcd_ssd1289_type }, + { MP_OBJ_NEW_QSTR(MP_QSTR_ls027b7dh01), (mp_obj_t)&lcd_ls027b7dh01_type }, +#endif +}; + +STATIC MP_DEFINE_CONST_DICT(lcd_module_globals, lcd_module_globals_table); + +const mp_obj_module_t display_lcd_module = { + .base = { &mp_type_module }, + .globals = (mp_obj_dict_t*)&lcd_module_globals, +}; diff --git a/nrf5/drivers/display/lcd/moddisplay_lcd.h b/nrf5/drivers/display/lcd/moddisplay_lcd.h new file mode 100644 index 0000000000..8646316f53 --- /dev/null +++ b/nrf5/drivers/display/lcd/moddisplay_lcd.h @@ -0,0 +1,32 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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. + */ + +#ifndef MODDISPLAY_LCD_H__ +#define MODDISPLAY_LCD_H__ + +extern const mp_obj_module_t display_lcd_module; + +#endif // MODDISPLAY_LCD_H__ diff --git a/nrf5/drivers/display/moddisplay.c b/nrf5/drivers/display/moddisplay.c new file mode 100644 index 0000000000..d4a12126dd --- /dev/null +++ b/nrf5/drivers/display/moddisplay.c @@ -0,0 +1,46 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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 "py/obj.h" + +#include "epaper/moddisplay_epaper.h" +#include "lcd/moddisplay_lcd.h" +#include "oled/moddisplay_oled.h" + +STATIC const mp_map_elem_t display_module_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_display) }, + { MP_OBJ_NEW_QSTR(MP_QSTR_epaper), (mp_obj_t)&display_epaper_module }, + { MP_OBJ_NEW_QSTR(MP_QSTR_lcd), (mp_obj_t)&display_lcd_module}, + { MP_OBJ_NEW_QSTR(MP_QSTR_oled), (mp_obj_t)&display_oled_module }, +}; + + +STATIC MP_DEFINE_CONST_DICT(display_module_globals, display_module_globals_table); + +const mp_obj_module_t display_module = { + .base = { &mp_type_module }, + .globals = (mp_obj_dict_t*)&display_module_globals, +}; diff --git a/nrf5/drivers/display/moddisplay.h b/nrf5/drivers/display/moddisplay.h new file mode 100644 index 0000000000..f32833a65d --- /dev/null +++ b/nrf5/drivers/display/moddisplay.h @@ -0,0 +1,32 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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. + */ + +#ifndef MODDISPLAY_H__ +#define MODDISPLAY_H__ + +extern const mp_obj_module_t display_module; + +#endif // MODDISPLAY_H__ diff --git a/nrf5/drivers/display/oled/moddisplay_oled.c b/nrf5/drivers/display/oled/moddisplay_oled.c new file mode 100644 index 0000000000..e0b4237241 --- /dev/null +++ b/nrf5/drivers/display/oled/moddisplay_oled.c @@ -0,0 +1,42 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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 "py/obj.h" + +STATIC const mp_map_elem_t oled_module_globals_table[] = { + { MP_OBJ_NEW_QSTR(MP_QSTR___name__), MP_OBJ_NEW_QSTR(MP_QSTR_oled) }, +#if 0 + { MP_OBJ_NEW_QSTR(MP_QSTR_ssd1305), (mp_obj_t)&oled_ssd1305_type }, + { MP_OBJ_NEW_QSTR(MP_QSTR_ssd1306), (mp_obj_t)&oled_ssd1306_type }, +#endif +}; + +STATIC MP_DEFINE_CONST_DICT(oled_module_globals, oled_module_globals_table); + +const mp_obj_module_t display_oled_module = { + .base = { &mp_type_module }, + .globals = (mp_obj_dict_t*)&oled_module_globals, +}; diff --git a/nrf5/drivers/display/oled/moddisplay_oled.h b/nrf5/drivers/display/oled/moddisplay_oled.h new file mode 100644 index 0000000000..9a37e4b715 --- /dev/null +++ b/nrf5/drivers/display/oled/moddisplay_oled.h @@ -0,0 +1,32 @@ +/* + * This file is part of the Micro Python project, http://micropython.org/ + * + * The MIT License (MIT) + * + * Copyright (c) 2017 Glenn Ruben Bakke + * + * 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. + */ + +#ifndef MODDISPLAY_OLED_H__ +#define MODDISPLAY_OLED_H__ + +extern const mp_obj_module_t display_oled_module; + +#endif // MODDISPLAY_OLED_H__