Programování uC Microchip v C

Ještě mám další trochu komplikovanější dotaz, který je nad mé síly a dost dobře nechápu proč to kompilátor po mě chce takhle.

Mám velkej kus kódu kterej dělá API pro obsluhu FT800 s LCD.

Text se do toho posílá funkcí

API_CMD_TEXT(scrRows[lineIdx].x, scrRows[lineIdx].y, 14, 0, scrRows[lineIdx].lineStr);

scrRows] je pole o 11 položkách podle počtu řádku, ale to zároveň struktura pojmenovaná jako aLine

typedef struct linet
{
   int16_t x;    //X position of text
   int16_t y;    //Y position of text
   char lineStr[30];   //Text string
}aLine;

Zdrojový data pro to co se má zobrazit na LCD pak jsou zadefinovaný takto:

static const aLine M9_L1 = {15, 120, "Text on LCD"};    //X position, Y position, Text

// pak vlastně co chci napsat tak stačí jen zkopírovat kvůli většímu množství různých textů ze struktury do struktury

scrRows[0] = M9_L1;   //Prekopirovani toho co chci zobrazit
API_CMD_TEXT(scrRows[0].x, scrRows[0].y, scrRows[0].lineStr);

Toto všechno funguje suprově, ale je to jako konstanta ve Flash paměti což já u některých věcí nepotřebuju. Potřebuju dynamicky měnit text a měnit jeho pozici. TAkže zkouším to zadefinovat jen jako

aLine M9_L1 = {Xpos, Ypos, "Text on LCD"};

A tady narážím na to, že kompilátor XC8 hlásí “Constant expression required”

Já s těma strukturama nemám vůbec zkušenosti a nepoužívám to. Teď musím a nemám tušení která bije.
Úplně ideálně bych potřeboval zobrazitelný text nasměrovat pointerem na pole se znakama, který budu pak dál měnit.
Naprd je, že do téhle knihovny nemůžu hrabat a musím ji použít jak je. Pak bych si to přepsal pro mě stravitelným způsobem.

Děkuji za radu, ztrácím se v tom.