Hi all,
I will try to explain what I have and where I am up to. I have a script which needs to look up a value from a table. This lookup is called from a byte array within the main code. For example, beaconPacket[125]
This is the structure I think I need with the table of products stored in 'products.c'
products.c
const product_id product_desc[] PROGMEM = {
{0, "Unknown"},
{1, "Bread"},
{2, "Milk"},
{3, "Butter"},
{4, "Jam"},
{5, "Coffee"}
};
So I would like to call the product from beaconPacket[125] along the lines of....
if beaconPacket[125] = 4, "Jam" is returned.
Main code
#include "products.c" ;
const byte max_length = 18; //maximum length of product_name + 1 character for null
struct product_id {
long product_number;
char product_name[max_length];
};
char buf[max_length]; //buffer to copy product_name from PROGMEM to RAM
void setup()
{
Serial.begin(115200);
}
// Main Loop
void loop() {
for ( unsigned int i = 0; i < sizeof(product_desc) / sizeof(product_desc[0]); i++) {
Serial.print(pgm_read_dword_near(&product_desc[i].product_number));
Serial.print(F("\t")); //tab
memcpy_P(&buf, &product_desc[i].product_name, max_length);
Serial.println(buf);
}
delay(3000); //wait 3 seconds before repeating the loop
}
Would anyone be able to assist in getting this code to work as there are a few issues stopping it and I'm not sure where to start looking. The actual table currently consists of about 60 entries, it's just shortened here.
Many thanks for any help offered.