mirror of
https://github.com/dimoniche/solarium.vlad.git
synced 2026-01-30 04:53:30 +03:00
функции работы с картами
This commit is contained in:
parent
2aab75693e
commit
3fd567f951
@ -728,49 +728,38 @@ void AppVladEventProcess(CPU_INT32U event)
|
||||
}
|
||||
}
|
||||
|
||||
// äàëüøå òîëüêî â ðàáî÷åì ðåæèìå
|
||||
if (GetMode() != MODE_WORK)
|
||||
{
|
||||
// Look for new cards
|
||||
if (picc_is_new_card_present() ) {
|
||||
// Select one of the cards
|
||||
if (picc_read_card_serial()) {
|
||||
|
||||
if(is_empty_mifare_card()) {
|
||||
init_mifare_card_data();
|
||||
|
||||
if(!write_mifare_card())
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(read_mifare_card() != NULL) {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
// Look for new cards
|
||||
if (picc_is_new_card_present() ) {
|
||||
// Select one of the cards
|
||||
if (picc_read_card_serial()) {
|
||||
MIFARE_Key key;
|
||||
for (uint8_t i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
|
||||
|
||||
uint8_t block = 4;
|
||||
uint8_t len = 18;
|
||||
uint8_t buffer1[18]= {
|
||||
0x01, 0x02, 0x03, 0x04, // 1, 2, 3, 4,
|
||||
0x05, 0x06, 0x07, 0x08, // 5, 6, 7, 8,
|
||||
0x09, 0x0a, 0xff, 0x0b, // 9, 10, 255, 11,
|
||||
0x0c, 0x0d, 0x0e, 0x0f // 12, 13, 14, 15
|
||||
};
|
||||
uint8_t buffer2[18];
|
||||
|
||||
status_code status = pcd_authenticate(PICC_CMD_MF_AUTH_KEY_A, 4, &key, get_uid());
|
||||
if (status != STATUS_OK) {
|
||||
return;
|
||||
}
|
||||
|
||||
status = (status_code)mifare_write(block, buffer1, 16);
|
||||
if (status != STATUS_OK) {
|
||||
return;
|
||||
}
|
||||
|
||||
status = mifare_read(block, buffer2, &len);
|
||||
if (status != STATUS_OK) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
picc_halt_a();
|
||||
pcd_stop_cryptol();
|
||||
}
|
||||
}
|
||||
|
||||
// äàëüøå òîëüêî â ðàáî÷åì ðåæèìå
|
||||
if (GetMode() != MODE_WORK)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
// åñëè èíêàññàöèÿ, íå ðàáîòàåì
|
||||
if (incassation)
|
||||
@ -903,7 +892,10 @@ void AppVladEventProcess(CPU_INT32U event)
|
||||
app_state.menu_timeout--;
|
||||
}
|
||||
}
|
||||
else if ((app_state.user_menu == USER_MENU_SKIN_ATTENTION_1) || (app_state.user_menu == USER_MENU_SKIN_ATTENTION_2) || (app_state.user_menu == USER_MENU_SKIN_ATTENTION_3) || (app_state.user_menu == USER_MENU_SKIN_ATTENTION_4))
|
||||
else if ((app_state.user_menu == USER_MENU_SKIN_ATTENTION_1)
|
||||
|| (app_state.user_menu == USER_MENU_SKIN_ATTENTION_2)
|
||||
|| (app_state.user_menu == USER_MENU_SKIN_ATTENTION_3)
|
||||
|| (app_state.user_menu == USER_MENU_SKIN_ATTENTION_4))
|
||||
{
|
||||
if (!app_state.menu_timeout)
|
||||
{
|
||||
@ -2394,4 +2386,3 @@ void PlayMusicFile(int file_index)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
#include "mfrc522data.h"
|
||||
#include <includes.h>
|
||||
|
||||
#include "rfid-spi.h"
|
||||
|
||||
mifaredata_t mifare_card_data;
|
||||
|
||||
mifaredata_t* get_mifare_data()
|
||||
@ -12,3 +14,85 @@ void set_mifare_data(mifaredata_t* data)
|
||||
{
|
||||
memcpy(&mifare_card_data, &data, sizeof(mifaredata_t));
|
||||
}
|
||||
|
||||
mifaredata_t* read_mifare_card()
|
||||
{
|
||||
status_code status;
|
||||
uint8_t block = 1;
|
||||
uint8_t len = 18;
|
||||
uint8_t buffer[18];
|
||||
|
||||
MIFARE_Key key;
|
||||
for (uint8_t i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
|
||||
|
||||
for(uint8_t i = 0; i < sizeof(mifare_card_data); i += 16)
|
||||
{
|
||||
status = pcd_authenticate(PICC_CMD_MF_AUTH_KEY_A, block, &key, get_uid());
|
||||
if (status != STATUS_OK) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
status = mifare_read(block, buffer, &len);
|
||||
if (status != STATUS_OK) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
block++;
|
||||
len = 18;
|
||||
|
||||
for (uint8_t j = 0; j < 16; j++) {
|
||||
((uint8_t *)&mifare_card_data)[i] = buffer[j];
|
||||
}
|
||||
}
|
||||
|
||||
picc_halt_a();
|
||||
pcd_stop_cryptol();
|
||||
|
||||
return &mifare_card_data;
|
||||
}
|
||||
|
||||
bool write_mifare_card()
|
||||
{
|
||||
status_code status;
|
||||
uint8_t block = 1;
|
||||
|
||||
MIFARE_Key key;
|
||||
for (uint8_t i = 0; i < 6; i++) key.keyByte[i] = 0xFF;
|
||||
|
||||
for(uint8_t i = 0; i < sizeof(mifare_card_data); i += 16)
|
||||
{
|
||||
status = pcd_authenticate(PICC_CMD_MF_AUTH_KEY_A, block, &key, get_uid());
|
||||
if (status != STATUS_OK) {
|
||||
return false;
|
||||
}
|
||||
|
||||
status = mifare_write(block, &(((uint8_t *)&mifare_card_data)[i]), 16);
|
||||
if (status != STATUS_OK) {
|
||||
return false;
|
||||
}
|
||||
|
||||
block++;
|
||||
}
|
||||
|
||||
picc_halt_a();
|
||||
pcd_stop_cryptol();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
mifaredata_t* init_mifare_card_data()
|
||||
{
|
||||
for(uint8_t i = 0; i < sizeof(mifare_card_data); i++)
|
||||
{
|
||||
((uint8_t *)&mifare_card_data)[i] = 0x00;
|
||||
}
|
||||
|
||||
mifare_card_data.init = 0xDEADBEEF;
|
||||
|
||||
return &mifare_card_data;
|
||||
}
|
||||
|
||||
bool is_empty_mifare_card()
|
||||
{
|
||||
return mifare_card_data.init != 0xDEADBEEF;
|
||||
}
|
||||
|
||||
@ -2,19 +2,28 @@
|
||||
#define _RFID_DATA_H_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
typedef struct {
|
||||
|
||||
uint32_t uid[10];
|
||||
uint32_t money;
|
||||
uint32_t bonus;
|
||||
uint32_t type_abonement;
|
||||
uint32_t number_abonement;
|
||||
uint32_t best_before;
|
||||
uint32_t init; // 4
|
||||
uint32_t uid[10]; // 40
|
||||
uint32_t money; // 4
|
||||
uint32_t bonus; // 4
|
||||
uint32_t type_abonement; // 4
|
||||
uint32_t number_abonement; // 4
|
||||
uint32_t best_before; // 4
|
||||
|
||||
} mifaredata_t;
|
||||
uint8_t reserv[16]; // 16
|
||||
|
||||
} mifaredata_t; // 80
|
||||
|
||||
extern mifaredata_t* get_mifare_data();
|
||||
extern void set_mifare_data(mifaredata_t* data);
|
||||
|
||||
extern mifaredata_t* read_mifare_card();
|
||||
extern bool write_mifare_card();
|
||||
extern mifaredata_t* init_mifare_card_data();
|
||||
extern bool is_empty_mifare_card();
|
||||
|
||||
#endif
|
||||
@ -25,7 +25,7 @@ if not "%~1" == "" goto debugFile
|
||||
|
||||
@echo on
|
||||
|
||||
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
|
||||
@echo off
|
||||
goto end
|
||||
@ -34,7 +34,7 @@ goto end
|
||||
|
||||
@echo on
|
||||
|
||||
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" "--debug_file=%~1" --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" "--debug_file=%~1" --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
|
||||
@echo off
|
||||
:end
|
||||
@ -23,9 +23,9 @@
|
||||
|
||||
if ($debugfile -eq "")
|
||||
{
|
||||
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
}
|
||||
else
|
||||
{
|
||||
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --debug_file=$debugfile --backend -f "C:\work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
& "C:\Program Files\IAR Systems\Embedded Workbench 9.0\common\bin\cspybat" -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.general.xcl" --debug_file=$debugfile --backend -f "C:\git_work\solarium.vlad\settings\sk-mlpc2368.Solarium_Vlad.driver.xcl"
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
"C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armJLINK.dll"
|
||||
|
||||
"C:\work\solarium.vlad\Solarium Vlad\Exe\sk_mlpc2368.out"
|
||||
"C:\git_work\solarium.vlad\Solarium Vlad\Exe\sk_mlpc2368.out"
|
||||
|
||||
--plugin="C:\Program Files\IAR Systems\Embedded Workbench 9.0\arm\bin\armbat.dll"
|
||||
|
||||
|
||||
@ -258,7 +258,7 @@
|
||||
<item>buffer[7]</item>
|
||||
<item>buffer[8]</item>
|
||||
<item>uid</item>
|
||||
<item></item>
|
||||
<item />
|
||||
</expressions>
|
||||
<col-names>
|
||||
<item>Expression</item>
|
||||
|
||||
@ -67,10 +67,10 @@
|
||||
<WatchCond>_ 0</WatchCond>
|
||||
<Watch0>_ 0 "0x00000000" 4294967295 "0xFFFFFFFF" 0 "0x00000000" 4294967295 "0xFFFFFFFF" 3 0 0 0</Watch0>
|
||||
<Watch1>_ 0 "0x00000000" 4294967295 "0xFFFFFFFF" 0 "0x00000000" 4294967295 "0xFFFFFFFF" 3 0 0 0</Watch1>
|
||||
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
|
||||
<CStepIntDis>_ 0</CStepIntDis>
|
||||
<jlinkResetStyle>12</jlinkResetStyle>
|
||||
<jlinkResetStrategy>0</jlinkResetStrategy>
|
||||
<LeaveTargetRunning>_ 0</LeaveTargetRunning>
|
||||
<CStepIntDis>_ 0</CStepIntDis>
|
||||
</JLinkDriver>
|
||||
<ArmDriver>
|
||||
<EnableCache>0</EnableCache>
|
||||
@ -79,17 +79,6 @@
|
||||
<Enabled>0</Enabled>
|
||||
<ShowSource>0</ShowSource>
|
||||
</Trace2>
|
||||
<DisassembleMode>
|
||||
<mode>0</mode>
|
||||
</DisassembleMode>
|
||||
<Breakpoints2>
|
||||
<Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\drivers\mfrc522\rfid-spi.c}.263.5" 0 0 1 "" 0 "" 0</Bp0>
|
||||
<Bp1>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\drivers\mfrc522\rfid-spi.c}.321.7" 0 0 1 "" 0 "" 0</Bp1>
|
||||
<Bp2>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\drivers\mfrc522\rfid-spi.c}.190.3" 0 0 1 "" 0 "" 0</Bp2>
|
||||
<Bp3>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\app\app_vlad.c}.738.31" 0 0 1 "" 0 "" 0</Bp3>
|
||||
<Bp4>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\app\app_vlad.c}.763.23" 0 0 1 "" 0 "" 0</Bp4>
|
||||
<Count>5</Count>
|
||||
</Breakpoints2>
|
||||
<TermIOLog>
|
||||
<LoggingEnabled>_ 0</LoggingEnabled>
|
||||
<LogFile>_ ""</LogFile>
|
||||
@ -99,10 +88,6 @@
|
||||
<LogFile>_ ""</LogFile>
|
||||
<Category>_ 0</Category>
|
||||
</LogFile>
|
||||
<Aliases>
|
||||
<Count>0</Count>
|
||||
<SuppressDialog>0</SuppressDialog>
|
||||
</Aliases>
|
||||
<DriverProfiling>
|
||||
<Enabled>0</Enabled>
|
||||
<Mode>1</Mode>
|
||||
@ -115,4 +100,17 @@
|
||||
<CallStackStripe>
|
||||
<ShowTiming>1</ShowTiming>
|
||||
</CallStackStripe>
|
||||
<DisassembleMode>
|
||||
<mode>0</mode>
|
||||
</DisassembleMode>
|
||||
<Breakpoints2>
|
||||
<Bp0>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\drivers\mfrc522\rfid-spi.c}.263.5" 0 0 1 "" 0 "" 0</Bp0>
|
||||
<Bp1>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\drivers\mfrc522\rfid-spi.c}.321.7" 0 0 1 "" 0 "" 0</Bp1>
|
||||
<Bp2>_ 1 "EMUL_CODE" "{$PROJ_DIR$\PROJECT\drivers\mfrc522\rfid-spi.c}.190.3" 0 0 1 "" 0 "" 0</Bp2>
|
||||
<Count>3</Count>
|
||||
</Breakpoints2>
|
||||
<Aliases>
|
||||
<Count>0</Count>
|
||||
<SuppressDialog>0</SuppressDialog>
|
||||
</Aliases>
|
||||
</settings>
|
||||
|
||||
File diff suppressed because one or more lines are too long
4054
sk-mlpc2368.dep
4054
sk-mlpc2368.dep
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user