added header file with first functions
wrote functions to work with the owner data
This commit is contained in:
26
project/Core/Inc/UDP_broadcast.h
Normal file
26
project/Core/Inc/UDP_broadcast.h
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
* UDP_broadcast.h
|
||||||
|
*
|
||||||
|
* Created on: Nov 6, 2023
|
||||||
|
* Author: joran
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef INC_UDP_BROADCAST_H_
|
||||||
|
#define INC_UDP_BROADCAST_H_
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
char* name;
|
||||||
|
char* surname;
|
||||||
|
uint8_t mac_address[6];
|
||||||
|
char* reply;
|
||||||
|
}owner_details_t;
|
||||||
|
|
||||||
|
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(owner_details_t*, char* , char*);
|
||||||
|
|
||||||
|
char* get_owner_details_name(owner_details_t);
|
||||||
|
char* get_owner_details_surname(owner_details_t);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* INC_UDP_BROADCAST_H_ */
|
||||||
168
project/Core/Src/UDP_broadcast.c
Normal file
168
project/Core/Src/UDP_broadcast.c
Normal file
@@ -0,0 +1,168 @@
|
|||||||
|
/*
|
||||||
|
* UDP_broadcast.c
|
||||||
|
*
|
||||||
|
* Created on: Nov 6, 2023
|
||||||
|
* Author: joran
|
||||||
|
*/
|
||||||
|
//|
|
||||||
|
#include "UDP_broadcast.h"
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn void set_owner_details_mac(owner_details_t*)
|
||||||
|
* @brief
|
||||||
|
*
|
||||||
|
* @param owner
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void set_owner_details_mac(owner_details_t* owner){
|
||||||
|
uint32_t uID[3];
|
||||||
|
|
||||||
|
HAL_GetUID(uID); // Read the UID registers
|
||||||
|
|
||||||
|
owner->mac_address[0] = (uID[0] >> 0) & 0xFF;
|
||||||
|
owner->mac_address[1] = (uID[0] >> 8) & 0xFF;
|
||||||
|
owner->mac_address[2] = (uID[0] >> 16) & 0xFF;
|
||||||
|
owner->mac_address[3] = (uID[1] >> 0) & 0xFF;
|
||||||
|
owner->mac_address[4] = (uID[1] >> 8) & 0xFF;
|
||||||
|
owner->mac_address[5] = (uID[1] >> 16) & 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn uint8_t set_owner_details_name(owner_details_t*, char*)
|
||||||
|
* @brief
|
||||||
|
*
|
||||||
|
* @param owner
|
||||||
|
* @param name
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
|
||||||
|
uint8_t set_owner_details_name(owner_details_t* owner, char* name){
|
||||||
|
if(name != NULL){
|
||||||
|
if(owner->name == NULL){
|
||||||
|
owner->name = (char*)malloc(strlen(name) + 1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
owner->name = (char*)realloc(owner->name,strlen(name) + 1);
|
||||||
|
}
|
||||||
|
strcpy(owner->name,name);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn uint8_t set_owner_details_surname(owner_details_t*, char*)
|
||||||
|
* @brief
|
||||||
|
*
|
||||||
|
* @param owner
|
||||||
|
* @param surname
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
uint8_t set_owner_details_surname(owner_details_t* owner, char* surname){
|
||||||
|
if(surname != NULL){
|
||||||
|
if(owner->surname == NULL){
|
||||||
|
owner->surname = (char*)malloc(strlen(surname) + 1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
owner->surname = (char*)realloc(owner->surname,strlen(surname) + 1);
|
||||||
|
}
|
||||||
|
strcpy(owner->surname,surname);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn uint8_t set_owner_details_reply(owner_details_t, char*)
|
||||||
|
* @brief
|
||||||
|
*
|
||||||
|
* @param owner
|
||||||
|
* @param reply
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
|
||||||
|
static uint8_t set_owner_details_reply(owner_details_t owner, char * reply){
|
||||||
|
if(reply != NULL){
|
||||||
|
if(owner->reply == NULL){
|
||||||
|
owner->reply = (char*)malloc(strlen(reply) + 1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
owner->reply = (char*)realloc(owner->reply,strlen(reply) + 1);
|
||||||
|
}
|
||||||
|
strcpy(owner->reply,reply);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn void format_reply(owner_details_t*)
|
||||||
|
* @brief
|
||||||
|
*
|
||||||
|
* @param owner
|
||||||
|
*/
|
||||||
|
|
||||||
|
static void format_reply(owner_details_t *owner){
|
||||||
|
size_t reply_len = 0;
|
||||||
|
char mac_addr_str[18];
|
||||||
|
char* reply_buf = NULL;
|
||||||
|
if (owner != NULL) {
|
||||||
|
reply_len = 20 + strlen(mac_addr_str) + strlen(owner->surname) + strlen(owner->name);
|
||||||
|
reply_buf = (char*)malloc(reply_len);
|
||||||
|
|
||||||
|
|
||||||
|
snprintf(mac_addr_str, sizeof(mac_addr_str), "%02X:%02X:%02X:%02X:%02X:%02X",
|
||||||
|
owner->mac_address[0], owner->mac_address[1], owner->mac_address[2],
|
||||||
|
owner->mac_address[3], owner->mac_address[4], owner->mac_address[5]);
|
||||||
|
|
||||||
|
if (replyBuffer != NULL) {
|
||||||
|
snprintf(reply_buf, reply_len, "%s is present and my owner is %s %s",
|
||||||
|
mac_addr_str, owner->surname, owner->name);
|
||||||
|
|
||||||
|
set_owner_details_reply(owner, reply_buf);
|
||||||
|
|
||||||
|
free(reply_buf); // Free the temporary buffer
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @fn uint8_t set_owner_details(owner_details_t*, char*, char*)
|
||||||
|
* @brief
|
||||||
|
*
|
||||||
|
* @param owner
|
||||||
|
* @param name
|
||||||
|
* @param surname
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
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) && set_owner_details_mac(owner)){
|
||||||
|
format_reply(owner);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char* get_owner_details_name(owner_details_t owner){
|
||||||
|
char *err_reply = "no name yet";
|
||||||
|
if(owner == NULL || owner->name == NULL){
|
||||||
|
owner->name = (char*)malloc(strlen(err_reply));
|
||||||
|
}
|
||||||
|
return owner->name;
|
||||||
|
}
|
||||||
|
char* get_owner_details_surname(owner_details_t owner){
|
||||||
|
char *err_reply = "no surname yet";
|
||||||
|
if(owner == NULL || owner->surname == NULL){
|
||||||
|
owner->surname = (char*)malloc(strlen(err_reply));
|
||||||
|
}
|
||||||
|
return owner->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user