настройки хоппера - обработчик импульсов

2 часа
This commit is contained in:
Dmitriy 2021-02-14 20:07:47 +03:00
parent 0f6c9e54a1
commit baac79872a
12 changed files with 8596 additions and 7783 deletions

File diff suppressed because it is too large Load Diff

View File

@ -40,9 +40,17 @@ enum{
EVENT_COIN_INSERTED,
EVENT_CASH_INSERTED,
EVENT_BANK_INSERTED,
EVENT_HOPPER_EXTRACTED,
EVENT_BILL_ESCROW,
EVENT_BILL_STACKED,
EVENT_ERROR_HOPPER_ON,
EVENT_ERROR_HOPPER_OFF,
EVENT_NOMONEY_HOPPER_ON,
EVENT_NOMONEY_HOPPER_OFF,
EVENT_MODE_CHANGE,
EVENT_KEY_EMPTY,

View File

@ -339,13 +339,14 @@ TDataDescStruct const BankPerPulseDesc = {
void OnChangeLevel()
{
CPU_INT32U level1, level2, level3;
CPU_INT32U level1, level2, level3, level4;
GetData(&CashLevelDesc, &level1, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&BankLevelDesc, &level2, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&CoinLevelDesc, &level3, 0, DATA_FLAG_SYSTEM_INDEX);
SetLevelParam(level1, level2, level3);
GetData(&CoinLevelDesc, &level4, 0, DATA_FLAG_SYSTEM_INDEX);
SetLevelParam(level1, level2, level3, level4);
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
@ -357,13 +358,14 @@ void OnChangeLevel()
void OnChangeLevelWithoutInit()
{
CPU_INT32U level1, level2, level3;
CPU_INT32U level1, level2, level3, level4;
GetData(&CashLevelDesc, &level1, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&BankLevelDesc, &level2, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&CoinLevelDesc, &level3, 0, DATA_FLAG_SYSTEM_INDEX);
SetLevelParam(level1, level2, level3);
GetData(&CoinLevelDesc, &level4, 0, DATA_FLAG_SYSTEM_INDEX);
SetLevelParam(level1, level2, level3, level4);
}
/*************************************
@ -436,6 +438,27 @@ TDataDescStruct const BankLevelDesc = {
0 // çíà÷åíèå ïî óìîë÷àíèþ
};
/*************************************
Уровень сигнала хоппера в режиме Cube
*************************************/
TDataDescStruct const HopperLevelDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
NULL, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, DeviceConfig.HopperLevel), // указатель на переменную или адрес FRAM
(void*)&LevelRange, // указатель на границы параметра
OnChangeLevel, // функция по изменению
sizeof(CPU_INT32U), // смещение между элементами в массиве
LevelName, // указатель на строку названия параметра
DATA_IS_INDEX, // признак индексного параметра (список строк)
LevelList, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
0 // значение по умолчанию
};
/*************************************
IP-àäðåñ ïîñòà
*************************************/
@ -910,7 +933,7 @@ TDataDescStruct const CashModeDesc = {
DATA_IS_INDEX, // ïðèçíàê èíäåêñíîãî ïàðàìåòðà (ñïèñîê ñòðîê)
CashModeList, // óêàçàòåëü íà ñïèñîê ñòðîê äëÿ èíäåêñíîãî ïàðàìåòðà
DATA_INIT_DISABLE,
1
0
};
/*************************************
@ -3420,6 +3443,165 @@ TDataDescStruct const HopperCostDesc = {
10
};
/*************************************
остановка мотора хоппера, сек
*************************************/
CPU_INT08U const HopperStopEngineName[] = "Останов, сек";
TRangeValueULONG const HopperStopEngineRange = {1, 20};
TDataDescStruct const HopperStopEngineDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
NULL, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, DeviceConfig.hopperStopEngine), // указатель на переменную или адрес FRAM
(void*)&HopperStopEngineRange, // указатель на границы параметра
NULL, // функция по изменению
0, // смещение между элементами в массиве
HopperStopEngineName, // указатель на строку названия параметра
DATA_NO_INDEX, // признак индексного параметра (список строк)
NULL, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
5
};
/*************************************
Хранить кредит, мин
*************************************/
CPU_INT08U const HopperSaveCreditName[] = "Кредит, мин";
TRangeValueULONG const HopperSaveCreditRange = {0, 60};
TDataDescStruct const HopperSaveCreditDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
NULL, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, DeviceConfig.hopperSaveCredit), // указатель на переменную или адрес FRAM
(void*)&HopperSaveCreditRange, // указатель на границы параметра
NULL, // функция по изменению
0, // смещение между элементами в массиве
HopperSaveCreditName, // указатель на строку названия параметра
DATA_NO_INDEX, // признак индексного параметра (список строк)
NULL, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
0
};
/*************************************
Кнопка старт - да/нет
*************************************/
CPU_INT08U const HopperButtonStartName[] = "Кнопка";
TRangeValueULONG const HopperButtonStartRange = {0, 1};
CPU_INT08U const ButtonStartList_str0[] = "Нет";
CPU_INT08U const ButtonStartList_str1[] = "Да";
CPU_INT08U const *ButtonStartList[] = {ButtonStartList_str0, ButtonStartList_str1};
TDataDescStruct const HopperButtonStartDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
NULL, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, DeviceConfig.hopperButtonStart), // указатель на переменную или адрес FRAM
(void*)&HopperButtonStartRange, // указатель на границы параметра
NULL, // функция по изменению
0, // смещение между элементами в массиве
HopperButtonStartName, // указатель на строку названия параметра
DATA_IS_INDEX, // признак индексного параметра (список строк)
ButtonStartList, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
0
};
/*************************************
Длина импульса входа хоппера в режиме Cube, мс
*************************************/
TRangeValueULONG const HopperPulseLenRange = {20, 250};
CPU_INT08U const HopperPulseLenName[] = "Длина имп.,мс";
void OnChangeHopperPulseLen()
{
CPU_INT32U pulse, pause;
GetData(&HopperPulseLenDesc, &pulse, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&HopperPauseLenDesc, &pause, 0, DATA_FLAG_SYSTEM_INDEX);
SetHopperPulseParam(pulse, pause);
}
TDataDescStruct const HopperPulseLenDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
NULL, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, hopper_pulse_len), // указатель на переменную или адрес FRAM
(void*)&HopperPulseLenRange, // указатель на границы параметра
OnChangeHopperPulseLen, // функция по изменению
0, // смещение между элементами в массиве
HopperPulseLenName, // указатель на строку названия параметра
DATA_NO_INDEX, // признак индексного параметра (список строк)
NULL, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
50
};
/*************************************
Длина паузы входа хоппера в режиме Cube, мс
*************************************/
TRangeValueULONG const HopperPauseLenRange = {20, 250};
CPU_INT08U const HopperPauseLenName[] = "Пауза имп.,мс";
TDataDescStruct const HopperPauseLenDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
NULL, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, hopper_pause_len), // указатель на переменную или адрес FRAM
(void*)&HopperPauseLenRange, // указатель на границы параметра
OnChangeHopperPulseLen, // функция по изменению
0, // смещение между элементами в массиве
HopperPauseLenName, // указатель на строку названия параметра
DATA_NO_INDEX, // признак индексного параметра (список строк)
NULL, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
20
};
/*************************************
режим хоппера
*************************************/
TRangeValueULONG const RegimeHopperRange = {0, 1};
CPU_INT08U const RegimeHopperName[] = "Режим";
CPU_INT08U const RegimeHopper_str0[] = "Elolution";
CPU_INT08U const RegimeHopper_str1[] = "Cube";
CPU_INT08U const *RegimeHopperList[] = {RegimeHopper_str0, RegimeHopper_str1};
TDataDescStruct const RegimeHopperDesc = {
DATA_DESC_EDIT, // тип дескриптора
DATA_TYPE_ULONG, // тип параметра
DATA_LOC_FRAM, // расположение параметра
DATA_NO_ARRAY, // признак массива
0, // размер массива
0, // указатель на десриптор индекса массива
(void*)offsetof(TFramMap, DeviceConfig.hopperRegime), // указатель на переменную или адрес FRAM
(void*)&RegimeHopperRange, // указатель на границы параметра
NULL, // функция по изменению
sizeof(CPU_INT32U), // смещение между элементами в массиве
RegimeHopperName, // указатель на строку названия параметра
DATA_IS_INDEX, // признак индексного параметра (список строк)
RegimeHopperList, // указатель на список строк для индексного параметра
DATA_INIT_DISABLE,
0 // значение по умолчанию
};
//**************************************************
//**************************************************
//**************************************************
@ -3506,8 +3688,14 @@ const TDataDescArrayStruct AllDataArray[] =
{&CoinPulseLenDesc, "CoinPulseLenDesc"},
{&CoinPauseLenDesc, "CoinPauseLenDesc"},
{&HopperCostDesc, "HopperCostDesc"},
{&HopperStopEngineDesc, "HopperStopEngineDesc"},
{&HopperSaveCreditDesc, "HopperSaveCreditDesc"},
{&HopperButtonStartDesc, "HopperButtonStartDesc"},
{&HopperPauseLenDesc, "HopperPauseLenDesc"},
{&HopperPulseLenDesc, "HopperPulseLenDesc"},
{&RegimeHopperDesc, "RegimeHopperDesc"},
{NULL, ""}
};

View File

@ -86,6 +86,7 @@ typedef struct{
CPU_INT32U CoinLevel; // óðîâåíü ñèãíàëà ìîíåòíèêà
CPU_INT32U CashLevel; // óðîâåíü ñèãíàëà êóïþðíèêà
CPU_INT32U BankLevel; // óðîâåíü ñèãíàëà áàíêîâñêîãî òåðìèíàëà
CPU_INT32U HopperLevel; // óðîâåíü õîïïåðà â ðåæèìå Cube
CPU_INT32U PrintTimeout;
CPU_INT32U PrintTimeoutAfter;
@ -95,7 +96,11 @@ typedef struct{
CPU_INT32U DeviceId;
// íàñòðîéêè õîïïåðà
CPU_INT32U hopperRegime;
CPU_INT32U hopperCost;
CPU_INT32U hopperStopEngine;
CPU_INT32U hopperSaveCredit;
CPU_INT32U hopperButtonStart;
}TDeviceConfig;
@ -242,6 +247,7 @@ extern TDataDescStruct const CommandV2Desc;
extern TDataDescStruct const TaxSystemDesc;
extern void OnChangeBankPulseLen();
extern void OnChangeHopperPulseLen();
extern TDataDescStruct const BankPerPulseDesc;
extern TDataDescStruct const BankPulseLenDesc;
@ -257,5 +263,12 @@ extern TDataDescStruct const CoinPulseLenDesc;
extern TDataDescStruct const CoinPauseLenDesc;
extern TDataDescStruct const HopperCostDesc;
extern TDataDescStruct const HopperStopEngineDesc;
extern TDataDescStruct const HopperSaveCreditDesc;
extern TDataDescStruct const HopperButtonStartDesc;
extern TDataDescStruct const HopperPulseLenDesc;
extern TDataDescStruct const HopperPauseLenDesc;
extern TDataDescStruct const HopperLevelDesc;
extern TDataDescStruct const RegimeHopperDesc;
#endif //#ifndef _DATADESC_H_

View File

@ -62,6 +62,10 @@ typedef struct
CPU_INT32U bank_pulse_len;
CPU_INT32U bank_pause_len;
// íàñòðîéêè õîïïåðà â ðåæèìå Cube
CPU_INT32U hopper_pulse_len;
CPU_INT32U hopper_pause_len;
CPU_INT32U TaxFormat;
CPU_INT32U SubjSell;
CPU_INT32U CommandV2;

View File

@ -992,8 +992,8 @@ const TMenuLine line_FrMenu_12 = {
NULL
};
const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, &line_FrMenu_2, &line_FrMenu_3, &line_FrMenu_4, &line_FrMenu_5, &line_FrMenu_6, &line_FrMenu_7, &line_FrMenu_8, &line_FrMenu_9, &line_FrMenu_10, &line_FrMenu_11, &line_FrMenu_12, NULL};
const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 13, MENU_PANEL_STANDARD};
const TMenuLineArray arr_FrMenuArray[] = {&line_FrMenu_0, &line_FrMenu_1, /*&line_FrMenu_2, &line_FrMenu_3,*/ &line_FrMenu_4, &line_FrMenu_5, &line_FrMenu_6, &line_FrMenu_7, &line_FrMenu_8, &line_FrMenu_9, &line_FrMenu_10, &line_FrMenu_11, &line_FrMenu_12, NULL};
const TMenuPanel FrMenuPanel[] = {arr_FrMenuArray, NULL, 11, MENU_PANEL_STANDARD};
/***********************************
МЕНЮ НАСТРОЙКА МОНЕТОПРИЕМНИКА
@ -1092,8 +1092,8 @@ const TMenuLine line_CashMenu_5 = {
NULL // панель для перехода
};
const TMenuLineArray arr_ValidatorMenuArray[] = {&line_CashMenu_0, &line_CashMenu_1, &line_CashMenu_2, &line_CashMenu_3, &line_CashMenu_4, &line_CashMenu_5, NULL};
const TMenuPanel ValidatorSetupPanel[] = {arr_ValidatorMenuArray, NULL, 6, MENU_PANEL_STANDARD};
const TMenuLineArray arr_ValidatorMenuArray[] = {&line_CashMenu_0, &line_CashMenu_1, /*&line_CashMenu_2, &line_CashMenu_3, &line_CashMenu_4, &line_CashMenu_5,*/ NULL};
const TMenuPanel ValidatorSetupPanel[] = {arr_ValidatorMenuArray, NULL, 3, MENU_PANEL_STANDARD};
/***********************************
МЕНЮ НАСТРОЙКА БАНКОВСКИХ ТЕРМИНАЛОВ
@ -1158,14 +1158,42 @@ const TMenuLine line_HopperMenu_0 = {
};
const TMenuLine line_HopperMenu_1 = {
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
0, // äîï. ôëàãè
(void*)&RegimeHopperDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
NULL // ïàíåëü äëÿ ïåðåõîäà
};
const TMenuLine line_HopperMenu_2 = {
MENU_LINE_SHOW_DESC, // тип пункта меню
0, // доп. флаги
(void*)&HopperCostDesc, // указатель на текстовую строку или дескриптор
NULL // панель для перехода
};
const TMenuLineArray arr_HopperMenuArray[] = {&line_HopperMenu_0, &line_HopperMenu_1, NULL};
const TMenuPanel HopperSetupPanel[] = {arr_HopperMenuArray, NULL, 2, MENU_PANEL_STANDARD};
const TMenuLine line_HopperMenu_3 = {
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
0, // äîï. ôëàãè
(void*)&HopperStopEngineDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
NULL // ïàíåëü äëÿ ïåðåõîäà
};
const TMenuLine line_HopperMenu_4 = {
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
0, // äîï. ôëàãè
(void*)&HopperSaveCreditDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
NULL // ïàíåëü äëÿ ïåðåõîäà
};
const TMenuLine line_HopperMenu_5 = {
MENU_LINE_SHOW_DESC, // òèï ïóíêòà ìåíþ
0, // äîï. ôëàãè
(void*)&HopperButtonStartDesc, // óêàçàòåëü íà òåêñòîâóþ ñòðîêó èëè äåñêðèïòîð
NULL // ïàíåëü äëÿ ïåðåõîäà
};
const TMenuLineArray arr_HopperMenuArray[] = {&line_HopperMenu_0, &line_HopperMenu_1, &line_HopperMenu_2, &line_HopperMenu_3, &line_HopperMenu_4, &line_HopperMenu_5, NULL};
const TMenuPanel HopperSetupPanel[] = {arr_HopperMenuArray, NULL, 6, MENU_PANEL_STANDARD};
/***********************************
МЕНЮ НАСТРОЙКА МОДЕМА

View File

@ -51,10 +51,8 @@ static CPU_INT32U cashLevel;
static CPU_INT32U coinLevel;
static CPU_INT32U bankLevel;
static CPU_INT32U hopperLevel;
static CPU_INT32U SignalHopperLevel;
CPU_INT32U period;
CPU_INT32U period_cash;
CPU_INT32U period_coin;
CPU_INT32U period_bank;
CPU_INT32U period_signal;
CPU_INT32U period_hopper;
@ -92,7 +90,18 @@ void SetBankPulseParam(CPU_INT32U pulse, CPU_INT32U pause)
OS_EXIT_CRITICAL();
}
void SetLevelParam(CPU_INT32U level1, CPU_INT32U level2, CPU_INT32U level3)
void SetHopperPulseParam(CPU_INT32U pulse, CPU_INT32U pause)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
#endif
OS_ENTER_CRITICAL();
bank_pulse = pulse * 1;
bank_pause = pause;
OS_EXIT_CRITICAL();
}
void SetLevelParam(CPU_INT32U level1, CPU_INT32U level2, CPU_INT32U level3, CPU_INT32U level4)
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
@ -102,6 +111,7 @@ void SetLevelParam(CPU_INT32U level1, CPU_INT32U level2, CPU_INT32U level3)
cashLevel = level1;
bankLevel = level2;
coinLevel = level3;
hopperLevel = level4;
OS_EXIT_CRITICAL();
}
@ -109,87 +119,219 @@ void SetLevelParam(CPU_INT32U level1, CPU_INT32U level2, CPU_INT32U level3)
void CoinTask(void *p_arg)
{
CPU_INT32U enable_coin;
CPU_INT32U cash_mode;
CPU_INT32U cash_enable;
CPU_INT32U last_cash_count = GetCashCount();
CPU_INT32U last_cash_time = OSTimeGet();
CPU_INT32U bank_enable;
CPU_INT32U regime_hopper;
CPU_INT32U last_coin_count = GetCoinCount();
CPU_INT32U last_coin_time = OSTimeGet();
CPU_INT32U last_bank_count = GetbankCount();
CPU_INT32U last_bank_time = OSTimeGet();
CPU_INT32U last_hopper_count = GetHopperCount();
CPU_INT32U last_hopper_time = OSTimeGet();
CPU_INT32U last_settings_time = OSTimeGet();
GetData(&EnableCoinDesc, &enable_coin, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&CashModeDesc, &cash_mode, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&EnableValidatorDesc, &cash_enable, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&EnableBankDesc, &bank_enable, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&RegimeHopperDesc, &regime_hopper, 0, DATA_FLAG_SYSTEM_INDEX);
while(1)
{
if (OSTimeGet() - last_settings_time > 1000)
{
last_settings_time = OSTimeGet();
GetData(&EnableCoinDesc, &enable_coin, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&CashModeDesc, &cash_mode, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&EnableValidatorDesc, &cash_enable, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&EnableCoinDesc, &enable_coin, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&EnableBankDesc, &bank_enable, 0, DATA_FLAG_SYSTEM_INDEX);
GetData(&RegimeHopperDesc, &regime_hopper, 0, DATA_FLAG_SYSTEM_INDEX);
}
OSTimeDly(1);
if (enable_coin)
{
if (GetCoinCount())
{
PostUserEvent(EVENT_COIN_INSERTED);
}
}
else
{
CoinDisable();
GetResetCoinCount();
}
if (!cash_enable) {GetResetCashCount(); continue;}
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
#endif
OS_ENTER_CRITICAL();
if (pend_cash_counter)
if (enable_coin)
{
// èìïóëüñû èíêðåìåíòèðóåì òîëüêî ïîñëå âûäåðæêè ïàóçû
if (OSTimeGet() - pend_cash_timestamp > cash_pause)
{
pend_cash_counter = 0;
CashImpCounter++;
}
}
OS_EXIT_CRITICAL();
if (cash_mode == 1)
OS_ENTER_CRITICAL();
if (pend_coin_counter)
{
if (GetCashCount())
// èìïóëüñû èíêðåìåíòèðóåì òîëüêî ïîñëå âûäåðæêè ïàóçû
if (OSTimeGet() - pend_coin_timestamp > coin_pause)
{
if (last_cash_count == GetCashCount())
{
if (labs(OSTimeGet() - last_cash_time) > 500)
{
PostUserEvent(EVENT_CASH_INSERTED);
}
}
else
{
last_cash_count = GetCashCount();
last_cash_time = OSTimeGet();
}
pend_coin_counter = 0;
CoinImpCounter++;
}
}
OS_EXIT_CRITICAL();
if (GetCoinCount())
{
if (last_coin_count == GetCoinCount())
{
if (labs(OSTimeGet() - last_coin_time) > 500)
{
PostUserEvent(EVENT_COIN_INSERTED);
}
}
else
{
last_cash_time = OSTimeGet();
last_coin_count = GetCoinCount();
last_coin_time = OSTimeGet();
}
}
else
{
last_coin_time = OSTimeGet();
}
}
else
{
GetResetCashCount();
}
{
CoinDisable();
GetResetCoinCount();
OS_ENTER_CRITICAL();
pend_coin_counter = 0;
pend_coin_timestamp = 0;
OS_EXIT_CRITICAL();
}
if (bank_enable)
{
OS_ENTER_CRITICAL();
if (pend_bank_counter)
{
// èìïóëüñû èíêðåìåíòèðóåì òîëüêî ïîñëå âûäåðæêè ïàóçû
if (OSTimeGet() - pend_bank_timestamp > bank_pause)
{
pend_bank_counter = 0;
BankImpCounter++;
}
}
OS_EXIT_CRITICAL();
if (GetbankCount())
{
if (last_bank_count == GetbankCount())
{
if (labs(OSTimeGet() - last_bank_time) > 500)
{
PostUserEvent(EVENT_BANK_INSERTED);
}
}
else
{
last_bank_count = GetbankCount();
last_bank_time = OSTimeGet();
}
}
else
{
last_bank_time = OSTimeGet();
}
}
else
{
BankDisable();
GetResetbankCount();
OS_ENTER_CRITICAL();
pend_bank_counter = 0;
pend_bank_timestamp = 0;
OS_EXIT_CRITICAL();
}
if (regime_hopper)
{
OS_ENTER_CRITICAL();
if (pend_hopper_counter)
{
// èìïóëüñû èíêðåìåíòèðóåì òîëüêî ïîñëå âûäåðæêè ïàóçû
if (OSTimeGet() - pend_hopper_timestamp > hopper_pause)
{
pend_hopper_counter = 0;
HopperImpCounter++;
}
}
OS_EXIT_CRITICAL();
if (GetHopperCount())
{
if (last_hopper_count == GetHopperCount())
{
if (labs(OSTimeGet() - last_hopper_time) > 500)
{
PostUserEvent(EVENT_HOPPER_EXTRACTED);
}
}
else
{
last_hopper_count = GetHopperCount();
last_hopper_time = OSTimeGet();
}
}
else
{
last_bank_time = OSTimeGet();
}
}
else
{
HopperDisable();
GetResetHopperCount();
OS_ENTER_CRITICAL();
pend_hopper_counter = 0;
pend_hopper_timestamp = 0;
OS_EXIT_CRITICAL();
}
OS_ENTER_CRITICAL();
if (pend_upsignal_error_hopper_counter)
{
if (OSTimeGet() - pend_signal_error_hopper_timestamp > signal_error_hopper_pulse)
{
// ñèãíàë îøèáêè ñíÿò
PostUserEvent(EVENT_ERROR_HOPPER_ON);
pend_upsignal_error_hopper_counter = 0;
}
}
if (pend_downsignal_error_hopper_counter)
{
if (OSTimeGet() - pend_signal_error_hopper_timestamp > signal_error_hopper_pulse)
{
// ñèãíàë îøèáêè ïîÿâèëñÿ
PostUserEvent(EVENT_ERROR_HOPPER_OFF);
pend_downsignal_error_hopper_counter = 0;
}
}
if (pend_upsignal_nomoney_hopper_counter)
{
if (OSTimeGet() - pend_signal_nomoney_hopper_timestamp > signal_nomoney_hopper_pulse)
{
// äåíüãè â õîïïåðå åñòü
PostUserEvent(EVENT_NOMONEY_HOPPER_ON);
pend_upsignal_nomoney_hopper_counter = 0;
}
}
if (pend_downsignal_nomoney_hopper_counter)
{
if (OSTimeGet() - pend_signal_nomoney_hopper_timestamp > signal_nomoney_hopper_pulse)
{
// äåíüãè â õîïïåðå êîí÷èëèñü
PostUserEvent(EVENT_NOMONEY_HOPPER_OFF);
pend_downsignal_nomoney_hopper_counter = 0;
}
}
OS_EXIT_CRITICAL();
}
}
void CoinDisable(void)
@ -202,6 +344,26 @@ void CoinEnable(void)
}
void BankDisable(void)
{
}
void BankEnable(void)
{
}
void HopperDisable(void)
{
}
void HopperEnable(void)
{
}
// ïîëó÷èòü ÷èñëî ìîíåò
CPU_INT32U GetCoinCount(void)
{
@ -290,7 +452,7 @@ CPU_INT32U GetHopperCount()
}
// ïîëó÷èòü ÷èñëî èìïóëüñîâ îò õîïïåðà è ñáðîñèòü ñ÷åò÷èê
CPU_INT32U GetHopperbankCount()
CPU_INT32U GetResetHopperCount()
{
#if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr = 0;
@ -307,6 +469,9 @@ void InitCoin(void)
{
CoinImpCounter = 0;
CashImpCounter = 0;
BankImpCounter = 0;
HopperImpCounter = 0;
InitImpInput();
OSTaskCreate(CoinTask, (void *)0, (OS_STK *)&CoinTaskStk[COIN_TASK_STK_SIZE-1], COIN_TASK_PRIO);
}
@ -364,21 +529,21 @@ void InputCapture_ISR(void)
// ìîíåòîïðèåìíèê
if(TSTBIT(input_event, 0))
{
if ((!FIO0PIN_bit.P0_23 && cashLevel) || (FIO0PIN_bit.P0_23 && !cashLevel))
if ((!FIO0PIN_bit.P0_23 && coinLevel) || (FIO0PIN_bit.P0_23 && !coinLevel))
{ // ïðèøåë çàäíèé ôðîíò
CPU_INT32U cr=T3CR;
cr -= period_cash;
cr -= period_coin;
if (cr > (cash_pulse - COIN_IMP_SPAN))
if (cr > (coin_pulse - COIN_IMP_SPAN))
{
pend_cash_counter = 1;
pend_cash_timestamp = OSTimeGet();
pend_coin_counter = 1;
pend_coin_timestamp = OSTimeGet();
}
}
else
{ // ïðèøåë ïåðåäíèé ôðîíò
period_cash = T3CR;
pend_cash_counter = 0;
period_coin = T3CR;
pend_coin_counter = 0;
}
}
@ -429,7 +594,7 @@ void InputCapture_ISR(void)
{
pend_signal_error_hopper_timestamp = OSTimeGet();
if ((FIO1PIN_bit.P1_23 && SignalHopperLevel) || (!FIO1PIN_bit.P1_23 && !SignalHopperLevel))
if ((FIO1PIN_bit.P1_23 && hopperLevel) || (!FIO1PIN_bit.P1_23 && !hopperLevel))
{
pend_upsignal_error_hopper_counter = 1;
pend_downsignal_error_hopper_counter = 0;
@ -446,7 +611,7 @@ void InputCapture_ISR(void)
{
pend_signal_nomoney_hopper_timestamp = OSTimeGet();
if ((FIO1PIN_bit.P1_24 && SignalHopperLevel) || (!FIO1PIN_bit.P1_24 && !SignalHopperLevel))
if ((FIO1PIN_bit.P1_24 && hopperLevel) || (!FIO1PIN_bit.P1_24 && !hopperLevel))
{
pend_upsignal_nomoney_hopper_counter = 1;
pend_downsignal_nomoney_hopper_counter = 0;
@ -472,14 +637,14 @@ void InitInputPorts()
// áàíêîâñêèé òåðìèíàë
PINSEL1_bit.P0_26 = 0;
if(cashLevel)PINMODE1_bit.P0_26 = 3;
if(bankLevel)PINMODE1_bit.P0_26 = 3;
else PINMODE1_bit.P0_26 = 0;
FIO0DIR_bit.P0_26 = 0;
FIO0MASK_bit.P0_26 = 0;
// õîïïåð â ðåæèìå èìïóëüñîâ
PINSEL3_bit.P1_25 = 0;
if(bankLevel)PINMODE3_bit.P1_25 = 3;
if(hopperLevel)PINMODE3_bit.P1_25 = 3;
else PINMODE3_bit.P1_25 = 0;
FIO1DIR_bit.P1_25 = 0;
FIO1MASK_bit.P1_25 = 0;
@ -522,7 +687,7 @@ void InitImpInput (void)
OnChangeCoinPulseLen();
OnChangeCashPulseLen();
OnChangeBankPulseLen();
//OnChangeHopperPulseLen();
OnChangeHopperPulseLen();
OS_ENTER_CRITICAL();

View File

@ -15,14 +15,24 @@ extern CPU_INT32U GetCoinCount(void);
extern CPU_INT32U GetResetCoinCount(void);
extern void CoinDisable(void);
extern void CoinEnable(void);
extern void BankDisable(void);
extern void BankEnable(void);
extern void HopperDisable(void);
extern void HopperEnable(void);
extern void InitInputPorts();
extern CPU_INT32U GetCashCount(void);
extern CPU_INT32U GetResetCashCount(void);
extern CPU_INT32U GetbankCount(void);
extern CPU_INT32U GetResetbankCount(void);
extern CPU_INT32U GetHopperCount();
extern CPU_INT32U GetResetHopperCount(void);
extern void SetCoinPulseParam(CPU_INT32U pulse, CPU_INT32U pause);
extern void SetCashPulseParam(CPU_INT32U pulse, CPU_INT32U pause);
extern void SetBankPulseParam(CPU_INT32U pulse, CPU_INT32U pause);
extern void SetLevelParam(CPU_INT32U level1, CPU_INT32U level2, CPU_INT32U level3);
extern void SetHopperPulseParam(CPU_INT32U pulse, CPU_INT32U pause);
extern void SetLevelParam(CPU_INT32U level1, CPU_INT32U level2, CPU_INT32U level3, CPU_INT32U level4);
#define BIT(bit) (1UL << (bit))

View File

@ -1,5 +1,314 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<Project/>
<Project>
<Desktop>
<Static>
<Debug-Log>
<ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>1307</ColumnWidth1>
</Debug-Log>
<Build>
<ColumnWidth0>20</ColumnWidth0>
<ColumnWidth1>980</ColumnWidth1>
<ColumnWidth2>261</ColumnWidth2>
<ColumnWidth3>65</ColumnWidth3>
</Build>
<Workspace>
<ColumnWidths>
<Column0>124</Column0>
<Column1>27</Column1>
<Column2>27</Column2>
<Column3>27</Column3>
</ColumnWidths>
</Workspace>
<Disassembly>
<col-names>
<item>Disassembly</item>
<item>_I0</item>
</col-names>
<col-widths>
<item>500</item>
<item>20</item>
</col-widths>
<DisasmHistory/>
<ShowCodeCoverage>0</ShowCodeCoverage>
<ShowInstrProfiling>0</ShowInstrProfiling>
</Disassembly>
</Static>
<Windows>
<Wnd3>
<Tabs>
<Tab>
<Identity>TabID-4454-14979</Identity>
<TabName>Debug Log</TabName>
<Factory>Debug-Log</Factory>
<Session/>
</Tab>
<Tab>
<Identity>TabID-3931-14989</Identity>
<TabName>Build</TabName>
<Factory>Build</Factory>
<Session/>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab>
</Wnd3>
<Wnd4>
<Tabs>
<Tab>
<Identity>TabID-15203-14983</Identity>
<TabName>Workspace</TabName>
<Factory>Workspace</Factory>
<Session>
<NodeDict>
<ExpandedNode>sk-mlpc2368</ExpandedNode>
</NodeDict>
</Session>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab>
</Wnd4>
<Wnd5>
<Tabs>
<Tab>
<Identity>TabID-25951-14986</Identity>
<TabName>Disassembly</TabName>
<Factory>Disassembly</Factory>
<Session/>
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab>
</Wnd5>
</Windows>
<Editor>
<Pane>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\app\app_serv.c</Filename>
<XPos>0</XPos>
<YPos>532</YPos>
<SelStart>18305</SelStart>
<SelEnd>18305</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\services\validator.c</Filename>
<XPos>0</XPos>
<YPos>338</YPos>
<SelStart>8384</SelStart>
<SelEnd>8384</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\services\coin.c</Filename>
<XPos>0</XPos>
<YPos>511</YPos>
<SelStart>11916</SelStart>
<SelEnd>11916</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\services\coin.h</Filename>
<XPos>0</XPos>
<YPos>3</YPos>
<SelStart>485</SelStart>
<SelEnd>485</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\services\time.c</Filename>
<XPos>0</XPos>
<YPos>55</YPos>
<SelStart>1532</SelStart>
<SelEnd>1532</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\drivers\ccnet\CCRSProtocol.h</Filename>
<XPos>0</XPos>
<YPos>0</YPos>
<SelStart>434</SelStart>
<SelEnd>434</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\app\app_serv.h</Filename>
<XPos>0</XPos>
<YPos>0</YPos>
<SelStart>360</SelStart>
<SelEnd>360</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\data\datadesc.h</Filename>
<XPos>0</XPos>
<YPos>73</YPos>
<SelStart>2838</SelStart>
<SelEnd>2838</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\data\datadesc.c</Filename>
<XPos>0</XPos>
<YPos>3399</YPos>
<SelStart>157293</SelStart>
<SelEnd>157293</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\OS\bsp\iolpc2368.h</Filename>
<XPos>0</XPos>
<YPos>797</YPos>
<SelStart>17962</SelStart>
<SelEnd>17962</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\data\fram_map.h</Filename>
<XPos>0</XPos>
<YPos>0</YPos>
<SelStart>176</SelStart>
<SelEnd>176</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\menu\menudesc.c</Filename>
<XPos>0</XPos>
<YPos>879</YPos>
<SelStart>37022</SelStart>
<SelEnd>37022</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\PROJECT\menu\menudesc.h</Filename>
<XPos>0</XPos>
<YPos>0</YPos>
<SelStart>779</SelStart>
<SelEnd>779</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\OS\app\app.c</Filename>
<XPos>0</XPos>
<YPos>33</YPos>
<SelStart>1131</SelStart>
<SelEnd>1131</SelEnd>
</Tab>
<ActiveTab>13</ActiveTab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\OS\bsp\bsp.c</Filename>
<XPos>0</XPos>
<YPos>278</YPos>
<SelStart>11612</SelStart>
<SelEnd>11612</SelEnd>
</Tab>
<Tab>
<Factory>TextEditor</Factory>
<Filename>$WS_DIR$\OS\uc\os_ii\source\os_core.c</Filename>
<XPos>0</XPos>
<YPos>1366</YPos>
<SelStart>56898</SelStart>
<SelEnd>56898</SelEnd>
</Tab>
</Pane>
<ActivePane>0</ActivePane>
<Sizes>
<Pane>
<X>1000000</X>
<Y>1000000</Y>
</Pane>
</Sizes>
<SplitMode>1</SplitMode>
</Editor>
<Positions>
<Top>
<Row0>
<Sizes>
<Toolbar-049429c8>
<key>iaridepm.enu1</key>
</Toolbar-049429c8>
</Sizes>
</Row0>
<Row1>
<Sizes>
<Toolbar-06bcb290>
<key>debuggergui.enu1</key>
</Toolbar-06bcb290>
</Sizes>
</Row1>
</Top>
<Left>
<Row0>
<Sizes>
<Wnd4>
<Rect>
<Top>-2</Top>
<Left>-2</Left>
<Bottom>458</Bottom>
<Right>198</Right>
<x>-2</x>
<y>-2</y>
<xscreen>200</xscreen>
<yscreen>200</yscreen>
<sizeHorzCX>146413</sizeHorzCX>
<sizeHorzCY>275862</sizeHorzCY>
<sizeVertCX>146413</sizeVertCX>
<sizeVertCY>634483</sizeVertCY>
</Rect>
</Wnd4>
</Sizes>
</Row0>
</Left>
<Right>
<Row0>
<Sizes>
<Wnd5>
<Rect>
<Top>-2</Top>
<Left>-2</Left>
<Bottom>458</Bottom>
<Right>198</Right>
<x>-2</x>
<y>-2</y>
<xscreen>200</xscreen>
<yscreen>200</yscreen>
<sizeHorzCX>146413</sizeHorzCX>
<sizeHorzCY>275862</sizeHorzCY>
<sizeVertCX>146413</sizeVertCX>
<sizeVertCY>634483</sizeVertCY>
</Rect>
</Wnd5>
</Sizes>
</Row0>
</Right>
<Bottom>
<Row0>
<Sizes>
<Wnd3>
<Rect>
<Top>-2</Top>
<Left>-2</Left>
<Bottom>198</Bottom>
<Right>1368</Right>
<x>-2</x>
<y>-2</y>
<xscreen>1370</xscreen>
<yscreen>200</yscreen>
<sizeHorzCX>1002928</sizeHorzCX>
<sizeHorzCY>275862</sizeHorzCY>
<sizeVertCX>146413</sizeVertCX>
<sizeVertCY>275862</sizeVertCY>
</Rect>
</Wnd3>
</Sizes>
</Row0>
</Bottom>
<Float>
<Sizes/>
</Float>
</Positions>
</Desktop>
</Project>

View File

@ -9,7 +9,7 @@ TriggerName=main
LimitSize=0
ByteLimit=50
[DebugChecksum]
Checksum=-314564541
Checksum=1860031514
[Exceptions]
StopOnUncaught=_ 0
StopOnThrow=_ 0
@ -38,8 +38,8 @@ Enabled=0
ShowSource=1
[JLinkDriver]
WatchCond=_ 0
Watch0=_ 0 "0x00000000" 4294967295 "0xFFFFFFFF" 0 "0x00000000" 4294967295 "0xFFFFFFFF" 3 0 0 0
Watch1=_ 0 "0x00000000" 4294967295 "0xFFFFFFFF" 0 "0x00000000" 4294967295 "0xFFFFFFFF" 3 0 0 0
Watch0=_ 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 0 0 0
Watch1=_ 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 "0x00000000" 0 0 0 0
[Disassemble mode]
mode=0
[Breakpoints2]

View File

@ -30,7 +30,7 @@
<Windows>
<Wnd0>
<Wnd2>
<Tabs>
<Tab>
<Identity>TabID-22094-17165</Identity>
@ -42,7 +42,7 @@
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd0><Wnd1>
<SelectedTab>0</SelectedTab></Wnd2><Wnd3>
<Tabs>
<Tab>
<Identity>TabID-15821-17283</Identity>
@ -58,20 +58,20 @@
</Tab>
</Tabs>
<SelectedTab>0</SelectedTab></Wnd1></Windows>
<SelectedTab>0</SelectedTab></Wnd3></Windows>
<Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.c</Filename><XPos>0</XPos><YPos>532</YPos><SelStart>18305</SelStart><SelEnd>18305</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\validator.c</Filename><XPos>0</XPos><YPos>338</YPos><SelStart>8384</SelStart><SelEnd>8384</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\coin.c</Filename><XPos>0</XPos><YPos>511</YPos><SelStart>11916</SelStart><SelEnd>11916</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\coin.h</Filename><XPos>0</XPos><YPos>3</YPos><SelStart>485</SelStart><SelEnd>485</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\time.c</Filename><XPos>0</XPos><YPos>55</YPos><SelStart>1532</SelStart><SelEnd>1532</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\drivers\ccnet\CCRSProtocol.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>434</SelStart><SelEnd>434</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>360</SelStart><SelEnd>360</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.h</Filename><XPos>0</XPos><YPos>73</YPos><SelStart>2838</SelStart><SelEnd>2838</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.c</Filename><XPos>0</XPos><YPos>3399</YPos><SelStart>157293</SelStart><SelEnd>157293</SelEnd></Tab><ActiveTab>8</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\bsp\iolpc2368.h</Filename><XPos>0</XPos><YPos>797</YPos><SelStart>17962</SelStart><SelEnd>17962</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\fram_map.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>176</SelStart><SelEnd>176</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menudesc.c</Filename><XPos>0</XPos><YPos>879</YPos><SelStart>37022</SelStart><SelEnd>37022</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menudesc.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>779</SelStart><SelEnd>779</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\app\app.c</Filename><XPos>0</XPos><YPos>33</YPos><SelStart>1131</SelStart><SelEnd>1131</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\bsp\bsp.c</Filename><XPos>0</XPos><YPos>278</YPos><SelStart>11612</SelStart><SelEnd>11612</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Pane><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.c</Filename><XPos>0</XPos><YPos>822</YPos><SelStart>24430</SelStart><SelEnd>24430</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\validator.c</Filename><XPos>0</XPos><YPos>299</YPos><SelStart>8384</SelStart><SelEnd>8384</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\coin.c</Filename><XPos>0</XPos><YPos>599</YPos><SelStart>12815</SelStart><SelEnd>12815</SelEnd></Tab><ActiveTab>2</ActiveTab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\coin.h</Filename><XPos>0</XPos><YPos>9</YPos><SelStart>753</SelStart><SelEnd>753</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\services\time.c</Filename><XPos>0</XPos><YPos>58</YPos><SelStart>1532</SelStart><SelEnd>1532</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\drivers\ccnet\CCRSProtocol.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>434</SelStart><SelEnd>434</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\app\app_serv.h</Filename><XPos>0</XPos><YPos>39</YPos><SelStart>1299</SelStart><SelEnd>1322</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.h</Filename><XPos>0</XPos><YPos>257</YPos><SelStart>9168</SelStart><SelEnd>9168</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\datadesc.c</Filename><XPos>0</XPos><YPos>3574</YPos><SelStart>165240</SelStart><SelEnd>165256</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\bsp\iolpc2368.h</Filename><XPos>0</XPos><YPos>797</YPos><SelStart>17962</SelStart><SelEnd>17962</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\data\fram_map.h</Filename><XPos>0</XPos><YPos>44</YPos><SelStart>1236</SelStart><SelEnd>1236</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menudesc.c</Filename><XPos>0</XPos><YPos>1173</YPos><SelStart>47738</SelStart><SelEnd>47738</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\PROJECT\menu\menudesc.h</Filename><XPos>0</XPos><YPos>0</YPos><SelStart>255</SelStart><SelEnd>255</SelEnd></Tab><Tab><Factory>TextEditor</Factory><Filename>$WS_DIR$\OS\app\app.c</Filename><XPos>0</XPos><YPos>33</YPos><SelStart>1131</SelStart><SelEnd>1131</SelEnd></Tab></Pane><ActivePane>0</ActivePane><Sizes><Pane><X>1000000</X><Y>1000000</Y></Pane></Sizes><SplitMode>1</SplitMode></Editor>
<Positions>
<Top><Row0><Sizes><Toolbar-049429c8><key>iaridepm.enu1</key></Toolbar-049429c8></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd0><Rect><Top>-2</Top><Left>-2</Left><Bottom>517</Bottom><Right>268</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>146413</sizeHorzCX><sizeHorzCY>275862</sizeHorzCY><sizeVertCX>197657</sizeVertCX><sizeVertCY>715862</sizeVertCY></Rect></Wnd0></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd1><Rect><Top>-2</Top><Left>-2</Left><Bottom>163</Bottom><Right>1368</Right><x>-2</x><y>-2</y><xscreen>1370</xscreen><yscreen>165</yscreen><sizeHorzCX>1002928</sizeHorzCX><sizeHorzCY>227586</sizeHorzCY><sizeVertCX>146413</sizeVertCX><sizeVertCY>275862</sizeVertCY></Rect></Wnd1></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
<Top><Row0><Sizes><Toolbar-046a29c8><key>iaridepm.enu1</key></Toolbar-046a29c8></Sizes></Row0><Row1><Sizes/></Row1></Top><Left><Row0><Sizes><Wnd2><Rect><Top>-2</Top><Left>-2</Left><Bottom>461</Bottom><Right>268</Right><x>-2</x><y>-2</y><xscreen>200</xscreen><yscreen>200</yscreen><sizeHorzCX>146413</sizeHorzCX><sizeHorzCY>275862</sizeHorzCY><sizeVertCX>197657</sizeVertCX><sizeVertCY>638621</sizeVertCY></Rect></Wnd2></Sizes></Row0></Left><Right><Row0><Sizes/></Row0></Right><Bottom><Row0><Sizes><Wnd3><Rect><Top>-2</Top><Left>-2</Left><Bottom>219</Bottom><Right>1368</Right><x>-2</x><y>-2</y><xscreen>1370</xscreen><yscreen>221</yscreen><sizeHorzCX>1002928</sizeHorzCX><sizeHorzCY>304828</sizeHorzCY><sizeVertCX>146413</sizeVertCX><sizeVertCY>275862</sizeVertCY></Rect></Wnd3></Sizes></Row0></Bottom><Float><Sizes/></Float></Positions>
</Desktop>
</Workspace>

File diff suppressed because it is too large Load Diff