Projet

Général

Profil

Feature #12061 » print.c

Anonyme, 04/01/2020 22:37

 
#include "include.h"

uint8 ui8_actual_level = 0;
uint8 ui8_dtr = 0;
uint8 ui8_dtr1 = 0;
uint8 ui8_dtr2 = 0;
uint32 ui32_long_address = 0;
static bool NO_TEXT = false;

//***************** Temperature *********************************
void PrintTemperatureInCelsius(void)
{
extern sint16 si16_adca_mVolts_Cel[7];
printf(" T:% 3d∞C ", si16_adca_mVolts_Cel[6]);
}

//****************** Timestamp **********************************
void PrintTimestamp(TimestampStruct p_s_Time)
{
printf("%02d:%02d:%02d:%03d ", p_s_Time.ui8_Time_hrs, p_s_Time.ui8_Time_min, p_s_Time.ui8_Time_sec, p_s_Time.ui16_Time_msec);
}

void PrintYesOrNo(DaliMessageStruct* p_s_message)
{
printf(": ");

if (p_s_message->b_Any_Answer)
{
printf(TXT_YES);
}
else
{
printf(TXT_NO);
}
}

bool b_MessageIsBroadcast(DaliMessageStruct* p_s_message)
{
if ((p_s_message->ui8_Address & 0x00FE) == 0x00FE)
{
if (NO_TEXT)
{
return true;
}

printf(TXT_ALL);
printf(" : ");
return true;
}
else
{
return false;
}
}

bool b_MessageIsShortAddressed(DaliMessageStruct* p_s_message)
{
if ((p_s_message->ui8_Address & 0x80) == 0x00)
{
if (NO_TEXT)
{
return true;
}

printf(TXT_DEVICE);
printf("%-3d: ", ui16_ExtractShortAddress(p_s_message->ui8_Address, p_s_message->ui8_Ext_Address));
return true;
}
else
{
return false;
}
}

bool b_MessageIsGroupAddressed(DaliMessageStruct* p_s_message)
{
uint8 ui8_group_address;

if ((p_s_message->ui8_Address & 0xE0) == 0x80)
{
if (NO_TEXT)
{
return true;
}

ui8_group_address = p_s_message->ui8_Address >> 1;
ui8_group_address &= 0x0F;
printf(TXT_UI8_CCB_GROUP);
printf(" %-2d: ", ui8_group_address);
return true;
}
else
{
return false;
}
}

bool b_MessageCommandIsDirectArcControl(DaliMessageStruct* p_s_message)
{
if ((p_s_message->ui8_Address & 0x01) == 0x0000)
{
return true;
}
else
{
return false;
}
}

bool b_AnswerIsAvailable(DaliMessageStruct* p_s_message)
{
if (p_s_message->b_Answer_Available == false)
{
printf(TXT_NO_ANSWER);
return false;
}
else
{
return true;
}
}

void PrintSearchMask(DaliMessageStruct* p_s_message, SearchMaskTypeEnum e_type)
{
printf(TXT_DALI_CMD_264_266);

switch (e_type)
{
case SEARCH_MASK_HIGH: printf(TXT_DALI_CMD_264); break;

case SEARCH_MASK_MIDDLE: printf(TXT_DALI_CMD_265); break;

case SEARCH_MASK_LOW: printf(TXT_DALI_CMD_266); break;
}

printf(" = 0x%02X", p_s_message->ui8_Command);

switch (e_type)
{
case SEARCH_MASK_HIGH:
ui32_long_address &= 0x00FFFF;
ui32_long_address += ((uint32)p_s_message->ui8_Command << 16);
break;

case SEARCH_MASK_MIDDLE:
ui32_long_address &= 0xFF00FF;
ui32_long_address += ((uint32)p_s_message->ui8_Command << 8);
break;

case SEARCH_MASK_LOW:
ui32_long_address &= 0xFFFF00;
ui32_long_address += p_s_message->ui8_Command;
break;
}
}

void PrintSpecialInstruction(DaliMessageStruct* p_s_message)
{
switch (p_s_message->ui8_Address)
{
case 161: printf(TXT_DALI_CMD_256); break;

case 163:
ui8_dtr = p_s_message->ui8_Command;
printf("DTR = %d", ui8_dtr);
break;

case 165: printf(TXT_DALI_CMD_258); break;

case 167: if (ui8_switch_state == SWITCH_SETTING_DALI)
{
printf(TXT_DALI_CMD_259);
}
else
{
printf(TXT_DALI_CMD_259_CGLINE);
}

printf(": 0x%02X%02X%02X", (uint8)((ui32_long_address >> 16) & 0xff), (uint8)((ui32_long_address >> 8) & 0xff), (uint8)(ui32_long_address & 0xff)); break;

case 169: printf(TXT_DALI_CMD_260); PrintYesOrNo(p_s_message); break;

case 171: printf(TXT_DALI_CMD_261); break;

// 173-175: reserved
case 177: PrintSearchMask(p_s_message, SEARCH_MASK_HIGH); break;

case 179: PrintSearchMask(p_s_message, SEARCH_MASK_MIDDLE); break;

case 181: PrintSearchMask(p_s_message, SEARCH_MASK_LOW); break;

case 183: printf(TXT_DALI_CMD_267); printf(" %d", ((uint16)p_s_message->ui8_Ext_Address << 7) + ((p_s_message->ui8_Command >> 1) & 0x7F)); break;

case 185: printf(TXT_DALI_CMD_268); printf(" %d", ((uint16)p_s_message->ui8_Ext_Address << 7) + ((p_s_message->ui8_Command >> 1) & 0x7F)); PrintYesOrNo(p_s_message); break;

case 187: printf(TXT_DALI_CMD_269);

if (p_s_message->ui8_Command == 1)
{
printf(":Bit8,7 0x%02X", p_s_message->ui8_Answer & 0x03);
}
else
{
printf(":Bit6-0 0x%02X", p_s_message->ui8_Answer & 0x7F);
}

break;

case 189: printf(TXT_DALI_CMD_270); break;

// 191:
reserved
case 193: printf(TXT_DALI_CMD_272); printf(" %d", p_s_message->ui8_Command); break;

case 195:
// if (ui8_switch_state == SWITCH_SETTING_DALI)
{
ui8_dtr1 = p_s_message->ui8_Command;
printf("DTR1 = %d", ui8_dtr1);
}
//else if (ui8_switch_state == SWITCH_SETTING_CGLINE)
//{
//printf("RECEIVE LUMINAIRE NAME: %c", p_s_message->ui8_command);
//}
break;

case 197:
ui8_dtr2 = p_s_message->ui8_Command;
printf("DTR2 = %d", ui8_dtr2);
break;

case 199:
if (ui8_switch_state == SWITCH_SETTING_DALI)
{
printf(TXT_DALI_CMD_275);
printf(" (BANK%d, ADRESSE 0x%02X = 0x%02X)", ui8_dtr1, ui8_dtr, p_s_message->ui8_Command);
ui8_dtr++;
}
else if (ui8_switch_state == SWITCH_SETTING_CGLINE)
{
/* Modif Poltech GE 5*/

printf(TXT_DALI_CMD_275);
printf(" (BANK%d, ADRESSE 0x%02X = 0x%02X)", ui8_dtr1, ui8_dtr, p_s_message->ui8_Command);
ui8_dtr++;

}

break;

case 225: //400
if (p_s_message->ui8_Ext_Address & 0x02)
{
printf(TXT_DALI_CMD_400);

if (p_s_message->ui8_Command > 253)
{
printf(" ALL ", p_s_message->ui8_Command);
}
else
{
printf(" %u ", p_s_message->ui8_Command);
}

PrintYesOrNo(p_s_message);
}

break;

case 227: //401
if (p_s_message->ui8_Ext_Address & 0x02)
{
printf(TXT_DALI_CMD_401);
printf(" - ");

switch (p_s_message->ui8_Command)
{
case 0: printf(TXT_DALI_CMD_401_0); break;

case 1: printf(TXT_DALI_CMD_401_1); break;

case 16: printf(TXT_DALI_CMD_401_16); break;

case 17: printf(TXT_DALI_CMD_401_17); break;

case 32: printf(TXT_DALI_CMD_401_32); break;

case 33: printf(TXT_DALI_CMD_401_33); break;

case 34: printf(TXT_DALI_CMD_401_34); break;

case 35: printf(TXT_DALI_CMD_401_35); break;

case 36: printf(TXT_DALI_CMD_401_36); break;

case 37: printf(TXT_DALI_CMD_401_37); break;

case 38: printf(TXT_DALI_CMD_401_38); break;

case 39: printf(TXT_DALI_CMD_401_39); break;

case 40: printf(TXT_DALI_CMD_401_40); break;

case 41: printf(TXT_DALI_CMD_401_41); break;

case 42: printf(TXT_DALI_CMD_401_42); break;

case 48: printf(TXT_DALI_CMD_401_48); break;

case 49: printf(TXT_DALI_CMD_401_49); break;

case 64: printf(TXT_DALI_CMD_401_64); break;

case 65: printf(TXT_DALI_CMD_401_65); break;

case 66: printf(TXT_DALI_CMD_401_66); break;

case 67: printf(TXT_DALI_CMD_401_67); break;

default: break;
}
}

break;

case 229: //402
if (p_s_message->ui8_Ext_Address & 0x02)
{
printf(TXT_DALI_CMD_402);
}

break;

case 231: //403
if (p_s_message->ui8_Ext_Address & 0x02)
{
printf(TXT_DALI_CMD_403);
}

break;

// 201 - x: reserved

default:
printf(TXT_DALI_CMD_UNKNOWN);
break;
}
}

void PrintAnswer(DaliMessageStruct* p_s_message)
{
if (p_s_message->b_Answer_Available == true)
{
printf(": %d", p_s_message->ui8_Answer);
}
else
{
printf(": ");
printf(TXT_NO_ANSWER);
}
}

void PrintGroups(DaliMessageStruct* p_s_message, uint8 ui8_offset)
{
uint8 ui8_counter;
uint8 ui8_groups;
printf(": ");

if (b_AnswerIsAvailable(p_s_message) == false)
{
return;
}

ui8_groups = p_s_message->ui8_Answer;

if (ui8_groups != 0)
{
for (ui8_counter = 0; ui8_counter < 8; ui8_counter++)
{
if (ui8_groups & 0x01)
{
printf("%d", ui8_counter + ui8_offset);
}

ui8_groups >>= 1;

if (ui8_groups != 0)
{
printf(", ");
}
}
}
else
{
printf(TXT_GROUP_NON);
}
}

void PrintValueWithUnit(UnitTypeEnum e_value_type, uint16 ui16_value)
{
printf(": %d", ui16_value);

if (e_value_type != UNIT_RAW)
{
printf(" (=");

switch (e_value_type)
{
case UNIT_LAMP_LEVEL: break;

case UNIT_HALF_MINUTES:
printf("%u,&u", (ui16_value / 2), ((ui16_value * 10) % 2));
break;

case UNIT_15_MINUTES:
printf("%u", (ui16_value * 15));
break;

case UNIT_DAY: case UNIT_WEEK: case UNIT_MINUTE: case UNIT_HOUR:
case UNIT_VOLT: case UNIT_AMPERE: case UNIT_PERCENT: case UNIT_DEGREE_CELSIUS:
case UNIT_RPM:
printf("%u", ui16_value);
break;
}

printf(" ");

switch (e_value_type)
{
case UNIT_LAMP_LEVEL: break;

case UNIT_15_MINUTES: printf("Minuten"); break;

case UNIT_HALF_MINUTES: case UNIT_MINUTE: printf("Minute"); break;

case UNIT_DAY: printf("Tag"); break;

case UNIT_WEEK: printf("Woche"); break;

case UNIT_HOUR: printf("Stunde"); break;

case UNIT_VOLT: printf("Volt"); break;

case UNIT_AMPERE: printf("Ampere"); break;

case UNIT_PERCENT: printf("%"); break;

case UNIT_DEGREE_CELSIUS: printf("∞C"); break;

case UNIT_RPM: printf("U/min"); break;
}

if (ui16_value != 1)
{
switch (e_value_type)
{
case UNIT_HALF_MINUTES: if (ui16_value != 2)
{
printf("n");
} break;

case UNIT_WEEK: case UNIT_HOUR: case UNIT_MINUTE: printf("n"); break;

case UNIT_DAY: printf("e"); break;
}
}

printf(")");
}
}

void PrintFadeTimeAndRate(DaliMessageStruct* p_s_message)
{
printf(TXT_DALI_CMD_165);
printf(": ");

if (b_AnswerIsAvailable(p_s_message) == true)
{
printf("%d / %d", p_s_message->ui8_Answer >> 4, p_s_message->ui8_Answer & 0x0F);
}
else
{
//"NO ANSWER"
}
}

void PrintEmergencyMode(DaliMessageStruct* p_s_message)
{
printf(TXT_DALI_CMD_250);
printf(": ");

if (b_AnswerIsAvailable(p_s_message) == true)
{
if (p_s_message->ui8_Answer & 0x01)
{
printf("REST_MODE ");
}

if (p_s_message->ui8_Answer & 0x02)
{
printf("STANDBY_MODE ");
}

if (p_s_message->ui8_Answer & 0x04)
{
printf("OPERATION_MODE ");
}

if (p_s_message->ui8_Answer & 0x08)
{
printf("EXTENDED_OPERATION_MODE");
}

if (p_s_message->ui8_Answer & 0x10)
{
printf("FT ");
}

if (p_s_message->ui8_Answer & 0x20)
{
printf("DT ");
}

if (p_s_message->ui8_Answer & 0x40)
{
printf("INHIBIT ");
}

if (p_s_message->ui8_Answer & 0x80)
{
printf("POWER_ON ");
}
}
}

void PrintFeatures(DaliMessageStruct* p_s_message)
{
printf(TXT_DALI_CMD_251);

if (b_AnswerIsAvailable(p_s_message) == true)
{
printf(" :0x%02X", p_s_message->ui8_Answer);
//ABFRAGE FEATURES
//bit 0 integrated emergency device; í0í = No
//bit 1 maintained device; í0í = No
//bit 2 mixed mode maintained; í0í = No
//bit 3 auto test capability; í0í = No
//bit 4 adjustable emergency level; í0í = No
//bit 5 reserved; ë0í = default value
//bit 6 reserved; ë0í = default value
//bit 7 reserved; ë0í = default value
}
}

uint8 PrintNormalInstruction(DaliMessageStruct* p_s_message)
{
uint8 ui8_counter = 0;

switch (p_s_message->ui8_Command)
{
case 0: printf(TXT_DALI_CMD_000); break;

case 1: printf(TXT_DALI_CMD_001); break;

case 2: printf(TXT_DALI_CMD_002); break;

case 3: printf(TXT_DALI_CMD_003); break;

case 4: printf(TXT_DALI_CMD_004); break;

case 5: printf(TXT_DALI_CMD_005); break;

case 6: printf(TXT_DALI_CMD_006); break;

case 7: printf(TXT_DALI_CMD_007); break;

case 8: printf(TXT_DALI_CMD_008); break;

case 9: printf(TXT_DALI_CMD_009); break;

// 10-15: reserved
case 16: case 17: case 18: case 19: case 20: case 21: case 22: case 23:
case 24: case 25: case 26: case 27: case 28: case 29: case 30: case 31:
printf(TXT_DALI_CMD_016_031);
PrintValueWithUnit(UNIT_RAW, p_s_message->ui8_Command & 0x0F);
break;

case 32: printf(TXT_DALI_CMD_032); break;

case 33:
ui8_dtr = ui8_actual_level;
printf(TXT_DALI_CMD_033);
PrintValueWithUnit(UNIT_RAW, ui8_dtr);
break;

// 34-41: reserved
case 42: printf(TXT_DALI_CMD_042); break;

case 43: printf(TXT_DALI_CMD_043); break;

case 44: printf(TXT_DALI_CMD_044); break;

case 45: printf(TXT_DALI_CMD_045); break;

case 46: printf(TXT_DALI_CMD_046); break;

case 47: printf(TXT_DALI_CMD_047); break;

// 48-63: reserved
case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71:
case 72: case 73: case 74: case 75: case 76: case 77: case 78: case 79:
printf(TXT_DALI_CMD_064_079);
PrintValueWithUnit(UNIT_RAW, p_s_message->ui8_Command & 0x0F);
break;

case 80: case 81: case 82: case 83: case 84: case 85: case 86: case 87:
case 88: case 89: case 90: case 91: case 92: case 93: case 94: case 95:
printf(TXT_DALI_CMD_080_095);
PrintValueWithUnit(UNIT_RAW, p_s_message->ui8_Command & 0x0F);
break;

case 96: case 97: case 98: case 99: case 100: case 101: case 102: case 103:
case 104: case 105: case 106: case 107: case 108: case 109: case 110: case 111:
printf(TXT_DALI_CMD_096_111);
PrintValueWithUnit(UNIT_RAW, (p_s_message->ui8_Command & 0x0F));
break;

case 112: case 113: case 114: case 115: case 116: case 117: case 118: case 119:
case 120: case 121: case 122: case 123: case 124: case 125: case 126: case 127:
printf(TXT_DALI_CMD_112_127);
PrintValueWithUnit(UNIT_RAW, (p_s_message->ui8_Command & 0x0F));
break;

case 128: printf(TXT_DALI_CMD_128); break;

case 129: printf(TXT_DALI_CMD_129); break;

// 130-143: reserved
case 144: printf(TXT_DALI_CMD_144); PrintAnswer(p_s_message); break;

case 145: printf(TXT_DALI_CMD_145); PrintYesOrNo(p_s_message); break;

case 146: printf(TXT_DALI_CMD_146); PrintYesOrNo(p_s_message); break;

case 147: printf(TXT_DALI_CMD_147); PrintYesOrNo(p_s_message); break;

case 148: printf(TXT_DALI_CMD_148); PrintYesOrNo(p_s_message); break;

case 149: printf(TXT_DALI_CMD_149); PrintYesOrNo(p_s_message); break;

case 150: printf(TXT_DALI_CMD_150); PrintYesOrNo(p_s_message); break;

case 151: printf(TXT_DALI_CMD_151); PrintAnswer(p_s_message); break;

case 152: printf(TXT_DALI_CMD_152); PrintAnswer(p_s_message); break;

case 153: printf(TXT_DALI_CMD_153); PrintAnswer(p_s_message); break;

case 154: printf(TXT_DALI_CMD_154); PrintAnswer(p_s_message); break;

case 155: printf(TXT_DALI_CMD_155); PrintAnswer(p_s_message); break;

case 156: printf(TXT_DALI_CMD_156); PrintAnswer(p_s_message); break;

case 157: printf(TXT_DALI_CMD_157); PrintAnswer(p_s_message); break;

// 158-159: reserved
case 160: printf(TXT_DALI_CMD_160); PrintAnswer(p_s_message); break;

case 161: printf(TXT_DALI_CMD_161); PrintAnswer(p_s_message); break;

case 162: printf(TXT_DALI_CMD_162); PrintAnswer(p_s_message); break;

case 163: printf(TXT_DALI_CMD_163); PrintAnswer(p_s_message); break;

case 164: printf(TXT_DALI_CMD_164); PrintAnswer(p_s_message); break;

case 165: PrintFadeTimeAndRate(p_s_message); break;

// 166-175: reserved
case 176: case 177: case 178: case 179: case 180: case 181: case 182: case 183:
case 184: case 185: case 186: case 187: case 188: case 189: case 190: case 191:
printf(TXT_DALI_CMD_176_191); printf(" %d", p_s_message->ui8_Command & 0x0F); PrintAnswer(p_s_message);
break;

case 192: printf(TXT_DALI_CMD_192); PrintGroups(p_s_message, 0); break;

case 193: printf(TXT_DALI_CMD_193); PrintGroups(p_s_message, 8); break;

case 194: printf(TXT_DALI_CMD_194); PrintAnswer(p_s_message); break;

case 195: printf(TXT_DALI_CMD_195); PrintAnswer(p_s_message); break;

case 196: printf(TXT_DALI_CMD_196); PrintAnswer(p_s_message); break;

case 197: printf(TXT_DALI_CMD_197); PrintAnswer(p_s_message); break;

// 198-223: reserved
case 224: printf(TXT_DALI_CMD_224); break;

case 225: printf(TXT_DALI_CMD_225); break;

case 226: printf(TXT_DALI_CMD_226); break;

case 227: printf(TXT_DALI_CMD_227); break;

case 228: printf(TXT_DALI_CMD_228); break;

case 229: printf(TXT_DALI_CMD_229); break;

case 230: printf(TXT_DALI_CMD_230); break;

case 231: printf(TXT_DALI_CMD_231); break;

case 232: printf(TXT_DALI_CMD_232); break;

case 233: printf(TXT_DALI_CMD_233); break;

case 234: printf(TXT_DALI_CMD_234); PrintValueWithUnit(UNIT_15_MINUTES, ui8_dtr); break;

case 235: printf(TXT_DALI_CMD_235); PrintValueWithUnit(UNIT_15_MINUTES, ui8_dtr); break;

case 236: printf(TXT_DALI_CMD_236); PrintValueWithUnit(UNIT_DAY, ui8_dtr); break;

case 237: printf(TXT_DALI_CMD_237); PrintValueWithUnit(UNIT_WEEK, ui8_dtr); break;

case 238: printf(TXT_DALI_CMD_238); PrintValueWithUnit(UNIT_DAY, ui8_dtr); break;

case 239: printf(TXT_DALI_CMD_239); PrintValueWithUnit(UNIT_HALF_MINUTES, ui8_dtr); break;

case 241: printf(TXT_DALI_CMD_241), PrintAnswer(p_s_message); break;

case 242: printf(TXT_DALI_CMD_242), PrintAnswer(p_s_message); break;

case 243: printf(TXT_DALI_CMD_243); printf(" %dmin", (uint16)p_s_message->ui8_Answer * 2); break;

case 244: printf(TXT_DALI_CMD_244); printf(" %dh", p_s_message->ui8_Answer); break;

case 245: printf(TXT_DALI_CMD_243); printf(" %dh", p_s_message->ui8_Answer * 4); break;

case 246: printf(TXT_DALI_CMD_246); printf(" %d", p_s_message->ui8_Answer); break;

case 247: printf(TXT_DALI_CMD_247); printf(" %d", p_s_message->ui8_Answer); break;

case 248: printf(TXT_DALI_CMD_248); printf(" %d", p_s_message->ui8_Answer); break;

case 249: printf(TXT_DALI_CMD_249); printf(" %dh", p_s_message->ui8_Answer / 30); break;

case 250: PrintEmergencyMode(p_s_message); break;

case 251: PrintFeatures(p_s_message); break;

case 252: //INQUIRY FAILURE STATUS //INTERROGATION DU STATUT FAILURE
printf(TXT_DALI_CMD_252);
printf(" ");

if (!p_s_message->ui8_Answer)
{
printf("OK");
}
else
{
if (p_s_message->ui8_Answer & 0x01)
{
printf("E_COM_FAIL ");
}

if (p_s_message->ui8_Answer & 0x02)
{
printf("BATT_FAIL ");
}

if (p_s_message->ui8_Answer & 0x04)
{
printf("CHARGEFAIL ");
}

if (p_s_message->ui8_Answer & 0x08)
{
printf("LAMP_FAIL ");
}

if (p_s_message->ui8_Answer & 0x10)
{
printf("FT_DELAYFAIL ");
}

if (p_s_message->ui8_Answer & 0x20)
{
printf("BT_DELAYFAIL ");
}

if (p_s_message->ui8_Answer & 0x40)
{
printf("FT_FAIL ");
}

if (p_s_message->ui8_Answer & 0x80)
{
printf("BT_FAIL ");
}
}

break;

case 253: //QUERY EMERGENCY LIGHT STATUS //INTERROGATION DE Lí…TAT DíURGENCE
printf(TXT_DALI_CMD_253);
printf(" ");

if (p_s_message->ui8_Answer & 0x01)
{
printf("INHIBIT ");
}

if (p_s_message->ui8_Answer & 0x02)
{
printf("FT_DONE ");
}

if (p_s_message->ui8_Answer & 0x04)
{
printf("BT_DONE ");
}

if (p_s_message->ui8_Answer & 0x08)
{
printf("CHARGE_OK ");
}

if (p_s_message->ui8_Answer & 0x10)
{
printf("FT_REQUEST ");
}

if (p_s_message->ui8_Answer & 0x20)
{
printf("BT_REQUEST ");
}

if (p_s_message->ui8_Answer & 0x40)
{
printf("CC-FLAG_SET ");
}

if (p_s_message->ui8_Answer & 0x80)
{
printf("SELECTED ");
}

break;

case 255: //ABFRAGE EXTENDED VERSION NUMBER//INTERROGATION NUMBER VERSION Etendue
printf(TXT_DALI_CMD_255);
printf("%d", p_s_message->ui8_Answer);
break;

default:
break;
}

return ui8_counter;
}

void PrintDaliMessage(DaliMessageStruct* p_s_message)
{
uint8 ui8_ext_adress_bits = (((p_s_message->ui8_Ext_Address & 0x03) << 1)) + ((p_s_message->ui8_Ext_Address & 0x04) >> 2);

if (eep_time)
{
if (eep_time == SETTING_SDCARDONLY)
{
b_uart_on = false;
}

if (eep_time == SETTING_UARTONLY)
{
b_sdcard_on = false;
}

PrintTimestamp(p_s_message->s_Timestamp);
b_uart_on = true;
b_sdcard_on = true;
}

printf(TXT_LINE);
printf(":%d ", p_s_message->ui8_Line_1or2);
NO_TEXT = true;

if (p_s_message->b_Any_Answer &&
((b_MessageIsBroadcast(p_s_message) || b_MessageIsShortAddressed(p_s_message) || b_MessageIsGroupAddressed(p_s_message)) && b_MessageCommandIsDirectArcControl(p_s_message) && p_s_message->ui8_Command >= 145 && p_s_message->ui8_Command <= 150) ||
(!(b_MessageIsBroadcast(p_s_message) || b_MessageIsShortAddressed(p_s_message) || b_MessageIsGroupAddressed(p_s_message)) && ((p_s_message->ui8_Address == 169) || (p_s_message->ui8_Address == 185) || ((p_s_message->ui8_Address == 225) && (p_s_message->ui8_Ext_Address & 0x02)))))
{
p_s_message->ui8_Answer = 255;
}

NO_TEXT = false;
printf("%03u|%01u|%03u|%03u -> ", p_s_message->ui8_Address, ui8_ext_adress_bits, p_s_message->ui8_Command, p_s_message->ui8_Answer);

if (p_s_message->ui8_Ext_Address == 255)
{
printf("BUS OFF");
return;
}
else if (p_s_message->ui8_Ext_Address == 254)
{
printf("BUS ON");
return;
}
else if (p_s_message->ui8_Ext_Address == 253)
{
printf("DSI-INSTR");
return;
}

if (b_MessageIsBroadcast(p_s_message) ||
b_MessageIsShortAddressed(p_s_message) ||
b_MessageIsGroupAddressed(p_s_message))
{
if (b_MessageCommandIsDirectArcControl(p_s_message))
{

// Direct lamp power level// Niveau de puissance direct de la lampe
ui8_actual_level = p_s_message->ui8_Command;
printf(TXT_DALI_CMD_DAPC); PrintValueWithUnit(UNIT_RAW, ui8_actual_level);
}
else
{

// Normal commands//Ordre normal
PrintNormalInstruction(p_s_message);
}
}
else
{

// Special commands//Ordre special
printf(TXT_ALL);
printf(" : ");
PrintSpecialInstruction(p_s_message);
}

if (eep_temperature)
{
if (eep_temperature == SETTING_SDCARDONLY)
{
b_uart_on = false;
}

if (eep_temperature == SETTING_UARTONLY)
{
b_sdcard_on = false;
}

PrintTemperatureInCelsius();
b_uart_on = true;
b_sdcard_on = true;
}

printf("\r\n");
}

uint16 ui16_ExtractShortAddress(uint8 ui8_address, uint8 ui8_ext_address)
{
uint16 ui16_return_value;
ui16_return_value = (ui8_address >> 1) & 0b00111111;
ui16_return_value += (((uint16)ui8_ext_address & 0b00000111) << 6);
return ui16_return_value;
}

void Print_Config(void)
{
if (eep_language == SETTING_GERMAN)
{
printf(GER_TXT_CONFIG);
}
else if (eep_language == SETTING_ENGLISH)
{
printf(TXT_CONFIG);
}
else if (eep_language == SETTING_FRANCE)
{
printf(FRA_TXT_CONFIG);
}

printf("\r\n");
printf("Bus: ");

switch (ui8_switch_state)
{
case SWITCH_SETTING_DALI:
printf("DALI");
break;

case SWITCH_SETTING_CGLINE:
printf("CGLine");
break;

case SWITCH_SETTING_CCB:
printf("CCB");
break;

default:
break;
}

printf("\r\n");

if (eep_language == SETTING_GERMAN)
{
printf(GER_TXT_LANG);
}
else if (eep_language == SETTING_ENGLISH)
{
printf(TXT_LANG);
}
else if (eep_language == SETTING_FRANCE)
{
printf(FRA_TXT_LANG);
}

printf("\r\n");

if (eep_language == SETTING_GERMAN)
{
printf(GER_TXT_OUT);
}
else if (eep_language == SETTING_ENGLISH)
{
printf(TXT_OUT);
}
else if (eep_language == SETTING_FRANCE)
{
printf(FRA_TXT_OUT);
}

printf(" ");

if (eep_output == SETTING_UART)
{
printf("UART");
}
else if (eep_output == SETTING_SD)
{
printf("SD-CARD");
}
else if (eep_output == SETTING_UART_SD)
{
printf("UART + SD-CARD");
}

printf("\r\n");
//if(ui8_rot_state & ROT_SWITCH_SETTING_TIME)
//printf("Please enter current Time (HH:MM:SS)\r\n");
}
(7-7/10)