Updated create_publish_string

This commit is contained in:
RobinVdB8
2023-11-26 15:15:56 +01:00
parent b302ab2e11
commit be0339b2cf

View File

@@ -46,7 +46,7 @@ static void mqtt_sub_request_cb(void*, err_t);
static void mqtt_connection_cb(mqtt_client_t*, void*, mqtt_connection_status_t);
static void mosquitto_connect(mqtt_client_t*);
static uint32_t color_picker(char*);
static void create_publish_string(char*, char*, llfs_file_t*, size_t, size_t);
static void create_publish_string(char*, char*, size_t);
// Global variables used in mqtt_incoming_publish_cb and mqtt_incoming_data_cb to give an easy to use ID to the subscribed topics
static sFONT* font;
@@ -78,36 +78,21 @@ static void mqtt_pub_request_cb(void* arg, err_t result) {
static void publish_data(mqtt_client_t* client, void* arg) {
char pub_payload[200] = {0};
err_t err;
size_t num_files;
llfs_file_t file_list[MAX_FILES];
u8_t qos = PUBLISH_QOS;
u8_t retain = PUBLISH_RETAIN;
LOG_DEBUG(TAG, "Entering publish");
num_files = llfs_file_list(file_list, MAX_FILES, "*.bmp");
create_publish_string("image", pub_payload,sizeof(pub_payload));
if (num_files == 0) {
strncat(pub_payload, "No images found", sizeof(pub_payload) - strlen(pub_payload) - 1);
LOG_INFO(TAG, "%s: No images found", __func__);
} else {
create_publish_string("image", pub_payload, file_list, sizeof(pub_payload), num_files);
}
err = mqtt_publish(client, "getImageList", pub_payload, strlen(pub_payload), qos, retain, mqtt_pub_request_cb, arg);
if (err != ERR_OK) {
LOG_DEBUG(TAG, "Publish err: %d", err);
}
if (err != ERR_OK) {
LOG_DEBUG(TAG, "Publish err: %d", err);
}
pub_payload[0] = '\0';
create_publish_string("gif", pub_payload, sizeof(pub_payload));
num_files = llfs_file_list(file_list, MAX_FILES, "*.gif");
if (num_files == 0) {
strncat(pub_payload, "No gifs found", sizeof(pub_payload) - strlen(pub_payload) - 1);
LOG_INFO(TAG, "%s: No gifs found", __func__);
} else {
create_publish_string("gif", pub_payload, file_list, sizeof(pub_payload), num_files);
}
err = mqtt_publish(client, "getImageList", pub_payload, strlen(pub_payload), qos, retain, mqtt_pub_request_cb, arg);
if (err != ERR_OK) {
LOG_DEBUG(TAG, "Publish err: %d", err);
@@ -391,16 +376,40 @@ uint32_t color_picker(char* color_in) {
return LCD_BLACK;
}
static void create_publish_string(char* file_type, char* payload_buffer, llfs_file_t* file_list, size_t buffer_size, size_t files_amount) {
/**
* @brief creates a string to publish on the getImageList topic
*
* @param[in] file_type The type of file file_list is made out of
* @param[in] payload_buffer The string to be published
* @param[in] buffer_size Size of payload_buffer
*/
static void create_publish_string(char* file_type, char* payload_buffer, size_t buffer_size) {
size_t num_files;
llfs_file_t file_list[MAX_FILES];
if (strcmp(file_type, "image") == 0) {
num_files = llfs_file_list(file_list, MAX_FILES, "*.bmp");
if (num_files == 0) {
strncat(payload_buffer, "No images found", buffer_size - strlen(payload_buffer) - 1);
LOG_INFO(TAG, "%s: No images found", __func__);
return;
}
strncat(payload_buffer, "Available images: ", buffer_size - strlen(payload_buffer) - 1);
} else if (strcmp(file_type, "gif") == 0) {
num_files = llfs_file_list(file_list, MAX_FILES, "*.gif");
if (num_files == 0) {
strncat(payload_buffer, "No gifs found", buffer_size - strlen(payload_buffer) - 1);
LOG_INFO(TAG, "%s: No gifs found", __func__);
return;
}
strncat(payload_buffer, "Available gifs: ", buffer_size - strlen(payload_buffer) - 1);
} else {
LOG_WARN(TAG, "No application for given file type: %s", file_type);
return;
}
for (size_t i = 0; i < files_amount; i++) {
for (size_t i = 0; i < num_files; i++) {
// Concatenate file names into the payload string
strncat(payload_buffer, file_list[i].name, buffer_size - strlen(payload_buffer) - 1);
strncat(payload_buffer, ", ", buffer_size - strlen(payload_buffer) - 1); // Add a comma between file names