3.3 Data Transfer

The DataTransfer message in OCPP 1.6J allows the charge point and central system to exchange custom data. It includes a VendorId, MessageId and data payload, enabling proprietary or vendor-specific information to be sent. The central system responds with an acknowledgment, or an error if the data is invalid.

API SyntaxDescriptionInput ParamsReturn Value

OCPPDataTransferResetGlobals

Function to reset global variables for Data Transfer.

void

void

Example:

void OCPPResetAllGlobals(void) 
{
    UtilitiesGlobalVariablesReset();
    UtilitiesLocalStorageResetGlobals();
    OCPPSetChargingProfileResetGlobals();
    OCPPGetCompositeScheduleResetGlobals();
…………..
    OCPPGetConfigurationResetGlobals();
    OCPPDataTransferResetGlobals();
    OCPPClearCacheResetGlobals();
    OCPPChangeConfigurationResetGlobals();
    OCPPChangeAvailabilityResetGlobals();
    OCPPBootNotificationResetGlobals();
API SyntaxDescriptionInput ParamsReturn Value

SendDataTransferRequest

This function creates and sends a Data Transfer request frame to the server. It handles the creation of the OCPP frame and manages the transmission state.

(void)

void

Example:

          		
if (result != 1)
{
LogDebug("APP_LOG", "Error reading data\n");
}
SetDataTransferRequestData(data);
SendDataTransferRequest();
return result;


API SyntaxDescriptionInput ParamsReturn Value

SetDataTransferRequestData

Sets the data field of the Data Transfer request.

char *data

void

Example:

    if (result != 1)
    {
        LogDebug("APP_LOG", "Error reading data\n");
    }
    SetDataTransferRequestData(data);
    SendDataTransferRequest();

    return result;

API SyntaxDescriptionInput ParamsReturn Value

SetDataTransferRequestMessageId

Sets the messageId field of the Data Transfer request.

char *messageId

void

Example:

	if (result != 1) 
                    {
                        LogDebug("APP_LOG", "Error reading messageId\n");
                    }
                    SetDataTransferRequestMessageId(messageId);
                    LogDebug("APP_LOG", "Enter the Data : ");
                    result = scanf("%1023s", data);
                    if (result != 1) 
                    {
                        LogDebug("APP_LOG", "Error reading data\n");
                    }
                    SetDataTransferRequestData(data);
                    SendDataTransferRequest();
return result;
                }
API SyntaxDescriptionInput ParamsReturn Value

SetDataTransferResponseStatus

Sets the status of the Data Transfer response.

DATA_TRANSFER_STATUS_T Status

void

Example:

      if (strncmp(DataTransferParms.vendorId, TESTING_VENDOR_ID, VENDOR_ID_MAX_LEN) == 0)
      {
        LogDebug("APP_LOG", " DataTransfer CSMS send Unknown VedorId\n\r");
        SetDataTransferResponseStatus(DATA_TRANSFER_UNKNOWN_VENDOR_ID);
      }
      else if (strncmp(DataTransferParms.messageId, TESTING_MESSAGE_ID, MESSAGE_ID_MAX_LEN) == 0)
      {
        LogDebug("APP_LOG", " DataTransfer CSMS send Unknown MessageId\n\r");
        SetDataTransferResponseStatus(DATA_TRANSFER_UNKNOWN_MESSAGE_ID);
      }
      else if (strncmp(DataTransferParms.data, TESTING_DATA, DATA_MAX_LEN) == 0)
      {
        LogDebug("APP_LOG", " DataTransfer CSMS send Unknown message\n\r");
        SetDataTransferResponseStatus(DATA_TRANSFER_REJECTED);
      }
      else
      {
        SetDataTransferResponseStatus(DATA_TRANSFER_ACCEPTED);
      }
    }

API SyntaxDescriptionInput ParamsReturn Value

SetDataTransferResponseData

Sets the data field of the Data Transfer response.

char *data

void

Example:			if((DATA_TRANSFER_INITIATOR)responsecode==DATA_TRANSFER_INITIATOR_CSMS)
{
SetDataTransferResponseData(GetDataTransferRequestData());
LogDebug("APP_LOG", " DataTransfer Params Request: vendorId: %s messageId: %s data: %s\n\r", GetDataTransferRequestVendorId(), GetDataTransferRequestMessageId(), GetDataTransferRequestData());
API SyntaxDescriptionInput ParamsReturn Value

DataTransferInit()

This function initializes the Data Transfer request and response structures with default values.

void

void

Example:

void OCPPMessagesInit(void)
{
    DataTransferInit();
    ResetInit();
    MeterValueStructInit();
    SetLocalListVersionNumber(DEFAULT_SEND_LOCAL_LIST_VERSION);   
    SetChargePointConnectorId(CHARGEPOINT_DEFAULT_CONTROLLER);
    ChargePointStatusInit();
    (void)SetAuthorizeStatus(AUTHORIZE_INVALID);
    SetOCPPWebsocketOnlineMode();
    UnlockConnectorInit();
    ReserveNowInit();
    ChangeAvailabilityInit();
    ClearCacheInit();
    ChangeConfigurationInit();
    CancelReservationInit();
    GetAllIDsFromDB();
    CheckAndStartClockAlignedMeterValueTimer();
    ClearChargingProfileInit();
    GetCompositeScheduleInit();
    GetLocalListVersionInit();
    SendLocalListInit();
    TriggerMessageInit();
    RemoteStopTransactionInit();
    RemoteStartTransactionInit();
}
API SyntaxDescriptionInput ParamsReturn Value

SetDataTransferRequestVendorId

Sets the VendorId field of the Data Transfer request.

char *vendorID

void

Example:

int TestDataTransfer(void)
{
    char vendorId[VENDOR_ID_MAX_LEN];   /* Vendor ID associated with the Data Transfer request. */
    char messageId[MESSAGE_ID_MAX_LEN]; /* Message ID for the Data Transfer request. */
    char data[DATA_MAX_LEN];            /* Data to be transferred. */
    LogDebug("APP_LOG", "Enter the Vendor ID : ");
    int result = scanf("%254s", vendorId);
    if (result != 1)
    {
        LogDebug("APP_LOG", "Error reading vendorId\n");
    }
    SetDataTransferRequestVendorId(vendorId);

    LogDebug("APP_LOG", "Enter the Message ID : ");
    result = scanf("%49s", messageId);
API SyntaxDescriptionInput ParamsReturn Value

GetDataTransferStatusType

This function returns the status of the DataTransfer.

DATA_TRANSFER_STATUS_T status

char

Example:

else if ((DATA_TRANSFER_INITIATOR)responsecode == DATA_TRANSFER_INITIATOR_CHARGE_STATION)
{
RX_DATATRANSFER_RESPONSE_T DataTransferParms;
GetDataTransferRequestParmsTX(&DataTransferParms);
LogDebug("APP_LOG", " DataTransfer Response Params: statusENUM: %d status: %s hasData: %d data: %s\n\r", DataTransferParms.status, GetDataTransferStatusType(DataTransferParms.status), DataTransferParms.hasData, DataTransferParms.data);
}
API SyntaxDescriptionInput ParamsReturn Value

GetDataTransferRequestData

This function returns the data of the DataTransfer.

void

char

Example:

else if(strncmp(GetDataTransferRequestData(),
TESTING_DATA, DATA_MAX_LEN) == 0)
{
LogDebug("APP_LOG", " DataTransfer CSMS send Unknown message\n\r");
SetDataTransferResponseStatus(DATA_TRANSFER_REJECTED);
}

API SyntaxDescriptionInput ParamsReturn Value

GetDataTransferRequestMessageId

This function returns the MessageId of the DataTransfer.

void

char

Example:


else if (strncmp(GetDataTransferRequestMessageId(), TESTING_MESSAGE_ID, MESSAGE_ID_MAX_LEN) == 0)
{
LogDebug("APP_LOG", " DataTransfer CSMS send Unknown MessageId\n\r");
SetDataTransferResponseStatus(DATA_TRANSFER_UNKNOWN_MESSAGE_ID);
}

API SyntaxDescriptionInput ParamsReturn Value

GetDataTransferRequestVendorId

This function returns the VendorId of the DataTransfer.

void

char

Example:

if (strncmp(GetDataTransferRequestVendorId(), TESTING_VENDOR_ID, VENDOR_ID_MAX_LEN) == 0)
{
LogDebug("APP_LOG", " DataTransfer CSMS send Unknown VedorId\n\r");
SetDataTransferResponseStatus(DATA_TRANSFER_UNKNOWN_VENDOR_ID);
}

SyntaxDescriptionConstants/Members

TX_DATATRANSFER_RESPONSE_T

This structure contains the fields for a Data Transfer response to be sent to the central system.

DATA_TRANSFER_STATUS_T status;

int hasData;

char data[];

RX_DATATRANSFER_REQUEST_T

This structure contains the fields required for a Data Transfer request from the central system.

char uuid[];

char vendorId[];

char messageId[]

int hasData;

char data[];

TX_DATATRANSFER_REQUEST_T

This structure contains the fields required for a Data Transfer request from the Charge Station.

char vendorId[];

int hasMessageId;

char messageId[];

int hasData;

char data[]

RX_DATATRANSFER_RESPONSE_T

This structure contains the fields for a Data Transfer response received from the central system.

DATA_TRANSFER_STATUS_T status;

int hasData;

char data[];

DATA_TRANSFER_INITIATOR

Enum represents the possible initiators of a Data Transfer operation.

DATA_TRANSFER_INITIATOR_CSMS

DATA_TRANSFER_INITIATOR_CHARGE_STATION

DATA_TRANSFER_INITIATOR_CSMS_REQUEST_ERROR

DATA_TRANSFER_INITIATOR_CHARGE_STATION_RESPONSE_ERROR

DATA_TRANSFER_STATUS_T

Enum represents the possible statuses of a Data Transfer operation.

DATA_TRANSFER_ACCEPTED

DATA_TRANSFER_REJECTED

DATA_TRANSFER_UNKNOWN_MESSAGE_ID

DATA_TRANSFER_UNKNOWN_VENDOR_ID