parent
02f654a87b
commit
93ed9b7a94
@ -0,0 +1,51 @@ |
|||||||
|
//
|
||||||
|
// Created by MightyPork on 2017/12/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "gex_helpers.h" |
||||||
|
#include "gex_client_internal.h" |
||||||
|
|
||||||
|
/** Delete recursively all GEX callsign look-up table entries */ |
||||||
|
void destroy_unit_lookup(GexClient *gex) |
||||||
|
{ |
||||||
|
struct gex_unit_lu *next = gex->ulu_head; |
||||||
|
while (next != NULL) { |
||||||
|
struct gex_unit_lu *cur = next; |
||||||
|
next = next->next; |
||||||
|
free(cur); |
||||||
|
} |
||||||
|
gex->ulu_head = NULL; |
||||||
|
} |
||||||
|
|
||||||
|
/** Get lookup entry for unit name */ |
||||||
|
struct gex_unit_lu *find_unit_by_callsign(GexClient *gex, uint8_t callsign) |
||||||
|
{ |
||||||
|
struct gex_unit_lu *next = gex->ulu_head; |
||||||
|
while (next != NULL) { |
||||||
|
if (next->callsign == callsign) { |
||||||
|
return next; |
||||||
|
} |
||||||
|
next = next->next; |
||||||
|
} |
||||||
|
return NULL; |
||||||
|
} |
||||||
|
|
||||||
|
/** Get lookup entry for unit name */ |
||||||
|
struct gex_unit_lu *find_unit_by_name(GexClient *gex, const char *name) |
||||||
|
{ |
||||||
|
struct gex_unit_lu *next = gex->ulu_head; |
||||||
|
while (next != NULL) { |
||||||
|
if (strcmp(next->name, name) == 0) { |
||||||
|
return next; |
||||||
|
} |
||||||
|
next = next->next; |
||||||
|
} |
||||||
|
return NULL; |
||||||
|
} |
||||||
|
|
||||||
|
/** Get callsign for unit name */ |
||||||
|
uint8_t find_callsign_by_name(GexClient *gex, const char *name) |
||||||
|
{ |
||||||
|
struct gex_unit_lu *lu = find_unit_by_name(gex, name); |
||||||
|
return (uint8_t) ((lu == NULL) ? 0 : lu->callsign); |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
//
|
||||||
|
// Created by MightyPork on 2017/12/19.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef GEX_CLIENT_GEX_HELPERS_H |
||||||
|
#define GEX_CLIENT_GEX_HELPERS_H |
||||||
|
|
||||||
|
#include "gex_client_internal.h" |
||||||
|
#include "gex_client.h" |
||||||
|
|
||||||
|
/** Delete recursively all GEX callsign look-up table entries */ |
||||||
|
void destroy_unit_lookup(GexClient *gex); |
||||||
|
|
||||||
|
/** Get lookup entry for unit name */ |
||||||
|
struct gex_unit_lu *find_unit_by_callsign(GexClient *gex, uint8_t callsign); |
||||||
|
|
||||||
|
/** Get lookup entry for unit name */ |
||||||
|
struct gex_unit_lu *find_unit_by_name(GexClient *gex, const char *name); |
||||||
|
|
||||||
|
/** Get callsign for unit name */ |
||||||
|
uint8_t find_callsign_by_name(GexClient *gex, const char *name); |
||||||
|
|
||||||
|
#endif //GEX_CLIENT_GEX_HELPERS_H
|
Loading…
Reference in new issue