Please enable JavaScript to view this site.

CWT Software Configuration Handbook 4.40

Element        Path: <cwt><ARTICLE><deliverables><ioPortDeliverable>

This is the basic CWT I/O output functions using the outlets on the AVE board itself.

For EC7 platform only!

Different output functions can be triggered from several parts in purchase flow by using <deliverables> under an <article>. Different articles can activate the same or other output functions.

An output can be assigned to a physical space by using PayBySpace and configure one or several outputs with the same space number.

Activation of an output is called a TriggerAction and an output function is called an OutputDelivery.Different output functions, (called I/O Deliverables), can be trigged, (called Trigger Actions), from various parts in the purchase flow. Trigger actions and I/O deliverables are configured in the article-tag as an I/O Port Deliverable. One or more I/O Port Deliverables can be configured per article.

I/O Port Deliverable can be assigned to a physical space by using PayBySpace configuration and configure one or several outputs with the same space number.

The output handling separates pulses that are shorter and longer than 60 seconds. Shorter pulses are executed directly in the application purchase flow. While longer pulses are handled by the application scheduler. The schedulers time resolution is one minute and trigged by RTC clock pulses.

Long-time pulses will keep its state if the terminal enters sleep mode. Active short time pulses won’t allow the terminal to enter sleep mode.

 

Known limitations:

Current implementation: I/O is for EC7 only
When the deliverable is a pulse train or a pulse under 1 minute, the CWT is ‘locked’ until the pulse train is finished (i.e. nothing can be done on the terminal while the pulses are ongoing)
When the deliverable pulse is over 60 seconds, the CWT is not ‘locked’. But an ongoing I/O operation can be aborted by a new purchase that activates/deactivates the same I/O output. (i.e. there is no blocking of already activated I/O operations.)
If the deliverable “DeliveryAsOnePulseBeforeExpiryTime” is trigged with a pulse time longer than the purchased time, the pulse will be enabled longer than the expiry of the purchased time.
General limitations:
oTiming accuracy, due to messages and processes delays in the system exact timing won’t be meet.
oNo support in Post-payment.

 

Attributes

Range:
Description:

ioPortName

Range:IoOutput0-7
Description:I/O ouput name, connected to a physical outlet in <CORE> <outlets>

Same ioPortName can be used in same or other articles. (But be sure to not activate them at the same time).

outputDelivery

Range:DeliveryAsOnePulse
DeliveryUnitsAsPulses
DeliveryUnitsAsActivationTime
DeliveryAsOnePulseBeforeExpiryTime
DeliveryDeactivateOutput
Description:Defines the behaviour of an output.

parkingSpaceId

Range:Space number in string format
Description:The Space id is used to connect a output/output function to a space.

pulseTimeDelayInMs

Range:0 - 2147483647mS
Description:0 – no delay

pulseTimeOffInMs

Range:0 - 2147483647mS
Description:0 – not deactivated

pulseTimeOnInMs

Range:0 - 2147483647mS
Description:Defines how long time the outlet is on, in milliseconds.
The value is multiplied with the scaling attribute to get the total activation time.
0 – not activated.

scaling

Range:String format 0.0 to very big number.
Description:Decimal with double precision.
Scales number of units, number of pulses or pulse on time depending on outputDelivery.

triggerAction

Range:TriggerAcceptButtonBeforeCardValidation
TriggerAfterCardValidation
TriggerAfterCompletedPurchase
TriggerAfterCompletedPurchaseConfirmed
TriggerAfterCompletedPurchaseDeclined
TriggerAfterTicketPrintedBeforeRemoval
TriggerAfterTicketRemoval
TriggerAfterRejectedPurchase
TriggerFromUI
Description:Defines which purchase state function that will trig an output function.

See triggerAction Details for a description of each triggerAction

 

outputDelivery Details.

DeliveryAsOnePulse

Description:The output is activated a fixed time defined in config.

Application example; activation signal to barriers or 3:rd part systems that need a short trigger pulse.

Details:Pulse On Time: pulseOnTimeInMs x scaling

Pulse Off Time: not needed. (set internal to 1 ms )

Delay Time: pulseDelayTimeInMs

DeliveryAsOnePulseBeforeExpiryTime

Description:The output is activated a fixed time before the expiry time of a purchase.

Application example: electric engine warmer. Ex. The user pays for 8h of parking and gets 30 minutes of electric engine warmer before the expiry time.

Details:Pulse On Time: pulseOnTimeInMs x scaling

Pulse Off Time: not needed. (set internal to 1 ms )

Pulse Start Time: Expiry Time - Pulse On Time

Pulse Stop Time: Pulse Start Time + Pulse On Time

If Pulse On Time is longer than purchased time, the Pulse is turned on direct. The pulse will be turned on during the whole Pulse On Time, even if it will end after the purchased expiry time.

DeliveryDeactivateOutput

Description:The output is turned off.

 

DeliveryUnitsAsActivationTime

Description:The output is activated for x seconds per purchased unit, multiplied with the scaling factor in config.

Application example; electrical car charging

Details:Pulse On Time: purchased units x scaling

Pulse Off Time: not needed. (set internal to 1 ms )

Delay Time: pulseDelayTimeInMs

DeliveryUnitsAsPulses

Description:The output is pulsed for the number of purchased units multiplied with a scaling factor in config.

Application example; “Space wash” were the pulses are related to the tariff. 1unit is one pulse etc.

Details:Pulse On Time: pulseOnTimeInMs

Pulse Off Time: pulseOffTimeInMs

DelayTime: pulseDelayTimeInMs

Number of pulses: Units x scaling

Example: 1: Engage a barrier after purchase is completed

Outlet function 0 is activated for 700mS after the purchase is completed.

<ARTICLE articleId="1" name="Parking" useCommonTariffs="false" autoSelectTariff="true" defaultTariffId="1" VATCategory="1" purchaseCategory="10">
<paymentService id="1" />
<deliverables>
  <ioPortDeliverable ioPortName="IoOutput1" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsActivationTime" scaling="60.0" />
  <!-- Units as active time: scaling gives 1 minute per purchased unit -->
</deliverables>
</ARTICLE>

Example: 2: Electric car charging

Output delivery, units as activation time: each purchased unit is 60 seconds, Space 1 = Output 1, Space 2 = Output 2, etc…

<ARTICLE articleId="1" name="Parking" useCommonTariffs="false" autoSelectTariff="true" defaultTariffId="1" VATCategory="1" purchaseCategory="10">
<paymentService id="1" />
<deliverables>
<ioPortDeliverable ioPortName="IoOutput1" parkingSpaceId="1" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsActivationTime" scaling="60.0" />
<ioPortDeliverable ioPortName="IoOutput2" parkingSpaceId="2" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsActivationTime" scaling="60.0" />
<ioPortDeliverable ioPortName="IoOutput3" parkingSpaceId="3" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsActivationTime" scaling="60.0" />
<ioPortDeliverable ioPortName="IoOutput4" parkingSpaceId="4" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsActivationTime" scaling="60.0" />
<ioPortDeliverable ioPortName="IoOutput5" parkingSpaceId="5" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsActivationTime" scaling="60.0" />
<!-- Units as active time: scaling gives 1 minute per purchased unit -->
</deliverables>
</ARTICLE>

Example: 3: Space Wash

Space wash with 3 different programs selected by entering different number using PayBySpace. Same output is activated but with different number of pulses.

<ARTICLE articleId="1" name="SpaceWashProgram 1" useCommonTariffs="false" autoSelectTariff="true" defaultTariffId="1" VATCategory="1" purchaseCategory="10">
<paymentService id="1" />
<deliverables>
  <ioPortDeliverable ioPortName="IoOutput0" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsPulses" parkingSpaceId="1" pulseTimeOnInMs="500" pulseTimeOffInMs="500" pulseTimeDelayInMs="1000" scaling="1.0" />
  <!--  1 unit is purchased for ex 100kr. 1 pulse 1 second pulse duty cycle 50%, 1second delay, scaling, activated at ticket removal. -->
</deliverables>
</ARTICLE>
 
<ARTICLE articleId="2" name="SpaceWashProgram 2" useCommonTariffs="false" autoSelectTariff="true" defaultTariffId="1" VATCategory="1" purchaseCategory="10">
<paymentService id="1" />
<deliverables>
  <ioPortDeliverable ioPortName="IoOutput0" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsPulses" parkingSpaceId="2" pulseTimeOnInMs="500" pulseTimeOffInMs="500" pulseTimeDelayInMs="1000" scaling="2.0" />
  <!--  1 unit is purchased for ex 150kr. 2 pulses 1 second pulse duty cycle 50%, 1second delay, scaling, activated at ticket removal. -->
</deliverables>
</ARTICLE>
 
<ARTICLE articleId="3" name="SpaceWashProgram 3" useCommonTariffs="false" autoSelectTariff="true" defaultTariffId="1" VATCategory="1" purchaseCategory="10">
<paymentService id="1" />
<deliverables>
  <ioPortDeliverable ioPortName="IoOutput0" triggerAction="TriggerAfterCompletedPurchase" outputDelivery="DeliveryUnitsAsPulses" parkingSpaceId="3" pulseTimeOnInMs="500" pulseTimeOffInMs="500" pulseTimeDelayInMs="1000" scaling="3.0" />
  <!--  1 unit is purchased for ex 200kr. 3 pulses 1 second pulse duty cycle 50%, 1second delay, scaling, activated at ticket removal. -->
</deliverables>
</ARTICLE>

Example: 4: Configuration to use output for electrical engine warmer.

Space 1-8 activates outlet function 0-7. Activation is done 30 minutes before expiry time.

<ARTICLE articleId="3" name="ParkAndWarm" useCommonTariffs="false" autoSelectTariff="true" defaultTariffId="3" VATCategory="1" purchaseCategory="10">
<paymentService id="1" />
<deliverables>
  <ioPortDeliverable ioPortName="IoOutput0" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="1" pulseTimeOnInMs="60000" scaling="30.0" />
  <ioPortDeliverable ioPortName="IoOutput1" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="2" pulseTimeOnInMs="60000" scaling="30.0" />
  <ioPortDeliverable ioPortName="IoOutput2" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="3" pulseTimeOnInMs="60000" scaling="30.0" />
  <ioPortDeliverable ioPortName="IoOutput3" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="4" pulseTimeOnInMs="60000" scaling="30.0" />
  <ioPortDeliverable ioPortName="IoOutput4" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="5" pulseTimeOnInMs="60000" scaling="30.0" />
  <ioPortDeliverable ioPortName="IoOutput5" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="6" pulseTimeOnInMs="60000" scaling="30.0" />
  <ioPortDeliverable ioPortName="IoOutput6" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="7" pulseTimeOnInMs="60000" scaling="30.0" />
  <ioPortDeliverable ioPortName="IoOutput7" triggerAction="TriggerAfterCompletedPurchase" outputDelivery=" DeliveryAsOnePulseBeforeExpiryTime" parkingSpaceId="8" pulseTimeOnInMs="60000" scaling="30.0" />
</deliverables>
</ARTICLE>

Example: 5: Configuration of mapping IoOutputs to outlets.

<outlets>
  <outlet name="12V_1"   mode="IoOutput7" />
  <outlet name="5V_COM_1" mode="IoOutput4" />
  <outlet name="5V_COM_3" mode="IoOutput0" />
  <outlet name="5V_COM_4" mode="IoOutput1" />
  <outlet name="12V_2"   mode="IoOutput6" />
  <outlet name="12V_MDB" mode="IoOutput5" />
</outlets>