|
#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");
|
|
}
|