123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188 |
- /*
- * meterComm.h
- *
- * Created on: 2021/6/4
- * Author: foluswen
- */
- #ifndef HEADER_METERCOMM_H_
- #define HEADER_METERCOMM_H_
- #include <sys/time.h>
- #include <sys/timeb.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <sys/ioctl.h>
- #include <sys/socket.h>
- #include <sys/ipc.h>
- #include <sys/shm.h>
- #include <sys/shm.h>
- #include <sys/mman.h>
- #include <linux/wireless.h>
- #include <arpa/inet.h>
- #include <netinet/in.h>
- #include <unistd.h>
- #include <stdarg.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <fcntl.h>
- #include <termios.h>
- #include <errno.h>
- #include <errno.h>
- #include <string.h>
- #include <time.h>
- #include <ctype.h>
- #include <ifaddrs.h>
- #include <signal.h>
- typedef struct METER_INFO
- {
- double presetVoltage; // resolution: 1.000v
- double presentCurrent; // resolution: 1.000a
- double presentPower; // resolution: 1.000kw
- double totlizeImportEnergy; // resolution: 1.000kwh
- double totlizeExportEnergy; // resolution: 1.000kwh
- unsigned char timestamp[32];
- unsigned char LinkStatus; // 0 = unknow ,1 = link , 2 miss link
- }Meter_Info;
- typedef union
- {
- unsigned char Status;
- struct
- {
- unsigned char suLinkStatusIsOk:1;
- unsigned char muFatalErrorOccured:1;
- unsigned char transactionIsOnGoing:1;
- unsigned char tamperingIsDetected:1;
- unsigned char timeSyncStatusIsOk:1;
- unsigned char overTemperatureIsDetected:1;
- unsigned char reversedVoltage:1;
- unsigned char suMeasureFailureOccurred:1;
- }bits;
-
- }StatusFlag;
- typedef union
- {
- unsigned char Errors;
- struct
- {
- unsigned char muInitIsFailed:1;
- unsigned char suStateIsInvalid:1;
- unsigned char versionCheckIsFailed:1;
- unsigned char muRngInitIsFailed:1;
- unsigned char muDataIntegrityIsFailed:1;
- unsigned char muFwIntegrityIsFailed:1;
- unsigned char suIntegrityIsFailed:1;
- unsigned char logbookIntegrityIsFailed:1;
- unsigned char logbookIsFull:1;
- unsigned char memoryAccessIsFailed:1;
- unsigned char muStateIsFailed:1;
- unsigned char res:5;
- }bits;
-
- }ErrorFlag;
-
- typedef struct METER_STATUS_INFO
- {
- unsigned short StatusValue;
- StatusFlag MeterStatusFlag;
-
- unsigned char applicationFirmwareVersion[16];
- unsigned char applicationFirmwareAuthTag[32];
- unsigned char legalFirmwareVersion[16];
- unsigned char legalFirmwareAuthTag[32];
- unsigned char sensorFirmwareVersion[16];
- unsigned char sensorFirmwareCrc[4];
- unsigned char Systime[32];
- unsigned char ipAddress[32];
- unsigned char meterId[32];
- unsigned short ErrorValue;
- ErrorFlag MeterErrorFlag;
-
- unsigned char publicKey[140];
- unsigned char publicKeyOcmf[200];
- unsigned short indexOfLastTransaction;
- unsigned short numberOfStoredTransactions;
- }Meter_Status_Info;
- typedef struct METER_TRANSACTION_HEAD
- {
- unsigned char evseId[32];
- unsigned char transactionId[32];
- unsigned char clientId[32];
- unsigned short tariffId;
- unsigned short cableId;
- unsigned short userData[32];
-
- }Meter_transaction_Head;
- typedef struct METER_TRANSACTION_ACTION
- {
- Meter_transaction_Head head;
- unsigned char transactionOCMF[2048];
- unsigned char OcmfInfoReady; // 0 = nothing, 1 = ocmp info ready
- unsigned char ActionCmd; // 0 = nothing ,1 = transaction Start , 2 transaction Stop , sync time
-
- }Meter_transaction_Action;
- typedef union
- {
- unsigned char Status;
- struct
- {
- unsigned char intermediateRead:1;
- unsigned char res:7;
- }bits;
-
- }TransactionReadlevel;
- typedef struct METER_TRANSACTION_RESULT
- {
- unsigned short paginationCounter;
- Meter_transaction_Head head;
- unsigned char timestampStart[32];
- unsigned char timestampStop[32];
- unsigned int transactionDuration;
- TransactionReadlevel intermediateRead;
- unsigned int transactionStatus;
- unsigned char energyUnit[8];
- double energyImport;
- double energyImportTotalStart;
- double energyImportTotalStop;
- double energyExport;
- double energyExportTotalStart;
- double energyExportTotalStop;
- unsigned char signature[140];
- //unsigned char transactionOCMF[512];
- }Meter_transaction_Result;
- enum METER_MODEL
- {
- METER_MODEL_LEM_L18005A=0,
- };
- extern void meterInitialize(uint8_t model);
- extern int readMeterLivemeasure(uint8_t meterIndex, Meter_Info *meter_info);
- extern int readMeterStatusInfo(uint8_t meterIndex, Meter_Status_Info *meter_status_info);
- extern int startMeterTransaction(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action);
- extern int stopMeterTransaction(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action,Meter_transaction_Result *meter_transaction_Result);
- extern int readMeterTransactionOCMF(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action);
- extern int readMeterLegal(uint8_t meterIndex, Meter_transaction_Action *meter_transaction_Action);
- extern int configure_meter_time(uint8_t meterIndex);
- extern unsigned char meterModel;
- extern char meterApiAddress[];
- #endif /* HEADER_METERCOMM_H_ */
|