123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- #include "site_message_handle.h"
- #include "system_basic_info/SystemAnalysis.h"
- #include "common_tool.h"
- #include "ant.h"
- #include "ya_event.h"
- void site_message_handle::parse_data_locate_reader(char * DataBuffer, int nLen, int dwConnID,int& nCurPos
- , int& reader_id )
- {
- LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_15);
- #pragma pack(1)
-
- struct _LocateInfo
- {
- unsigned int site_id;
- unsigned short time_stamp;
- unsigned char sec;
- unsigned char min;
- unsigned char hour;
- unsigned char day;
- unsigned char week;
- unsigned char mon;
- unsigned char year;
- unsigned char site_relation;
- unsigned char site_state;
- unsigned char site_power;
- };
- #pragma pack()
- _LocateInfo *_pLocateInfo = (_LocateInfo *)(DataBuffer + nCurPos);
- if (tool_other::IsBigEnd())
- {
- _pLocateInfo->site_id = ntohl(_pLocateInfo->site_id);
- _pLocateInfo->time_stamp = ntohs(_pLocateInfo->time_stamp);
- }
- nCurPos += sizeof(_LocateInfo);
- reader_id = _pLocateInfo->site_id;
- std::shared_ptr<site> pSite = sit_list::instance()->get(_pLocateInfo->site_id);
- bool isErrorReader = false;
- if(pSite){
-
- LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_16);
- }else{
- pSite = std::make_shared<site>();
- pSite->m_id = reader_id;
- LOCATION_SYSTEM_BRANCH(LOCATION_SYSTEM_BRANCH_17);
- }
-
- pSite->m_rec_time = time(NULL);
- m_time_last_rec = pSite->m_rec_time;
-
- pSite->m_tick_count = _pLocateInfo->time_stamp;
-
-
- struct tm reader_time;
- reader_time.tm_sec = _pLocateInfo->sec;
- reader_time.tm_min = _pLocateInfo->min;
- reader_time.tm_hour = _pLocateInfo->hour;
- reader_time.tm_mday = _pLocateInfo->day;
- reader_time.tm_wday = _pLocateInfo->week;
- reader_time.tm_mon = _pLocateInfo->mon - 1;
- reader_time.tm_year = _pLocateInfo->year + 100;
- pSite->m_time = mktime(&reader_time);
-
-
-
- uint8_t reader_type = _pLocateInfo->site_relation >>7;
- uint8_t reader_dir = (_pLocateInfo->site_relation >>6)&0x01;
- uint8_t reader_type_locate = (_pLocateInfo->site_relation >>5)&0x01;
- uint8_t relay_counts = _pLocateInfo->site_relation&0x0F;
- pSite->m_reader_dir = reader_dir;
- pSite->m_relay_counts = relay_counts;
- reader_power_battery_alarm(_pLocateInfo->site_id,_pLocateInfo->site_power);
- log_info("id:%d, n:%d, %.2d-%.2d-%.2d %.2d:%.2d:%.2d, sta: %d,reader_power: %d"
- ",reader_type: %d,is_big_reader: %d,is_left: %d, counts: %d",
- _pLocateInfo->site_id, _pLocateInfo->time_stamp, _pLocateInfo->year, _pLocateInfo->mon, _pLocateInfo->day\
- , _pLocateInfo->hour, _pLocateInfo->min,_pLocateInfo->sec\
- , _pLocateInfo->site_state,_pLocateInfo->site_power,reader_type_locate,reader_type,reader_dir,relay_counts);
- }
- int site_message_handle::parse_data_locate_card(char * DataBuffer, int reader_id
- , unsigned short wChr,int& nCurPos, unsigned long long ct_time,int pos)
- {
- return 0;
- }
- void site_message_handle::reader_power_battery_alarm(unsigned int site_id, int powerType)
- {
- std::shared_ptr<site> pSite = sit_list::instance()->get(site_id);
- if (pSite == nullptr )
- {
- return ;
- }
- std::shared_ptr<ya_event> ev_ptr = event_list::get_event_reader(site_id,ET_READER_POWER_BY_BATTERY);
- int oldEvState = -1;
- int usePowerType = powerType;
- if (!pSite->m_needpower_alarm)
- {
-
- if (ev_ptr && ev_ptr->m_status == ES_START)
- {
- oldEvState = ES_START;
- usePowerType = 1;
- }
- else
- {
- return;
- }
- }
- switch (usePowerType)
- {
- case 1 :
- {
- if(nullptr == ev_ptr || oldEvState == ES_END)
- {
- return ;
- }
- event_list::copy_event(pSite,ev_ptr);
- ev_ptr->m_status = ES_END;
- ev_ptr->m_cur_time = std::chrono::system_clock::now();
- ev_ptr->m_cur_value = usePowerType;
- ev_ptr->m_is_display = true;
- event_list::save_event(ev_ptr);
- log_info("[event warning: restore reader power supply] reader_id: %d.",site_id);
- }
- break;
- case 0:
- {
- if(nullptr != ev_ptr && oldEvState == ES_START)
- {
- return ;
- }
- if (nullptr == ev_ptr)
- {
- ev_ptr = event_list::create_event_reader(site_id,ET_READER_POWER_BY_BATTERY);
- event_list::copy_event(pSite,ev_ptr);
- event_list::instance()->add(ev_ptr->get_list_id(),ev_ptr);
- }
- ev_ptr->status = ES_START;
- ev_ptr->m_limit_value = 0;
- ev_ptr->m_cur_value = usePowerType;
- event_list::save_event(ev_ptr);
- log_info("[event warning: reader power supply by battery] reader_id: %d.",site_id);
- }
- break;
- }
- }
|