From a3dec490a014510e33180c141b81ac152222af8b Mon Sep 17 00:00:00 2001 From: Lucas-Bruder Date: Fri, 30 Jun 2017 14:56:05 -0700 Subject: [PATCH 1/4] Refreshed to newest sdk. need to test --- .../led_strip/inc/led_strip/led_strip.h | 15 ++------ components/led_strip/led_strip.c | 6 ++-- main/component.mk | 9 ----- main/main.c | 35 ------------------- 4 files changed, 6 insertions(+), 59 deletions(-) delete mode 100644 main/component.mk delete mode 100644 main/main.c diff --git a/components/led_strip/inc/led_strip/led_strip.h b/components/led_strip/inc/led_strip/led_strip.h index 3728cbc..ba85743 100644 --- a/components/led_strip/inc/led_strip/led_strip.h +++ b/components/led_strip/inc/led_strip/led_strip.h @@ -45,15 +45,6 @@ struct led_strip_t { // RMT peripheral settings rmt_channel_t rmt_channel; - /* - * Interrupt table is located in soc.h - * As of 11/27/16, reccomended interrupts are: - * 9, 12, 13, 17, 18, 19, 20, 21 or 23 - * Ensure that the same interrupt number isn't used twice - * across all libraries - */ - int rmt_interrupt_num; - gpio_num_t gpio; // Must be less than GPIO_NUM_33 // Double buffering elements @@ -69,8 +60,8 @@ bool led_strip_init(struct led_strip_t *led_strip); /** * Sets the pixel at pixel_num to color. */ -bool led_strip_set_pixel_color(struct led_strip_t *led_strip, uint32_t pixel_num, struct led_color_t *color); -bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, uint32_t pixel_num, uint8_t red, uint8_t green, uint8_t blue); +bool led_strip_set_pixel_color(struct led_strip_t *led_strip, const uint32_t pixel_num, const struct led_color_t *color); +bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, const uint32_t pixel_num, const uint8_t red, const uint8_t green, const uint8_t blue); /** * Get the pixel color at pixel_num for the led strip that is currently being shown! * NOTE: If you call set_pixel_color then get_pixel_color for the same pixel_num, you will not @@ -79,7 +70,7 @@ bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, uint32_t pixel_num, * * If there is an invalid argument, color will point to NULL and this function will return false. */ -bool led_strip_get_pixel_color(struct led_strip_t *led_strip, uint32_t pixel_num, struct led_color_t *color); +bool led_strip_get_pixel_color(struct led_strip_t *led_strip, const uint32_t pixel_num, struct led_color_t *color); /** * Updates the led buffer to be shown using double buffering. diff --git a/components/led_strip/led_strip.c b/components/led_strip/led_strip.c index 7273aa8..806be55 100644 --- a/components/led_strip/led_strip.c +++ b/components/led_strip/led_strip.c @@ -346,7 +346,7 @@ bool led_strip_init(struct led_strip_t *led_strip) return true; } -bool led_strip_set_pixel_color(struct led_strip_t *led_strip, uint32_t pixel_num, struct led_color_t *color) +bool led_strip_set_pixel_color(struct led_strip_t *led_strip, const uint32_t pixel_num, const struct led_color_t *color) { bool set_led_success = true; @@ -363,7 +363,7 @@ bool led_strip_set_pixel_color(struct led_strip_t *led_strip, uint32_t pixel_num return set_led_success; } -bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, uint32_t pixel_num, uint8_t red, uint8_t green, uint8_t blue) +bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, const uint32_t pixel_num, const uint8_t red, const uint8_t green, const uint8_t blue) { bool set_led_success = true; @@ -384,7 +384,7 @@ bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, uint32_t pixel_num, return set_led_success; } -bool led_strip_get_pixel_color(struct led_strip_t *led_strip, uint32_t pixel_num, struct led_color_t *color) +bool led_strip_get_pixel_color(struct led_strip_t *led_strip, const uint32_t pixel_num, struct led_color_t *color) { bool get_success = true; diff --git a/main/component.mk b/main/component.mk deleted file mode 100644 index f2f38c3..0000000 --- a/main/component.mk +++ /dev/null @@ -1,9 +0,0 @@ -# -# Main Makefile. This is basically the same as a component makefile. -# -# This Makefile should, at the very least, just include $(SDK_PATH)/make/component_common.mk. By default, -# this will take the sources in the src/ directory, compile them and link them into -# lib(subdirectory_name).a in the build directory. This behaviour is entirely configurable, -# please read the ESP-IDF documents if you need to do this. -# - diff --git a/main/main.c b/main/main.c deleted file mode 100644 index 5022078..0000000 --- a/main/main.c +++ /dev/null @@ -1,35 +0,0 @@ -/* ---------------------------------------------------------------------------- - File: main.c - Author(s): Lucas Bruder - Date Created: 11/23/2016 - Last modified: 11/26/2016 - - ------------------------------------------------------------------------- */ - -#include "freertos/FreeRTOS.h" -#include "freertos/task.h" - -#include "esp_system.h" -#include "esp_task.h" -#include "nvs_flash.h" -#include "driver/gpio.h" -#include "led_strip/led_strip.h" - -#include - -extern void main_led_task(void *args); - -void app_main(void) -{ - nvs_flash_init(); - TaskHandle_t main_task_handle; - BaseType_t task_created = xTaskCreate(main_led_task, - "main_led_task", - ESP_TASK_MAIN_STACK, - NULL, - ESP_TASK_MAIN_PRIO, - &main_task_handle); - (void)task_created; - vTaskDelete(NULL); -} - From b43dddd319a252b2e6796e2c5696a2a2e7076ad5 Mon Sep 17 00:00:00 2001 From: Lucas-Bruder Date: Fri, 30 Jun 2017 14:58:05 -0700 Subject: [PATCH 2/4] Fixed header file --- components/led_strip/inc/led_strip/led_strip.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/components/led_strip/inc/led_strip/led_strip.h b/components/led_strip/inc/led_strip/led_strip.h index ba85743..bd1c53e 100644 --- a/components/led_strip/inc/led_strip/led_strip.h +++ b/components/led_strip/inc/led_strip/led_strip.h @@ -60,8 +60,16 @@ bool led_strip_init(struct led_strip_t *led_strip); /** * Sets the pixel at pixel_num to color. */ -bool led_strip_set_pixel_color(struct led_strip_t *led_strip, const uint32_t pixel_num, const struct led_color_t *color); -bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, const uint32_t pixel_num, const uint8_t red, const uint8_t green, const uint8_t blue); +bool led_strip_set_pixel_color(struct led_strip_t *led_strip, + const uint32_t pixel_num, + const struct led_color_t *color); + +bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, + const uint32_t pixel_num, + const uint8_t red, + const uint8_t green, + const uint8_t blue); + /** * Get the pixel color at pixel_num for the led strip that is currently being shown! * NOTE: If you call set_pixel_color then get_pixel_color for the same pixel_num, you will not @@ -70,7 +78,9 @@ bool led_strip_set_pixel_rgb(struct led_strip_t *led_strip, const uint32_t pixel * * If there is an invalid argument, color will point to NULL and this function will return false. */ -bool led_strip_get_pixel_color(struct led_strip_t *led_strip, const uint32_t pixel_num, struct led_color_t *color); +bool led_strip_get_pixel_color(struct led_strip_t *led_strip, + const uint32_t pixel_num, + struct led_color_t *color); /** * Updates the led buffer to be shown using double buffering. From 1d3b04d090e51c704f65b2bd907cf9d2363d5f0b Mon Sep 17 00:00:00 2001 From: Lucas-Bruder Date: Fri, 30 Jun 2017 15:16:49 -0700 Subject: [PATCH 3/4] Updated component structure --- .gitignore | 1 + LICENSE | 202 ------------------ .../led_strip/component.mk => component.mk | 0 examples/simple/Makefile | 9 + examples/simple/main/component.mk | 0 examples/simple/main/main.c | 60 ++++++ .../inc => inc}/led_strip/led_strip.h | 0 .../led_strip/led_strip.c => led_strip.c | 0 8 files changed, 70 insertions(+), 202 deletions(-) delete mode 100644 LICENSE rename components/led_strip/component.mk => component.mk (100%) create mode 100644 examples/simple/Makefile create mode 100644 examples/simple/main/component.mk create mode 100644 examples/simple/main/main.c rename {components/led_strip/inc => inc}/led_strip/led_strip.h (100%) rename components/led_strip/led_strip.c => led_strip.c (100%) diff --git a/.gitignore b/.gitignore index ed86553..f4bdd54 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ .DS_Store build/ +sdkconfig* \ No newline at end of file diff --git a/LICENSE b/LICENSE deleted file mode 100644 index d645695..0000000 --- a/LICENSE +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/components/led_strip/component.mk b/component.mk similarity index 100% rename from components/led_strip/component.mk rename to component.mk diff --git a/examples/simple/Makefile b/examples/simple/Makefile new file mode 100644 index 0000000..dc4691c --- /dev/null +++ b/examples/simple/Makefile @@ -0,0 +1,9 @@ +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# + +PROJECT_NAME := simple +EXTRA_COMPONENT_DIRS := "../../../" + +include $(IDF_PATH)/make/project.mk diff --git a/examples/simple/main/component.mk b/examples/simple/main/component.mk new file mode 100644 index 0000000..e69de29 diff --git a/examples/simple/main/main.c b/examples/simple/main/main.c new file mode 100644 index 0000000..e6ceeb5 --- /dev/null +++ b/examples/simple/main/main.c @@ -0,0 +1,60 @@ +/* ---------------------------------------------------------------------------- + File: main.c + Author(s): Lucas Bruder + Date Created: 11/23/2016 + Last modified: 11/26/2016 + ------------------------------------------------------------------------- */ + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +#include "esp_system.h" +#include "esp_task.h" +#include "nvs_flash.h" +#include "driver/gpio.h" +#include "led_strip/led_strip.h" + +#include + +extern void main_led_task(void *args); + +void app_main(void) +{ + nvs_flash_init(); + TaskHandle_t main_task_handle; + BaseType_t task_created = xTaskCreate(main_led_task, + "main_led_task", + ESP_TASK_MAIN_STACK, + NULL, + ESP_TASK_MAIN_PRIO, + &main_task_handle); + (void)task_created; + vTaskDelete(NULL); +} + +#define LED_STRIP_LENGTH 477U +#define LED_STRIP_RMT_INTR_NUM 19U +#define DELAY_MS 400 +#define WIDTH 5 +#define MAX_BRIGHTNESS 2 + +static struct led_color_t led_strip_buf_1[LED_STRIP_LENGTH]; +static struct led_color_t led_strip_buf_2[LED_STRIP_LENGTH]; + + +void main_led_task(void *args) +{ + struct led_strip_t led_strip = { + .rgb_led_type = RGB_LED_TYPE_WS2812, + .rmt_channel = RMT_CHANNEL_1, + .rmt_interrupt_num = LED_STRIP_RMT_INTR_NUM, + .gpio = GPIO_NUM_21, + .led_strip_buf_1 = led_strip_buf_1, + .led_strip_buf_2 = led_strip_buf_2, + .led_strip_length = LED_STRIP_LENGTH + }; + led_strip.access_semaphore = xSemaphoreCreateBinary(); + + bool led_init_ok = led_strip_init(&led_strip); + assert(led_init_ok); +} diff --git a/components/led_strip/inc/led_strip/led_strip.h b/inc/led_strip/led_strip.h similarity index 100% rename from components/led_strip/inc/led_strip/led_strip.h rename to inc/led_strip/led_strip.h diff --git a/components/led_strip/led_strip.c b/led_strip.c similarity index 100% rename from components/led_strip/led_strip.c rename to led_strip.c From f4188104563bb66e843c3b9f6def3e6c18348d2a Mon Sep 17 00:00:00 2001 From: Lucas-Bruder Date: Wed, 5 Jul 2017 10:02:40 -0700 Subject: [PATCH 4/4] Renamed some folders and changed structure --- component.mk | 4 ---- examples/simple/Makefile | 1 - examples/simple/main/main.c | 6 +++--- {inc/led_strip => include}/led_strip.h | 0 led_strip.c | 4 ++-- 5 files changed, 5 insertions(+), 10 deletions(-) rename {inc/led_strip => include}/led_strip.h (100%) diff --git a/component.mk b/component.mk index 792f1dd..e69de29 100644 --- a/component.mk +++ b/component.mk @@ -1,4 +0,0 @@ - -COMPONENT_ADD_INCLUDEDIRS := inc -COMPONENT_PRIV_INCLUDEDIRS := inc/led_strip - diff --git a/examples/simple/Makefile b/examples/simple/Makefile index dc4691c..8ceed60 100644 --- a/examples/simple/Makefile +++ b/examples/simple/Makefile @@ -4,6 +4,5 @@ # PROJECT_NAME := simple -EXTRA_COMPONENT_DIRS := "../../../" include $(IDF_PATH)/make/project.mk diff --git a/examples/simple/main/main.c b/examples/simple/main/main.c index e6ceeb5..a31bef5 100644 --- a/examples/simple/main/main.c +++ b/examples/simple/main/main.c @@ -5,6 +5,8 @@ Last modified: 11/26/2016 ------------------------------------------------------------------------- */ +#include + #include "freertos/FreeRTOS.h" #include "freertos/task.h" @@ -12,9 +14,8 @@ #include "esp_task.h" #include "nvs_flash.h" #include "driver/gpio.h" -#include "led_strip/led_strip.h" -#include +#include extern void main_led_task(void *args); @@ -41,7 +42,6 @@ void app_main(void) static struct led_color_t led_strip_buf_1[LED_STRIP_LENGTH]; static struct led_color_t led_strip_buf_2[LED_STRIP_LENGTH]; - void main_led_task(void *args) { struct led_strip_t led_strip = { diff --git a/inc/led_strip/led_strip.h b/include/led_strip.h similarity index 100% rename from inc/led_strip/led_strip.h rename to include/led_strip.h diff --git a/led_strip.c b/led_strip.c index 806be55..94c6e43 100644 --- a/led_strip.c +++ b/led_strip.c @@ -15,12 +15,12 @@ and the task will look at buffer 2 for refreshing the LEDs ------------------------------------------------------------------------- */ -#include "led_strip/led_strip.h" +#include "led_strip.h" #include "freertos/task.h" #include -#define LED_STRIP_TASK_SIZE (512) +#define LED_STRIP_TASK_SIZE (2048) #define LED_STRIP_TASK_PRIORITY (configMAX_PRIORITIES - 1) #define LED_STRIP_REFRESH_PERIOD_MS (30U) // TODO: add as parameter to led_strip_init