|
|
@ -1,8 +1,10 @@ |
|
|
|
#include "eeprom_service.hpp"
|
|
|
|
#include "sdk\components\zcancmder\protocol_event_bus_sender.hpp"
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
#include "sdk\components\zcancmder\protocol_event_bus_sender.hpp"
|
|
|
|
|
|
|
|
using namespace std; |
|
|
|
using namespace iflytop; |
|
|
|
|
|
|
@ -44,7 +46,7 @@ void EEPROMService::initialize(int id, I2C_HandleTypeDef* i2c_handle, ProtocolEv |
|
|
|
ZASSERT(m_i2c_handle); |
|
|
|
m_mutex.init(); |
|
|
|
m_monitor_thread.init(TAG, 1024, osPriorityNormal); |
|
|
|
this->id = id; |
|
|
|
this->m_id = id; |
|
|
|
|
|
|
|
m_event_bus_sender = event_bus_sender; |
|
|
|
m_subdevice_p24c16.initialize(m_i2c_handle); // 小ID卡
|
|
|
@ -109,7 +111,7 @@ void EEPROMService::detect_online() { |
|
|
|
* 这里只是简单的判断eeprom的类型,并不是通用的判断逻辑, 仅仅是为了巴迪泰A8000设备而设计 |
|
|
|
* 巴迪泰项目中,eeprom只有两种,p24c16和m24lrxxe,且容积都是2kbyte |
|
|
|
* 这里的判断逻辑: |
|
|
|
* p24c16 :地址包换 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57 |
|
|
|
* p24c16 :地址包换 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57 |
|
|
|
* m24lrxxe:地址只包换 0x53,0x57 |
|
|
|
* |
|
|
|
* @param i2c_ping_state |
|
|
@ -147,6 +149,21 @@ int32_t EEPROMService::a8000_idcard_reader_read_raw(int32_t index, uint8_t* data |
|
|
|
return val; |
|
|
|
} |
|
|
|
|
|
|
|
int32_t EEPROMService::a8000_idcard_write_raw(int32_t add, uint8_t* data, int32_t len) { |
|
|
|
ZLOGI(TAG, "write: 0x%08x, %d", add, len); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int32_t EEPROMService::a8000_idcard_erase() { |
|
|
|
ZLOGI(TAG, "a8000_idcard_erase"); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int32_t EEPROMService::a8000_idcard_earse_unlock() { |
|
|
|
ZLOGI(TAG, "a8000_idcard_earse_unlock"); |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int32_t EEPROMService::module_xxx_reg(int32_t param_id, bool read, int32_t& val) { |
|
|
|
switch (param_id) { |
|
|
|
PROCESS_REG(kreg_id_card_reader_raw_sector_size, /* */ REG_GET(SECTOR_SIZE), ACTION_NONE); |
|
|
@ -164,7 +181,11 @@ void EEPROMService::change_is_online_flag(bool state) { |
|
|
|
ZLOGI(TAG, "change_is_online_flag: %d", state); |
|
|
|
m_is_online_flag = state; |
|
|
|
if (m_event_bus_sender) { |
|
|
|
m_event_bus_sender->push_reg_state_change_event(id, kreg_id_card_reader_is_online, !m_is_online_flag, m_is_online_flag); |
|
|
|
if (m_is_online_flag) { |
|
|
|
m_event_bus_sender->report(m_id, (int32_t)kevent_a8000_idcard_online); |
|
|
|
} else { |
|
|
|
m_event_bus_sender->report(m_id, (int32_t)kevent_a8000_idcard_offline); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|