]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
Remote object callable from many places
authorFred Sundvik <fsundvik@gmail.com>
Sat, 12 Mar 2016 17:35:09 +0000 (19:35 +0200)
committerFred Sundvik <fsundvik@gmail.com>
Sat, 12 Mar 2016 17:35:09 +0000 (19:35 +0200)
Change init_transport to add_remote_objects, so that it can be
called many times from different places.

serial_link/protocol/transport.c
serial_link/protocol/transport.h
serial_link/system/system.c
serial_link/tests/transport_tests.c

index 4542a7a050e4ab832cbb5ca2817b205c41ac0a70..fbcb040bf1c00c9cd739297230cd7f71873b5015 100644 (file)
@@ -27,15 +27,15 @@ SOFTWARE.
 #include "serial_link/protocol/triple_buffered_object.h"
 #include <string.h>
 
-static remote_object_t** remote_objects;
-static uint32_t num_remote_objects;
+#define MAX_REMOTE_OBJECTS 16
+static remote_object_t* remote_objects[MAX_REMOTE_OBJECTS];
+static uint32_t num_remote_objects = 0;
 
-void init_transport(remote_object_t** _remote_objects, uint32_t _num_remote_objects) {
-    remote_objects = _remote_objects;
-    num_remote_objects = _num_remote_objects;
+void add_remote_objects(remote_object_t** _remote_objects, uint32_t _num_remote_objects) {
     unsigned int i;
-    for(i=0;i<num_remote_objects;i++) {
-        remote_object_t* obj = remote_objects[i];
+    for(i=0;i<_num_remote_objects;i++) {
+        remote_object_t* obj = _remote_objects[i];
+        remote_objects[num_remote_objects++] = obj;
         if (obj->object_type == MASTER_TO_ALL_SLAVES) {
             triple_buffer_object_t* tb = (triple_buffer_object_t*)obj->buffer;
             triple_buffer_init(tb);
index 9e9e22462c7417ca7704e76448d3f297872cdebf..e518aaa6eb7654294ae8400eb0fbdd5dedd6f5d5 100644 (file)
@@ -144,7 +144,7 @@ typedef struct { \
 
 #define REMOTE_OBJECT(name) (remote_object_t*)&remote_object_##name
 
-void init_transport(remote_object_t** remote_objects, uint32_t num_remote_objects);
+void add_remote_objects(remote_object_t** remote_objects, uint32_t num_remote_objects);
 void transport_recv_frame(uint8_t from, uint8_t* data, uint16_t size);
 void update_transport(void);
 
index 9cf695a308b44cd69b30aac0c748d0598c127c33..9e4ee5d95e11b9d0edc7ff12d922261211f918c1 100644 (file)
@@ -120,7 +120,7 @@ static matrix_object_t last_matrix = {};
 SLAVE_TO_MASTER_OBJECT(keyboard_matrix, matrix_object_t);
 MASTER_TO_ALL_SLAVES_OBJECT(serial_link_connected, bool);
 
-remote_object_t* test_remote_objects[] = {
+static remote_object_t* remote_objects[] = {
     REMOTE_OBJECT(serial_link_connected),
     REMOTE_OBJECT(keyboard_matrix),
 };
@@ -128,7 +128,7 @@ remote_object_t* test_remote_objects[] = {
 void init_serial_link(void) {
     serial_link_connected = false;
     init_serial_link_hal();
-    init_transport(test_remote_objects, sizeof(test_remote_objects)/sizeof(remote_object_t*));
+    add_remote_objects(remote_objects, sizeof(remote_objects)/sizeof(remote_object_t*));
     init_byte_stuffer();
     sdStart(&SD1, &config);
     sdStart(&SD2, &config);
index 3e9bffdfa713959d5635f396b4413de4369fd54e..02a7a10425bda73257379a0d9780ecbb623d5086 100644 (file)
@@ -53,7 +53,7 @@ MASTER_TO_ALL_SLAVES_OBJECT(master_to_slave, test_object1_t);
 MASTER_TO_SINGLE_SLAVE_OBJECT(master_to_single_slave, test_object1_t);
 SLAVE_TO_MASTER_OBJECT(slave_to_master, test_object1_t);
 
-remote_object_t* test_remote_objects[] = {
+static remote_object_t* test_remote_objects[] = {
     REMOTE_OBJECT(master_to_slave),
     REMOTE_OBJECT(master_to_single_slave),
     REMOTE_OBJECT(slave_to_master),
@@ -61,7 +61,7 @@ remote_object_t* test_remote_objects[] = {
 
 Describe(Transport);
 BeforeEach(Transport) {
-    init_transport(test_remote_objects, sizeof(test_remote_objects) / sizeof(remote_object_t*));
+    add_remote_objects(test_remote_objects, sizeof(test_remote_objects) / sizeof(remote_object_t*));
     sent_data_size = 0;
 }
 AfterEach(Transport) {}