change of struct

struct no longer contains allocated arrays

problem with the reply string
This commit is contained in:
joran2738
2023-11-06 23:57:04 +01:00
parent fb1cc1e4bc
commit 566bdb00ed
3 changed files with 44 additions and 51 deletions

View File

@@ -13,20 +13,22 @@
#include <stdlib.h> #include <stdlib.h>
#include "lwip/netif.h" #include "lwip/netif.h"
#include "lwip.h" #include "lwip.h"
#define LOGGER_LEVEL_ALL
#include "log.h"
typedef struct { typedef struct {
char* name; char name[20];
char* surname; char surname[20];
uint8_t mac_address[6]; uint8_t mac_address[6];
char* reply; char reply[200];
}owner_details_t; }owner_details_t;
uint8_t set_owner_details_name(owner_details_t*, char* ); uint8_t set_owner_details_name(owner_details_t*, char* );
uint8_t set_owner_details_sirname(owner_details_t*, char* ); uint8_t set_owner_details_sirname(owner_details_t*, char* );
uint8_t set_owner_details(owner_details_t*, char* , char*); uint8_t set_owner_details(owner_details_t*, char* , char*);
char* get_owner_details_name(owner_details_t); char* get_owner_details_name(owner_details_t*);
char* get_owner_details_surname(owner_details_t); char* get_owner_details_surname(owner_details_t*);
char* get_owner_details_reply(owner_details_t); char* get_owner_details_reply(owner_details_t*);
#endif /* INC_UDP_BROADCAST_H_ */ #endif /* INC_UDP_BROADCAST_H_ */

View File

@@ -36,13 +36,8 @@ static void set_owner_details_mac(owner_details_t* owner){
uint8_t set_owner_details_name(owner_details_t *owner, char *name){ uint8_t set_owner_details_name(owner_details_t *owner, char *name){
if(name != NULL){ if(name != NULL){
if(owner->name == NULL){ LOG_DEBUG("set_owner_details_name","set: %s",name);
owner->name = (char*)malloc(strlen(name) + 1); strncpy(owner->name,name,sizeof(owner->name));
}
else{
owner->name = (char*)realloc(owner->name,strlen(name) + 1);
}
strncpy(owner->name,name,strlen(owner->name));
return 1; return 1;
} }
else{ else{
@@ -61,13 +56,8 @@ uint8_t set_owner_details_name(owner_details_t *owner, char *name){
*/ */
uint8_t set_owner_details_surname(owner_details_t* owner, char* surname){ uint8_t set_owner_details_surname(owner_details_t* owner, char* surname){
if(surname != NULL){ if(surname != NULL){
if(owner->surname == NULL){ LOG_DEBUG("set_owner_details_surname","set: %s",surname);
owner->surname = (char*)malloc(strlen(surname) + 1); strncpy(owner->surname,surname,sizeof(owner->surname));
}
else{
owner->surname = (char*)realloc(owner->surname,strlen(surname) + 1);
}
strncpy(owner->surname,surname,strlen(owner->surname));
return 1; return 1;
} }
else{ else{
@@ -86,13 +76,8 @@ uint8_t set_owner_details_surname(owner_details_t* owner, char* surname){
static uint8_t set_owner_details_reply(owner_details_t *owner, char *reply){ static uint8_t set_owner_details_reply(owner_details_t *owner, char *reply){
if(reply != NULL){ if(reply != NULL){
if(owner->reply == NULL){ LOG_DEBUG("set_owner_details_reply","set: %s",reply);
owner->reply = (char*)malloc(strlen(reply) + 1); strncpy(owner->reply,reply,sizeof(owner->reply));
}
else{
owner->reply = (char*)realloc(owner->reply,strlen(reply) + 1);
}
strncpy(owner->reply,reply,strlen(owner->reply));
return 1; return 1;
} }
else{ else{
@@ -145,6 +130,10 @@ uint8_t set_owner_details(owner_details_t* owner, char* name, char* surname){
if(set_owner_details_name(owner, name) && set_owner_details_surname(owner, surname)){ if(set_owner_details_name(owner, name) && set_owner_details_surname(owner, surname)){
set_owner_details_mac(owner); set_owner_details_mac(owner);
format_reply(owner); format_reply(owner);
return 1;
}
else{
return 0;
} }
} }
@@ -156,13 +145,12 @@ uint8_t set_owner_details(owner_details_t* owner, char* name, char* surname){
* @return * @return
*/ */
char* get_owner_details_name(owner_details_t owner){ char* get_owner_details_name(owner_details_t *owner){
char *err_reply = "no name yet"; char err_reply[20] = "no name yet";
if(owner.name == NULL){ if(owner->name == NULL){
owner.name = (char*)malloc(strlen(err_reply)); strncpy(owner->name,err_reply,sizeof(owner->name));
strncpy(owner.name,err_reply,strlen(owner.name));
} }
return owner.name; return *owner->name;
} }
/** /**
@@ -173,13 +161,12 @@ char* get_owner_details_name(owner_details_t owner){
* @return * @return
*/ */
char* get_owner_details_surname(owner_details_t owner){ char* get_owner_details_surname(owner_details_t* owner){
char *err_reply = "no surname yet"; char err_reply[20] = "no surname yet";
if(owner.surname == NULL){ if(owner->surname == NULL){
owner.surname = (char*)malloc(strlen(err_reply)); strncpy(owner->surname,err_reply,sizeof(owner->surname));
strncpy(owner.surname,err_reply,strlen(owner.surname));
} }
return owner.surname; return owner->surname;
} }
/** /**
@@ -190,13 +177,13 @@ char* get_owner_details_surname(owner_details_t owner){
* @return * @return
*/ */
char* get_owner_details_reply(owner_details_t owner){ char* get_owner_details_reply(owner_details_t *owner){
char *err_reply = "no reply yet"; LOG_DEBUG("get_owner_details_reply","getting reply");
if(owner.reply == NULL){ char err_reply[20] = "no reply yet";
owner.reply = (char*)malloc(strlen(err_reply)); if(owner->reply == NULL){
strncpy(owner.reply,err_reply,strlen(owner.reply)); strncpy(owner->reply,err_reply,sizeof(owner->reply));
} }
return owner.reply; return owner->reply;
} }

View File

@@ -111,12 +111,16 @@ int main(void)
MX_QUADSPI_Init(); MX_QUADSPI_Init();
/* USER CODE BEGIN 2 */ /* USER CODE BEGIN 2 */
owner_details_t owner; owner_details_t owner;
LOG_DEBUG("main1","helloworld"); LOG_DEBUG("main1","\nhelloworld");
LOG_DEBUG("main2","%s",get_owner_details_reply(owner)); LOG_DEBUG("main2","%s",get_owner_details_reply(&owner));
set_owner_details(&owner, "joran", "vn"); if(!set_owner_details(&owner, "joran", "vn")){
LOG_DEBUG("main3","%s",get_owner_details_reply(owner)); LOG_DEBUG("main3","error");;
set_owner_details(&owner, "joran", "Van Nieuwenhoven"); }
LOG_DEBUG("main4","%s",get_owner_details_reply(owner)); LOG_DEBUG("main4","%s",get_owner_details_reply(&owner));
if(!set_owner_details(&owner, "joran", "Van Nieuwenhoven")){
LOG_DEBUG("main5","error");
}
LOG_DEBUG("main6","%s",get_owner_details_reply(&owner));
/* USER CODE END 2 */ /* USER CODE END 2 */
/* Infinite loop */ /* Infinite loop */