3.22 Reserve Now

The ReserveNow message in OCPP 1.6J is sent by the central system to reserve a connector for a specific user for a set period. It includes the connector ID, reservation ID, expiry date and ID tag. The charge point responds to confirm the reservation or indicate any issues (such as connector availability). This helps ensure that a charging spot is available for a user at a designated time.

API Syntax

Description

Input Params

Return Value

SetReserveNowStatus

Sets the status of the ReserveNow response.

RESERVE_NOW_STATUS_T status

void

Example:

static void handleReservedState(RX_RESERVENOW_T *params)
{
  RESERVE_NOW_STATUS_T reserveStatus = isReservationByCurrentUser(params->idTag, reservedIdtag) ? RESERVE_NOW_ACCEPTED : RESERVE_NOW_OCCUPIED;
  SetReserveNowStatus(reserveStatus);
  (void)SendReserveNowResponse();
}

API Syntax

Description

Input Params

Return Value

ReserveNowInit

Initializes the ReserveNow response status.

void

void

Example:

void OCPPMessagesInit(void)
{
    DataTransferInit();
    ResetInit();
    MeterValueStructInit();
    SetLocalListVersionNumber(DEFAULT_SEND_LOCAL_LIST_VERSION);   
    SetChargePointConnectorId(CHARGEPOINT_DEFAULT_CONTROLLER);
    SetChargePointError(NOERROR);
    SetChargePointStatus(AVAILABLE);
    SetAuthorizeStatus(AUTHORIZE_INVALID);
    SetRemoteStartTransactionStatus(REMOTE_START_STOP_REJECTED);
    SetOCPPWebsocketOnlineMode();
    UnlockConnectorInit();
    ReserveNowInit();
    ChangeAvailabilityInit();
    ClearCacheInit();
    ChangeConfigurationInit();
    CancelReservationInit();
    GetAllIDsFromDB();
    CheckAndStartClockAlignedMeterValueTimer();
}

API Syntax

Description

Input Params

Return Value

GetReserveNowParams

Retrieves the parameters of the ReserveNow request.

RX_RESERVENOW_T *params

void

Example:

  if (responsecode == CANCEL_RESERVATION_MISSING_RESERVATION_ID)
  {
    LogDebug("APP_LOG", " CancelReservation request missing Reservation Id\n");
    SetCancelReservationStatus(CANCEL_RESERVATION_REJECTED); /* Set for testing */
    SendCancelReservationResponse();
  }
  else
  {
    uint16_t reservationId;
    uint8_t connectorId = GetChargePointConnectorId();
    GetCancelReservationParams(&reservationId);
    GetReserveNowParams(&params);
    LogDebug("APP_LOG", " CancelReservationId:%d  ReserveNowRservationId: %d\n", reservationId, params.reservationId);

      

Syntax

Description

Constants/Members

RESERVENOW_RESPONSE_T

Structure defining the response for a ReserveNow request

RESERVE_NOW_STATUS_T status

RX_RESERVENOW_T

Structure defining the parameters received in a ReserveNow request

char uuid[];

uint16_t connectorId;

char expiryDate[];

idToken idTag[];

idToken parentIdTag[];

uint16_t reservationId;

RESERVE_NOW_STATUS_T

Enumeration defining various status codes for the ReserveNow process

RESERVE_NOW_ACCEPTED,

RESERVE_NOW_FAULTED,

RESERVE_NOW_OCCUPIED,

RESERVE_NOW_REJECTED,

RESERVE_NOW_UNAVAILABLE,

RESERVE_NOW_MISSING_CONNECTOR_ID,

RESERVE_NOW_MISSING_EXPIRY_DATE,

RESERVE_NOW_MISSING_ID_TAG,

RESERVE_NOW_MISSING_RESERVATION_ID,