· 6 years ago · Aug 11, 2019, 01:10 PM
1EUROPEAN COMMITTEE FOR STANDARDIZATION
2C O M I T É E U R O P É E N D E N O R M A LI S A T I O N
3EUROPÄISCHES KOMITEE FÜR NORMUNG
4CEN-CENELEC Management Centre: Avenue Marnix 17, B-1000 Brussels
5© 2015 CEN All rights of exploitation in any form and by any means reserved worldwide for CEN national Members.
6Ref. No.:CWA 16926-64:2015 E
7CEN
8WORKSHOP
9AGREEMENT
10
11 CWA 16926-64
12 August 2015
13
14
15ICS 35.240.40; 35.240.15; 35.200
16English version
17Extensions for Financial Services (XFS) interface specification
18Release 3.30 - Part 64: Cash Dispenser Device Class Interface -
19Migration from Version 3.20 (CWA 16374) to Version 3.30 (this
20CWA) - Programmer's Reference
21This CEN Workshop Agreement has been drafted and approved by a Workshop of representatives of interested parties, the constitution of
22which is indicated in the foreword of this Workshop Agreement.
23The formal process followed by the Workshop in the development of this Workshop Agreement has been endorsed by the National
24Members of CEN but neither the National Members of CEN nor the CEN-CENELEC Management Centre can be held accountable for the
25technical content of this CEN Workshop Agreement or possible conflicts with standards or legislation.
26This CEN Workshop Agreement can in no way be held as being an official standard developed by CEN and its Members.
27This CEN Workshop Agreement is publicly available as a reference document from the CEN Members National Standard Bodies.
28CEN members are the national standards bodies of Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech Republic, Denmark, Estonia,
29Finland, Former Yugoslav Republic of Macedonia, France, Germany, Greece, Hungary, Iceland, Ireland, Italy, Latvia, Lithuania,
30Luxembourg, Malta, Netherlands, Norway, Poland, Portugal, Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland, Turkey and United
31Kingdom.
32CWA 16926-64:2015 (E)
332
34Table of Contents
35European foreword................................................................................................................... 4
361. Migration Information..................................................................................................... 4
372. Cash Dispensers............................................................................................................. 8
383. References........................................................................................................................ 9
394. Info Commands..............................................................................................................10
404.1 WFS_INF_CDM_STATUS .................................................................................................. 10
414.2 WFS_INF_CDM_CAPABILITIES......................................................................................... 15
424.3 WFS_INF_CDM_CASH_UNIT_INFO................................................................................... 20
434.4 WFS_INF_CDM_TELLER_INFO......................................................................................... 27
444.5 WFS_INF_CDM_CURRENCY_EXP .................................................................................... 29
454.6 WFS_INF_CDM_MIX_TYPES ............................................................................................. 30
464.7 WFS_INF_CDM_MIX_TABLE............................................................................................. 31
474.8 WFS_INF_CDM_PRESENT_STATUS................................................................................. 32
484.9 WFS_INF_CDM_GET_ITEM_INFO ..................................................................................... 34
494.10 WFS_INF_CDM_GET_BLACKLIST .................................................................................... 36
504.11 WFS_INF_CDM_GET_ALL_ITEMS_INFO........................................................................... 37
515. Execute Commands......................................................................................................40
525.1 WFS_CMD_CDM_DENOMINATE ....................................................................................... 40
535.2 WFS_CMD_CDM_DISPENSE............................................................................................. 43
545.3 WFS_CMD_CDM_COUNT.................................................................................................. 47
555.4 WFS_CMD_CDM_PRESENT.............................................................................................. 50
565.5 WFS_CMD_CDM_REJECT ................................................................................................ 52
575.6 WFS_CMD_CDM_RETRACT.............................................................................................. 53
585.7 WFS_CMD_CDM_OPEN_SHUTTER .................................................................................. 56
595.8 WFS_CMD_CDM_CLOSE_SHUTTER ................................................................................ 57
605.9 WFS_CMD_CDM_SET_TELLER_INFO .............................................................................. 58
615.10 WFS_CMD_CDM_SET_CASH_UNIT_INFO ........................................................................ 59
625.11 WFS_CMD_CDM_START_EXCHANGE.............................................................................. 61
635.12 WFS_CMD_CDM_END_EXCHANGE.................................................................................. 63
645.13 WFS_CMD_CDM_OPEN_SAFE_DOOR ............................................................................. 65
655.14 WFS_CMD_CDM_CALIBRATE_CASH_UNIT ..................................................................... 66
665.15 WFS_CMD_CDM_SET_MIX_TABLE .................................................................................. 68
675.16 WFS_CMD_CDM_RESET .................................................................................................. 69
685.17 WFS_CMD_CDM_TEST_CASH_UNITS.............................................................................. 72
695.18 WFS_CMD_CDM_SET_GUIDANCE_LIGHT ....................................................................... 74
705.19 WFS_CMD_CDM_POWER_SAVE_CONTROL.................................................................... 76
71CWA 16926-64:2015 (E)
723
735.20 WFS_CMD_CDM_PREPARE_DISPENSE........................................................................... 77
745.21 WFS_CMD_CDM_SET_BLACKLIST .................................................................................. 78
755.22 WFS_CMD_CDM_SYNCHRONIZE_COMMAND.................................................................. 79
766. Events...............................................................................................................................80
776.1 WFS_SRVE_CDM_SAFEDOOROPEN................................................................................ 80
786.2 WFS_SRVE_CDM_SAFEDOORCLOSED ........................................................................... 81
796.3 WFS_USRE_CDM_CASHUNITTHRESHOLD...................................................................... 82
806.4 WFS_SRVE_CDM_CASHUNITINFOCHANGED.................................................................. 83
816.5 WFS_SRVE_CDM_TELLERINFOCHANGED ...................................................................... 84
826.6 WFS_EXEE_CDM_DELAYEDDISPENSE ........................................................................... 85
836.7 WFS_EXEE_CDM_STARTDISPENSE ................................................................................ 86
846.8 WFS_EXEE_CDM_CASHUNITERROR............................................................................... 87
856.9 WFS_SRVE_CDM_ITEMSTAKEN ...................................................................................... 88
866.10 WFS_SRVE_CDM_COUNTS_CHANGED ........................................................................... 89
876.11 WFS_EXEE_CDM_PARTIALDISPENSE............................................................................. 90
886.12 WFS_EXEE_CDM_SUBDISPENSEOK ............................................................................... 91
896.13 WFS_EXEE_CDM_INCOMPLETEDISPENSE ..................................................................... 92
906.14 WFS_EXEE_CDM_NOTEERROR....................................................................................... 93
916.15 WFS_SRVE_CDM_ITEMSPRESENTED ............................................................................. 94
926.16 WFS_SRVE_CDM_MEDIADETECTED ............................................................................... 95
936.17 WFS_EXEE_CDM_INPUT_P6 ............................................................................................ 96
946.18 WFS_SRVE_CDM_DEVICEPOSITION................................................................................ 97
956.19 WFS_SRVE_CDM_POWER_SAVE_CHANGE .................................................................... 98
966.20 WFS_EXEE_CDM_INFO_AVAILABLE ............................................................................... 99
976.21 WFS_EXEE_CDM_INCOMPLETERETRACT .................................................................... 100
986.22 WFS_SRVE_CDM_SHUTTERSTATUSCHANGED ............................................................ 101
997. Sub-Dispensing Command Flow.............................................................................102
1008. Rules for Cash Unit Exchange.................................................................................105
1019. Events Associated with Cash Unit Status Changes..........................................106
1029.1 One Physical Cash Unit Goes LOW ................................................................................ 106
1039.2 Last Physical Cash Unit Goes LOW ................................................................................ 107
1049.3 One Physical Cash Unit Goes INOP ................................................................................ 108
1059.4 Last Physical Cash Unit Goes EMPTY ............................................................................ 109
10610. Multiple Dispense Command Flow.........................................................................110
10711. C - Header file...............................................................................................................112
108CWA 16926-64:2015 (E)
1094
110European foreword
111This CWA is revision 3.30 of the XFS interface specification.
112This CEN Workshop Agreement has been drafted and approved by a Workshop of representatives of interested
113parties on March 19th 2015, the constitution of which was supported by CEN following the public call for
114participation made on 1998-06-24. The specification is continuously reviewed and commented in the CEN/ISSS
115Workshop on XFS. It is therefore expected that an update of the specification will be published in due time as a
116CWA, superseding this revision 3.30.
117A list of the individuals and organizations which supported the technical consensus represented by the CEN
118Workshop Agreement is available from the CEN/XFS Secretariat. The CEN XFS Workshop gathered suppliers as
119well as banks and other financial service companies.
120The CWA is published as a multi-part document, consisting of:
121Part 1: Application Programming Interface (API) - Service Provider Interface (SPI) - Programmer's Reference
122Part 2: Service Classes Definition - Programmer's Reference
123Part 3: Printer and Scanning Device Class Interface - Programmer's Reference
124Part 4: Identification Card Device Class Interface - Programmer's Reference
125Part 5: Cash Dispenser Device Class Interface - Programmer's Reference
126Part 6: PIN Keypad Device Class Interface - Programmer's Reference
127Part 7: Check Reader/Scanner Device Class Interface - Programmer's Reference
128Part 8: Depository Device Class Interface - Programmer's Reference
129Part 9: Text Terminal Unit Device Class Interface - Programmer's Reference
130Part 10: Sensors and Indicators Unit Device Class Interface - Programmer's Reference
131Part 11: Vendor Dependent Mode Device Class Interface - Programmer's Reference
132Part 12: Camera Device Class Interface - Programmer's Reference
133Part 13: Alarm Device Class Interface - Programmer's Reference
134Part 14: Card Embossing Unit Device Class Interface - Programmer's Reference
135Part 15: Cash-In Module Device Class Interface - Programmer's Reference
136Part 16: Card Dispenser Device Class Interface - Programmer's Reference
137Part 17: Barcode Reader Device Class Interface - Programmer's Reference
138Part 18: Item Processing Module Device Class Interface- Programmer's Reference
139Parts 19 - 28: Reserved for future use.
140Parts 29 through 47 constitute an optional addendum to this CWA. They define the integration between the SNMP
141standard and the set of status and statistical information exported by the Service Providers.
142Part 29: XFS MIB Architecture and SNMP Extensions - Programmer’s Reference
143Part 30: XFS MIB Device Specific Definitions - Printer Device Class
144Part 31: XFS MIB Device Specific Definitions - Identification Card Device Class
145Part 32: XFS MIB Device Specific Definitions - Cash Dispenser Device Class
146Part 33: XFS MIB Device Specific Definitions - PIN Keypad Device Class
147Part 34: XFS MIB Device Specific Definitions - Check Reader/Scanner Device Class
148Part 35: XFS MIB Device Specific Definitions - Depository Device Class
149Part 36: XFS MIB Device Specific Definitions - Text Terminal Unit Device Class
150Part 37: XFS MIB Device Specific Definitions - Sensors and Indicators Unit Device Class
151Part 38: XFS MIB Device Specific Definitions - Camera Device Class
152CWA 16926-64:2015 (E)
1535
154Part 39: XFS MIB Device Specific Definitions - Alarm Device Class
155Part 40: XFS MIB Device Specific Definitions - Card Embossing Unit Class
156Part 41: XFS MIB Device Specific Definitions - Cash-In Module Device Class
157Part 42: Reserved for future use.
158Part 43: XFS MIB Device Specific Definitions - Vendor Dependent Mode Device Class
159Part 44: XFS MIB Application Management
160Part 45: XFS MIB Device Specific Definitions - Card Dispenser Device Class
161Part 46: XFS MIB Device Specific Definitions - Barcode Reader Device Class
162Part 47: XFS MIB Device Specific Definitions - Item Processing Module Device Class
163Parts 48 - 60 are reserved for future use.
164Part 61: Application Programming Interface (API) - Migration from Version 3.20 (CWA 16374) to Version 3.30
165(this CWA) - Service Provider Interface (SPI) - Programmer's Reference
166Part 62: Printer and Scanning Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30
167(this CWA) - Programmer's Reference
168Part 63: Identification Card Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30
169(this CWA) - Programmer's Reference
170Part 64: Cash Dispenser Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this
171CWA) - Programmer's Reference
172Part 65: PIN Keypad Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this
173CWA) - Programmer's Reference
174Part 66: Check Reader/Scanner Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version
1753.30 (this CWA) - Programmer's Reference
176Part 67: Depository Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this
177CWA) - Programmer's Reference
178Part 68: Text Terminal Unit Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30
179(this CWA) - Programmer's Reference
180Part 69: Sensors and Indicators Unit Device Class Interface - Migration from Version 3.20 (CWA 16374) to
181Version 3.30 (this CWA) - Programmer's Reference
182Part 70: Vendor Dependent Mode Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version
1833.30 (this CWA) - Programmer's Reference
184Part 71: Camera Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this CWA) -
185Programmer's Reference
186Part 72: Alarm Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this CWA) -
187Programmer's Reference
188Part 73: Card Embossing Unit Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30
189(this CWA) - Programmer's Reference
190Part 74: Cash-In Module Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this
191CWA) - Programmer's Reference
192Part 75: Card Dispenser Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this
193CWA) - Programmer's Reference
194Part 76: Barcode Reader Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version 3.30 (this
195CWA) - Programmer's Reference
196Part 77: Item Processing Module Device Class Interface - Migration from Version 3.20 (CWA 16374) to Version
1973.30 (this CWA) - Programmer's Reference
198In addition to these Programmer's Reference specifications, the reader of this CWA is also referred to a
199complementary document, called Release Notes. The Release Notes contain clarifications and explanations on the
200CWA specifications, which are not requiring functional changes. The current version of the Release Notes is
201available online from http://www.cen.eu/work/areas/ict/ebusiness/pages/ws-xfs.aspx.
202CWA 16926-64:2015 (E)
2036
204The information in this document represents the Workshop's current views on the issues discussed as of the date of
205publication. It is furnished for informational purposes only and is subject to change without notice. CEN makes no
206warranty, express or implied, with respect to this document.
207The formal process followed by the Workshop in the development of the CEN Workshop Agreement has been
208endorsed by the National Members of CEN but neither the National Members of CEN nor the CEN-CENELEC
209Management Centre can be held accountable for the technical content of the CEN Workshop Agreement or possible
210conflict with standards or legislation. This CEN Workshop Agreement can in no way be held as being an official
211standard developed by CEN and its members.
212The final review/endorsement round for this CWA was started on 2015-01-16 and was successfully closed on 2015-
21303-19. The final text of this CWA was submitted to CEN for publication on 2015-06-19. The specification is
214continuously reviewed and commented in the CEN Workshop on XFS. It is therefore expected that an update of the
215specification will be published in due time as a CWA, superseding this revision 3.30.
216Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights.
217CEN [and/or CENELEC] shall not be held responsible for identifying any or all such patent rights.
218According to the CEN-CENELEC Internal Regulations, the national standards organizations of the following
219countries are bound to implement this European Standard: Austria, Belgium, Bulgaria, Croatia, Cyprus, Czech
220Republic, Denmark, Estonia, Finland, Former Yugoslav Republic of Macedonia, France, Germany, Greece,
221Hungary, Iceland, Ireland, Italy, Latvia, Lithuania, Luxembourg, Malta, Netherlands, Norway, Poland, Portugal,
222Romania, Slovakia, Slovenia, Spain, Sweden, Switzerland, Turkey and the United Kingdom.
223Comments or suggestions from the users of the CEN Workshop Agreement are welcome and should be addressed
224to the CEN-CENELEC Management Centre.
225CWA 16926-64:2015 (E)
2267
2271. Migration Information
228XFS 3.30 has been designed to minimize backwards compatibility issues. This document highlights the changes
229made to the CDM device class between version 3.20 and 3.30, by highlighting the additions and deletions to the
230text.
231CWA 16926-64:2015 (E)
2328
2332. Cash Dispensers
234This specification describes the functionality of an XFS compliant Cash Dispenser Module (CDM) Service
235Provider. It defines the service-specific commands that can be issued to the Service Provider using the
236WFSGetInfo, WFSAsyncGetInfo, WFSExecute and WFSAsyncExecute functions.
237Persistent values are maintained through power failures, open sessions, close session and system resets.
238This specification covers the dispensing of items. An “item” is defined as any media that can be dispensed and
239includes coupons, documents, bills and coins. However, if coins and bills are both to be dispensed separate Service
240Providers must be implemented for each.
241All currency parameters in this specification are expressed as a quantity of minimum dispense units, as defined in
242the description of the WFS_INF_CDM_CURRENCY_EXP command.
243There are two types of CDM: Self-Service CDM and Teller CDM. A Self-Service CDM operates in an automated
244environment, while a Teller CDM has an operator present. The functionality provided by the following commands
245is only applicable to a Teller CDM:
246WFS_CMD_CDM_SET_TELLER_INFO
247WFS_INF_CDM_TELLER_INFO
248It is possible for the CDM to be part of a compound device with the Cash-In Module (CIM). This CIM\CDM
249combination is referred to throughout this specification as a “Cash Recycler”. For details of the CIM interface see
250[Ref. 3].
251If the device is a Cash Recycler then, if cash unit exchanges are required on both interfaces, the exchanges cannot
252be performed concurrently. An exchange on one interface must be complete (the
253WFS_CMD_CDM_END_EXCHANGE must have completed) before an exchange can start on the other interface.
254The WFS_ERR_CDM_EXCHANGEACTIVE error code will be returned if the correct sequence is not adhered to.
255The CIM interface can be used for all exchange operations on recycle devices, and the CIM interface should be
256used if the device has recycle units of multiple currencies and/or denominations (including multiple note identifiers
257associated with the same denomination).
258The event WFS_SRVE_CDM_COUNTS_CHANGED will be posted if an operation on the CIM interface affects
259the cash unit counts which are available through the CDM interface.
260The following commands on the CIM interface may affect the CDM counts:
261WFS_CMD_CIM_CASH_IN
262WFS_CMD_CIM_CASH_IN_END
263WFS_CMD_CIM_CASH_IN_ROLLBACK
264WFS_CMD_CIM_RETRACT
265WFS_CMD_CIM_SET_CASH_IN_UNIT_INFO
266WFS_CMD_CIM_END_EXCHANGE
267WFS_CMD_CIM_RESET
268WFS_CMD_CIM_REPLENISH
269WFS_CMD_CIM_CASH_UNIT_COUNT
270The following applies when a blacklist of items is supported via the WFS_INF_CDM_GET_BLACKLIST and
271WFS_CMD_CDM_SET_BLACKLIST command. If a blacklisted item is detected the device will classify the item
272as a level 2 banknote and will handle the item automatically according to the local country specific note handling
273standard or legislation. A WFS_EXEE_CDM_INPUT_P6 event will be sent if a blacklisted banknote is detected.
274The Blacklist functionality can use a mask to specify serial numbers. The mask is defined as follows: A '?' character
275(0x003F) is used to represent a wildcard for a single Unicode character, and a '*' character (0x002A) is used to
276represent a wildcard for a single or multiple Unicode character.
277For example, “S8H9??16?4” would represent a match for the serial numbers “S8H9231654” and “S8H9761684”. A
278mask of “HD90*2” would be used in order to match serial numbers that begin with “HD90” and end with “2”, for
279example “HD9028882”, “HD9083276112”. Note that the blacklist mask can only use one asterisk, and if a real
280character is required then it must be preceded by a backslash, for example: '\\' for a backslash, '\*' for an asterisk or
281'\?' for a question mark.
282CWA 16926-64:2015 (E)
2839
2843. References
2851. XFS Application Programming Interface (API)/Service Provider Interface ( SPI), Programmer’s Reference,
286Revision 3.2030
2872. ISO 4217 at http://www.iso.org
2883. XFS Cash-In Module Device Class Interface, Programmer’s Reference, Revision 3.2030
289CWA 16926-64:2015 (E)
29010
2914. Info Commands
2924.1 WFS_INF_CDM_STATUS
293Description This command is used to obtain the status of the CDM. It may also return vendor-specific status
294information.
295Input Param None.
296Output Param LPWFSCDMSTATUS lpStatus;
297typedef struct _wfs_cdm_status
298{
299WORD fwDevice;
300WORD fwSafeDoor;
301WORD fwDispenser;
302WORD fwIntermediateStacker;
303LPWFSCDMOUTPOS *lppPositions;
304LPSTR lpszExtra;
305DWORD dwGuidLights[WFS_CDM_GUIDLIGHTS_SIZE];
306WORD wDevicePosition;
307USHORT usPowerSaveRecoveryTime;
308WORD wAntiFraudModule;
309} WFSCDMSTATUS, *LPWFSCDMSTATUS;
310fwDevice
311Supplies the state of the CDM. However, an fwDevice status of WFS_CDM_DEVONLINE does
312not necessarily imply that dispensing can take place: the value of the fwDispenser field must be
313taken into account and - for some vendors - the state of the safe door (fwSafeDoor) may also be
314relevant. The state of the CDM will have one of the following values:
315Value Meaning
316WFS_CDM_DEVONLINE The device is online. This is returned when
317the dispenser is present and operational.
318WFS_CDM_DEVOFFLINE The device is offline (e.g. the operator has
319taken the device offline by turning a switch
320or pulling out the device).
321WFS_CDM_DEVPOWEROFF The device is powered off or physically not
322connected.
323WFS_CDM_DEVNODEVICE The device is not intended to be there, e.g.
324this type of self service machine does not
325contain such a device or it is internally not
326configured.
327WFS_CDM_DEVHW ERROR The device is inoperable due to a hardware
328error.
329WFS_CDM_DEVUSERERROR The device is present but a person is
330preventing proper device operation.
331WFS_CDM_DEVBUSY The device is busy and unable to process an
332execute command at this time.
333WFS_CDM_DEVFRAUDATTEMPT The device is present but is inoperable
334because it has detected a fraud attempt.
335WFS_CDM_DEVPOTENTIALFRAUD The device has detected a potential fraud
336attempt and is capable of remaining in
337service. In this case the application should
338make the decision as to whether to take the
339device offline.
340fwSafeDoor
341Supplies the state of the safe door as one of the following values:
342Value Meaning
343WFS_CDM_DOORNOTSUPPORTED Physical device has no safe door or safe door
344state reporting is not supported.
345WFS_CDM_DOOROPEN Safe door is open.
346WFS_CDM_DOORCLOSED Safe door is closed.
347CWA 16926-64:2015 (E)
34811
349WFS_CDM_DOORUNKNOWN Due to a hardware error or other condition,
350the state of the safe door cannot be
351determined.
352fwDispenser
353Supplies the state of the dispenser’s logical cash units as one of the following values:
354Value Meaning
355WFS_CDM_DISPOK All cash units present are in a good state.
356WFS_CDM_DISPCUSTATE One or more of the cash units is in a low,
357empty, inoperative or manipulated condition.
358Items can still be dispensed from at least one
359of the cash units.
360WFS_CDM_DISPCUSTOP Due to a cash unit failure dispensing is
361impossible. No items can be dispensed
362because all of the cash units are in an empty,
363inoperative or manipulated condition. This
364state may also occur when a reject/retract
365cash unit is full or no reject/retract cash unit
366is present, or when an application lock is set
367on every cash unit.
368WFS_CDM_DISPCUUNKNOWN Due to a hardware error or other condition,
369the state of the cash units cannot be
370determined.
371fwIntermediateStacker
372Supplies the state of the intermediate stacker. These bills are typically present on the intermediate
373stacker as a result of a retract operation or because a dispense has been performed without a
374subsequent present. Possible values for this field are:
375Value Meaning
376WFS_CDM_ISEMPTY The intermediate stacker is empty.
377WFS_CDM_ISNOTEMPTY The intermediate stacker is not empty. The
378items have not been in customer access.
379WFS_CDM_ISNOTEMPTYCUST The intermediate stacker is not empty. The
380items have been in customer access. If the
381device is a recycler then the items on the
382intermediate stacker may be there as a result
383of a previous cash-in operation.
384WFS_CDM_ISNOTEMPTYUNK The intermediate stacker is not empty. It is
385not known if the items have been in
386customer access.
387WFS_CDM_ISUNKNOWN Due to a hardware error or other condition,
388the state of the intermediate stacker cannot
389be determined.
390WFS_CDM_ISNOTSUPPORTED The physical device has no intermediate
391stacker.
392lppPositions
393Pointer to a NULL-terminated array of pointers to WFSCDMOUTPOS structures. There is one
394structure for each position to which items can be dispensed or presented:
395typedef struct _wfs_cdm_position
396{
397WORD fwPosition;
398WORD fwShutter;
399WORD fwPositionStatus;
400WORD fwTransport;
401WORD fwTransportStatus;
402WORD fwJammedShutterPosition;
403} WFSCDMOUTPOS, *LPWFSCDMOUTPOS;
404fwPosition
405Supplies the output position as one of the following values:
406Value Meaning
407WFS_CDM_POSLEFT Left output position.
408CWA 16926-64:2015 (E)
40912
410WFS_CDM_POSRIGHT Right output position.
411WFS_CDM_POSCENTER Center output position.
412WFS_CDM_POSTOP Top output position.
413WFS_CDM_POSBOTTOM Bottom output position.
414WFS_CDM_POSFRONT Front output position.
415WFS_CDM_POSREAR Rear output position.
416fwShutter
417Supplies the state of the shutter as one of the following values:
418Value Meaning
419WFS_CDM_SHTCLOSED The shutter is operational and is closed.
420WFS_CDM_SHTOPEN The shutter is openedoperational and is
421open.
422WFS_CDM_SHTJAMMED The shutter is jammed and is not
423operational. The field
424fwJammedShutterPosition provides the
425positional state of the shutter.
426WFS_CDM_SHTUNKNOWN Due to a hardware error or other
427condition, the state of the shutter cannot
428be determined.
429WFS_CDM_SHTNOTSUPPORTED The physical device has no shutter or
430shutter state reporting is not supported.
431fwPositionStatus
432Returns information regarding items which may be at the output position. If the device is a
433recycler it is possible that the output position will not be empty due to a previous cash-in
434operation. The possible values of this field are:
435Value Meaning
436WFS_CDM_PSEMPTY The output position is empty.
437WFS_CDM_PSNOTEMPTY The output position is not empty.
438WFS_CDM_PSUNKNOWN Due to a hardware error or other
439condition, the state of the output position
440cannot be determined.
441WFS_CDM_PSNOTSUPPORTED The device is not capable of reporting
442whether or not items are at the output
443position.
444fwTransport
445Supplies the state of the transport mechanism as one of the following values:
446Value Meaning
447WFS_CDM_TPOK The transport is in a good state.
448WFS_CDM_TPINOP The transport is inoperative due to a
449hardware failure or media jam.
450WFS_CDM_TPUNKNOWN Due to a hardware error or other
451condition the state of the transport cannot
452be determined.
453WFS_CDM_TPNOTSUPPORTED The physical device has no transport or
454transport state reporting is not supported.
455fwTransportStatus
456Returns information regarding items which may be on the transport. If the device is a recycler
457device it is possible that the transport will not be empty due to a previous cash-in operation.
458The possible values of this field are:
459Value Meaning
460WFS_CDM_TPSTATEMPTY The transport is empty.
461WFS_CDM_TPSTATNOTEMPTY The transport is not empty.
462WFS_CDM_TPSTATNOTEMPTYCUST Items which a customer has had access to
463are on the transport.
464WFS_CDM_TPSTATNOTEMPTY_UNK Due to a hardware error or other
465condition it is not known whether there
466are items on the transport.
467CWA 16926-64:2015 (E)
46813
469WFS_CDM_TPSTATNOTSUPPORTED The device is not capable of reporting
470whether items are on the transport.
471fwJammedShutterPosition
472Returns information regarding the position of the jammed shutter. The possible values of this
473field are:
474Value Meaning
475WFS_CDM_SHUTTERPOS_NOTSUPPORTED The physical device has no shutter or
476the reporting of the position of a
477jammed shutter is not supported.
478WFS_CDM_SHUTTERPOS_NOTJAMMED The shutter is not jammed.
479WFS_CDM_SHUTTERPOS_OPEN The shutter is jammed, but fully open.
480WFS_CDM_SHUTTERPOS_PARTIALLY_OPEN The shutter is jammed, but partially
481open.
482WFS_CDM_SHUTTERPOS_CLOSED The shutter is jammed, but fully
483closed.
484WFS_CDM_SHUTTERPOS_UNKNOW N The position of the shutter is
485unknown.
486lpszExtra
487Pointer to a list of vendor-specific, or any other extended, information. The information is
488returned as a series of “key=value”strings so that it is easily extensible by Service Providers.
489Each string is null-terminated, with the final string terminating with two null characters. An
490empty list may be indicated by either a NULL pointer or a pointer to two consecutive null
491characters.
492dwGuidLights[...]
493Specifies the state of the guidance light indicators. The elements of this array can be accessed by
494using the predefined index values specified for the dwGuidLights[ ] field in the capabilities.
495Vendor specific guidance lights are defined starting from the end of the array. The maximum
496guidance light index is WFS_CDM_GUIDLIGHTS_MAX.
497Specifies the state of the guidance light indicator as
498WFS_CDM_GUIDANCE_NOT_AVAILABLE, WFS_CDM_GUIDANCE_OFF or a
499combination of the following flags consisting of one type B, optionally one type C and optionally
500one type CD.
501Value Meaning Type
502WFS_CDM_GUIDANCE_NOT_AVAILABLE The status is not available. A
503WFS_CDM_GUIDANCE_OFF The light is turned off. A
504WFS_CDM_GUIDANCE_SLOW_FLASH The light is blinking slowly. B
505WFS_CDM_GUIDANCE_MEDIUM_FLASH The light is blinking medium B
506frequency.
507WFS_CDM_GUIDANCE_QUICK_FLASH The light is blinking quickly. B
508WFS_CDM_GUIDANCE_CONTINUOUS The light is turned on B
509continuous (steady).
510WFS_CDM_GUIDANCE_RED The light is red. C
511WFS_CDM_GUIDANCE_GREEN The light is green. C
512WFS_CDM_GUIDANCE_YELLOW The light is yellow. C
513WFS_CDM_GUIDANCE_BLUE The light is blue. C
514WFS_CDM_GUIDANCE_CYAN The light is cyan. C
515WFS_CDM_GUIDANCE_MAGENTA The light is magenta. C
516WFS_CDM_GUIDANCE_WHITE The light is white. C
517WFS_CDM_GUIDANCE_EXIT The light is in the exit state. D
518wDevicePosition
519Specifies the device position. The device position value is independent of the fwDevice value, e.g.
520when the device position is reported as WFS_CDM_DEVICENOTINPOSITION, fwDevice can
521have any of the values defined above (including WFS_CDM_DEVONLINE or
522WFS_CDM_DEVOFFLINE). If the device is not in its normal operating position (i.e.
523WFS_CDM_DEVICEINPOSITION) then media may not be presented through the normal
524customer interface. This value is one of the following values:
525CWA 16926-64:2015 (E)
52614
527Value Meaning
528WFS_CDM_DEVICEINPOSITION The device is in its normal operating
529position, or is fixed in place and cannot be
530moved.
531WFS_CDM_DEVICENOTINPOSITION The device has been removed from its
532normal operating position.
533WFS_CDM_DEVICEPOSUNKNOWN Due to a hardware error or other condition,
534the position of the device cannot be
535determined.
536WFS_CDM_DEVICEPOSNOTSUPP The physical device does not have the
537capability of detecting the position.
538usPowerSaveRecoveryTime
539Specifies the actual number of seconds required by the device to resume its normal operational
540state from the current power saving mode. This value is zero if either the power saving mode has
541not been activated or no power save control is supported.
542wAntiFraudModule
543Specifies the state of the anti-fraud module as one of the following values:
544Value Meaning
545WFS_CDM_AFMNOTSUPP No anti-fraud module is available.
546WFS_CDM_AFMOK Anti-fraud module is in a good state and no
547foreign device is detected.
548WFS_CDM_AFMINOP Anti-fraud module is inoperable.
549WFS_CDM_AFMDEVICEDETECTED Anti-fraud module detected the presence of a
550foreign device.
551WFS_CDM_AFMUNKNOWN The state of the anti-fraud module cannot be
552determined.
553Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
554Comments Applications which rely on the lpszExtra field may not be device or vendor-independent.
555In the case where communication with the device has been lost, the fwDevice field will report
556WFS_CDM_DEVPOWEROFF when the device has been removed or
557WFS_CDM_DEVHW ERROR if the communications are unexpectedly lost. All other fields
558should contain a value based on the following rules and priority:
5591. Report the value as unknown.
5602. Report the value as a general h/w error.
5613. Report the value as the last known value.
562CWA 16926-64:2015 (E)
56315
5644.2 WFS_INF_CDM_CAPABILITIES
565Description This command retrieves the capabilities of the CDM. It may also return vendor specific capability
566information. The intermediate stacker and the transport are treated as separate areas. Some
567devices may have the capability to move items from the cash units to the intermediate stacker
568while there are items on the transport. Similarly some devices may be able to retract items to the
569transport or the cash units while there are items on the intermediate stacker.
570Input Param None.
571Output Param LPWFSCDMCAPS lpCaps;
572typedef struct _wfs_cdm_caps
573{
574WORD wClass;
575WORD fwType;
576WORD wMaxDispenseItems;
577BOOL bCompound;
578BOOL bShutter;
579BOOL bShutterControl;
580WORD fwRetractAreas;
581WORD fwRetractTransportActions;
582WORD fwRetractStackerActions;
583BOOL bSafeDoor;
584BOOL bCashBox;
585BOOL bIntermediateStacker;
586BOOL bItemsTakenSensor;
587WORD fwPositions;
588WORD fwMoveItems;
589WORD fwExchangeType;
590LPSTR lpszExtra;
591DWORD dwGuidLights[WFS_CDM_GUIDLIGHTS_SIZE];
592BOOL bPowerSaveControl;
593BOOL bPrepareDispense;
594BOOL bAntiFraudModule;
595DWORD dwItemInfoTypes;
596BOOL bBlacklist;
597LPDWORD lpdwSynchronizableCommands;
598} WFSCDMCAPS, *LPWFSCDMCAPS;
599wClass
600Specifies the logical service class as WFS_SERVICE_CLASS_CDM.
601fwType
602Supplies the type of CDM as one of the following values:
603Value Meaning
604WFS_CDM_TELLERBILL The CDM is a Teller Bill Dispenser.
605WFS_CDM_SELFSERVICEBILL The CDM is a Self-Service Bill Dispenser.
606WFS_CDM_TELLERCOIN The CDM is a Teller Coin Dispenser.
607WFS_CDM_SELFSERVICECOIN The CDM is a Self-Service Coin Dispenser.
608wMaxDispenseItems
609Supplies the maximum number of items that can be dispensed in a single dispense operation. If no
610limit applies this value will be zero - in this case, if an attempt is made to dispense more items
611than the hardware limitations will allow, the Service Provider will implement the dispense as a
612series of sub-dispense operations (see section Sub-Dispensing Command Flow).
613bCompound
614Specifies whether the CDM is part of a compound device. If the CDM is part of a compound
615device with a CIM then this combination can be referred to as a recycler. In this case, no
616information on cash-in cash units will be supplied via the CDM interface. The CDM interface will
617however supply information on shared retract or reject cash units and recycle cash units.
618bShutter
619Specifies whether or not the commands WFS_CMD_CDM_OPEN_SHUTTER and
620WFS_CMD_CDM_CLOSE_SHUTTER are supported.
621CWA 16926-64:2015 (E)
62216
623bShutterControl
624If set to TRUE the shutter is controlled implicitly by the Service Provider. If set to FALSE the
625shutter must be controlled explicitly by the application using the
626WFS_CMD_CDM_OPEN_SHUTTER and the WFS_CMD_CDM_CLOSE_SHUTTER
627commands. This field is always set to TRUE if the device has no shutter. This field applies to all
628shutters and all output positions.
629fwRetractAreas
630Specifies the area to which items may be retracted. If the device does not have a retract capability
631this field will be WFS_CDM_RA_NOTSUPP. Otherwise this field will be set to a combination of
632the following flags:
633Value Meaning
634WFS_CDM_RA_RETRACT The items may be retracted to a retract cash
635unit.
636WFS_CDM_RA_TRANSPORT The items may be retracted to the transport.
637WFS_CDM_RA_STACKER The items may be retracted to the
638intermediate stacker.
639WFS_CDM_RA_REJECT The items may be retracted to a reject cash
640unit.
641WFS_CDM_RA_ITEMCASSETTE The items may be retracted to the item
642cassettes, i.e. cassettes that can be dispensed
643from.
644fwRetractTransportActions
645Specifies the actions which may be performed on items which have been retracted to the
646transport. If the device does not have the capability to retract items to or from the transport this
647value will be WFS_CDM_NOTSUPP. This field will be a combination of the following flags:
648Value Meaning
649WFS_CDM_PRESENT The items may be presented.
650WFS_CDM_RETRACT The items may be retracted to a retract cash
651unit.
652WFS_CDM_REJECT The items may be retracted to a reject bin.
653WFS_CDM_ITEMCASSETTE The items may be retracted to the item
654cassettes, i.e. cassettes that can be dispensed
655from.
656fwRetractStackerActions
657Specifies the actions which may be performed on items which have been retracted to the stacker.
658If the device does not have the capability to retract items to or from the stacker this value will be
659WFS_CDM_NOTSUPP. Otherwise it will be a combination of the following flags:
660Value Meaning
661WFS_CDM_PRESENT The items may be presented.
662WFS_CDM_RETRACT The items may be retracted to a retract cash
663unit.
664WFS_CDM_REJECT The items may be retracted to a reject bin.
665WFS_CDM_ITEMCASSETTE The items may be retracted to the item
666cassettes, i.e. cassettes that can be dispensed
667from.
668bSafeDoor
669Specifies whether or not the WFS_CMD_CDM_OPEN_SAFE_DOOR command is supported.
670bCashBox
671This field is only applicable to CDM types WFS_CDM_TELLERBILL and
672WFS_CDM_TELLERCOIN. It specifies whether or not tellers have been assigned a cash box.
673bIntermediateStacker
674Specifies whether or not the CDM supports stacking items to an intermediate position before the
675items are moved to the exit position. If this value is TRUE, the field bPresent of the
676WFS_CMD_CDM_DISPENSE command can be set to FALSE.
677CWA 16926-64:2015 (E)
67817
679bItemsTakenSensor
680Specifies whether the CDM can detect when items at the exit position are taken by the user. If set
681to TRUE the Service Provider generates an accompanying WFS_SRVE_CDM_ITEMSTAKEN
682event. If set to FALSE this event is not generated. This field applies to all output positions.
683fwPositions
684Specifies the CDM output positions which are available as a combination of the following flags:
685Value Meaning
686WFS_CDM_POSLEFT The CDM has a left output position.
687WFS_CDM_POSRIGHT The CDM has a right output position.
688WFS_CDM_POSCENTER The CDM has a center output position.
689WFS_CDM_POSTOP The CDM has a top output position.
690WFS_CDM_POSBOTTOM The CDM has a bottom output position.
691WFS_CDM_POSFRONT The CDM has a front output position.
692WFS_CDM_POSREAR The CDM has a rear output position.
693fwMoveItems
694Specifies the CDM move item options which are available as a combination of the following
695flags:
696Value Meaning
697WFS_CDM_FROMCU The CDM can movedispense items from the
698cash units to the intermediate stacker while
699there are items on the transport.
700WFS_CDM_TOCU The CDM can retract items to the cash units
701while there are items on the intermediate
702stacker.
703WFS_CDM_TOTRANSPORT The CDM can retract items to the transport
704while there are items on the intermediate
705stacker.
706WFS_CDM_TOSTACKER The CDM can dispense items from the cash
707units to the intermediate stacker while there
708are already items on the intermediate stacker
709that have not been in customer access. Items
710remaining on the stacker from a previous
711dispense may first need to be rejected
712explicitly by the application if they are not to
713be presented.
714fwExchangeType
715Specifies the type of cash unit exchange operations supported by the CDM as a combination of
716the following flags:
717Value Meaning
718WFS_CDM_EXBYHAND The CDM supports manual replenishment
719either by filling the cash unit by hand or by
720replacing the cash unit.
721WFS_CDM_EXTOCASSETTES The CDM supports moving items from the
722replenishment cash unit to another cash unit.
723lpszExtra
724Pointer to a list of vendor-specific, or any other extended, information. The information is
725returned as a series of “key=value”strings so that it is easily extensible by Service Providers.
726Each string is null-terminated, with the final string terminating with two null characters. An
727empty list may be indicated by either a NULL pointer or a pointer to two consecutive null
728characters.
729dwGuidLights [...]
730Specifies which guidance lights are available. A number of guidance light positions are defined
731below. Vendor specific guidance lights are defined starting from the end of the array. The
732maximum guidance light index is WFS_CDM_GUIDLIGHTS_MAX.
733In addition to supporting specific flash rates and colors, some guidance lights also have the
734capability to show directional movement representing “exit”. The “exit” state gives the impression
735of ejection from a device to a user and would be used for retrieving media from the device.
736CWA 16926-64:2015 (E)
73718
738The elements of this array are specified as a combination of the following flags and indicate all of
739the possible flash rates (type B) and colors (type C) and directions (type D) that the guidance light
740indicator is capable of handling. If the guidance light indicator only supports one color then no
741value of type C is returned. If the guidance light indicator does not support direction then no value
742of type D is returned. A value of WFS_CDM_GUIDANCE_NOT_AVAILABLE indicates that
743the device has no guidance light indicator or the device controls the light directly with no
744application control possible.
745Value Meaning Type
746WFS_CDM_GUIDANCE_NOT_AVAILABLE There is no guidance light control A
747available at this position.
748WFS_CDM_GUIDANCE_OFF The light can be off. B
749WFS_CDM_GUIDANCE_SLOW_FLASH The light can blink slowly. B
750WFS_CDM_GUIDANCE_MEDIUM_FLASH The light can blink medium B
751frequency.
752WFS_CDM_GUIDANCE_QUICK_FLASH The light can blink quickly. B
753WFS_CDM_GUIDANCE_CONTINUOUS The light can be B
754continuous (steady).
755WFS_CDM_GUIDANCE_RED The light can be red. C
756WFS_CDM_GUIDANCE_GREEN The light can be green. C
757WFS_CDM_GUIDANCE_YELLOW The light can be yellow. C
758WFS_CDM_GUIDANCE_BLUE The light can be blue. C
759WFS_CDM_GUIDANCE_CYAN The light can be cyan. C
760WFS_CDM_GUIDANCE_MAGENTA The light can be magenta. C
761WFS_CDM_GUIDANCE_WHITE The light can be white. C
762WFS_CDM_GUIDANCE_EXIT The light can be in the exit state. D
763Each array index represents an output position in the CDM. The elements are accessed using the
764following definitions for the index value:
765Value Meaning
766WFS_CDM_GUIDANCE_POSOUTNULL The default output position.
767WFS_CDM_GUIDANCE_POSOUTLEFT Left output position.
768WFS_CDM_GUIDANCE_POSOUTRIGHT Right output position.
769WFS_CDM_GUIDANCE_POSOUTCENTER Center output position.
770WFS_CDM_GUIDANCE_POSOUTTOP Top output position.
771WFS_CDM_GUIDANCE_POSOUTBOTTOM Bottom output position.
772WFS_CDM_GUIDANCE_POSOUTFRONT Front output position.
773WFS_CDM_GUIDANCE_POSOUTREAR Rear output position.
774bPowerSaveControl
775Specifies whether power saving control is available. This can either be TRUE if available or
776FALSE if not available.
777bPrepareDispense
778On some hardware it can take a significant amount of time for the dispenser to get ready to
779dispense media. On this type of hardware the WFS_CMD_CDM_PREPARE_DISPENSE
780command can be used to improve transaction performance. This flag indicates if the hardware
781requires the application to use the WFS_CMD_CDM_PREPARE_DISPENSE command to
782maximize transaction performance. If this flag is TRUE then the
783WFS_CMD_CDM_PREPARE_DISPENSE command is supported and can be used to improve
784transaction performance. If this flag is FALSE then the
785WFS_CMD_CDM_PREPARE_DISPENSE command is not supported.
786bAntiFraudModule
787Specifies whether the anti-fraud module is available. This can either be TRUE if available or
788FALSE if not available.
789dwItemInfoTypes
790Specifies the types of information that can be retrieved through the
791WFS_INF_CDM_GET_ITEM_INFO command as a combination of the following flags:
792Value Meaning
793WFS_CDM_ITEM_SERIALNUMBER Serial Number of the item.
794WFS_CDM_ITEM_SIGNATURE Signature of the item.
795WFS_CDM_ITEM_IMAGEFILE Image file of the item.
796CWA 16926-64:2015 (E)
79719
798bBlacklist
799Specifies whether the device has the capability to maintain a blacklist of serial numbers as well as
800supporting the associated operations. This can either be TRUE if the device has the capability or
801FALSE if it does not.
802lpdwSynchronizableCommands
803Pointer to a zero-terminated list of DWORDs which contains the execute command IDs that can
804be synchronized. If no execute command can be synchronized then this parameter will be NULL.
805Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
806Comments Applications which rely on the lpszExtra field may not be device or vendor-independent.
807CWA 16926-64:2015 (E)
80820
8094.3 WFS_INF_CDM_CASH_UNIT_INFO
810Description This command is used to obtain information regarding the status and contents of the cash units in
811the CDM.
812Where a logical cash unit is configured but there is no corresponding physical cash unit currently
813present in the device, information about the missing cash unit will still be returned in the lppList
814field of the output parameter. The status of the cash unit will be reported as
815WFS_CDM_STATCUMISSING.
816It is possible that one logical cash unit may be associated with more than one physical cash unit.
817In this case, the number of cash unit structures returned in lpCashUnitInfo will reflect the number
818of logical cash units in the CDM. That is, if a system contains four physical cash units but two of
819these are treated as one logical cash unit, lpCashUnitInfo will contain information about the three
820logical cash units and a usCount of 3. Information about the physical cash unit(s) associated with
821a logical cash unit is contained in the WFSCDMCASHUNIT structure representing the logical
822cash unit.
823It is also possible that multiple logical cash units may be associated with one physical cash unit.
824This should only occur if the physical cash unit is capable of handling this situation, i.e. if it can
825store multiple denominations and report meaningful count and replenishment information for each
826denomination or if it can store retracted and rejected items as separate logical units and report
827meaningful count and replenishment information for each of them. In this case the information
828returned in lpCashUnitInfo will again reflect the number of logical cash units in the CDM.
829Logical Types
830A cash unit may have a logical type. A logical type is based on the value of the following fields of
831the WFSCDMCASHUNIT structure:
832lpszCashUnitName
833usType
834cCurrencyID
835ulValues
836A logical type of cash unit may be associated with more than one physical cash unit. The logical
837type is distinct from the logical number (usNumber), i.e. usNumber does not refer to the logical
838cassette type.
839Counts
840Item counts are typically based on software counts and therefore may not represent the actual
841number of items in the cash unit. Persistent values are maintained through power failures, open
842sessions, close session and system resets.If a cash unit is shared between the CDM and CIM
843device class, then CDM operations will result in count changes in the CIM cash unit structure and
844vice versa. All counts are reported consistently on both interfaces at all times.
845On cash units that dispense items, if ulCount (on logical and physical cash units) reaches zero it
846will not decrement further but will remain at zero. When ulCount reaches zero no further dispense
847or denominate operations will be possible using that cash unit, unless the Service Provider
848provides a configuration option to continue using cash units when ulCount reaches zero. The
849default setting for any such configuration parameter must be to stop using the cash unit when this
850value reaches zero. If the Service Provider is configured such that the cash unit can still be used
851when ulCount reaches zero then WFS_CDM_STATCUEMPTY should not be generated when
852ulCount reaches zero, rather it should be generated when all physical cash units associated with
853the logical cash unit are physically empty. On recyclers, the Service Provider should not be
854configured to keep using the cash unit when ulCount is zero if the value in ulCount is used by any
855part of the application, as it may not be accurate. However, if the Service Provider is configured
856to keep using the cash unit when ulCount reaches zero, then the number of notes in the cash unit
857can be determined relative to ulInitialCount using ulDispensedCount, ulRetractedCount and the
858CIM ulCashInCount, e.g. Number of Notes = ulInitialCount – ulDispensedCount +
859ulRetractedCount + CIM::ulCashInCount.
860Threshold Events
861The threshold event WFS_USRE_CDM_CASHUNITTHRESHOLD can be triggered either by
862hardware sensors in the device or by the ulCount reaching the ulMinimum or ulMaximum value.
863CWA 16926-64:2015 (E)
86421
865The application can check if the device has this capability by querying the bHardwareSensorfield
866of the physical cash unit structure. If any of the physical cash units associated with the logical
867cash unit have this capability, then threshold events based on hardware sensors can be triggered.
868In the situation where the cash unit is associated with multiple physical cash units, if the Service
869Provider has the capability, the WFS_SRVE_CDM_CASHUNITINFOCHANGED event may be
870generated when any of the physical cash units reaches the threshold. When the final physical cash
871unit reaches the threshold, the WFS_USRE_CDM_CASHUNITTHRESHOLD event will be
872generated.
873Exchanges
874If a physical cash unit is inserted (including removal followed by a reinsertion) when the device is
875not in the exchange state the usStatus of the physical cash unit will be set to
876WFS_CDM_STATCUMANIP and the values of the physical cash unit prior to its’ removal will
877be returned in any subsequent WFS_INF_CDM_CASH_UNIT_INFO command. The physical
878cash unit will not be used in any operation. The application must perform an exchange operation
879specifying the new values for the physical cash unit in order to recover the situation.
880On recycling and retract units the counts and status are consistently reported on both the CDM
881and CIM interfaces. When a value is changed through an exchange on one interface it is also
882changed on the other.
883Recyclers
884The CDM interface does not report cash-in only cash units but does report cash units which are
885shared with the CIM, i.e. recycling cash units (WFS_CDM_TYPERECYCLING) and
886reject/retract cash units (WFS_CDM_TYPEREJECTCASSETTE /
887WFS_CDM_TYPERETRACTCASSETTE). The CIM interface reports all cash units of all types,
888including those that can only be used by commands on the CDM interface.
889Input Param None.
890Output Param LPWFSCDMCUINFO lpCashUnitInfo;
891typedef struct _wfs_cdm_cu_info
892{
893USHORT usTellerID;
894USHORT usCount;
895LPWFSCDMCASHUNIT *lppList;
896} WFSCDMCUINFO, *LPWFSCDMCUINFO;
897usTellerID
898This field is not used in this command and is always zero.
899usCount
900Specifies the number of cash unit structures returned.
901lppList
902Pointer to an array of pointers to WFSCDMCASHUNIT structures:
903CWA 16926-64:2015 (E)
90422
905typedef struct _wfs_cdm_cashunit
906{
907USHORT usNumber;
908USHORT usType;
909LPSTR lpszCashUnitName;
910CHAR cUnitID[5];
911CHAR cCurrencyID[3];
912ULONG ulValues;
913ULONG ulInitialCount;
914ULONG ulCount;
915ULONG ulRejectCount;
916ULONG ulMinimum;
917ULONG ulMaximum;
918BOOL bAppLock;
919USHORT usStatus;
920USHORT usNumPhysicalCUs;
921LPWFSCDMPHCU *lppPhysical;
922ULONG ulDispensedCount;
923ULONG ulPresentedCount;
924ULONG ulRetractedCount;
925} WFSCDMCASHUNIT, *LPWFSCDMCASHUNIT;
926usNumber
927Index number of the cash unit structure. Each structure has a unique logical number starting
928with a value of one (1) for the first structure, and incrementing by one for each subsequent
929structure.
930usType
931Type of cash unit. Possible values are:
932Value Meaning
933WFS_CDM_TYPENA Not applicable. Typically means cash
934unit is missing.
935WFS_CDM_TYPEREJECTCASSETTE Reject cash unit. This type will also
936indicate a combined reject/retract cash
937unit.
938WFS_CDM_TYPEBILLCASSETTE Cash unit containing bills.
939WFS_CDM_TYPECOINCYLINDER Coin cylinder.
940WFS_CDM_TYPECOINDISPENSER Coin dispenser as a whole unit.
941WFS_CDM_TYPERETRACTCASSETTE Retract cash unit.
942WFS_CDM_TYPECOUPON Cash unit containing coupons or
943advertising material.
944WFS_CDM_TYPEDOCUMENT Cash unit containing documents.
945WFS_CDM_TYPEREPCONTAINER Replenishment container. A cash unit can
946be refilled from a replenishment
947container.
948WFS_CDM_TYPERECYCLING Recycling cash unit. This unit is only
949present when the device is a compound
950device with a CIM.
951lpszCashUnitName
952A name which helps to identify the logical type of the cash unit. This is especially useful in
953the case of cash units of type WFS_CDM_TYPEDOCUMENT where different documents can
954have the same currency and value. For example, travelers checks and bank checks may have
955the same currency and value but still need to be identifiable as different types of document.
956Where this value is not relevant (e.g. in bill cash units) the pointer will be NULL. This value is
957persistent.
958cUnitID
959The Cash Unit Identifier.
960cCurrencyID
961A three character array storing the ISO format [Ref. 2] Currency ID. This value will be an
962array of three ASCII 0x20h characters for cash units which contain items of more than one
963currency type or items to which currency is not applicable. If the usStatusfield for this cash
964unit is WFS_CDM_STATCUNOVAL it is the responsibility of the application to assign a
965value to this field. This value is persistent.
966CWA 16926-64:2015 (E)
96723
968ulValues
969Supplies the value of a single item in the cash unit. This value is expressed in minimum
970dispense units (see section WFS_INF_CDM_CURRENCY_EXP). If the cCurrencyID field
971for this cash unit is an array of three ASCII 0x20h characters, then this field will contain zero.
972If the usStatusfield for this cash unit is WFS_CDM_STATCUNOVAL it is the responsibility
973of the application to assign a value to this field. This value is persistent.
974ulInitialCount
975Initial number of items contained in the cash unit. This value is persistent.
976ulCount
977The meaning of this count depends on the type of cash unit. This value is persistent.
978For all cash units except retract cash units (usType is not
979WFS_CDM_TYPERETRACTCASSETTE) this value specifies the number of items inside all
980the physical cash units associated with this cash unit.
981For all dispensing cash units (usType is WFS_CDM_TYPEBILLCASSETTE,
982WFS_CDM_TYPECOINCYLINDER, WFS_CDM_TYPECOINDISPENSER,
983WFS_CDM_TYPECOUPON, WFS_CDM_TYPEDOCUMENT or
984WFS_CDM_TYPERECYCLING), this value includes any items from the physical cash units
985not yet presented to the customer. This count is only decremented when the items are either
986known to be in customer access or successfully rejected.
987If the cash unit is usable from the CIM interface (usType is WFS_CDM_TYPERECYCLING,
988WFS_CDM_TYPERETRACTCASSETTE or WFS_CDM_TYPEREJECTCASSETTE) then
989this value will be incremented as a result of a cash-in operation.
990Note that for a reject cash unit (usType is WFS_CDM_TYPEREJECTCASSETTE), this value
991is unreliable, since the typical reason for dumping items to the reject cash unit is a suspected
992count failure.
993For a retract cash unit (usType is WFS_CDM_TYPERETRACTCASSETTE) this value
994specifies the number of retract operations (CDM commands, CIM commands and error
995recoveries) which result in items entering the cash unit.
996ulRejectCount
997The number of items from this cash unit which are in the reject bin, and which have not been
998accessible to a customer. This value may be unreliable, since the typical reason for dumping
999items to the reject cash unit is a suspected pick failure. For reject and retract cash units
1000(usType is WFS_CDM_TYPEREJECTCASSETTE or
1001WFS_CDM_TYPERETRACTCASSETTE) this field does not apply and will be reported as
1002zero. This value is persistent.
1003ulMinimum
1004This field is not applicable to retract and reject cash units. For all other cash units, when
1005ulCount reaches this value the threshold event
1006WFS_USRE_CDM_CASHUNITTHRESHOLD (WFS_CDM_STATCULOW) will be
1007generated. If this value is non-zero then hardware sensors in the device do not trigger
1008threshold events. If this value is zero then hardware sensors may will trigger threshold events
1009if bHardwareSensor is TRUE. This value is persistent.
1010ulMaximum
1011This field is only applicable to retract and reject cash units. When ulCount reaches this value
1012the threshold event WFS_USRE_CDM_CASHUNITTHRESHOLD
1013(WFS_CDM_STATCUHIGH) will be generated. If this value is non-zero then hardware
1014sensors in the device do not trigger threshold events. If this value is zero then hardware
1015sensors may will trigger threshold events if bHardwareSensoris TRUE. This value is
1016persistent.
1017bAppLock
1018This field does not apply to reject or retract cash units. If this value is TRUE items cannot be
1019dispensed from the cash unit. If this value is TRUE and the application attempts to dispense
1020from the cash unit a WFS_EXEE_CDM_CASHUNITERROR event will be generated and a
1021WFS_ERR_CDM_CASHUNITERROR code will be returned. This value is persistent.
1022usStatus
1023Supplies the status of the cash unit as one of the following values:
1024CWA 16926-64:2015 (E)
102524
1026Value Meaning
1027WFS_CDM_STATCUOK The cash unit is in a good state.
1028WFS_CDM_STATCUFULL The cash unit is full. This value only
1029applies to cash units where usType is
1030WFS_CDM_TYPEREJECTCASSETTE
1031or WFS_CDM_TYPERETRACTCASSETTE.
1032WFS_CDM_STATCUHIGH The cash unit is almost full (i.e. reached
1033or exceeded the threshold defined by
1034ulMaximum). This value only applies to
1035cash units where usType is
1036WFS_CDM_TYPEREJECTCASSETTE
1037or WFS_CDM_TYPERETRACTCASSETTE.
1038WFS_CDM_STATCULOW The cash unit is almost empty (i.e.
1039reached or below the threshold defined
1040by ulMinimum). This value does not
1041apply to cash units where usType is
1042WFS_CDM_TYPEREJECTCASSETTE
1043or WFS_CDM_TYPERETRACTCASSETTE.
1044WFS_CDM_STATCUEMPTY The cash unit is empty, or insufficient
1045items in the cash unit are preventing
1046further dispense operations. This value
1047does not apply to cash units where
1048usType is
1049WFS_CDM_TYPEREJECTCASSETTE
1050or WFS_CDM_TYPERETRACTCASSETTE.
1051WFS_CDM_STATCUINOP The cash unit is inoperative.
1052WFS_CDM_STATCUMISSING The cash unit is missing.
1053WFS_CDM_STATCUNOVAL The values of the specified cash unit are
1054not available.
1055WFS_CDM_STATCUNOREF There is no reference value available for
1056the notes in this cash unit. The cash unit
1057has not been calibrated.
1058WFS_CDM_STATCUMANIP The cash unit has been inserted
1059(including removal followed by a
1060reinsertion) when the device was not in
1061the exchange state. This cash unit cannot
1062be dispensed from.
1063ulDispensedCount
1064The number of items dispensed from all the physical cash units associated with this cash unit.
1065This count is incremented when the items are removed from any of the associated physical
1066cash units. This count includes any items that were rejected during the dispense operation.
1067This field is always zero for cash units with a usType of
1068WFS_CDM_TYPEREJECTCASSETTE or WFS_CDM_TYPERETRACTCASSETTE. This
1069value is persistent.
1070ulPresentedCount
1071The number of items from all the physical cash units associated with this cash unit that have
1072been presented to the customer. This count is incremented when the items are presented to the
1073customer. If it is unknown if a customer has been presented with the items, then this count is
1074not updated. This field is always zero for cash units with a usType of
1075WFS_CDM_TYPEREJECTCASSETTE or WFS_CDM_TYPERETRACTCASSETTE. This
1076value is persistent.
1077ulRetractedCount
1078The number of items that have been accessible to a customer and retracted into all the physical
1079cash units associated with this cash unit. This value is persistent.
1080CWA 16926-64:2015 (E)
108125
1082usNumPhysicalCUs
1083The number of physical cash unit structures returned in the following lppPhysical array. This
1084number must be at least 1.
1085lppPhysical
1086Pointer to an array of pointers to WFSCDMPHCU structures:
1087typedef struct _wfs_cdm_physicalcu
1088{
1089LPSTR lpPhysicalPositionName;
1090CHAR cUnitID[5];
1091ULONG ulInitialCount;
1092ULONG ulCount;
1093ULONG ulRejectCount;
1094ULONG ulMaximum;
1095USHORT usPStatus;
1096BOOL bHardwareSensor;
1097ULONG ulDispensedCount;
1098ULONG ulPresentedCount;
1099ULONG ulRetractedCount;
1100} WFSCDMPHCU, *LPWFSCDMPHCU;
1101lpPhysicalPositionName
1102A name identifying the physical location of the cash unit within the CDM. This field can
1103be used by CDMs which are compound with a CIM to identify shared cash units.
1104cUnitID
1105A 5 character array uniquely identifying the physical cash unit.
1106ulInitialCount
1107Initial number of items contained in the cash unit. This value is persistent.
1108ulCount
1109As defined by the logical ulCount description but applies to a single physical cash unit, but
1110with the following exceptions:
1111This count does not include items dispensed but not yet presented.
1112On cash units belonging to logical cash units with usType set to
1113WFS_CDM_TYPERETRACTCASSETTE the physical count represents the number of
1114items, unless the device cannot count items during a retract, in which case this count will
1115be zero.
1116This value is persistent.
1117ulRejectCount
1118As defined by the logical ulRejectCount description but applies to a single physical cash
1119unit. This value is persistent.
1120ulMaximum
1121The maximum number of items the cash unit can hold. This is only for informational
1122purposes. No threshold event WFS_USRE_CDM_CASHUNITTHRESHOLD will be
1123generated. This value is persistent.
1124usPStatus
1125Supplies the status of the physical cash unit as one of the following values:
1126Value Meaning
1127WFS_CDM_STATCUOK The cash unit is in a good state.
1128WFS_CDM_STATCUFULL The cash unit is full. This value only
1129applies to cash units where usType is
1130WFS_CDM_TYPEREJECTCASSETTE or
1131WFS_CDM_TYPERETRACTCASSETTE.
1132CWA 16926-64:2015 (E)
113326
1134WFS_CDM_STATCUHIGH The cash unit is almost full (reached
1135or exceeded threshold defined by
1136ulMaximum). This value only applies
1137to cash units where usType is
1138WFS_CDM_TYPEREJECTCASSETTE or
1139WFS_CDM_TYPERETRACTCASSETTE.
1140WFS_CDM_STATCULOW The cash unit is almost empty. This
1141value does not apply to cash units
1142where usType is WFS_CDM_TYPEREJECTCASSETTE or
1143WFS_CDM_TYPERETRACTCASSETTE.
1144WFS_CDM_STATCUEMPTY The cash unit is empty, or insufficient
1145items in the cash unit are preventing
1146further dispense operations. This
1147value does not apply to cash units
1148where usType is WFS_CDM_TYPEREJECTCASSETTE or
1149WFS_CDM_TYPERETRACTCASSETTE.
1150WFS_CDM_STATCUINOP The cash unit is inoperative.
1151WFS_CDM_STATCUMISSING The cash unit is missing. The cash
1152unit has been removed and is
1153physically not present in the machine.
1154WFS_CDM_STATCUNOVAL The values of the specified cash unit
1155are not available.
1156WFS_CDM_STATCUNOREF There is no reference value available
1157for the notes in this cash unit. The
1158cash unit has not been calibrated.
1159WFS_CDM_STATCUMANIP The cash unit has been inserted
1160(including removal followed by a
1161reinsertion) when the device was not
1162in the exchange state. This cash unit
1163cannot be dispensed from.
1164bHardwareSensor
1165Specifies whether or not threshold events can be generated based on hardware sensors in
1166the device. If this value is TRUE for any of the physical cash units related to a logical cash
1167unit then threshold events may be generated based on hardware sensors as opposed to
1168logical counts.
1169ulDispensedCount
1170As defined by the logical ulDispensedCount description but applies to a single physical
1171cash unit. This value is zero if the h/w does not support physical counts. This value is
1172persistent.
1173ulPresentedCount
1174As defined by the logical ulPresentedCount description but applies to a single physical
1175cash unit. This value is zero if the h/w does not support physical counts. This value is
1176persistent.
1177ulRetractedCount
1178As defined by the logical ulRetractedCount description but applies to a single physical
1179cash unit. This value is zero if the h/w does not support physical counts. This value is
1180persistent.
1181Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
1182Comments None.
1183CWA 16926-64:2015 (E)
118427
11854.4 WFS_INF_CDM_TELLER_INFO
1186Description This command only applies to Teller CDMs. It allows the application to obtain counts for each
1187currency assigned to the teller. These counts represent the total amount of currency dispensed by
1188the teller in all transactions.
1189This command also enables the application to obtain the position assigned to each teller. If the
1190input parameter is NULL, this command will return information for all tellers and all currencies.
1191The teller information is persistent.
1192Input Param LPWFSCDMTELLERINFO lpTellerInfo;
1193typedef struct _wfs_cdm_teller_info
1194{
1195USHORT usTellerID;
1196CHAR cCurrencyID[3];
1197} WFSCDMTELLERINFO, *LPWFSCDMTELLERINFO;
1198usTellerID
1199Identification of the teller. If the value of usTellerID is not valid the error
1200WFS_ERR_CDM_INVALIDTELLERID is reported.
1201cCurrencyID
1202Three character ISO format currency identifier [Ref 2].
1203This field can be an array of three ASCII 0x20 characters. In this case information on all
1204currencies will be returned.
1205Output Param LPWFSCDMTELLERDETAILS *lppTellerDetails;
1206Pointer to a NULL-terminated array of pointers to WFSCDMTELLERDETAILS structures.
1207typedef struct _wfs_cdm_teller_details
1208{
1209USHORT usTellerID;
1210ULONG ulInputPosition;
1211WORD fwOutputPosition;
1212LPWFSCDMTELLERTOTALS *lppTellerTotals;
1213} WFSCDMTELLERDETAILS, *LPWFSCDMTELLERDETAILS;
1214usTellerID
1215Identification of the teller.
1216ulInputPosition
1217The input position assigned to the teller for cash entry. This is only for compatibility except when
1218the device is a compound device. The value is specified by one of the following values:
1219Value Meaning
1220WFS_CDM_POSNULL No position is assigned to the teller.
1221WFS_CDM_POSINLEFT Left position is assigned to the teller.
1222WFS_CDM_POSINRIGHT Right position is assigned to the teller.
1223WFS_CDM_POSINCENTER Center position is assigned to the teller.
1224WFS_CDM_POSINTOP Top position is assigned to the teller.
1225WFS_CDM_POSINBOTTOM Bottom position is assigned to the teller.
1226WFS_CDM_POSINFRONT Front position is assigned to the teller.
1227WFS_CDM_POSINREAR Rear position is assigned to the teller.
1228fwOutputPosition
1229The output position from which cash is presented to the teller. The value is specified by one of the
1230following values:
1231Value Meaning
1232WFS_CDM_POSNULL No position is assigned to the teller.
1233WFS_CDM_POSLEFT Left position is assigned to the teller.
1234WFS_CDM_POSRIGHT Right position is assigned to the teller.
1235WFS_CDM_POSCENTER Center position is assigned to the teller.
1236WFS_CDM_POSTOP Top position is assigned to the teller.
1237WFS_CDM_POSBOTTOM Bottom position is assigned to the teller.
1238WFS_CDM_POSFRONT Front position is assigned to the teller.
1239CWA 16926-64:2015 (E)
124028
1241WFS_CDM_POSREAR Rear position is assigned to the teller.
1242lppTellerTotals
1243Pointer to a NULL-terminated array of pointers to WFSCDMTELLERTOTALS structures.
1244typedef struct _wfs_cdm_teller_totals
1245{
1246CHAR cCurrencyID[3];
1247ULONG ulItemsReceived;
1248ULONG ulItemsDispensed;
1249ULONG ulCoinsReceived;
1250ULONG ulCoinsDispensed;
1251ULONG ulCashBoxReceived;
1252ULONG ulCashBoxDispensed;
1253} WFSCDMTELLERTOTALS, *LPWFSCDMTELLERTOTALS;
1254cCurrencyID
1255Three character ISO format currency identifier [Ref. 2].
1256ulItemsReceived
1257The total amount of items (other than coins) of the specified currency accepted. The amount is
1258expressed in minimum dispense units (see section WFS_INF_CDM_CURRENCY_EXP).
1259ulItemsDispensed
1260The total amount of items (other than coins) of the specified currency dispensed. The amount
1261is expressed in minimum dispense units (see section WFS_INF_CDM_CURRENCY_EXP).
1262ulCoinsReceived
1263The total amount of coin currency accepted. The amount is expressed in minimum dispense
1264units (see section WFS_INF_CDM_CURRENCY_EXP).
1265ulCoinsDispensed
1266The total amount of coin currency dispensed. The amount is expressed in minimum dispense
1267units (see section WFS_INF_CDM_CURRENCY_EXP).
1268ulCashBoxReceived
1269The total amount of cash box currency accepted. The amount is expressed in minimum
1270dispense units (see section WFS_INF_CDM_CURRENCY_EXP).
1271ulCashBoxDispensed
1272The total amount of cash box currency dispensed. The amount is expressed in minimum
1273dispense units (see section WFS_INF_CDM_CURRENCY_EXP).
1274Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
1275generated by this command:
1276Value Meaning
1277WFS_ERR_CDM_INVALIDCURRENCY Specified currency not currently available.
1278WFS_ERR_CDM_INVALIDTELLERID Invalid teller ID.
1279Comments None.
1280CWA 16926-64:2015 (E)
128129
12824.5 WFS_INF_CDM_CURRENCY_EXP
1283Description This command returns each exponent assigned to each currency known to the Service Provider.
1284Input Param None.
1285Output Param LPWFSCDMCURRENCYEXP *lppCurrencyExp;
1286Pointer to a NULL-terminated array of pointers to WFSCDMCURRENCYEXP structures:
1287typedef struct _wfs_cdm_currency_exp
1288{
1289CHAR cCurrencyID[3];
1290SHORT sExponent;
1291} WFSCDMCURRENCYEXP, *LPWFSCDMCURRENCYEXP;
1292cCurrencyID
1293Currency identifier in ISO 4217 format [Ref 2].
1294sExponent
1295Currency exponent in ISO 4217 format [Ref. 2].
1296Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
1297Comments For each currency ISO 4217 defines the currency identifier (a three character code) and a currency
1298unit (e.g. European Euro, Japanese Yen). In the interface defined by this specification, every
1299money amount is specified in terms of multiples of the minimum dispense unit, which is equal to
1300the currency unit times ten to the power of the currency exponent. Thus an amount parameter
1301relates to the actual cash amount as follows:
1302<cash_amount> = <money_amount_parameter> * 10^<sExponent>
1303Example #1 - Euro
1304Currency identifier is ‘EUR’
1305Currency unit is 1 Euro (= 100 Cent)
1306A Service Provider is developed for an ATM that can dispense coins down to one Cent. The
1307currency exponent (sExponent) is set to -2 (minus two), so the minimum dispense unit is one Cent
1308(1 * 10^-2 Euro); all amounts at the XFS interface are in Cent. Thus a money amount parameter
1309of 10050 is 100 Euro and 50 Cent.
1310Example #2 - Japan
1311Currency identifier is ‘JPY’
1312Currency unit is 1 Japanese Yen
1313A Service Provider is required to dispense a minimum amount of 1000 Yen. The currency
1314exponent (sExponent) is set to +3 (plus three), so the minimum dispense unit is 1000 Yen; all
1315amounts at the XFS interface are in multiples of 1000 Yen. Thus an amount parameter of 15 is
131615000 Yen.
1317CWA 16926-64:2015 (E)
131830
13194.6 WFS_INF_CDM_MIX_TYPES
1320Description This command is used to obtain a list of supported mix algorithms and available house mix tables.
1321Input Param None.
1322Output Param LPWFSCDMMIXTYPE *lppMixTypes;
1323Pointer to a NULL-terminated array of pointers to WFSCDMMIXTYPE structures:
1324typedef struct _wfs_cdm_mix_type
1325{
1326USHORT usMixNumber;
1327USHORT usMixType;
1328USHORT usSubType;
1329LPSTR lpszName;
1330} WFSCDMMIXTYPE, *LPWFSCDMMIXTYPE;
1331usMixNumber
1332Number identifying the mix algorithm or the house mix table. This number can be passed to the
1333WFS_INF_CDM_MIX_TABLE, WFS_CMD_CDM_DISPENSE and
1334WFS_CMD_CDM_DENOMINATE commands.
1335usMixType
1336Specifies whether the mix type is an algorithm or a house mix table. Possible values are:
1337Value Meaning
1338WFS_CDM_MIXALGORITHM Mix algorithm.
1339WFS_CDM_MIXTABLE Mix table.
1340usSubType
1341Contains a vendor-defined number that identifies the type of algorithm. Individual vendor-defined
1342mix algorithms are defined above hexadecimal 7FFF. Mix algorithms which are provided by the
1343Service Provider are in the range hexadecimal 8000 - 8FFF. Application defined mix algorithms
1344start at hexadecimal 9000. All numbers below 8000 hexadecimal are reserved. If usMixType is
1345WFS_CDM_MIXTABLE, this value will be zero. Predefined values are:
1346Value Meaning
1347WFS_CDM_MIX_MINIMUM_NUMBER_OF_BILLS
1348Select a mix requiring the minimum possible
1349number of items.
1350WFS_CDM_MIX_EQUAL_EMPTYING_OF_CASH_UNITS
1351The denomination is selected based upon
1352criteria which ensure that over the course of
1353its operation the CDM cash units will empty
1354as far as possible at the same rate and will
1355therefore go LOW and then EMPTY at
1356approximately the same time.
1357WFS_CDM_MIX_MAXIMUM_NUMBER_OF_CASH_UNITS
1358The denomination will be selected based
1359upon criteria which ensures the maximum
1360number of different logical cash units are
1361used.
1362lpszName
1363Points to the name of the table/algorithm used.
1364Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
1365Comments None.
1366CWA 16926-64:2015 (E)
136731
13684.7 WFS_INF_CDM_MIX_TABLE
1369Description This command is used to obtain the house mix table specified by the supplied mix number.
1370Input Param LPUSHORT lpusMixNumber;
1371lpusMixNumber
1372Pointer to the number of the requested house mix table.
1373Output Param LPWFSCDMMIXTABLE lpMixTable;
1374typedef struct _wfs_cdm_mix_table
1375{
1376USHORT usMixNumber;
1377LPSTR lpszName;
1378USHORT usRows;
1379USHORT usCols;
1380LPULONG lpulMixHeader;
1381LPWFSCDMMIXROW *lppMixRows;
1382} WFSCDMMIXTABLE, *LPWFSCDMMIXTABLE;
1383usMixNumber
1384Number identifying the house mix table.
1385lpszName
1386Points to the name of the house mix table.
1387usRows
1388Number of rows in the house mix table. There is at least one row for each distinct total amount to
1389be denominated. If there is more than one row for an amount the first row is taken that is
1390dispensable according to the current status of the cash units.
1391usCols
1392Number of columns in the house mix table. There is one column for each distinct item value
1393included in the mix.
1394lpulMixHeader
1395Pointer to an array of length usCols of unsigned longs; each element defines the value of the item
1396corresponding to its respective column (see section WFS_INF_CDM_CURRENCY_EXP).
1397lppMixRows
1398Pointer to an array (of length usRows) of pointers to WFSCDMMIXROW structures:
1399typedef struct _wfs_cdm_mix_row
1400{
1401ULONG ulAmount;
1402LPUSHORT lpusMixture;
1403} WFSCDMMIXROW, *LPWFSCDMMIXROW;
1404ulAmount
1405Amount denominated by this mix row (see section WFS_INF_CDM_CURRENCY_EXP).
1406lpusMixture
1407Pointer to a mix row, an array of length usCols of USHORTs; each element defines the
1408quantity of each item denomination in the mix used in the denomination of ulAmount.
1409Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
1410generated by this command:
1411Value Meaning
1412WFS_ERR_CDM_INVALIDMIXNUMBER The lpusMixNumber parameter does not
1413correspond to a defined mix table.
1414Comments None.
1415CWA 16926-64:2015 (E)
141632
14174.8 WFS_INF_CDM_PRESENT_STATUS
1418Description This command is used to obtain the status of the most recent attempt to dispense and/or present
1419items to the customer. The items may have been dispensed and/or presented as a result of the
1420WFS_CMD_CDM_PRESENT or WFS_CMD_CDM_DISPENSE command. This status is not
1421updated as a result of any other command that can dispense/present items.
1422This value is persistent and is valid until the next time an attempt is made to present or dispense
1423items to the customer.
1424The denominations reported by this command may not accurately reflect the operation if the cash
1425units have been re-configured (e.g. if the values associated with a cash unit are changed, or new
1426cash units are configured).
1427Input Param LPWORD lpfwPosition;
1428lpfwPosition
1429Pointer to the output position the items were presented or dispensed to as one of the following
1430values:
1431Value Meaning
1432WFS_CDM_POSNULL The items were presented according to the
1433default configuration.
1434WFS_CDM_POSLEFT The items were presented to the left output
1435position.
1436WFS_CDM_POSRIGHT The items were presented to the right output
1437position.
1438WFS_CDM_POSCENTER The items were presented to the center
1439output position.
1440WFS_CDM_POSTOP The items were presented to the top output
1441position.
1442WFS_CDM_POSBOTTOM The items were presented to the bottom
1443output position.
1444WFS_CDM_POSFRONT The items were presented to the front output
1445position.
1446WFS_CDM_POSREAR The items were presented to the rear output
1447position.
1448Output Param LPWFSCDMPRESENTSTATUS lpPresentStatus;
1449typedef struct _wfs_cdm_present_status
1450{
1451LPWFSCDMDENOMINATION lpDenomination;
1452WORD wPresentState;
1453LPSTR lpszExtra;
1454} WFSCDMPRESENTSTATUS, *LPWFSCDMPRESENTSTATUS;
1455lpDenomination
1456Pointer to a WFSCDMDENOMINATION structure which contains the amount dispensed and the
1457number of items dispensed from each cash unit. For a description of the
1458WFSCDMDENOMINATION structure see the definition of the command
1459WFS_CMD_CDM_DENOMINATE. Where the capability fwMoveItems reports
1460WFS_CDM_TOSTACKER this value is cumulative across a series of
1461WFS_CMD_CDM_DISPENSE calls that add additional items to the stacker.
1462Where mixed currencies were dispensed the ulAmount field in the returned denomination
1463structure will be zero and the cCurrencyID field will be set to three ASCII 0x20 characters.
1464wPresentState
1465Supplies the status of the last dispense or present operation. Possible values are:
1466Value Meaning
1467WFS_CDM_PRESENTED The items were presented. This status is set
1468as soon as the customer has access to the
1469items.
1470WFS_CDM_NOTPRESENTED The customer has not had access to the
1471items.
1472CWA 16926-64:2015 (E)
147333
1474WFS_CDM_UNKNOWN It is not known if the customer had access to
1475the items.
1476lpszExtra
1477Pointer to a list of vendor-specific, or any other extended, information. The information is
1478returned as a series of “key=value”strings so that it is easily extensible by Service Providers.
1479Each string is null-terminated, with the final string terminating with two null characters. An
1480empty list may be indicated by either a NULL pointer or a pointer to two consecutive null
1481characters.
1482Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
1483generated by this command:
1484Value Meaning
1485WFS_ERR_CDM_UNSUPPOSITION The specified output position is not
1486supported.
1487Comments None.
1488CWA 16926-64:2015 (E)
148934
14904.9 WFS_INF_CDM_GET_ITEM_INFO
1491Description This command is used to get information about the number of level 1 / level 2 / level 3 / level 4
1492notes dispensed and the number of level 2 / level 3 / level 4 signatures created. This information is
1493available from the point where the first WFS_EXEE_CDM_INFO_AVAILABLE event is
1494generated until one of the following CDM commands is executed:
1495WFS_CMD_CDM_DISPENSE, WFS_CMD_CDM_COUNT, WFS_CMD_CDM_PRESENT,
1496WFS_CMD_CDM_RETRACT, WFS_CMD_CDM_REJECT,
1497WFS_CMD_CDM_OPEN_SHUTTER, WFS_CMD_CDM_CLOSE_SHUTTER,
1498WFS_CMD_CDM_RESET, WFS_CMD_CDM_START_EXCHANGE,
1499WFS_CMD_CDM_END_EXCHANGE, WFS_CMD_CDM_CALIBRATE_CASH_UNIT,
1500WFS_CMD_CDM_TEST_CASH_UNITS.
1501Additionally for a recycler, the following CIM commands will also invalidate the information:
1502WFS_CMD_CIM_CASH_IN_START, WFS_CMD_CIM_CASH_IN,
1503WFS_CMD_CIM_CASH_IN_ROLLBACK, WFS_CMD_CIM_CASH_IN_END,
1504WFS_CMD_CIM_RETRACT, WFS_CMD_CIM_RESET,
1505WFS_CMD_CIM_START_EXCHANGE, WFS_CMD_CIM_END_EXCHANGE,
1506WFS_CMD_CIM_CREATE_P6_SIGNATURE, WFS_CMD_CIM_REPLENISH,
1507WFS_CMD_CIM_CASH_UNIT_COUNT.
1508This command is used to retrieve the required information on an individual item basis.
1509Applications should loop retrieving the information for each index and for each level reported
1510with the WFS_EXEE_CDM_INFO_AVAILABLE event.
1511Input Param LPWFSCDMGETITEMINFO lpGetItemInfo;
1512typedef struct _wfs_cdm_get_item_info
1513{
1514USHORT usLevel;
1515USHORT usIndex;
1516DWORD dwItemInfoType;
1517} WFSCDMGETITEMINFO, *LPWFSCDMGETITEMINFO;
1518usLevel
1519Defines the note level. Possible values are:
1520Value Meaning
1521WFS_CDM_LEVEL_1 Information for level 1 notes.Only an image
1522file can be retrieved for level 1 notes.
1523WFS_CDM_LEVEL_2 Information for level 2 notes.On systems
1524that do not support note handling standards
1525this value cannot be used and
1526WFS_ERR_INVALID_DATA will be
1527returned.
1528WFS_CDM_LEVEL_3 Information for level 3 notes.On systems
1529that do not support note handling standards
1530this value cannot be used and
1531WFS_ERR_INVALID_DATA will be
1532returned.
1533WFS_CDM_LEVEL_4 Information for level 4 notes. This value is
1534also used to retrieve item information on
1535systems that do not support note handling
1536standards.
1537usIndex
1538Specifies the index for the item information required (zero to usNumOfItems-1 as reported in the
1539WFS_EXEE_CDM_INFO_AVAILABLE event).
1540dwItemInfoType
1541Specifies the type of information required. This can be a combination of the following flags:
1542Value Meaning
1543WFS_CDM_ITEM_SERIALNUMBER Serial number of the item.
1544WFS_CDM_ITEM_SIGNATURE Signature of the item.
1545CWA 16926-64:2015 (E)
154635
1547WFS_CDM_ITEM_IMAGEFILE Image file of the item.
1548Output Param LPWFSCDMITEMINFO lpItemInfo;
1549The data returned by this command relates to a single item (usIndex).
1550typedef struct _wfs_cdm_item_info
1551{
1552CHAR cCurrencyID[3];
1553ULONG ulValue;
1554USHORT usRelease;
1555LPWSTR lpszSerialNumber;
1556LPWFSCDMSIGNATURE lpSignature;
1557LPSTR lpszImageFileName;
1558} WFSCDMITEMINFO, *LPWFSCDMITEMINFO;
1559cCurrencyID
1560Currency ID in ISO 4217 format [Ref. 2]. This value will be an array of three ASCII 0x20h
1561characters for level 1 items.
1562ulValue
1563The value of a single item expressed in minimum dispense units.This value will be zero for level
15641 items.
1565usRelease
1566The release of the banknote type. The higher this number is, the newer the release. Zero means
1567that there is only one release of that banknote type. This value has not been standardized and
1568therefore a release number of the same banknote will not necessarily have the same value in
1569different systems.This value will be zero for level 1 items.
1570lpszSerialNumber
1571This field contains the serial number of the item as a Unicode string. A '?' character (0x003F) is
1572used to represent any serial number character that cannot be recognized. If no serial number is
1573available or has not been requested then lpszSerialNumberis NULL.
1574lpSignature
1575This field contains the signature for the item. If no signature is available or has not been requested
1576then this field is NULL.
1577typedef struct _wfs_cdm_signature
1578{
1579ULONG ulLength;
1580LPVOID lpData;
1581} WFSCDMSIGNATURE, *LPWFSCDMSIGNATURE;
1582ulLength
1583Length of the signature in bytes.
1584lpData
1585Pointer to the returned signature data.
1586lpszImageFileName
1587Name of the file where the image containing the item’s serial number is stored, e.g.
1588“C:\Temp\cash123456.jpg”. If the Service Provider does not support this function or the image
1589file has not been requested then lpszImageFileName is NULL.
1590The application is responsible for the use and management of this file. For example, the
1591application can transfer the image files to a directory which is managed by the application.
1592Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
1593Comments The application has to call this command multiple times in a loop where there is multiple
1594information to retrieve. In addition, since the item information is not cumulative and can be
1595replaced by any command that can move notes, it is recommended that applications that are
1596interested in the available information should query for it following the
1597WFS_EXEE_CDM_INFO_AVAILABLE event but before any other command is executed.
1598CWA 16926-64:2015 (E)
159936
16004.10 WFS_INF_CDM_GET_BLACKLIST
1601Description This command is used to retrieve the entire blacklist information pre-set inside the device or set
1602via the WFS_CMD_CDM_SET_BLACKLIST command, or
1603WFS_CMD_CIM_SET_BLACKLIST in the case of a recycler.
1604Input Param None.
1605Output Param LPWFSCDMBLACKLIST lpBlacklist;
1606typedef struct _wfs_cdm_blacklist
1607{
1608LPWSTR lpszVersion;
1609USHORT usCount;
1610LPWFSCDMBLACKLISTELEMENT *lppBlacklistElements;
1611} WFSCDMBLACKLIST, *LPWFSCDMBLACKLIST;
1612lpszVersion
1613This is an application defined Unicode string that sets the version identifier of the blacklist. This
1614can be set to NULL if it has no version identifier.
1615usCount
1616Number of pointers to WFSCDMBLACKLISTELEMENT structures returned in
1617lppBlacklistElements.
1618lppBlacklistElements
1619Pointer to an array of pointers to WFSCDMBLACKLISTELEMENT structures.
1620typedef struct _wfs_cdm_blacklist_element
1621{
1622LPWSTR lpszSerialNumber;
1623CHAR cCurrencyID[3];
1624ULONG ulValue;
1625} WFSCDMBLACKLISTELEMENT, *LPWFSCDMBLACKLISTELEMENT;
1626lpszSerialNumber
1627This Unicode string defines the serial number or a mask of serial numbers of one blacklist
1628item with the defined currency and value. For a definition of the mask see Section 2.
1629cCurrencyID
1630The three character ISO format currency identifier [Ref. 2] of the blacklist element.
1631ulValue
1632The value of a blacklist element. This field can be zero to represent all values.
1633Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
1634Comments None.
1635CWA 16926-64:2015 (E)
163637
16374.11 WFS_INF_CDM_GET_ALL_ITEMS_INFO
1638Description This command can be used to retrieve all item information available for all levels at once by
1639specifying WFS_CDM_LEVEL_ALL in the usLevel parameter. Alternatively this command can
1640be used to retrieve all information for a particular level of banknote.This information is available
1641from the point where the first WFS_EXEE_CDM_INFO_AVAILABLE event is generated until
1642one of the following CDM commands is executed:
1643WFS_CMD_CDM_DISPENSE, WFS_CMD_CDM_COUNT, WFS_CMD_CDM_PRESENT,
1644WFS_CMD_CDM_RETRACT, WFS_CMD_CDM_REJECT,
1645WFS_CMD_CDM_OPEN_SHUTTER, WFS_CMD_CDM_CLOSE_SHUTTER,
1646WFS_CMD_CDM_RESET, WFS_CMD_CDM_START_EXCHANGE,
1647WFS_CMD_CDM_END_EXCHANGE, WFS_CMD_CDM_CALIBRATE_CASH_UNIT,
1648WFS_CMD_CDM_TEST_CASH_UNITS.
1649Additionally for a recycler, the following CIM commands will also invalidate the information:
1650WFS_CMD_CIM_CASH_IN_START, WFS_CMD_CIM_CASH_IN,
1651WFS_CMD_CIM_CASH_IN_ROLLBACK, WFS_CMD_CIM_CASH_IN_END,
1652WFS_CMD_CIM_RETRACT, WFS_CMD_CIM_RESET,
1653WFS_CMD_CIM_START_EXCHANGE, WFS_CMD_CIM_END_EXCHANGE,
1654WFS_CMD_CIM_CREATE_P6_SIGNATURE, WFS_CMD_CIM_REPLENISH,
1655WFS_CMD_CIM_CASH_UNIT_COUNT.
1656The WFS_EXEE_CDM_INPUT_P6 event signals that a suspected forgery has been detected and
1657is only generated when level 2 and/or level 3 notes are detected.
1658Input Param LPWFSCDMGETALLITEMSINFO lpGetAllItemsInfo;
1659typedef struct _wfs_cdm_get_all_items_info
1660{
1661USHORT usLevel;
1662} WFSCDMGETALLITEMSINFO, *LPWFSCDMGETALLITEMSINFO;
1663usLevel
1664Defines the note level. Possible values are:
1665Value Meaning
1666WFS_CDM_LEVEL_1 Information for level 1 notes.Only an image
1667file can be retrieved for level 1 notes.
1668WFS_CDM_LEVEL_2 Information for level 2 notes is to be
1669returned with the lpAllItemsInfo output
1670parameter.
1671WFS_CDM_LEVEL_3 Information for level 3 notes is to be
1672returned with the lpAllItemsInfo output
1673parameter.
1674WFS_CDM_LEVEL_4 Information for level 4 notes is to be
1675returned with the lpAllItemsInfo output
1676parameter. This value is also used to retrieve
1677item information on systems that do not
1678support note handling standards.
1679WFS_CDM_LEVEL_ALL Information for all levels all items is to be
1680returned with the lpAllItemsInfo output
1681parameter.
1682Output Param LPWFSCDMALLITEMSINFO lpAllItemsInfo;
1683typedef struct _wfs_cdm_all_items_info
1684{
1685USHORT usCount;
1686LPWFSCDMITEMINFOALL *lppItemsList;
1687} WFSCDMALLITEMSINFO, *LPWFSCDMALLITEMSINFO;
1688usCount
1689Number of WFSCDMITEMINFOALL structures returned in lppItemsList.
1690lppItemsList
1691Pointer to an array of pointers to WFSCDMITEMINFOALL structures:
1692CWA 16926-64:2015 (E)
169338
1694typedef struct _wfs_cdm_item_info_all
1695{
1696USHORT usLevel;
1697CHAR cCurrencyID[3];
1698ULONG ulValue;
1699USHORT usRelease;
1700LPWSTR lpszSerialNumber;
1701LPSTR lpszImageFileName;
1702WORD wOnBlacklist;
1703WORD wItemLocation;
1704USHORT usNumber;
1705} WFSCDMITEMINFOALL, * LPWFSCDMITEMINFOALL;
1706usLevel
1707Defines the note level. Possible values are:
1708Value Meaning
1709WFS_CDM_LEVEL_1 A level 1 banknote.
1710WFS_CDM_LEVEL_2 A level 2 banknote.
1711WFS_CDM_LEVEL_3 A level 3 banknote.
1712WFS_CDM_LEVEL_4 A level 4 banknote.
1713cCurrencyID
1714Currency ID in ISO 4217 format [Ref. 2]. This value will be an array of three ASCII 0x20h
1715characters for level 1 items.
1716ulValue
1717The value of a single item expressed in minimum dispense units.This value will be zero for
1718level 1 items.
1719usRelease
1720The release of the banknote type. The higher this number is, the newer the release. Zero means
1721that there is only one release of that banknote type. This value has not been standardized and
1722therefore a release number of the same banknote will not necessarily have the same value in
1723different systems.This value will be zero for level 1 items.
1724lpszSerialNumber
1725This field contains the serial number of the item as a Unicode string. A '?' character (0x003F)
1726is used to represent any serial number character that cannot be recognized. If no serial number
1727is available then lpszSerialNumberis NULL.
1728lpszImageFileName
1729Full file path to an image file containing the serial number(s). If no image is available then this
1730field is NULL.
1731wOnBlacklist
1732Specifies if the serial number reported in the lpszSerialNumberfield is on the blacklist. If the
1733blacklist reporting capability is not supported this field will be zero. Otherwise, possible
1734values are:
1735Value Meaning
1736WFS_CDM_ONBLACKLIST The serial number of the items is on the
1737blacklist.
1738WFS_CDM_NOTONBLACKLIST The serial number of the items is not on
1739the blacklist.
1740WFS_CDM_BLACKLISTUNKNOWN It is unknown if the serial number of the
1741item is on the blacklist.
1742wItemLocation
1743Specifies the location of the item as one of the following values:
1744Value Meaning
1745WFS_CDM_LOCATION_DEVICE The item is inside the device in some
1746position other than a cash unit.
1747WFS_CDM_LOCATION_CASHUNIT The item is in a cash unit. The logical
1748cash unit number is defined by
1749usNumber.
1750CWA 16926-64:2015 (E)
175139
1752WFS_CDM_LOCATION_CUSTOMER The item has been dispensed to the
1753customer.
1754WFS_CDM_LOCATION_UNKNOWN The item location is unknown.
1755usNumber
1756If wItemLocation is WFS_CDM_LOCATION_CASHUNIT this parameter specifies the
1757logical number of the cash unit which received the item. If wItemLocation is not
1758WFS_CDM_LOCATION_CASHUNIT then usNumber will be zero.
1759Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
1760Comments In addition, since the item information is not cumulative and can be replaced by any command
1761that can move notes, it is recommended that applications that are interested in the available
1762information should query for it following the WFS_EXEE_CDM_INFO_AVAILABLE event but
1763before any other command is executed.
1764CWA 16926-64:2015 (E)
176540
17665. Execute Commands
17675.1 WFS_CMD_CDM_DENOMINATE
1768Description This command provides a denomination. A denomination specifies the number of items which are
1769required from each cash unit in order to satisfy a given amount. The denomination depends upon
1770the currency, the mix algorithm and any partial denomination supplied by the application.
1771This command can also be used to validate that any denomination supplied by the application can
1772be dispensed.
1773If items of differing currencies are to be included in the same denomination then the currency
1774field must be an array of three ASCII 0x20h characters, the amount must be zero and the mix
1775number must be WFS_CDM_INDIVIDUAL. However, these restrictions do not apply if a single
1776currency is combined with non-currency items, such as coupons.
1777If the bCashBox field of the WFSCDMCAPS structure returned by the
1778WFS_INF_CDM_CAPABILITIES command is TRUE then, if the entire denomination cannot be
1779satisfied, a partial denomination will be returned with the remaining amount to be supplied from
1780the teller’s cash box.
1781This command can be used in four different ways:
17821. In order to check that it is possible to dispense a given denomination. The input parameters to
1783the command are currency and denomination, with a mix number of
1784WFS_CDM_INDIVIDUAL and an amount of zero. If items of differing currencies are to be
1785dispensed then the currency field should be an array of three ASCII 0x20h characters.
17862. In order to validate that a given amount matches a given denomination and that it is possible to
1787dispense the denomination. The input parameters to the command should be amount, currency
1788and denomination, with a mix number of WFS_CDM_INDIVIDUAL.
17893. In order to obtain a denomination of a given amount. The input parameters supplied should be
1790amount, currency and mix number.
17914. In order to complete a partial denomination of a given amount. In this case the input
1792parameters to the command should be currency, amount, mix number and either a partially
1793specified denomination or a minimum amount from the cash box. A completed denomination
1794is returned. ulCashBox of the denomination structure may be updated as a result of this
1795command.
1796Input Param LPWFSCDMDENOMINATE lpDenominate;
1797typedef struct _wfs_cdm_denominate
1798{
1799USHORT usTellerID;
1800USHORT usMixNumber;
1801LPWFSCDMDENOMINATION lpDenomination;
1802} WFSCDMDENOMINATE, *LPWFSCDMDENOMINATE;
1803usTellerID
1804Identification of teller. This field is ignored if the device is a Self-Service CDM.
1805usMixNumber
1806Mix algorithm or house mix table to be used.
1807lpDenomination
1808Pointer to a WFSCDMDENOMINATION structure, describing the contents of the denomination
1809operation.
1810typedef struct _wfs_cdm_denomination
1811{
1812CHAR cCurrencyID[3];
1813ULONG ulAmount;
1814USHORT usCount;
1815LPULONG lpulValues;
1816ULONG ulCashBox;
1817} WFSCDMDENOMINATION, *LPWFSCDMDENOMINATION;
1818CWA 16926-64:2015 (E)
181941
1820cCurrencyID
1821Identification of currency in ISO format [Ref. 2]. Where the denomination contains multiple
1822currencies this field should be set to three ASCII 0x20 characters.
1823ulAmount
1824The amount to be denominated or dispensed. Where the denomination contains multiple
1825currencies this value is zero.
1826usCount
1827The size of the lpulValueslist. This usCount is the same as the usCount returned from the last
1828WFS_INF_CDM_CASH_UNIT_INFO command or set by the last
1829WFS_CMD_CDM_END_EXCHANGE command. If this value is not required because a mix
1830algorithm is used then the usCount can be set to zero.
1831If the application passes in an invalid usCount the Service Provider should return a
1832WFS_ERR_INVALID_DATA return code.
1833lpulValues
1834Pointer to an array of ULONGs. This list specifies the number of items to take from each of
1835the cash units. This list corresponds to the array of cash unit structures returned by the last
1836WFS_INF_CDM_CASH_UNIT_INFO command or set by the last
1837WFS_CMD_CDM_SET_CASH_UNIT_INFO or WFS_CMD_CDM_END_EXCHANGE
1838commands. The first value in the array is related to the cash structure with the index number 1.
1839This array contains a field for each possible cash unit. If a cash unit is not required in the
1840denomination its corresponding field in this array should be set to zero.
1841If the application does not wish to specify a denomination, it should set the lpulValues pointer
1842to NULL.
1843ulCashBox
1844Only applies to Teller CDM devices. Amount to be paid from the teller’s cash box.
1845Output Param LPWFSCDMDENOMINATION lpDenomination;
1846For a description see the input structure.
1847Where mixed currencies are being denominated the ulAmount field in the returned denomination
1848structure will be zero and the cCurrencyID field will be set to three ASCII 0x20 characters.
1849Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
1850generated by this command:
1851Value Meaning
1852WFS_ERR_CDM_INVALIDCURRENCY There are no cash units in the CDM of the
1853currency specified in the cCurrencyID field
1854of the input parameter.
1855WFS_ERR_CDM_INVALIDTELLERID Invalid teller ID. This error will never be
1856generated by a Self-Service CDM.
1857WFS_ERR_CDM_CASHUNITERROR There is a problem with a cash unit. A
1858WFS_EXEE_CDM_CASHUNITERROR
1859event will be posted with the details.
1860WFS_ERR_CDM_INVALIDDENOMINATION The usMixNumber is
1861WFS_CDM_INDIVIDUAL and the sum of
1862the values for ulCashBox and the items
1863specified by lpulValues does not match the
1864non-zero amount specified. This error code
1865is not used when the amount specified is
1866zero.
1867WFS_ERR_CDM_INVALIDMIXNUMBER Unknown mix algorithm.
1868WFS_ERR_CDM_NOCURRENCYMIX The cash units specified in the denomination
1869were not all of the same currency.
1870WFS_ERR_CDM_NOTDISPENSABLE The amount is not dispensable by the CDM.
1871WFS_ERR_CDM_TOOMANYITEMS The request requires too many items to be
1872dispensed.
1873WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state (see
1874section
1875WFS_CMD_CDM_START_EXCHANGE).
1876CWA 16926-64:2015 (E)
187742
1878WFS_ERR_CDM_NOCASHBOXPRESENT Cash box amount needed, however teller is
1879not assigned a cash box.
1880WFS_ERR_CDM_AMOUNTNOTINMIXTABLE
1881A mix table is being used to determine the
1882denomination but the amount specified for
1883the denomination is not in the mix table.
1884Events In addition to the generic event defined in [Ref. 1], the following events can be generated as a
1885result of this command:
1886Value Meaning
1887WFS_EXEE_CDM_CASHUNITERROR An error occurred while attempting to
1888denominate from the cash unit specified by
1889the event.
1890Comments None.
1891CWA 16926-64:2015 (E)
189243
18935.2 WFS_CMD_CDM_DISPENSE
1894Description This command performs the dispensing of items to the customer. The command provides the
1895same functionality as the WFS_CMD_CDM_DENOMINATE command plus the additional
1896functionality of dispensing the items. If items of differing currencies are to be dispensed then the
1897currency field must be an array of three ASCII 0x20h characters, the amount must be zero and the
1898mix number must be WFS_CDM_INDIVIDUAL. However, these restrictions do not apply if a
1899single currency is dispensed with non-currency items, such as coupons.
1900The WFS_CMD_CDM_DISPENSE command can be used in the following ways:
19011. The input parameters to the command are amount, currency and denomination. The mix
1902number is WFS_CDM_INDIVIDUAL. In this case, the denomination is checked for validity
1903and, if valid, is dispensed.
19042. The input parameters are amount, currency and mix number. In this case the amount is
1905denominated and, if this succeeds, the items are dispensed.
19063. If the amount is zero, but the currency and the denomination are supplied with a mix number
1907of WFS_CDM_INDIVIDUAL the denomination is checked for validity and, if valid, is
1908dispensed.
19094. The command will calculate a partial denomination of a given amount and dispense the
1910complete denomination. In this case the input parameters to the command should be currency,
1911amount, mix number and either a partially specified denomination or a minimum amount from
1912the cash box. The cash box amount may be updated as a result of this command.
1913When more than one physical cash unit exists for a logical cash unit number, the device selects
1914the actual physical cash unit to use in the dispense operation.
1915If the bCashBox field of the WFSCDMCAPS structure returned by the
1916WFS_INF_CDM_CAPABILITIES command is TRUE then, if the entire denomination cannot be
1917satisfied, a partial denomination will be returned with the remaining amount to be supplied from
1918the teller’s cash box.
1919If the device is a Teller CDM, the input field fwPosition can be set to WFS_CDM_POSNULL. If
1920this is the case the usTellerID is used to perform the dispense operation to the assigned teller
1921position.
1922The field bPresent of the WFSCDMDISPENSE structure determines whether items are actually
1923presented to the user as part of the dispense operation. If this field is set to TRUE then the items
1924will be moved to the exit slot, if it is FALSE the items will be moved to an intermediate stacker.
1925In the second case it will be necessary to use the WFS_CMD_CDM_PRESENT command to
1926present the items to the user. If bPresent is set to FALSE then the fwPosition field is ignored. If
1927the CDM does not have an intermediate stacker then bPresent is ignored.
1928If bPresent is set to TRUE and a shutter exists, then it will be implicitly controlled during the
1929present operation, even if the bShutterControl capability is set to FALSE. The shutter will be
1930closed when the user removes the items or the items are retracted.
1931Input Param LPWFSCDMDISPENSE lpDispense;
1932typedef struct _wfs_cdm_dispense
1933{
1934USHORT usTellerID;
1935USHORT usMixNumber;
1936WORD fwPosition;
1937BOOL bPresent;
1938LPWFSCDMDENOMINATION lpDenomination;
1939} WFSCDMDISPENSE, *LPWFSCDMDISPENSE;
1940usTellerID
1941Identifies the teller. This field is ignored if the device is a Self-Service CDM.
1942usMixNumber
1943Mix algorithm or house mix table to be used to create a denomination of the supplied amount. If
1944the value is WFS_CDM_INDIVIDUAL, the denomination supplied in the lpDenomination field
1945is validated prior to the dispense operation. If it is found to be invalid no alternative denomination
1946will be calculated.
1947CWA 16926-64:2015 (E)
194844
1949fwPosition
1950Determines to which side the amount is dispensed. If the device is a Teller CDM this field is
1951ignored and the output position associated with usTellerID is used. The value is specified by one
1952of the following values:
1953Value Meaning
1954WFS_CDM_POSNULL The default configuration information is
1955used. This can be either position dependent
1956or teller dependent.
1957WFS_CDM_POSLEFT Present items to left side of device.
1958WFS_CDM_POSRIGHT Present items to right side of device.
1959WFS_CDM_POSCENTER Present items to center output position.
1960WFS_CDM_POSTOP Present items to the top output position.
1961WFS_CDM_POSBOTTOM Present items to the bottom output position.
1962WFS_CDM_POSFRONT Present items to the front output position.
1963WFS_CDM_POSREAR Present items to the rear output position.
1964bPresent
1965If this field is set to TRUE then the items will be moved to the exit slot, if it is FALSE the items
1966will be moved to an intermediate stacker.
1967lpDenomination
1968Pointer to a WFSCDMDENOMINATION structure, describing the denominations used for the
1969dispense operation. For the WFSCDMDENOMINATION structure specification see the
1970definition of the command WFS_CMD_CDM_DENOMINATE.
1971Output Param LPWFSCDMDENOMINATION lpDenomination;
1972For the WFSCDMDENOMINATION structure specification see the definition of the command
1973WFS_CMD_CDM_DENOMINATE.
1974The values in this structure report the amount dispensed and the number of items dispensed from
1975each cash unit.
1976Where mixed currencies are being dispensed the ulAmount field in the returned denomination
1977structure will be zero and the cCurrencyID field will be set to three ASCII 0x20 characters.
1978Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
1979generated by this command:
1980Value Meaning
1981WFS_ERR_CDM_INVALIDCURRENCY There are no cash units in the CDM of the
1982currency specified in the cCurrencyID field
1983of the input parameter.
1984WFS_ERR_CDM_INVALIDTELLERID Invalid teller ID. This error will never be
1985generated by a Self-Service CDM.
1986WFS_ERR_CDM_CASHUNITERROR There is a problem with a cash unit. A
1987WFS_EXEE_CDM_CASHUNITERROR
1988execute event is posted with the details.
1989WFS_ERR_CDM_INVALIDDENOMINATION The sum of the values for cash box and cash
1990units was greater than the amount specified.
1991WFS_ERR_CDM_INVALIDMIXNUMBER Mix algorithm is not known.
1992WFS_ERR_CDM_NOCURRENCYMIX Cash units containing two or more different
1993currencies were selected.
1994WFS_ERR_CDM_NOTDISPENSABLE The amount is not dispensable by the CDM.
1995WFS_ERR_CDM_TOOMANYITEMS The request would require too many items to
1996be dispensed. This error is also generated if
1997bPresent is FALSE and sub-dispensing is
1998required.
1999WFS_ERR_CDM_UNSUPPOSITION The specified output position is not
2000supported.
2001WFS_ERR_CDM_SAFEDOOROPEN The safe door is open.This device requires
2002the safe door to be closed in order to perform
2003this operation.
2004WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2005CWA 16926-64:2015 (E)
200645
2007WFS_ERR_CDM_NOCASHBOXPRESENT Cash box amount needed, however teller is
2008not assigned a cash box.
2009WFS_ERR_CDM_AMOUNTNOTINMIXTABLE
2010A mix table is being used to determine the
2011denomination but the amount specified for
2012the denomination is not in the mix table.
2013WFS_ERR_CDM_ITEMSNOTTAKEN Items have not been taken during a subdispense operation. This error occurs if a
2014hardware timeout expires.
2015WFS_ERR_CDM_ITEMSLEFT Items have been left in the transport or exit
2016slot as a result of a prior dispense, present or
2017recycler cash-in operation.
2018WFS_ERR_CDM_SHUTTEROPEN The Service Provider cannot dispense items
2019with an open output shutter.
2020If the bPresent field of the WFSCDMDISPENSE structure is TRUE, the following error codes
2021can also be returned:
2022Value Meaning
2023WFS_ERR_CDM_SHUTTERNOTOPEN The shutter is not open or did not open when
2024it should have. No items presented.
2025WFS_ERR_CDM_PRERRORNOITEMS An error occurred while items were being
2026moved to the exit slot - no items are
2027presented.
2028WFS_ERR_CDM_PRERRORITEMS An error occurred while items were being
2029moved to the exit slot - at least some of the
2030items have been presented.
2031WFS_ERR_CDM_PRERRORUNKNOWN An error occurred while items were being
2032moved to the exit slot - the position of the
2033items is unknown. Intervention may be
2034required to reconcile the cash amount totals.
2035Events In addition to the generic events defined in [Ref. 1], the following events can be generated as a
2036result of this command:
2037Value Meaning
2038WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in
2039one of the cash units.
2040WFS_EXEE_CDM_DELAYEDDISPENSE The dispense operation will be delayed by
2041the specified time.
2042WFS_EXEE_CDM_STARTDISPENSE Fired when the delayed dispense operation
2043starts.
2044WFS_EXEE_CDM_CASHUNITERROR A cash unit caused an error during a
2045dispense operation.
2046WFS_SRVE_CDM_ITEMSTAKEN The user has removed the items presented. If
2047the dispense is not a sub-dispense this event
2048occurs after the completion of the dispense
2049command.
2050WFS_EXEE_CDM_PARTIALDISPENSE Indicates that the dispense operation is to be
2051divided into several sub-dispense operations.
2052WFS_EXEE_CDM_SUBDISPENSEOK A sub-dispense operation was completed
2053successfully.
2054WFS_EXEE_CDM_INCOMPLETEDISPENSE It has not been possible to dispense the entire
2055denomination but part of the denomination
2056has been dispensed, whether on the
2057intermediate stacker or in customer access.
2058The return error code will be
2059WFS_ERR_CDM_NOTDISPENSABLE.
2060WFS_EXEE_CDM_NOTEERROR An item detection error has occurred.
2061WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2062been detected.
2063WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2064processed by this operation.
2065CWA 16926-64:2015 (E)
206646
2067WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
2068The shutter status has changed.
2069Comments None.
2070CWA 16926-64:2015 (E)
207147
20725.3 WFS_CMD_CDM_COUNT
2073Description This command empties the specified physical cash unit(s). All items dispensed from the cash unit
2074are counted and moved to the specified output location.
2075The number of items counted can be different from the number of items dispensed in cases where
2076the CDM has the ability to detect this information. If the CDM cannot differentiate between what
2077is dispensed and what is counted then ulDispensed will be the same as ulCounted.
2078Upon successful WFS_CMD_CDM_COUNT command execution the physical cash unit(s)
2079ulCount field within the WFSCDMPHCU structure is reset.
2080Input Param LPWFSCDMPHYSICALCU lpPhysicalCU;
2081typedef struct _wfs_cdm_physical_cu
2082{
2083BOOL bEmptyAll;
2084WORD fwPosition;
2085LPSTR lpPhysicalPositionName;
2086} WFSCDMPHYSICALCU, *LPWFSCDMPHYSICALCU;
2087bEmptyAll
2088Specifies whether all physical cash units are to be emptied. If this value is TRUE then
2089lpPhysicalPositionName is ignored.
2090fwPosition
2091Specifies the location to which items should be moved. The value is set to one of the following
2092values:
2093Value Meaning
2094WFS_CDM_POSNULL Output location is determined by Service
2095Provider.
2096WFS_CDM_POSLEFT Present items to left side of device.
2097WFS_CDM_POSRIGHT Present items to right side of device.
2098WFS_CDM_POSCENTER Present items to center output position.
2099WFS_CDM_POSTOP Present items to the top output position.
2100WFS_CDM_POSBOTTOM Present items to the bottom output position.
2101WFS_CDM_POSFRONT Present items to the front output position.
2102WFS_CDM_POSREAR Present items to the rear output position.
2103WFS_CDM_POSREJECT Reject bin is used as output location.
2104lpPhysicalPositionName
2105Specifies which physical cash unit to empty and count. This name is the same as the
2106lpPhysicalPositionName in the WFSCDMPHCU structure.
2107Output Param LPWFSCDMCOUNT lpCount;
2108typedef struct _wfs_cdm_count
2109{
2110USHORT usNumPhysicalCUs;
2111LPWFSCDMCOUNTEDPHYSCU *lppCountedPhysCUs;
2112} WFSCDMCOUNT, *LPWFSCDMCOUNT;
2113usNumPhysicalCUs
2114This value indicates the number of physical cash unit structures (WFSCDMCOUNTEDPHYSCU)
2115returned. This value will always be greater than zero.
2116lppCountedPhysCUs
2117Pointer to an array of pointers to WFSCDMCOUNTEDPHYSCU structures:
2118typedef struct _wfs_cdm_counted_phys_cu
2119{
2120LPSTR lpPhysicalPositionName;
2121CHAR cUnitId[5];
2122ULONG ulDispensed;
2123ULONG ulCounted;
2124USHORT usPStatus;
2125} WFSCDMCOUNTEDPHYSCU, *LPWFSCDMCOUNTEDPHYSCU;
2126CWA 16926-64:2015 (E)
212748
2128lpPhysicalPositionName
2129Specifies which physical cash unit was emptied and counted. This name is that defined in the
2130lpPhysicalPositionName field of the WFSCDMPHCU structure.
2131cUnitId
2132Cash unit ID. This is the identifier defined in the cUnitID field of the WFSCDMPHCU
2133structure.
2134ulDispensed
2135The number of items that were dispensed during the emptying of the cash unit.
2136ulCounted
2137The number of items that were counted during the emptying of the cash unit.
2138usPStatus
2139Supplies the status of the physical cash unit as one of the following values:
2140Value Meaning
2141WFS_CDM_STATCUOK The cash unit is in a good state.
2142WFS_CDM_STATCUFULL The cash unit is full.
2143WFS_CDM_STATCUHIGH The cash unit is almost full (reached or
2144exceeded the threshold defined by
2145WFSCDMCASHUNIT.ulMaximum).
2146WFS_CDM_STATCULOW The cash unit is almost empty.
2147WFS_CDM_STATCUEMPTY The cash unit is empty.
2148WFS_CDM_STATCUINOP The cash unit is inoperative.
2149WFS_CDM_STATCUMISSING The cash unit is missing.
2150WFS_CDM_STATCUNOVAL The values of the specified cash unit are
2151not available.
2152WFS_CDM_STATCUNOREF There is no reference value available for
2153the notes in this cash unit.
2154WFS_CDM_STATCUMANIP The cash unit has been inserted
2155(including removal followed by a
2156reinsertion) when the device was not in
2157the exchange state. This cash unit cannot
2158be dispensed from.
2159Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2160generated by this command:
2161Value Meaning
2162WFS_ERR_CDM_CASHUNITERROR A cash unit caused a problem. A
2163WFS_EXEE_CDM_CASHUNITERROR
2164event will be posted with the details.
2165WFS_ERR_CDM_UNSUPPOSITION The position specified is not supported.
2166WFS_ERR_CDM_SAFEDOOROPEN The safe door is open.This device requires
2167the safe door to be closed in order to perform
2168this operation.
2169WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2170Events In addition to the generic events defined in [Ref. 1], the following events can be generated as a
2171result of this command:
2172Value Meaning
2173WFS_EXEE_CDM_CASHUNITERROR A cash unit caused an error during the count
2174operation.
2175WFS_SRVE_CDM_ITEMSTAKEN The items emptied to the output location
2176have been removed by the user.
2177WFS_SRVE_CDM_ITEMSPRESENTED Items have been emptied to the output
2178location. These items may need to be
2179removed from the output location before the
2180operation can continue.
2181WFS_EXEE_CDM_NOTEERROR An item detection error has occurred.
2182WFS_EXEE_CDM_INPUT_P6 ECB6 Level 2 and/or level 3 notes have been
2183detected.
2184CWA 16926-64:2015 (E)
218549
2186WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2187processed by this operation.
2188WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
2189The shutter status has changed.
2190Comments None.
2191CWA 16926-64:2015 (E)
219250
21935.4 WFS_CMD_CDM_PRESENT
2194Description This command will move items to the exit position for removal by the user. If a shutter exists,
2195then it will be implicitly controlled during the present operation, even if the bShutterControl
2196capability is set to FALSE. The shutter will be closed when the user removes the items or the
2197items are retracted. If lpfwPosition points to WFS_CDM_POSNULL the position set in the
2198WFS_CMD_CDM_DISPENSE command which caused these items to be dispensed will be used.
2199When this command successfully completes the items are in customer access.
2200Input Param LPWORD lpfwPosition;
2201lpfwPosition
2202Pointer to the output position where the amount is to be presented. The value is set to one of the
2203following values:
2204Value Meaning
2205WFS_CDM_POSNULL The default configuration information is
2206used. This can be either position dependent
2207or teller dependent.
2208WFS_CDM_POSLEFT Present items to left side of device.
2209WFS_CDM_POSRIGHT Present items to right side of device.
2210WFS_CDM_POSCENTER Present items to center output position.
2211WFS_CDM_POSTOP Present items to the top output position.
2212WFS_CDM_POSBOTTOM Present items to the bottom output position.
2213WFS_CDM_POSFRONT Present items to the front output position.
2214WFS_CDM_POSREAR Present items to the rear output position.
2215Output Param None.
2216Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2217generated by this command:
2218Value Meaning
2219WFS_ERR_CDM_SHUTTERNOTOPEN The shutter did not open when it should
2220have. No items presented.
2221WFS_ERR_CDM_SHUTTEROPEN The shutter is open when it should be closed.
2222No items presented.
2223WFS_ERR_CDM_NOITEMS There are no items on the stacker.
2224WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2225WFS_ERR_CDM_PRERRORNOITEMS There was an error during the present
2226operation - no items were presented.
2227WFS_ERR_CDM_PRERRORITEMS There was an error during the present
2228operation - at least some of the items were
2229presented.
2230WFS_ERR_CDM_PRERRORUNKNOWN There was an error during the present
2231operation - the position of the items is
2232unknown. Intervention may be required to
2233reconcile the cash amount totals.
2234WFS_ERR_CDM_UNSUPPOSITION The position specified is not supported.
2235Events In addition to the generic events defined in [Ref. 1], the following events can be generated as a
2236result of this command:
2237Value Meaning
2238WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in
2239one of the cash units.
2240WFS_SRVE_CDM_ITEMSTAKEN The items have been removed by the user.
2241This event is generated after the
2242completion of the present operation.
2243WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2244been detected.
2245WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2246processed by this operation.
2247CWA 16926-64:2015 (E)
224851
2249WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
2250The shutter status has changed.
2251Comments None.
2252CWA 16926-64:2015 (E)
225352
22545.5 WFS_CMD_CDM_REJECT
2255Description This command will move items from the intermediate stacker and transport them to a reject cash
2256unit (i.e. a cash unit with usType WFS_CDM_TYPEREJECTCASSETTE). The
2257WFSCDMCASHUNIT.ulCount field of the reject cash unit is incremented by the number of
2258items that were thought to be present at the time of the reject or the number counted by the device
2259during the reject. Note that the reject bin count is unreliable.
2260Input Param None.
2261Output Param None.
2262Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2263generated by this command:
2264Value Meaning
2265WFS_ERR_CDM_CASHUNITERROR A reject cash unit caused a problem. A
2266WFS_EXEE_CDM_CASHUNITERROR
2267event will be posted with the details.
2268WFS_ERR_CDM_NOITEMS There were no items on the stacker.
2269WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2270Events In addition to the generic events defined in [Ref. 1], the following events can be generated as a
2271result of this command:
2272Value Meaning
2273WFS_USRE_CDM_CASHUNITTHRESHOLD A reject bin threshold condition has been
2274reached.
2275WFS_EXEE_CDM_CASHUNITERROR A cash unit caused an error during the reject
2276operation.
2277WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2278been detected.
2279WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2280processed by this operation.
2281Comments None.
2282CWA 16926-64:2015 (E)
228353
22845.6 WFS_CMD_CDM_RETRACT
2285Description This command will retract items which may have been in customer access. Retracted items will
2286be moved to either a retract cash unit, a reject cash unit, item cash units, the transport or the
2287intermediate stacker. After the items are retracted the shutter is closed automatically, even if the
2288bShutterControl capability is set to FALSE.
2289If items are moved to a retract cash unit (i.e. a cash unit with usType
2290WFS_CDM_TYPERETRACTCASSETTE), then the WFSCDMCASHUNIT.ulCount field of the
2291retract cash unit must be incremented by 1 to specify the number of retracts. If items are moved to
2292any other cash unit (e.g. a cash unit with usType WFS_CDM_TYPEREJECTCASSETTE) then
2293the WFSCDMCASHUNIT.ulCount field of the cash unit must be incremented by the number of
2294items that were thought to be present at the time the WFS_CMD_CDM_RETRACT command
2295was issued or the number counted by the device during the retract. Note that reject bin counts are
2296unreliable.
2297For cash recycler implementations with a note handling standard it is recommended to use the
2298WFS_CMD_CIM_RETRACT command instead of this command.
2299Input Param LPWFSCDMRETRACT lpRetract;
2300typedef struct _wfs_cdm_retract
2301{
2302WORD fwOutputPosition;
2303USHORT usRetractArea;
2304USHORT usIndex;
2305} WFSCDMRETRACT, *LPWFSCDMRETRACT;
2306fwOutputPosition
2307Specifies the output position from which to retract the items. The value is set to one of the
2308following values:
2309Value Meaning
2310WFS_CDM_POSNULL The default configuration information should
2311be used.
2312WFS_CDM_POSLEFT Retract items from the left output position.
2313WFS_CDM_POSRIGHT Retract items from the right output position.
2314WFS_CDM_POSCENTER Retract items from the center output
2315position.
2316WFS_CDM_POSTOP Retract items from the top output position.
2317WFS_CDM_POSBOTTOM Retract items from the bottom output
2318position.
2319WFS_CDM_POSFRONT Retract items from the front output position.
2320WFS_CDM_POSREAR Retract items from the rear output position.
2321usRetractArea
2322This value specifies the area to which the items are to be retracted. Possible values are:
2323Value Meaning
2324WFS_CDM_RA_RETRACT Retract the items to a retract cash unit.
2325WFS_CDM_RA_TRANSPORT Retract the items to the transport.
2326WFS_CDM_RA_STACKER Retract the items to the intermediate stacker
2327area.
2328WFS_CDM_RA_REJECT Retract the items to a reject cash unit.
2329WFS_CDM_RA_ITEMCASSETTE Retract the items to the item cassettes, i.e.
2330cassettes that can be dispensed from.
2331CWA 16926-64:2015 (E)
233254
2333usIndex
2334If usRetractArea is set to WFS_CDM_RA_RETRACT this field defines the position inside the
2335retract cash units into which the cash is to be retracted. usIndex starts with a value of one (1) for
2336the first retract position and increments by one for each subsequent position. If there are several
2337logical retract cash units (of type WFS_CDM_TYPERETRACTCASSETTE in command
2338WFS_INF_CDM_CASH_UNIT_INFO), usIndex would be incremented from the first position of
2339the first retract cash unit to the last position of the last retract cash unit defined in
2340WFSCDMCUINFO. The maximum value of usIndex is the sum of
2341WFSCDMCASHUNIT.ulMaximum of each retract cash unit. If usRetractArea is not set to
2342WFS_CDM_RA_RETRACT the value of this field is ignored.
2343Output Param LPWFSCDMITEMNUMBERLIST lpItemNumberList;
2344Pointer to a WFSCDMITEMNUMBERLIST structure. This parameter will provide details about
2345the items moved with this command or this parameter will be NULL if the device is not capable
2346of identifying the moved items.
2347typedef struct _wfs_cdm_item_number_list
2348{
2349USHORT usNumOfItemNumbers;
2350LPWFSCDMITEMNUMBER *lppItemNumber;
2351} WFSCDMITEMNUMBERLIST, *LPWFSCDMITEMNUMBERLIST;
2352usNumOfItemNumbers
2353Number of item types moved during this command, i.e. the number of lppItemNumber list
2354elements.
2355lppItemNumber
2356List of item types moved to the usRetractArea during this command. A pointer to an array of
2357pointers to WFSCDMITEMNUMBER structures:
2358typedef struct _wfs_cdm_item_number
2359{
2360CHAR cCurrencyID[3];
2361ULONG ulValues;
2362USHORT usRelease;
2363ULONG ulCount;
2364USHORT usNumber;
2365} WFSCDMITEMNUMBER, *LPWFSCDMITEMNUMBER;
2366cCurrencyID
2367A three character array storing the ISO format [Ref. 2] Currency ID; or three ASCII 0x20h
2368characters if the currency of the item is not known.
2369ulValues
2370The value of a single item expressed in minimum dispense units; or a zero value if the value of
2371the item is not known.
2372usRelease
2373The release of the item. The higher this number is, the newer the release. Zero means that
2374there is only one release or the release is not known. This value has not been standardized and
2375therefore a release number of the same item will not necessarily have the same value in
2376different systems.
2377ulCount
2378The count of items of the same type moved to the same destination during the execution of
2379this command.
2380usNumber
2381The logical number of the cash unit which received items during the execution of this
2382command. This value will be zero if items were moved to the usRetractArea
2383WFS_CDM_RA_TRANSPORT or WFS_CDM_RA_STACKER.
2384Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2385generated by this command:
2386Value Meaning
2387WFS_ERR_CDM_CASHUNITERROR A retract cash unit caused a problem. A
2388WFS_EXEE_CDM_CASHUNITERROR
2389event will be posted with the details.
2390CWA 16926-64:2015 (E)
239155
2392WFS_ERR_CDM_NOITEMS There were no items to retract.
2393WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2394WFS_ERR_CDM_SHUTTERNOTCLOSED The shutter failed to close.
2395WFS_ERR_CDM_ITEMSTAKEN Items were present at the output position at
2396the start of the operation, but were removed
2397before the operation was complete - some or
2398all of the items were not retracted.
2399WFS_ERR_CDM_INVALIDRETRACTPOSITION
2400The usIndex is not supported.
2401WFS_ERR_CDM_NOTRETRACTAREA The retract area specified in usRetractArea is
2402not supported.
2403WFS_ERR_CDM_UNSUPPOSITION The output position specified is not
2404supported.
2405WFS_ERR_CDM_POSITION_NOT_EMPTY The retract area specified in usRetractArea is
2406not empty so the retract operation is not
2407possible.
2408WFS_ERR_CDM_INCOMPLETERETRACT Some or all of the items were not retracted
2409for a reason not covered by other error
2410codes. The detail will be reported with the
2411WFS_EXEE_CDM_INCOMPLETERETRA
2412CT event.
2413Events In addition to the generic events defined in [Ref. 1], the following events can be generated as a
2414result of this command:
2415Value Meaning
2416WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in a
2417retract or reject cash unit.
2418WFS_EXEE_CDM_CASHUNITERROR An error occurred while attempting to retract
2419to a retract, reject or item cash unit.
2420WFS_SRVE_CDM_ITEMSTAKEN The items presented have been removed by
2421the user.
2422WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2423been detected.
2424WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2425processed by this operation.
2426WFS_EXEE_CDM_INCOMPLETERETRACT The retract command has completed with an
2427error and not all of the items have been
2428retracted. The detail of what was actually
2429retracted will be reported with the event
2430data.
2431WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
2432The shutter status has changed.
2433Comments None.
2434CWA 16926-64:2015 (E)
243556
24365.7 WFS_CMD_CDM_OPEN_SHUTTER
2437Description This command opens the shutter.
2438Input Param LPWORD lpfwPosition;
2439lpfwPosition
2440Pointer to the output position where the shutter is to be opened. If the application does not need to
2441specify a shutter, this field can be set to NULL or its contents to WFS_CDM_POSNULL. The
2442position can be set to one of the following values:
2443Value Meaning
2444WFS_CDM_POSNULL The default configuration information should
2445be used.
2446WFS_CDM_POSLEFT Open the shutter at the left output position.
2447WFS_CDM_POSRIGHT Open the shutter at the right output position.
2448WFS_CDM_POSCENTER Open the shutter at the center output
2449position.
2450WFS_CDM_POSTOP Open the shutter at the top output position.
2451WFS_CDM_POSBOTTOM Open the shutter at the bottomoutput
2452position.
2453WFS_CDM_POSFRONT Open the shutter at the front output position.
2454WFS_CDM_POSREAR Open the shutter at the rear output position.
2455Output Param None.
2456Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2457generated by this command:
2458Value Meaning
2459WFS_ERR_CDM_UNSUPPOSITION The position specified is not supported.
2460WFS_ERR_CDM_SHUTTERNOTOPEN The shutter failed to open.
2461WFS_ERR_CDM_SHUTTEROPEN The shutter was already open.
2462WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2463Events OnlyIn addition to the generic events defined in [Ref. 1], the following events can be generated
2464byas a result of this command.:
2465Value Meaning
2466WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
2467The shutter status has changed.
2468Comments None.
2469CWA 16926-64:2015 (E)
247057
24715.8 WFS_CMD_CDM_CLOSE_SHUTTER
2472Description This command closes the shutter.
2473Input Param LPWORD lpfwPosition;
2474lpfwPosition
2475Pointer to the output position where the shutter is to be closed. If the application does not need to
2476specify a shutter, this field can be set to NULL or its contents to WFS_CDM_POSNULL. The
2477position can be set to one of the following values:
2478Value Meaning
2479WFS_CDM_POSNULL The default configuration information should
2480be used.
2481WFS_CDM_POSLEFT Close the shutter at the left output position.
2482WFS_CDM_POSRIGHT Close the shutter at the right output position.
2483WFS_CDM_POSCENTER Close the shutter at the center output
2484position.
2485WFS_CDM_POSTOP Close the shutter at the top output position.
2486WFS_CDM_POSBOTTOM Close the shutter at the bottom output
2487position.
2488WFS_CDM_POSFRONT Close the shutter at the front output position.
2489WFS_CDM_POSREAR Close the shutter at the rear output position.
2490Output Param None.
2491Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2492generated by this command:
2493Value Meaning
2494WFS_ERR_CDM_UNSUPPOSITION The position specified is not supported.
2495WFS_ERR_CDM_SHUTTERCLOSED The shutter was already closed.
2496WFS_ERR_CDM_SHUTTERNOTCLOSED The shutter failed to close.
2497WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2498Events OnlyIn addition to the generic events defined in [Ref. 1], the following events can be generated
2499byas a result of this command.:
2500Value Meaning
2501WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
2502The shutter status has changed.
2503Comments None.
2504CWA 16926-64:2015 (E)
250558
25065.9 WFS_CMD_CDM_SET_TELLER_INFO
2507Description This command allows the application to set the teller position and initialize counts for each
2508currency assigned to the teller. The values set by this command are persistent. This command only
2509applies to Teller CDMs.
2510Input Param LPWFSCDMTELLERUPDATE lpTellerUpdate;
2511typedef struct _wfs_cdm_teller_update
2512{
2513USHORT usAction;
2514LPWFSCDMTELLERDETAILS lpTellerDetails;
2515} WFSCDMTELLERUPDATE, *LPWFSCDMTELLERUPDATE;
2516usAction
2517The action to be performed specified as one of the following values:
2518Value Meaning
2519WFS_CDM_CREATE_TELLER A teller is to be added.
2520WFS_CDM_MODIFY_TELLER Information about an existing teller is to be
2521modified.
2522WFS_CDM_DELETE_TELLER A teller is to be removed.
2523lpTellerDetails
2524For a specification of the structure WFSCDMTELLERDETAILS please refer to the
2525WFS_INF_CDM_TELLER_INFO command.
2526Output Param None.
2527Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2528generated by this command:
2529Value Meaning
2530WFS_ERR_CDM_INVALIDCURRENCY The specified currency is not currently
2531available.
2532WFS_ERR_CDM_INVALIDTELLERID The teller ID is invalid. This error will never
2533be generated by a Self-Service CDM.
2534WFS_ERR_CDM_UNSUPPOSITION The position specified is not supported.
2535WFS_ERR_CDM_EXCHANGEACTIVE The target teller is currently in the middle of
2536an exchange operation.
2537Events In addition to the generic events defined in [Ref. 1], the following events can be generated as a
2538result of this command:
2539Value Meaning
2540WFS_SRVE_CDM_TELLERINFOCHANGED Teller information has been created,
2541modified or deleted.
2542Comments None.
2543CWA 16926-64:2015 (E)
254459
25455.10 WFS_CMD_CDM_SET_CASH_UNIT_INFO
2546Description This command is used to adjust information regarding the status and contents of the cash units
2547present in the CDM.
2548This command generates the service event WFS_SRVE_CDM_CASHUNITINFOCHANGED to
2549inform applications that the information for a cash unit has been changed.
2550This command can only be used to change software counters, thresholds and the application lock.
2551All other fields in the input structure will be ignored.
2552The following fields of the WFSCDMCASHUNIT structure may be updated by this command:
2553ulInitialCount
2554ulCount
2555ulRejectCount
2556ulMinimum
2557ulMaximum
2558bAppLock
2559ulDispensedCount
2560ulPresentedCount
2561ulRetractedCount
2562As may the following fields of the WFSCDMPHCU structure:
2563ulInitialCount
2564ulCount
2565ulRejectCount
2566ulDispensedCount
2567ulPresentedCount
2568ulRetractedCount
2569Any other changes must be performed via an exchange operation.
2570If the fields ulCount and ulRejectCount of lppPhysical are set to zero by this command, the
2571application is indicating that it does not wish counts to be maintained for the physical cash units.
2572Counts on the logical cash units will still be maintained and can be used by the application. If the
2573physical counts are set by this command then the logical count will be the sum of the physical
2574counts and any value sent as a logical count will be ignored.
2575The values set by this command are persistent.
2576Input Param LPWFSCDMCUINFO lpCUInfo;
2577The WFSCDMCUINFO structure is specified in the documentation of the
2578WFS_INF_CDM_CASH_UNIT_INFO command. All cash units should be included not just the
2579cash units whose values are to be changed.
2580Output Param None.
2581Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2582generated by this command:
2583Value Meaning
2584WFS_ERR_CDM_INVALIDTELLERID Invalid teller ID. This error will never be
2585generated by a Self-Service CDM.
2586WFS_ERR_CDM_INVALIDCASHUNIT Invalid cash unit.
2587WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2588WFS_ERR_CDM_CASHUNITERROR A problem occurred with a cash unit. A
2589WFS_EXEE_CDM_CASHUNITERROR
2590event will be posted with the details.
2591Events In addition to the generic events defined in [Ref. 1], the following events can be generated as a
2592result of this command:
2593Value Meaning
2594WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in
2595one of the cash units.
2596CWA 16926-64:2015 (E)
259760
2598WFS_SRVE_CDM_CASHUNITINFOCHANGED
2599A cash unit was updated as a result of this
2600command.
2601WFS_EXEE_CDM_CASHUNITERROR An error occurred while accessing a cash
2602unit.
2603Comments None.
2604CWA 16926-64:2015 (E)
260561
26065.11 WFS_CMD_CDM_START_EXCHANGE
2607Description This command puts the CDM in an exchange state, i.e. a state in which cash units can be emptied,
2608replenished, removed or replaced. Other than the updates which can be made via the
2609WFS_CMD_CDM_SET_CASH_UNIT_INFO command all changes to a cash unit must take
2610place while the cash unit is in an exchange state.
2611This command returns current cash unit information in the form described in the documentation
2612of the WFS_INF_CDM_CASH_UNIT_INFO command. This command will also initiate any
2613physical processes which may be necessary to make the cash units accessible. Before using this
2614command an application should first have ensured that it has exclusive control of the CDM.
2615This command may return WFS_SUCCESS even if WFS_EXEE_CDM_CASHUNITERROR
2616events are generated. If this command returns WFS_SUCCESS or
2617WFS_ERR_CDM_EXCHANGEACTIVE the CDM is in an exchange state.
2618While in an exchange state the CDM will process all WFS requests but exclude
2619WFS[Async]Execute commands, except those listed below:
2620WFS_CMD_CDM_END_EXCHANGE
2621WFS_CMD_CDM_SET_MIX_TABLE
2622WFS_CMD_CDM_RESET
2623Any other WFS[Async]Execute commands will result in the error
2624WFS_ERR_CDM_EXCHANGEACTIVE being generated.
2625If an error is returned by this command, the WFS_INF_CDM_CASH_UNIT_INFO command
2626should be used to determine cash unit information.
2627If the CDM is part of a compound device together with a CIM (i.e. a cash recycler), exchange
2628operations can either be performed separately on each interface to the compound device, or the
2629entire exchange operation can be done through the CIM interface.
2630Exchange via CDM and CIM interfaces
2631If the exchange is performed separately via the CDM and CIM interfaces then these operations
2632cannot be performed simultaneously. An exchange state must therefore be initiated on each
2633interface in the following sequence:
2634CDM
2635(Lock)
2636WFS_CMD_CDM_START_EXCHANGE
2637…exchange action…
2638WFS_CMD_CDM_END_EXCHANGE
2639(Unlock)
2640CIM
2641(Lock)
2642WFS_CMD_CIM_START_EXCHANGE
2643…exchange action…
2644WFS_CMD_CIM_END_EXCHANGE
2645(Unlock)
2646In the case of a recycler, the cash-in cash unit counts are set via the CIM interface and the cashout cash unit counts are set via the CDM interface. Recycling cash units can be set via either
2647interface. However, if the device has recycle units of multiple currencies and/or denominations (or
2648multiple note identifiers associated with the same denomination) then the CIM interface should be
2649used for exchange operations which affect these units. Those fields which are not common to both
2650the CDM and CIM cash units are left unchanged when an exchange (or
2651WFS_CMD_XXX_SET_CASH_UNIT_INFO) is executed on the other interface. For example if
2652the CDM is used to set the current counts then the CIM lpNoteNumberListstructure is not
2653changed even if the data becomes inconsistent.
2654Exchange via the CIM Interface
2655CWA 16926-64:2015 (E)
265662
2657All cash unit info fields exposed through the CDM interface are also exposed through the CIM
2658interface, so the entire exchange operation for a recycling device can be achieved through the
2659CIM interface.
2660Input Param LPWFSCDMSTARTEX lpStartEx;
2661typedef struct _wfs_cdm_start_ex
2662{
2663WORD fwExchangeType;
2664USHORT usTellerID;
2665USHORT usCount;
2666LPUSHORT lpusCUNumList;
2667} WFSCDMSTARTEX, *LPWFSCDMSTARTEX;
2668fwExchangeType
2669Specifies the type of cash unit exchange operation. This field should be set to one of the following
2670values:
2671Value Meaning
2672WFS_CDM_EXBYHAND The cash units will be replenished manually
2673either by filling or emptying the cash unit by
2674hand or by replacing the cash unit.
2675WFS_CDM_EXTOCASSETTES Items will be moved from the replenishment
2676container to the bill cash units.
2677usTellerID
2678Identifies the teller. If the device is a Self-Service CDM this field is ignored.
2679usCount
2680Number of cash units to be exchanged. This is also the size of the array contained in the
2681lpusCUNumList field.
2682lpusCUNumList
2683Pointer to an array of unsigned shorts containing the logical numbers of the cash units to be
2684exchanged. If an invalid logical number is contained in this list, the command will fail with a
2685WFS_ERR_CDM_CASHUNITERROR error.
2686Output Param LPWFSCDMCUINFO lpCUInfo;
2687The WFSCDMCUINFO structure is specified in the documentation of the
2688WFS_INF_CDM_CASH_UNIT_INFO command. This is the complete list of cash units not just
2689the cash units that are to be changed.
2690Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2691generated by this command:
2692Value Meaning
2693WFS_ERR_CDM_INVALIDTELLERID Invalid teller ID. This error will never be
2694generated by a Self-Service CDM.
2695WFS_ERR_CDM_CASHUNITERROR An error occurred with a cash unit while
2696performing the exchange operation. A
2697WFS_EXEE_CDM_CASHUNITERROR
2698event will be posted with the details.
2699WFS_ERR_CDM_EXCHANGEACTIVE The CDM is already in an exchange state.
2700Events In addition to the generic events defined in [Ref. 1] the following events can be generated by this
2701command:
2702Value Meaning
2703WFS_EXEE_CDM_CASHUNITERROR A cash unit caused an error.
2704WFS_EXEE_CDM_NOTEERROR An item detection error has occurred.
2705WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2706been detected.
2707WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2708processed by this operation.
2709Comments None.
2710CWA 16926-64:2015 (E)
271163
27125.12 WFS_CMD_CDM_END_EXCHANGE
2713Description This command will end the exchange state. If any physical action took place as a result of the
2714WFS_CMD_CDM_START_EXCHANGE command then this command will cause the cash units
2715to be returned to their normal physical state. Any necessary device testing will also be initiated.
2716The application can also use this command to update cash unit information in the form described
2717in the documentation of the WFS_INF_CDM_CASH_UNIT_INFO command.
2718When lpCUInfo is not NULL the input parameters to this command may be ignored if the Service
2719Provider can obtain cash unit information from self-configuring cash units.
2720If the fields ulCount and ulRejectCount of lppPhysical are set to zero by this command, the
2721application is indicating that it does not wish counts to be maintained for the physical cash units.
2722Counts on the logical cash units will still be maintained and can be used by the application. If the
2723physical counts are set by this command then the logical count will be the sum of the physical
2724counts and any value sent as a logical count will be ignored.
2725If an error occurs during the execution of this command, the application must issue
2726WFS_INF_CDM_CASH_UNIT_INFO to determine the cash unit information.
2727A WFS_EXEE_CDM_CASHUNITERROR event will be sent for any logical cash unit which
2728cannot be successfully updated. If no cash units could be updated then a
2729WFS_ERR_CDM_CASHUNITERROR code will be returned and
2730WFS_EXEE_CDM_CASHUNITERROR events generated for every logical cash unit that could
2731not be updated.
2732Even if this command does not return WFS_SUCCESS the exchange state has ended.
2733The values set by this command are persistent.
2734Input Param LPWFSCDMCUINFO lpCUInfo;
2735The WFSCDMCUINFO structure is specified in the documentation for the
2736WFS_INF_CDM_CASH_UNIT_INFO command. This pointer can be NULL if the cash unit
2737information has not changed. If this parameter is not NULL then it must contain the complete list
2738of cash unit structures, not just the ones that have changed. If this parameter is NULL then any
2739cash unit in a manipulated state (i.e. usPStatus value of WFS_CDM_STATCUMANIP) will
2740remain in this state after the command completes.
2741The usStatus and usPStatus values passed in the cash unit structures included within the lpCUInfo
2742parameter are ignored and the actual status of the cash units is determined when this command is
2743executed. When lpCUInfo is not NULL and this command is successfully executed cash units will
2744no longer be in a manipulated state (i.e. usPStatus will no longer be
2745WFS_CDM_STATCUMANIP).
2746Output Param None.
2747Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2748generated by this command:
2749Value Meaning
2750WFS_ERR_CDM_CASHUNITERROR A cash unit problem occurred with a cash
2751unit Athat meant no cash units could be
2752updated. One or more
2753WFS_EXEE_CDM_CASHUNITERROR
2754eventevents will be postedsent with the
2755details.
2756WFS_ERR_CDM_NOEXCHANGEACTIVE There is no exchange active.
2757Events In addition to the generic events defined in [Ref. 1], the following events can be generated by this
2758command:
2759Value Meaning
2760WFS_EXEE_CDM_CASHUNITERROR A cash unit problem occurred that meant no
2761cash units could be updated. One or more
2762WFS_EXEE_CDM_CASHUNITERROR
2763events will be sent with the detailscaused an
2764error.
2765CWA 16926-64:2015 (E)
276664
2767WFS_SRVE_CDM_CASHUNITINFOCHANGED
2768A cash unit was changed.
2769WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in
2770one of the cash units.
2771WFS_EXEE_CDM_NOTEERROR An item detection error has occurred.
2772WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2773been detected.
2774WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2775processed by this operation.
2776Comments None.
2777CWA 16926-64:2015 (E)
277865
27795.13 WFS_CMD_CDM_OPEN_SAFE_DOOR
2780Description This command unlocks the safe door or starts the time delay count down prior to unlocking the
2781safe door, if the device supports it. The command completes when the door is unlocked or the
2782timer has started.
2783Input Param None.
2784Output Param None.
2785Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2786generated by this command:
2787Value Meaning
2788WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2789Events Only the generic events defined in [Ref. 1] can be generated by this command.
2790Comments None.
2791CWA 16926-64:2015 (E)
279266
27935.14 WFS_CMD_CDM_CALIBRATE_CASH_UNIT
2794Description This command will cause a vendor dependent sequence of hardware events which will calibrate
2795one or more physical cash units associated with a logical cash unit. This is necessary if a new type
2796of bank note is put into the cash unit as the command enables the CDM to obtain the measures of
2797the new bank notes.
2798If more than one physical cash unit is associated with the cash unit, it is up to the Service Provider
2799to determine whether all the physical cash units need to be calibrated or if it is sufficient to
2800calibrate for one physical unit and load the data into the others.
2801This command cannot be used to calibrate cash units which have been locked by the application.
2802A WFS_ERR_CDM_CASHUNITERROR code will be returned and a
2803WFS_EXEE_CDM_CASHUNITERROR event generated.
2804Input Param LPWFSCDMCALIBRATE lpCalibrateIn;
2805typedef struct _wfs_cdm_calibrate
2806{
2807USHORT usNumber;
2808USHORT usNumOfBills;
2809LPWFSCDMITEMPOSITION *lpPosition;
2810} WFSCDMCALIBRATE, *LPWFSCDMCALIBRATE;
2811usNumber
2812The logical number of the cash unit.
2813usNumOfBills
2814The number of bills to be dispensed during the calibration process.
2815lpPosition
2816Specifies where the dispensed items should be moved to. For a description of the
2817WFSCDMITEMPOSITION structure see section WFS_CMD_CDM_RESET.
2818Output Param LPWFSCDMCALIBRATE lpCalibrateOut;
2819The WFSCDMCALIBRATE structure is defined in the Input Param section.
2820usNumber
2821The logical number of cash unit which has been calibrated.
2822usNumOfBills
2823Number of items that were actually dispensed during the calibration process. This value may be
2824different from that passed in using the input structure if the cash dispenser always dispenses a
2825default number of bills. When bills are presented to an output position this is the count of notes
2826presented to the output position, any other notes rejected during the calibration process are not
2827included in this count as they will be accounted for within the cash unit counts.
2828lpPosition
2829Specifies where the items were moved to during the calibration process.
2830Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2831generated by this command:
2832Value Meaning
2833WFS_ERR_CDM_CASHUNITERROR A cash unit caused an error. A
2834WFS_EXEE_CDM_CASHUNITERROR
2835event will be sent with the details.
2836WFS_ERR_CDM_UNSUPPOSITION The position specified is not valid.
2837WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
2838WFS_ERR_CDM_INVALIDCASHUNIT The cash unit number specified is not valid.
2839Events In addition to the generic events defined in [Ref. 1], the following events can be generated by this
2840command:
2841Value Meaning
2842WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in
2843one of the cash units.
2844CWA 16926-64:2015 (E)
284567
2846WFS_SRVE_CDM_CASHUNITINFOCHANGED
2847A cash unit was changed.
2848WFS_EXEE_CDM_CASHUNITERROR A cash unit caused an error.
2849WFS_SRVE_CDM_ITEMSTAKEN The items were removed.
2850WFS_EXEE_CDM_NOTEERROR An item detection error has occurred.
2851WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2852been detected.
2853WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2854processed by this operation.
2855Comments None.
2856CWA 16926-64:2015 (E)
285768
28585.15 WFS_CMD_CDM_SET_MIX_TABLE
2859Description This command is used to set up the mix table specified by the mix number. Mix tables are
2860persistent and are available to all applications in the system. An amount can be specified as
2861different denominations within the mix table. If the amount is specified more than once the
2862Service Provider will attempt to denominate or dispense the first amount in the table. If this does
2863not succeed (e.g. because of a cash unit failure) the Service Provider will attempt to denominate
2864or dispense the next amount in the table. The Service Provider can only dispense amounts which
2865are explicitly mentioned in the mix table.
2866If a mix number passed in already exists then the information is overwritten with the new
2867information.
2868Input Param LPWFSCDMMIXTABLE lpMixTable;
2869The structure WFSCDMMIXTABLE is defined in the documentation of the command
2870WFS_INF_CDM_MIX_TABLE.
2871Output Param None.
2872Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
2873generated by this command:
2874Value Meaning
2875WFS_ERR_CDM_INVALIDMIXNUMBER The supplied usMixNumber is reserved for a
2876predefined mix algorithm.
2877WFS_ERR_CDM_INVALIDMIXTABLE The contents of at least one of the defined
2878rows of the mix table is incorrect.
2879Events Only the generic events defined in [Ref. 1] can be generated by this command.
2880Comments None.
2881CWA 16926-64:2015 (E)
288269
28835.16 WFS_CMD_CDM_RESET
2884Description This command is used by the application to perform a hardware reset which will attempt to return
2885the CDM device to a known good state. This command does not over-ride a lock obtained through
2886WFS[Async]Lock on another application or service handle.
2887The device will attempt to move any items found anywhere within the device to the position
2888specified within the lpResetIn parameter. This may not always be possible because of hardware
2889problems.
2890If items are found inside the device the WFS_SRVE_CDM_MEDIADETECTED event will be
2891generated and will inform the application where the items were actually moved to.
2892If an exchange state is active then this command will end the exchange state (even if this
2893command does not complete successfully).
2894On a recycling device this command is not accepted if a cash-in transaction is active and will
2895return a WFS_ERR_DEV_NOT_READY error.
2896If items are moved to a retract cash unit (i.e. a cash unit with usType
2897WFS_CDM_TYPERETRACTCASSETTE), then the WFSCDMCASHUNIT.ulCount field of the
2898retract cash unit must be incremented by 1 to specify the number of operations that changed the
2899count. If items are moved to any other cash unit (e.g. a cash unit with usType
2900WFS_CDM_TYPEREJECTCASSETTE), then the WFSCDMCASHUNIT.ulCount field of the
2901cash unit must be incremented either by the number of items that were present at the time the
2902WFS_CMD_CDM_RESET command was issued or the number counted by the device during the
2903WFS_CMD_CDM_RESET command. Note that reject bin counts are unreliable.
2904Input Param If the application does not wish to specify a cash unit or position it can set lpResetIn to NULL. In
2905this case the Service Provider will determine where to move any items found.
2906LPWFSCDMITEMPOSITION lpResetIn;
2907typedef struct _wfs_cdm_itemposition
2908{
2909USHORT usNumber;
2910LPWFSCDMRETRACT lpRetractArea;
2911WORD fwOutputPosition;
2912} WFSCDMITEMPOSITION *LPWFSCDMITEMPOSITION;
2913usNumber
2914In the case of a single cash unit destination this value specifies the cash unit to be used for the
2915storage of any items found, i.e. when items are to be moved to a reject or retract cash unit. In all
2916other cases this value must be zero, i.e. when items are to be moved to item cassettes,the
2917transport, the stacker or an output position.
2918lpRetractArea
2919This field is used if items are to be moved to the stacker, the transport, a retract cash unit or to
2920item cassettes. If items are to be moved to a reject cash unit or to an output position then this field
2921must be NULL.
2922typedef struct _wfs_cdm_retract
2923{
2924WORD fwOutputPosition;
2925USHORT usRetractArea;
2926USHORT usIndex;
2927} WFSCDMRETRACT, *LPWFSCDMRETRACT;
2928fwOutputPosition
2929This value will be ignored.
2930usRetractArea
2931This value specifies the area to which the items are to be moved to. Possible values are:
2932CWA 16926-64:2015 (E)
293370
2934Value Meaning
2935WFS_CDM_RA_RETRACT Items will be moved to a retract cash
2936unit. In the case where several cash units
2937of type WFS_CDM_TYPERETRACTCASSETTE exist the usNumber field
2938will define which retract unit the items
2939will be moved to.
2940WFS_CDM_RA_TRANSPORT Items will be moved to the transport.
2941WFS_CDM_RA_STACKER Items will be moved to the intermediate
2942stacker area.
2943WFS_CDM_RA_ITEMCASSETTE Items will be moved to the item cassettes,
2944i.e. cassettes that can be dispensed from.
2945usIndex
2946If usRetractArea is set to WFS_CDM_RA_RETRACT this field defines the position inside the
2947retract cash units into which the cash is to be retracted. usIndex starts with a value of one (1)
2948for the first retract position and increments by one for each subsequent position. If there are
2949several logical retract cash units (of type WFS_CDM_TYPERETRACTCASSETTE in
2950command WFS_INF_CDM_CASH_UNIT_INFO), usIndex would be incremented from the
2951first position of the first retract cash unit to the last position of the last retract cash unit defined
2952in WFSCDMCASHINFO. The maximum value of usIndex is the sum of the
2953WFSCDMCASHUNIT.ulMaximum of each retract cash unit. If usRetractArea is not set to
2954WFS_CDM_RA_RETRACT the value of this field is ignored.
2955fwOutputPosition
2956The output position to which items are to be moved. If the usNumber is non-zero then this field
2957will be ignored. The value is specified as one of the following values:
2958Value Meaning
2959WFS_CDM_POSNULL The default configuration.
2960WFS_CDM_POSLEFT The left output position.
2961WFS_CDM_POSRIGHT The right output position.
2962WFS_CDM_POSCENTER The center output position.
2963WFS_CDM_POSTOP The top output position.
2964WFS_CDM_POSBOTTOM The bottom output position.
2965WFS_CDM_POSFRONT The front output position.
2966WFS_CDM_POSREAR The rear output position.
2967Output Param None.
2968Error Codes In addition to the generic error codes defined in [Ref. 1] the following can be generated by this
2969command:
2970Value Meaning
2971WFS_ERR_CDM_CASHUNITERROR A cash unit caused an error. One or more
2972WFS_EXEE_CDM_CASHUNITERROR
2973events will be sent with the details.
2974WFS_ERR_CDM_UNSUPPOSITION The position specified is not supported.
2975WFS_ERR_CDM_INVALIDCASHUNIT The cash unit number specified is not valid.
2976WFS_ERR_CDM_POSITION_NOT_EMPTY The retract area specified in usRetractArea is
2977not empty so the moving of items was not
2978possible.
2979WFS_ERR_CDM_INCOMPLETERETRACT Some or all of the items were not retracted
2980for a reason not covered by other error
2981codes. The detail will be reported with the
2982WFS_EXEE_CDM_INCOMPLETERETRA
2983CT event.
2984Events In addition to the generic events defined in [Ref. 1], the following events can be generated by this
2985command:
2986Value Meaning
2987WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in
2988one of the cash units.
2989WFS_EXEE_CDM_CASHUNITERROR A cash unit caused an error.
2990CWA 16926-64:2015 (E)
299171
2992WFS_SRVE_CDM_MEDIADETECTED Media has been found in the device.
2993WFS_SRVE_CDM_ITEMSTAKEN The items presented have been removed by
2994the user.
2995WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
2996been detected.
2997WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
2998processed by this operation.
2999WFS_EXEE_CDM_INCOMPLETERETRACT The command has completed with an error
3000and not all of the items have been retracted.
3001The detail of what was actually retracted will
3002be reported in the
3003WFS_EXEE_CDM_INCOMPLETERETRA
3004CT event data.
3005WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
3006The shutter status has changed.
3007Comments None.
3008CWA 16926-64:2015 (E)
300972
30105.17 WFS_CMD_CDM_TEST_CASH_UNITS
3011Description This command is used to test cash units following replenishment. All physical cash units which
3012are testable (i.e. that have a status of WFS_CDM_STATCUOK or WFS_CDM_STATCULOW
3013and no application lock in the logical cash unit associated with the physical cash unit) are tested.
3014If the hardware is able to do so tests are continued even if an error occurs while testing one of the
3015cash units. The command completes with WFS_SUCCESS if the Service Provider successfully
3016manages to test all of the testable cash units regardless of the outcome of the test. This is the case
3017if all testable cash units could be tested and a dispense was possible from at least one of the cash
3018units.
3019A WFS_EXEE_CDM_CASHUNITERROR event will be sent for any logical cash unit which has
3020one or more physical cash units which cannot be tested or which fail the test, even if the logical
3021cash unit has other physical cash units which are successfully tested.If all the cash units could not
3022be tested or no cash units are testable then a WFS_ERR_CDM_CASHUNITERROR code will be
3023returned and WFS_EXEE_CDM_CASHUNITERROR events generated for every logical cash
3024unit that encountered a problem. The operation performed to test the cash units is vendor
3025dependent. Items may be dispensed or transported into a reject bin as a result of this command.
3026If no cash units are testable then a WFS_ERR_CDM_CASHUNITERROR code will be returned
3027and WFS_EXEE_CDM_CASHUNITERROR events will be generated for every cash unit.
3028Input Param LPWFSCDMITEMPOSITION lpPosition;
3029Specifies where items dispensed as a result of this command should be moved to. For a
3030description of the WFSCDMITEMPOSITION structure see section WFS_CMD_CDM_RESET.
3031If a Service Provider default configuration is to be used this parameter can be NULL.
3032Output Param LPWFSCDMCUINFO lpCUInfo;
3033The WFSCDMCUINFO structure is defined in the documentation of the
3034WFS_INF_CDM_CASH_UNIT_INFO command.
3035Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
3036generated by this command:
3037Value Meaning
3038WFS_ERR_CDM_CASHUNITERROR A cash unit caused a problem that meant all
3039cash units could not be tested or no cash
3040units were testable. One or more
3041WFS_EXEE_CDM_CASHUNITERROR
3042events will be posted with the details.
3043WFS_ERR_CDM_UNSUPPOSITION The position specified is not supported.
3044WFS_ERR_CDM_SHUTTERNOTOPEN The shutter is not open or did not open when
3045it should have. No items presented.
3046WFS_ERR_CDM_SHUTTEROPEN The shutter is open when it should be closed.
3047No items presented.
3048WFS_ERR_CDM_INVALIDCASHUNIT The cash unit number specified is not valid.
3049WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
3050WFS_ERR_CDM_PRERRORNOITEMS There was an error during the present
3051operation - no items were presented.
3052WFS_ERR_CDM_PRERRORITEMS There was an error during the present
3053operation - at least some of the items were
3054presented.
3055WFS_ERR_CDM_PRERRORUNKNOWN There was an error during the present
3056operation - the position of the items is
3057unknown. Intervention may be required to
3058reconcile the cash amount totals.
3059Events In addition to the generic events defined in [Ref. 1], the following events can be generated by this
3060command:
3061Value Meaning
3062WFS_USRE_CDM_CASHUNITTHRESHOLD A threshold condition has been reached in
3063one of the cash units.
3064CWA 16926-64:2015 (E)
306573
3066WFS_EXEE_CDM_CASHUNITERROR A cash unit has failed the test or a cash unit
3067was not testable.
3068WFS_SRVE_CDM_ITEMSTAKEN The items presented have been removed by
3069the user.
3070WFS_SRVE_CDM_CASHUNITINFOCHANGED
3071A cash unit was updated as a result of this
3072command.
3073WFS_EXEE_CDM_NOTEERROR An item detection error has occurred.
3074WFS_EXEE_CDM_INPUT_P6 ECB6 levelLevel 2 and/or level 3 notes have
3075been detected.
3076WFS_EXEE_CDM_INFO_AVAILABLE Information is available for items being
3077processed by this operation.
3078WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
3079The shutter status has changed.
3080Comments None.
3081CWA 16926-64:2015 (E)
308274
30835.18 WFS_CMD_CDM_SET_GUIDANCE_LIGHT
3084Description This command is used to set the status of the CDM guidance lights. This includes defining the
3085flash rate, the color and the color.direction. When an application tries to use a color or direction
3086that is not supported then the Service Provider will return the generic error
3087WFS_ERR_UNSUPP_DATA.
3088Input Param LPWFSCDMSETGUIDLIGHT lpSetGuidLight;
3089typedef struct _wfs_cdm_set_guidlight
3090{
3091WORD wGuidLight;
3092DWORD dwCommand;
3093} WFSCDMSETGUIDLIGHT, *LPWFSCDMSETGUIDLIGHT;
3094wGuidLight
3095Specifies the index of the guidance light to set as one of the values defined within the capabilities
3096section in the dwGuidLights[...] field.
3097dwCommand
3098Specifies the state of the guidance light indicator as WFS_CDM_GUIDANCE_OFF or a
3099combination of the following flags consisting of one type B, optionally one type C and optionally
3100one type CD. If no value of type C is specified then the default color is used.The Service Provider
3101determines which color is used as the default color.
3102Value Meaning Type
3103WFS_CDM_GUIDANCE_OFF The light indicator is turned off. A
3104WFS_CDM_GUIDANCE_SLOW_FLASH The light indicator is set to flash B
3105slowly.
3106WFS_CDM_GUIDANCE_MEDIUM_FLASH The light indicator is set to flash B
3107medium frequency.
3108WFS_CDM_GUIDANCE_QUICK_FLASH The light indicator is set to flash B
3109quickly.
3110WFS_CDM_GUIDANCE_CONTINUOUS The light indicator is turned on B
3111continuously (steady).
3112WFS_CDM_GUIDANCE_RED The light indicator color is set C
3113to red.
3114WFS_CDM_GUIDANCE_GREEN The light indicator color is set C
3115to green.
3116WFS_CDM_GUIDANCE_YELLOW The light indicator color is set C
3117to yellow.
3118WFS_CDM_GUIDANCE_BLUE The light indicator color is set C
3119to blue.
3120WFS_CDM_GUIDANCE_CYAN The light indicator color is set C
3121to cyan.
3122WFS_CDM_GUIDANCE_MAGENTA The light indicator color is set C
3123to magenta.
3124WFS_CDM_GUIDANCE_WHITE The light indicator color is set C
3125to white.
3126WFS_CDM_GUIDANCE_EXIT The light indicator is set D
3127to the exit state.
3128Output Param None.
3129Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
3130generated by this command:
3131Value Meaning
3132WFS_ERR_CDM_INVALID_PORT An attempt to set a guidance light to a new
3133value was invalid because the guidance light
3134does not exist.
3135Events Only the generic events defined in [Ref. 1] can be generated by this command.
3136Comments Guidance light support was added into the CDM primarily to support guidance lights for
3137workstations where more than one instance of a CDM is present. The original SIU guidance light
3138CWA 16926-64:2015 (E)
313975
3140mechanism was not able to manage guidance lights for workstations with multiple CDMs. This
3141command can also be used to set the status of the CDM guidance lights when only one instance of
3142a CDM is present.
3143The slow and medium flash rates must not be greater than 2.0 Hz. It should be noted that in order
3144to comply with American Disabilities Act guidelines only a slow or medium flash rate must be
3145used.
3146CWA 16926-64:2015 (E)
314776
31485.19 WFS_CMD_CDM_POWER_SAVE_CONTROL
3149Description This command activates or deactivates the power-saving mode.
3150If the Service Provider receives another execute command while in power saving mode, the
3151Service Provider automatically exits the power saving mode, and executes the requested
3152command. If the Service Provider receives an information command while in power saving mode,
3153the Service Provider will not exit the power saving mode.
3154Input Param LPWFSCDMPOWERSAVECONTROL lpPowerSaveControl;
3155typedef struct _wfs_cdm_power_save_control
3156{
3157USHORT usMaxPowerSaveRecoveryTime;
3158} WFSCDMPOWERSAVECONTROL, *LPWFSCDMPOWERSAVECONTROL;
3159usMaxPowerSaveRecoveryTime
3160Specifies the maximum number of seconds in which the device must be able to return to its
3161normal operating state when exiting power save mode. The device will be set to the highest
3162possible power save mode within this constraint.If usMaxPowerSaveRecoveryTime is set to zero
3163then the device will exit the power saving mode.
3164Output Param None.
3165Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
3166generated by this command:
3167Value Meaning
3168WFS_ERR_CDM_POW ERSAVETOOSHORT The power saving mode has not been
3169activated because the device is not able to
3170resume from the power saving mode within
3171the specified
3172usMaxPowerSaveRecoveryTime value.
3173WFS_ERR_CDM_POW ERSAVEMEDIAPRESENT
3174The power saving mode has not been
3175activated because media is present inside the
3176device.
3177WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
3178Events In addition to the generic events defined in [Ref. 1], the following events can be generated by this
3179command:
3180Value Meaning
3181WFS_SRVE_CDM_POW ER_SAVE_CHANGE The power save recovery time has changed.
3182Comments None.
3183CWA 16926-64:2015 (E)
318477
31855.20 WFS_CMD_CDM_PREPARE_DISPENSE
3186Description On some hardware it can take a significant amount of time for the dispenser to get ready to
3187dispense media. On this type of hardware the WFS_CMD_CDM_PREPARE_DISPENSE
3188command can be used to improve transaction performance.
3189If this command is supported (see the bPrepareDispense capability) then applications can help to
3190improve the time taken to dispense media by issuing this command as soon as the application
3191knows that a dispense is likely to happen. This command either prepares the device for the next
3192dispense operation, or terminates the dispense preparation if the subsequent dispense operation is
3193no longer required.
3194With the exception of the WFS_CMD_CDM_DENOMINATE command, which will not stop the
3195dispense preparation, any execute command on CDM or CIM will automatically stop the dispense
3196preparation.
3197If this command is executed and the device is already in the specified wAction state, then this
3198execution will have no effect and will complete with WFS_SUCCESS.
3199Input Param LPWFSCDMPREPAREDISPENSE lpPrepareDispense;
3200typedef struct _wfs_cdm_prepare_dispense
3201{
3202WORD wAction;
3203} WFSCDMPREPAREDISPENSE, *LPWFSCDMPREPAREDISPENSE;
3204wAction
3205A value specifying the type of actions. The value is set to one of the following values:
3206Value Meaning
3207WFS_CDM_START Initiates the action to prepare for the next
3208dispense command. This command does not
3209wait until the device is ready to dispense
3210before returning a completion event, it
3211completes as soon as the preparation has
3212been initiated.
3213WFS_CDM_STOP Stops the previously activated dispense
3214preparation. For example the motor of the
3215transport will be stopped. This should be
3216used if for some reason the subsequent
3217dispense operation is no longer required.
3218Output Param None.
3219Error Codes OnlyIn addition to the generic error codes defined in [Ref. 1], the following error codes can be
3220generated by this command.:
3221Value Meaning
3222WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
3223Events Only the generic events defined in [Ref. 1] can be generated by this command.
3224Comments None.
3225CWA 16926-64:2015 (E)
322678
32275.21 WFS_CMD_CDM_SET_BLACKLIST
3228Description This command is used to set all blacklist information. This list is persistent.
3229Input Param This parameter should be set to NULL if the application wishes to empty the blacklist.
3230LPWFSCDMBLACKLIST lpBlacklist;
3231The LPWFSCDMBLACKLIST structure is defined in the documentation of the
3232WFS_INF_CDM_GET_BLACKLIST command.
3233lpszVersion
3234This is an application defined Unicode string that sets the version identifier of the blacklist. This
3235can be set to NULL if it has no version identifier.
3236usCount
3237Number of pointers to WFSCDMBLACKLISTELEMENT structures returned in
3238lppBlacklistElements.
3239lppBlacklistElements
3240Pointer to an array of pointers to WFSCDMBLACKLISTELEMENT structures.Each element
3241represents a serial number, currency and value combination that a banknote will be matched
3242against to determine if it is blacklisted.
3243The WFSCDMBLACKLISTELEMENT structure is defined in the documentation of the
3244WFS_INF_CDM_GET_BLACKLIST command.
3245lpszSerialNumber
3246This Unicode string defines the serial number or a mask of serial numbers of one blacklist
3247element with the defined currency and value. For a definition of the mask see Section 2.
3248cCurrencyID
3249The three character ISO format currency identifier [Ref. 2] of the blacklist element.
3250ulValue
3251The value of a blacklist element. This field can be set to zero to match all values.
3252Output Param None.
3253Error Codes Only the generic error codes defined in [Ref. 1] can be generated by this command.
3254Events Only the generic events defined in [Ref. 1] can be generated by this command.
3255Comments Some classes of counterfeit banknotes have the same or similar serial numbers. By setting a serial
3256number blacklist financial institutions can react quickly to a threat from counterfeit banknotes.
3257CWA 16926-64:2015 (E)
325879
32595.22 WFS_CMD_CDM_SYNCHRONIZE_COMMAND
3260Description This command is used to reduce response time of a command (e.g. for synchronization with
3261display) as well as to synchronize actions of the different device classes.This command is
3262intended to be used only on hardware which is capable of synchronizing functionality within a
3263single device class or with other device classes.
3264The list of execute commands which this command supports for synchronization is retrieved in
3265the lpdwSynchronizableCommands parameter of the WFS_INF_CDM_CAPABILITIES.
3266This command is optional, i.e, any other command can be called without having to call it in
3267advance. Any preparation that occurs by calling this command will not affect any other
3268subsequent command. However, any subsequent execute command other than the one that was
3269specified in the dwCommand input parameter will execute normally and may invalidate the
3270pending synchronization. In this case the application should call the
3271WFS_CMD_CDM_SYNCHRONIZE_COMMAND again in order to start a synchronization.
3272Input Param LPWFSCDMSYNCHRONIZECOMMAND lpSynchronizeCommand;
3273typedef struct _wfs_cdm_synchronize_command
3274{
3275DWORD dwCommand;
3276LPVOID lpCmdData;
3277} WFSCDMSYNCHRONIZECOMMAND, *LPWFSCDMSYNCHRONIZECOMMAND;
3278dwCommand
3279The command ID of the command to be synchronized and executed next.
3280lpCmdData
3281Pointer to data or a data structure that represents the parameter that is normally associated with
3282the command that is specified in dwCommand. For example, if dwCommand is
3283WFS_CMD_CDM_RETRACT then lpCmdData will point to a WFSCDMRETRACT structure.
3284This parameter can be NULL if no command input parameter is needed or if this detail is not
3285needed to synchronize for the command.
3286It will be device-dependent whether the synchronization is effective or not in the case where the
3287application synchronizes for a command with this command specifying a parameter but
3288subsequently executes the synchronized command with a different parameter. This case should
3289not result in an error; however, the preparation effect could be different from what the application
3290expects. The application should, therefore, make sure to use the same parameter between
3291lpCmdData of this command and the subsequent corresponding execute command.
3292Output Param None.
3293Error Codes In addition to the generic error codes defined in [Ref. 1], the following error codes can be
3294generated by this command:
3295Value Meaning
3296WFS_ERR_CDM_EXCHANGEACTIVE The CDM is in an exchange state.
3297WFS_ERR_CDM_COMMANDUNSUPP The command specified in the dwCommand
3298field is not supported by the Service
3299Provider.
3300WFS_ERR_CDM_SYNCHRONIZEUNSUPP The preparation for the command specified
3301in the dwCommand with the parameter
3302specified in the lpCmdData is not supported
3303by the Service Provider.
3304Events Only the generic events defined in [Ref. 1] can be generated by this command.
3305Comments NoneFor sample flows of this synchronization see the [Ref 1] Appendix C.
3306CWA 16926-64:2015 (E)
330780
33086. Events
33096.1 WFS_SRVE_CDM_SAFEDOOROPEN
3310Description This service event is generated when the safe door has been opened.
3311Event Param None.
3312Comments None.
3313CWA 16926-64:2015 (E)
331481
33156.2 WFS_SRVE_CDM_SAFEDOORCLOSED
3316Description This service event is generated when the safe door has been closed.
3317Event Param None.
3318Comments None.
3319CWA 16926-64:2015 (E)
332082
33216.3 WFS_USRE_CDM_CASHUNITTHRESHOLD
3322Description This user event is generated when a threshold condition has occurred in one of the logical cash
3323units. If the logical cash unit is a shared cash unit in a compound CIM/CDM then this event can
3324also be generated as a result of a CIM operation.
3325This event can be triggered either by hardware sensors in the device or by the logical ulCount
3326reaching the ulMinimum or ulMaximum value as specified in the WFSCDMCASHUNIT structure.
3327The application can check if the device has hardware sensors by querying the bHardwareSensor
3328field of the physical cash unit structure. If any of the physical cash units associated with the
3329logical cash unit have this capability then threshold events based on hardware sensors will be
3330triggered if the ulMaximum or ulMinimum values are not used and are set to zero.
3331In the situation where the cash unit is associated with multiple physical cash units the
3332WFS_SRVE_CDM_CASHUNITINFOCHANGED event will be generated when any of the
3333physical cash units reaches the threshold. When the final physical cash unit reaches the threshold,
3334the WFS_USRE_CDM_CASHUNITTHRESHOLD event as well as the
3335WFS_SRVE_CDM_CASHUNITINFOCHANGED event will be generated.
3336Event Param LPWFSCDMCASHUNIT lpCashUnit;
3337lpCashUnit
3338Pointer to a WFSCDMCASHUNIT structure, describing the cash unit on which the threshold
3339condition occurred. See lpCashUnit->usStatusfor the current status. For a description of the
3340WFSCDMCASHUNIT structure, see the definition of the WFS_INF_CDM_CASH_UNIT_INFO
3341command.
3342Comments None.
3343CWA 16926-64:2015 (E)
334483
33456.4 WFS_SRVE_CDM_CASHUNITINFOCHANGED
3346Description This service event is generated when information about a physical or logical cash unit has
3347changed.under the following circumstances:
3348• It is generated whenever usStatus and/or usPStatus changes.For instance, a physical
3349cash unit may have has been removed or inserted. , or a physical/logical cash unit has
3350become empty or full.
3351• This event will also be postedgenerated for every cash unit changed in any way
3352(including changes to counts, e.g. ulCount, ulRejectCount, ulInitialCount,
3353ulDispensedCount and ulPresentedCount) as a result of the following commands:
3354WFS_CMD_CDM_SET_CASH_UNIT_INFO
3355WFS_CMD_CDM_END_EXCHANGE
3356• This event will also be fired when any change is made to a cash unit by the following
3357commands, except for changes to counts (e.g. ulCount, ulRejectCount, ulInitialCount,
3358ulDispensedCount and ulPresentedCount), or if the
3359WFS_USRE_CDM_CASHUNITTHRESHOLD is more appropriate:
3360WFS_CMD_CDM_CALIBRATE_CASH_UNIT
3361WFS_CMD_CDM_TEST_CASH_UNITS
3362If the cash unit is shared cash unit in a compound CIM/CDM then this event can also be generated
3363as a result of a CIM operation.
3364When a physical cash unit is removed, the status of the physical cash unit becomes
3365WFS_CDM_STATCUMISSING. If there are no physical cash units of the same logical type
3366remaining the status of the logical type becomes WFS_CDM_STATCUMISSING.
3367When a physical cash unit is inserted and this physical cash unit is of an existing logical type,
3368both the logical and the physical cash unit structures will be updated.
3369If a physical cash unit of a new logical type is inserted the cash unit structure reported by the last
3370WFS_INF_CDM_CASH_UNIT_INFO command is no longer valid. In that case an application
3371should issue a WFS_INF_CDM_CASH_UNIT_INFO command after receiving this event to
3372obtain updated cash unit information.
3373Event Param LPWFSCDMCASHUNIT lpCashUnit;
3374lpCashUnit
3375Pointer to the changed cash unit structure. For a description of the WFSCDMCASHUNIT
3376structure see the definition of the WFS_INF_CDM_CASH_UNIT_INFO command.
3377Comments None.
3378CWA 16926-64:2015 (E)
337984
33806.5 WFS_SRVE_CDM_TELLERINFOCHANGED
3381Description This service event is generated when the counts assigned to a teller have changed. This event is
3382only returned as a result of a WFS_CMD_CDM_SET_TELLER_INFO command.
3383Event Param LPUSHORT lpusTellerID;
3384lpusTellerID
3385Pointer to an unsigned short holding the ID of the teller whose counts have changed.
3386Comments None.
3387CWA 16926-64:2015 (E)
338885
33896.6 WFS_EXEE_CDM_DELAYEDDISPENSE
3390Description This execute event is generated if the start of a dispense operation has been delayed.
3391Event Param LPULONG lpulDelay;
3392lpulDelay
3393Pointer to an unsigned long holding the time in milliseconds by which the dispense operation will
3394be delayed.
3395Comments None.
3396CWA 16926-64:2015 (E)
339786
33986.7 WFS_EXEE_CDM_STARTDISPENSE
3399Description This execute event is generated when a delayed dispense operation begins.
3400Event Param LPREQUESTID lpReqID;
3401lpReqID
3402Pointer to the RequestID of the original dispense command.
3403Comments None.
3404CWA 16926-64:2015 (E)
340587
34066.8 WFS_EXEE_CDM_CASHUNITERROR
3407Description This execute event is generated if there is a problem with a cash unit during the execution of a
3408command.
3409Event Param LPWFSCDMCUERROR lpCashUnitError;
3410typedef struct _wfs_cdm_cu_error
3411{
3412WORD wFailure;
3413LPWFSCDMCASHUNIT lpCashUnit;
3414} WFSCDMCUERROR, *LPWFSCDMCUERROR;
3415wFailure
3416Specifies the kind of failure that occurred in the cash unit. Values are:
3417Value Meaning
3418WFS_CDM_CASHUNITEMPTY Specified cash unit is empty.
3419WFS_CDM_CASHUNITERROR Specified cash unit has malfunctioned.
3420WFS_CDM_CASHUNITFULL Specified cash unit is full.
3421WFS_CDM_CASHUNITLOCKED Specified cash unit is locked.
3422WFS_CDM_CASHUNITINVALID Specified cash unit is invalid.
3423WFS_CDM_CASHUNITCONFIG An attempt has been made to change the
3424settings of a self-configuring cash unit.
3425WFS_CDM_CASHUNITNOTCONF Specified cash unit is not configured.
3426lpCashUnit
3427Pointer to the cash unit structure that caused the problem. The WFSCDMCASHUNIT structure is
3428defined in the documentation of the WFS_INF_CDM_CASH_UNIT_INFO command. It is
3429possible that this pointer may be NULL if the wFailure field is
3430WFS_CDM_CASHUNITINVALID.
3431Comments None.
3432CWA 16926-64:2015 (E)
343388
34346.9 WFS_SRVE_CDM_ITEMSTAKEN
3435Description This service event is generated when items presented to the user have been taken. This event may
3436be generated at any time.
3437Event Param LPWORD lpfwPosition;
3438lpfwPosition
3439Pointer to the output position from which the items have been removed. Possible values are:
3440Value Meaning
3441WFS_CDM_POSNULL The default configuration.
3442WFS_CDM_POSLEFT The left output position.
3443WFS_CDM_POSRIGHT The right output position.
3444WFS_CDM_POSCENTER The center output position.
3445WFS_CDM_POSTOP The top output position.
3446WFS_CDM_POSBOTTOM The bottom output position.
3447WFS_CDM_POSFRONT The front output position.
3448WFS_CDM_POSREAR The rear output position.
3449Comments None.
3450CWA 16926-64:2015 (E)
345189
34526.10 WFS_SRVE_CDM_COUNTS_CHANGED
3453Description This service event is generated if the device is a compound device together with a CIM and the
3454counts in a shared cash unit have changed as a result of any CIM operation other than
3455WFS_CMD_CIM_SET_CASH_UNIT_INFO and WFS_CMD_CIM_END_EXCHANGE.
3456Event Param LPWFSCDMCOUNTSCHANGED lpCountsChanged;
3457typedef struct _wfs_cdm_counts_changed
3458{
3459USHORT usCount;
3460LPUSHORT lpusCUNumList;
3461} WFSCDMCOUNTSCHANGED, *LPWFSCDMCOUNTSCHANGED;
3462usCount
3463The size of lpusCUNumList.
3464lpusCUNumList
3465Pointer to a list of the usNumber values of the cash units whose counts have changed.
3466Comments None.
3467CWA 16926-64:2015 (E)
346890
34696.11 WFS_EXEE_CDM_PARTIALDISPENSE
3470Description This execute event is generated when a dispense operation is divided into several sub-dispense
3471operations because the hardware capacity of the CDM is exceeded.
3472Event Param LPUSHORT lpusDispNum;
3473lpusDispNum
3474Pointer to an unsigned short holding the number of sub-dispense operations into which the
3475dispense operation has been divided.
3476Comments None.
3477CWA 16926-64:2015 (E)
347891
34796.12 WFS_EXEE_CDM_SUBDISPENSEOK
3480Description This execute event is generated when one of the sub-dispense operations into which the dispense
3481operation was divided has finished successfully.
3482Event Param LPWFSCDMDENOMINATION lpDenomination;
3483lpDenomination
3484The WFSCDMDENOMINATION structure is defined in the documentation of the command
3485WFS_CMD_CDM_DENOMINATE. Note that in this case the values in this structure report the
3486amount and number of each denomination dispensed in the sub-dispense operation.
3487Comments None.
3488CWA 16926-64:2015 (E)
348992
34906.13 WFS_EXEE_CDM_INCOMPLETEDISPENSE
3491Description This execute event is generated when not all of the items specified in a
3492WFS_CMD_CDM_DISPENSE operation could be dispensed. Some of the items have been
3493dispensed. If the device has no intermediate stacker then the items that were dispensed will be in
3494customer access.
3495Event Param LPWFSCDMDENOMINATION lpDenomination;
3496lpDenomination
3497The WFSCDMDENOMINATION structure is defined in the documentation of the command
3498WFS_CMD_CDM_DENOMINATE. Note that in this case the values in this structure report the
3499amount and number of each denomination that has actually been dispensed.
3500Comments None.
3501CWA 16926-64:2015 (E)
350293
35036.14 WFS_EXEE_CDM_NOTEERROR
3504Description This execute event specifies the reason for a note detection error during the execution of a
3505command.
3506Event Param LPUSHORT lpusReason;
3507lpusReason
3508Pointer to an unsigned short holding the reason for the notes detection error. Possible values are:
3509Value Meaning
3510WFS_CDM_DOUBLENOTEDETECTED Double notes have been detected.
3511WFS_CDM_LONGNOTEDETECTED A long note has been detected.
3512WFS_CDM_SKEWEDNOTE A skewed note has been detected.
3513WFS_CDM_INCORRECTCOUNT An item counting error has occurred.
3514WFS_CDM_NOTESTOOCLOSE Notes have been detected as being too close.
3515WFS_CDM_OTHERNOTEERROR An item error not covered by the other
3516values has been detected.
3517WFS_CDM_SHORTNOTEDETECTED Short notes have been detected.
3518Comments None.
3519CWA 16926-64:2015 (E)
352094
35216.15 WFS_SRVE_CDM_ITEMSPRESENTED
3522Description This service event specifies that items have been presented to the user during a count operation
3523and need to be taken.
3524Event Param None.
3525Comments None.
3526CWA 16926-64:2015 (E)
352795
35286.16 WFS_SRVE_CDM_MEDIADETECTED
3529Description This service event is generated if media is detected during a reset (WFS_CMD_CDM_RESET).
3530The parameter on the event informs the application of the position of the media after the reset
3531completes. If the device has been unable to successfully move the items found then this parameter
3532will be NULL.
3533Event Param LPWFSCDMITEMPOSITION *lpItemPosition;
3534For a description of this parameter see section WFS_CMD_CDM_RESET.
3535Comments None.
3536CWA 16926-64:2015 (E)
353796
35386.17 WFS_EXEE_CDM_INPUT_P6
3539Description This execute event is generated if level 2 and/or level 3 notes are detected during execution of a
3540CDM command. Details about the notes detected and their associated signatures are obtained
3541through the CIM interface.
3542Event Param None.
3543Comments None.
3544CWA 16926-64:2015 (E)
354597
35466.18 WFS_SRVE_CDM_DEVICEPOSITION
3547Description This service event reports that the device has changed its position status.
3548Event Param LPWFSCDMDEVICEPOSITION lpDevicePosition;
3549typedef struct _wfs_cdm_device_position
3550{
3551WORD wPosition;
3552} WFSCDMDEVICEPOSITION, *LPWFSCDMDEVICEPOSITION;
3553wPosition
3554Position of the device as one of the following values:
3555Value Meaning
3556WFS_CDM_DEVICEINPOSITION The device is in its normal operating
3557position.
3558WFS_CDM_DEVICENOTINPOSITION The device has been removed from its
3559normal operating position.
3560WFS_CDM_DEVICEPOSUNKNOWN The position of the device cannot be
3561determined.
3562Comments None.
3563CWA 16926-64:2015 (E)
356498
35656.19 WFS_SRVE_CDM_POWER_SAVE_CHANGE
3566Description This service event specifies that the power save recovery time has changed.
3567Event Param LPWFSCDMPOWERSAVECHANGE lpPowerSaveChange;
3568typedef struct _wfs_cdm_power_save_change
3569{
3570USHORT usPowerSaveRecoveryTime;
3571} WFSCDMPOWERSAVECHANGE, *LPWFSCDMPOWERSAVECHANGE;
3572usPowerSaveRecoveryTime
3573Specifies the actual number of seconds required by the device to resume its normal operational
3574state. This value is zero if the device exited the power saving mode.
3575Comments If another device class compounded with this device enters into a power saving mode, this device
3576will automatically enter into the same power saving mode and this event will be generated.
3577CWA 16926-64:2015 (E)
357899
35796.20 WFS_EXEE_CDM_INFO_AVAILABLE
3580Description This execute event is generated when information is available for items being processed by the
3581Service Provider.
3582Event Param LPWFSCDMITEMINFOSUMMARY *lppItemInfoSummary;
3583Pointer to a NULL-terminated array of pointers to WFSCDMITEMINFOSUMMARY structures,
3584one structure for every level.
3585typedef struct _wfs_cdm_item_info_summary
3586{
3587USHORT usLevel;
3588USHORT usNumOfItems;
3589} WFSCDMITEMINFOSUMMARY, *LPWFSCDMITEMINFOSUMMARY;
3590usLevel
3591Defines the note level. Possible values are:
3592Value Meaning
3593WFS_CDM_LEVEL_1 Information for level 1 notes.
3594WFS_CDM_LEVEL_2 Information for level 2 notes.
3595WFS_CDM_LEVEL_3 Information for level 3 notes.
3596WFS_CDM_LEVEL_4 Information for level 4 notes.
3597usNumOfItems
3598Number of items classified as usLevel which have information available.
3599Comments None.
3600CWA 16926-64:2015 (E)
3601100
36026.21 WFS_EXEE_CDM_INCOMPLETERETRACT
3603Description This execute event is sent when the WFS_CMD_CDM_RETRACT or
3604WFS_CMD_CDM_RESET command has completed with an error and not all of the items have
3605been retracted.
3606Event Param LPWFSCDMINCOMPLETERETRACT lpIncompleteRetract;
3607typedef struct _wfs_cdm_incomplete_retract
3608{
3609WFSCDMITEMNUMBERLIST lpItemNumberList;
3610USHORT usReason;
3611} WFSCDMINCOMPLETERETRACT, *LPWFSCDMINCOMPLETERETRACT;
3612lpItemNumberList;
3613The WFSCDMITEMNUMBERLIST structure is defined in the description of the command
3614WFS_CMD_CDM_RETRACT. Note that in this case the values in this structure report the
3615amount and number of each denomination that were successfully moved during the command
3616prior to the failure.
3617usReason
3618The reason for not having retracted items. The value is specified as one of the following values:
3619Value Meaning
3620WFS_CDM_IRRETRACTFAILURE The retract has partially failed for a reason
3621not covered by the other reasons listed in this
3622event, for example failing to pick an item to
3623be retracted.
3624WFS_CDM_IRRETRACTAREAFULL The specified retract area (see input
3625parameter usRetractArea) has become full
3626during the retract operation.
3627WFS_CDM_IRFOREIGNITEMSDETECTED Foreign items have been detected.
3628WFS_CDM_IRINVALIDBUNCH An invalid bunch of items has been detected,
3629e.g. it is too large or could not be processed.
3630Comments None.
3631CWA 16926-64:2015 (E)
3632101
36336.22 WFS_SRVE_CDM_SHUTTERSTATUSCHANGED
3634Description Within the limitations of the hardware sensors this service event is generated whenever the status
3635of a shutter changes. The shutter status can change because of an explicit, implicit or manual
3636operation depending on how the shutter is operated.
3637Event Param LPWFSCDMSHUTTERSTATUSCHANGED lpShutterStatusChanged;
3638typedef struct _wfs_cdm_shutter_status_changed
3639{
3640WORD fwPosition;
3641WORD fwShutter;
3642} WFSCDMSHUTTERSTATUSCHANGED, *LPWFSCDMSHUTTERSTATUSCHANGED;
3643fwPosition
3644Specifies one of the CDM output positions whose shutter status has changed as one of the
3645following values:
3646Value Meaning
3647WFS_CDM_POSLEFT Left output position.
3648WFS_CDM_POSRIGHT Right output position.
3649WFS_CDM_POSCENTER Center output position.
3650WFS_CDM_POSTOP Top output position.
3651WFS_CDM_POSBOTTOM Bottom output position.
3652WFS_CDM_POSFRONT Front output position.
3653WFS_CDM_POSREAR Rear output position.
3654fwShutter
3655Specifies the new state of the shutter as one of the following values:
3656Value Meaning
3657WFS_CDM_SHTCLOSED The shutter is closed.
3658WFS_CDM_SHTOPEN The shutter is opened.
3659WFS_CDM_SHTJAMMED The shutter is jammed.
3660WFS_CDM_SHTUNKNOWN Due to a hardware error or other condition,
3661the state of the shutter cannot be determined.
3662Comments None.
3663CWA 16926-64:2015 (E)
3664102
36657. Sub-Dispensing Command Flow
3666“Sub-dispensing” of bills occur when a WFS_CMD_CDM_DISPENSE execute command is issued and the
3667required number of bills to be dispensed exceeds the CDM hardware limit for bills that can be dispensed with a
3668single “hardware level” dispense command. In this situation, the CDM Service Provider determines the number of
3669“hardware level” dispense commands required and enters what is referred to as a “sub-dispensing” operation until
3670the full amount has been dispensed. Through use of a “sub-dispensing” operation the application is fully removed
3671from “hardware level dependencies” as to how many bills can be dispensed based on hardware vendor design
3672limitations.
3673The following series of tables illustrate the steps taken on behalf of an end-user, application, XFS Service Provider,
3674and CDM hardware for sub-dispensing operations: All examples below assume the bPresent field in the
3675WFS_CMD_CDM_DISPENSE command is set to TRUE.
3676Sub-Dispensing Is Not Required - Transaction Successful
3677This table illustrates a successful WFS_CMD_CDM_DISPENSE command where sub-dispensing is not required:
3678Step End-User Application XFS SP CDM
3679Hardware
36801. User wants to
3681dispense 40 USD.
36822. WFS_CMD_CDM_DISPENSE
3683command issued.
36843. Determines that a single “hardware level”
3685dispense command can be issued for full
3686dispense request.
36874. “Hardware level” dispense command
3688issued.
36895. WFS_SRVE_CDM_SHUTTERSTATUS
3690CHANGED(WFS_CDM_SHTOPEN)
3691event generated
3692Items
3693presented.
36946. WFS_CMD_CDM_DISPENSE
3695completes successfully.
36967. User takes bills.
36978. WFS_SRVE_CDM_ITEMSTAKEN
3698event generated.
3699WFS_SRVE_CDM_SHUTTERSTATUS
3700CHANGED(WFS_CDM_SHTCLOSED)
3701event generated
3702CWA 16926-64:2015 (E)
3703103
3704Sub-Dispensing Is Required - Command Successful
3705This table illustrates a successful WFS_CMD_CDM_DISPENSE command where sub-dispensing is required:
3706Step End-User Application XFS SP CDM
3707Hardware
37081. User wants to
3709dispense 130 USD in
37101 USD
3711denominations.
37122. WFS_CMD_CDM_DISPENSE
3713command issued.
37143. Three “hardware level” dispense
3715commands are required. CDM hardware
3716is limited to dispensing 50 bills in any
3717single “hardware level” dispense.
37184. WFS_EXEE_CDM_PARTIALDISPENSE event generated.
37195. “Hardware level” dispense command
3720issued for 50 USD.
37216. WFS_SRVE_CDM_SHUTTERSTATUS
3722CHANGED(WFS_CDM_SHTOPEN)
3723event generated
3724Items
3725presented.
37267. WFS_SRVE_CDM_SUBDISPENSEOK
3727event generated.
37288. User takes bills.
37299. WFS_SRVE_CDM_ITEMSTAKEN
3730event generated.
3731WFS_SRVE_CDM_SHUTTERSTATUS
3732CHANGED(WFS_CDM_SHTCLOSED)
3733event generated
373410. “Hardware level” dispense command
3735issued for 50 USD.
373611. WFS_SRVE_CDM_SHUTTERSTATUS
3737CHANGED(WFS_CDM_SHTOPEN)
3738event generated
3739Items
3740presented.
374112. WFS_SRVE_CDM_SUBDISPENSE_O
3742K event generated.
374313. User takes bills.
374414. WFS_SRVE_CDM_ITEMSTAKEN
3745event generated.
3746WFS_SRVE_CDM_SHUTTERSTATUS
3747CHANGED(WFS_CDM_SHTCLOSED)
3748event generated
374915. “Hardware level” dispense command
3750issued for 30 USD.
375116. WFS_SRVE_CDM_SHUTTERSTATUS
3752CHANGED(WFS_CDM_SHTOPEN)
3753event generated
3754Items
3755presented.
375617. WFS_SRVE_CDM_SUBDISPENSEOK
3757event generated.
375818. WFS_CMD_CDM_DISPENSE
3759completes successfully.
376019. User takes bills.
376120. WFS_SRVE_CDM_ITEMSTAKEN
3762event generated.
3763WFS_SRVE_CDM_SHUTTERSTATUS
3764CHANGED(WFS_CDM_SHTCLOSED)
3765event generated
3766CWA 16926-64:2015 (E)
3767104
3768Sub-Dispensing Is Required - Command Unsuccessful
3769This table illustrates an unsuccessful WFS_CMD_CDM_DISPENSE command where sub-dispensing is required
3770and the end-user does not take the bills during the second “hardware level” dispense, resulting in a timeout
3771condition.
3772Step End-User Application XFS SP CDM
3773Hardware
37741. User wants to
3775dispense 130 USD in
37761 USD
3777denominations.
37782. WFS_CMD_CDM_DISPENSE
3779command issued.
37803. Three “hardware level” dispense
3781commands are required. CDM hardware
3782is limited to dispensing 50 bills in any
3783single “hardware level” dispense
3784command.
37854. WFS_EXEE_CDM_PARTIALDISPENSE event generated.
37865. “Hardware level” dispense command
3787issued for 50 USD.
37886. WFS_SRVE_CDM_SHUTTERSTATUS
3789CHANGED(WFS_CDM_SHTOPEN)
3790event generated
3791Items
3792presented
37937. WFS_SRVE_CDM_SUBDISPENSEOK
3794event generated.
37958. User takes bills.
37969. WFS_SRVE_CDM_ITEMSTAKEN
3797event generated.
3798WFS_SRVE_CDM_SHUTTERSTATUS
3799CHANGED(WFS_CDM_SHTCLOSED)
3800event generated
380110. “Hardware level” dispense command
3802issued for 50 USD.
380311. WFS_SRVE_CDM_SHUTTERSTATUS
3804CHANGED(WFS_CDM_SHTOPEN)
3805event generated
3806Items
3807presented.
380812. WFS_SRVE_CDM_SUBDISPENSEOK
3809event generated.
381013. User does not take
3811bills.
381214. Timeout occurs waiting on end-user to
3813take bills.
381415. WFS_CMD_CDM_DISPENSE
3815completes with
3816WFS_ERR_CDM_ITEMSNOTTAKEN.
3817CWA 16926-64:2015 (E)
3818105
38198. Rules for Cash Unit Exchange
3820The XFS Start and End Exchange commands should be used by applications to supply the latest information with
3821regards to cash unit replenishment state and content. This guarantees a certain amount of control to an application
3822as to which denominations are stored in which position as well as the general physical state of the logical/physical
3823cash units.
3824If a cash unit is removed from the CDM outside of the Start/End Exchange operations and subsequently reinserted
3825the status of the physical cash unit should be set to WFS_CDM_STATCUMANIP to indicate to the application that
3826the physical cash unit has been removed, reinserted and possibly tampered with. While the cash unit has this status
3827the Service Provider should not attempt to use it as part of a Dispense operation. The
3828WFS_CDM_STATCUMANIP status should not change until the next Start/End Exchange operation is performed,
3829even if the cash unit is replaced in its original position.
3830If all the physical cash units belonging to a logical cash unit are manipulated the parent logical cash unit that the
3831physical cash units belong to should also have its status set to WFS_CDM_STATCUMANIP.
3832When a cash unit is removed and/or replaced outside of the Start/End Exchange operations the original logical cash
3833unit information such as the values, currency and counts should be preserved in the Cash Unit Info structure
3834reported to the application for accounting purposes until the next Start/End Exchange operations, even if the cash
3835unit physically contains a different denomination.
3836CWA 16926-64:2015 (E)
3837106
38389. Events Associated with Cash Unit Status Changes
3839The following instances illustrate which events will be posted when the cash unit statuses change.In all cases
3840bHardwareSensor == TRUE, ulMaximum == 0 and ulMinimum == 0.
38419.1 One Physical Cash Unit Goes LOW
3842The following table describes a dispense transaction case where the status of a physical cash unit only changes from
3843WFS_CDM_STATCUOK to WFS_CDM_STATCULOW.
3844• Logical CU 1 consists of Physical CU 1 and Physical CU 2
3845Action Status/Event
38461. Logical CU 1: WFS_CDM_STATCUOK
3847- Physical CU 1: WFS_CDM_STATCUOK
3848- Physical CU 2: WFS_CDM_STATCUOK
38492. A user withdraws items.
38503. The device dispenses and presents the items from
3851Physical CU 1, whose status changes to low.
38524. The status of Logical CU 1 does not change. Logical CU 1: WFS_CDM_STATCUOK
3853- Physical CU 1: WFS_CDM_STATCULOW
3854- Physical CU 2: WFS_CDM_STATCUOK
3855WFS_SRVE_CDM_CASHUNITINFOCHANGED
3856CWA 16926-64:2015 (E)
3857107
38589.2 Last Physical Cash Unit Goes LOW
3859The following table describes a dispense transaction case where the status of a logical cash unit changes from
3860WFS_CDM_STATCUOK to WFS_CDM_STATCULOW.
3861• Logical CU 1 consists of Physical CU 1 and Physical CU 2
3862Action Status/Event
38631. Logical CU 1: WFS_CDM_STATCUOK
3864- Physical CU 1: WFS_CDM_STATCULOW
3865- Physical CU 2: WFS_CDM_STATCUOK
38662. A user withdraws items.
38673. The device dispenses and presents the items from
3868Physical CU 2, whose status changes to low.
38694. As a result, the status of Logical CU 1 changes to
3870low.
3871Logical CU 1: WFS_CDM_STATCULOW
3872- Physical CU 1: WFS_CDM_STATCULOW
3873- Physical CU 2: WFS_CDM_STATCULOW
3874WFS_SRVE_CDM_CASHUNITINFOCHANGED
3875WFS_USRE_CDM_CASHUNITTHRESHOLD
3876CWA 16926-64:2015 (E)
3877108
38789.3 One Physical Cash Unit Goes INOP
3879The following table describes a dispense transaction case where the status of a logical cash unit changes from
3880WFS_CDM_STATCUOK to WFS_CDM_STATCULOW as the result of a physical cash unit failure.
3881• Logical CU 1 consists of Physical CU 1 and Physical CU 2
3882• The device has ability to continue transaction when a problem occurs in a physical cash unit.
3883Action Status/Event
38841. Logical CU 1: WFS_CDM_STATCUOK
3885- Physical CU 1: WFS_CDM_STATCUOK
3886- Physical CU 2: WFS_CDM_STATCULOW
38872. A user withdraws items.
38883. The device tries to dispense the items from
3889Physical CU 1; however, a problem occurs in the
3890cash unit, whose status changes to inoperative.
38914. The device complements the items by dispensing
3892from Physical CU 2.
38935. As a result, the status of Logical CU 1 changes to
3894low.
3895Logical CU 1: WFS_CDM_STATCULOW
3896- Physical CU 1: WFS_CDM_STATCUINOP
3897- Physical CU 2: WFS_CDM_STATCULOW
3898WFS_EXEE_CDM_CASHUNITERROR
3899WFS_SRVE_CDM_CASHUNITINFOCHANGED
3900WFS_USRE_CDM_CASHUNITTHRESHOLD
3901CWA 16926-64:2015 (E)
3902109
39039.4 Last Physical Cash Unit Goes EMPTY
3904The following table describes a dispense transaction case where the status of a logical cash unit changes from
3905WFS_CDM_STATCULOW to WFS_CDM_STATCUEMPTY.
3906• Logical CU 1 consists of Physical CU 1 and Physical CU 2
3907Action Status/Event
39081. Logical CU 1: WFS_CDM_STATCULOW
3909- Physical CU 1: WFS_CDM_STATCUEMPTY
3910- Physical CU 2: WFS_CDM_STATCULOW
39112. A user withdraws items.
39123. The device dispenses and presents the items from
3913Physical CU 2, whose status changes to empty.
39144. As a result, the status of Logical CU 1 changes to
3915empty.
3916Logical CU 1: WFS_CDM_STATCUEMPTY
3917- Physical CU 1: WFS_CDM_STATCUEMPTY
3918- Physical CU 2: WFS_CDM_STATCUEMPTY
3919WFS_SRVE_CDM_CASHUNITINFOCHANGED
3920CWA 16926-64:2015 (E)
3921110
392210.Multiple Dispense Command Flow
3923The Multiple Dispense feature occurs when a WFS_CMD_CDM_DISPENSE execute command is issued multiple
3924times to place items on the stacker. Adding to the stacked items with a second or third dispense may be required
3925where the initially picked Cash Unit fails to fulfill the full dispense request. The application can choose to add to
3926the stacker from another Cash Unit to fulfill the request. Additionally this feature covers the requirement to
3927dispense multiple currencies with a mix number other than WFS_CDM_INDIVIDUAL. Multiple currencies can be
3928picked separately with the bunch of items assembled on the stacker before presentation to the customer.
3929Applications can refer to WFSCDMCAPS.fwMoveItems to determine if the Service Provider supports the feature. If
3930a Service Provider supports this feature but an application does not wish to use it, the application should check
3931WFSCDMSTATUS.fwIntermediateStacker to determine whether items on the stacker need to be purged prior to a
3932dispense.
3933Multiple Dispense Example ‘Out of Notes’
3934In the following example WFSCDMCAPS.fwMoveItems reports WFS_CDM_TOSTACKER. The CDM has 2
3935logical Cash Units. Cash Unit 1 has 20USD, Cash Unit 2 has 10USD. Cash Unit 1 has only 2 notes left.
3936This table illustrates multiple WFS_CMD_CDM_DISPENSE commands to fulfill a dispense request.
3937Step End-User Application XFS SP CDM
3938Hardware
39391. User wants to
3940dispense 60
3941USD.
3942WFS_CMD_CDM_DISPENSE
3943usMixNumber =
3944WFS_CDM_INDIVIDUAL
3945bPresent = FALSE
3946Request USD20x3 from Cash Unit 1.
39472 of 3 items
3948picked and
3949stacked.
39502. WFS_EXEE_CDM_INCOMPLETEDISP
3951ENSE event.
3952lpDenomination output records that
39532x20USD were stacked.
39543. WFS_CMD_CDM_DISPENSE completes
3955WFS_ERR_CDM_NOTDISPENSABLE
39564. The application decides that the
3957dispense can be fulfilled and calculates
3958the 20USD shortfall can be made up
3959from the 10USD Cash Unit.
3960WFS_CMD_CDM_DISPENSE
3961usMixNumber =
3962WFS_CDM_INDIVIDUAL
3963bPresent = FALSE
3964Request USD10x2 from Cash Unit 2.
39652 of 2 notes
3966picked and
3967stacked
3968together with
3969the items
3970already
3971stacked.
39725. WFS_CMD_CDM_DISPENSE completes
3973WFS_SUCCESS
3974lpDenomination output records that
39752x10USD were stacked.
39766. Call WFS_CMD_CDM_PRESENT WFS_SRVE_CDM_SHUTTERSTATUSCHANGED(WFS_CDM_SHTOPEN)
3977event generated
3978Items
3979presented.
39807. WFS_CMD_CDM_PRESENT completes
3981WFS_SUCCESS
39828. User takes
3983bills.
3984WFS_SRVE_CDM_ITEMSTAKEN event
3985generated.
3986WFS_SRVE_CDM_SHUTTERSTATUSCHANGED(WFS_CDM_SHTCLOSED)
3987event generated
3988CWA 16926-64:2015 (E)
3989111
3990Step End-User Application XFS SP CDM
3991Hardware
3992Multiple Dispense Example ‘Multiple Currency with Vendor Mix’
3993In the following example WFSCDMCAPS.fwMoveItems reports WFS_CDM_TOSTACKER.
3994The CDM has 2 logical Cash Units with good supply of notes in each. Cash Unit 1 has 20CHF, Cash Unit 2 has
399520EUR.
3996This table illustrates multiple WFS_CMD_CDM_DISPENSE commands to fulfill a dispense request of EUR and
3997CHF notes with vendor defined mix number. WFSCDMMIXTYPE.usMixNumber = 1.
3998Step End-User Application XFS SP CDM
3999Hardware
40001. User wants to
4001dispense 100
4002EUR and 100
4003CHF.
4004Application will split the dispense
4005stacking all money before a single
4006present.
4007WFS_CMD_CDM_DISPENSE
4008usMixNumber = 1
4009bPresent = FALSE
4010Request 100 EUR.
4011100 EUR
4012picked and
4013stacked.
40142. WFS_CMD_CDM_DISPENSE
4015completes WFS_SUCCESS
4016lpDenomination output records that
40175x20EUR were stacked.
40183. WFS_CMD_CDM_DISPENSE
4019usMixNumber =
4020WFS_CDM_INDIVIDUAL
4021bPresent = FALSE
4022Request 100 CHF.
4023100 CHF
4024picked and
4025stacked.
40264. WFS_CMD_CDM_DISPENSE
4027completes WFS_SUCCESS
4028lpDenomination output records that
40295x20CHF were stacked.
40305. Call WFS_CMD_CDM_PRESENT WFS_SRVE_CDM_SHUTTERSTATUS
4031CHANGED(WFS_CDM_SHTOPEN)
4032event generated
4033Items
4034presented.
40356. WFS_CMD_CDM_PRESENT completes
4036WFS_SUCCESS
40377. User takes
4038bills.
4039WFS_SRVE_CDM_ITEMSTAKEN
4040event generated.
4041WFS_SRVE_CDM_SHUTTERSTATUS
4042CHANGED(WFS_CDM_SHTCLOSED)
4043event generated
4044CWA 16926-64:2015 (E)
4045112
40469.11. C - Header file
4047/******************************************************************************
4048* *
4049* xfscdm.h XFS - Cash Dispenser (CDM) definitions *
4050* *
4051* Version 3.2030 (March 02 201119 2015) *
4052* *
4053******************************************************************************/
4054#ifndef __INC_XFSCDM__H
4055#define __INC_XFSCDM__H
4056#ifdef __cplusplus
4057extern "C" {
4058#endif
4059#include <xfsapi.h>
4060/* be aware of alignment */
4061#pragma pack (push, 1)
4062/* values of WFSCDMCAPS.wClass */
4063#define WFS_SERVICE_CLASS_CDM (3)
4064#define WFS_SERVICE_CLASS_VERSION_CDM 0x14030x1E03 /* Version 3.2030
4065*/
4066#define WFS_SERVICE_CLASS_NAME_CDM "CDM"
4067#define CDM_SERVICE_OFFSET (WFS_SERVICE_CLASS_CDM * 100)
4068/* CDM Info Commands */
4069#define WFS_INF_CDM_STATUS (CDM_SERVICE_OFFSET + 1)
4070#define WFS_INF_CDM_CAPABILITIES (CDM_SERVICE_OFFSET + 2)
4071#define WFS_INF_CDM_CASH_UNIT_INFO (CDM_SERVICE_OFFSET + 3)
4072#define WFS_INF_CDM_TELLER_INFO (CDM_SERVICE_OFFSET + 4)
4073#define WFS_INF_CDM_CURRENCY_EXP (CDM_SERVICE_OFFSET + 6)
4074#define WFS_INF_CDM_MIX_TYPES (CDM_SERVICE_OFFSET + 7)
4075#define WFS_INF_CDM_MIX_TABLE (CDM_SERVICE_OFFSET + 8)
4076#define WFS_INF_CDM_PRESENT_STATUS (CDM_SERVICE_OFFSET + 9)
4077#define WFS_INF_CDM_GET_ITEM_INFO (CDM_SERVICE_OFFSET + 10)
4078#define WFS_INF_CDM_GET_BLACKLIST (CDM_SERVICE_OFFSET + 11)
4079#define WFS_INF_CDM_GET_ALL_ITEMS_INFO (CDM_SERVICE_OFFSET + 12)
4080/* CDM Execute Commands */
4081#define WFS_CMD_CDM_DENOMINATE (CDM_SERVICE_OFFSET + 1)
4082#define WFS_CMD_CDM_DISPENSE (CDM_SERVICE_OFFSET + 2)
4083#define WFS_CMD_CDM_PRESENT (CDM_SERVICE_OFFSET + 3)
4084#define WFS_CMD_CDM_REJECT (CDM_SERVICE_OFFSET + 4)
4085#define WFS_CMD_CDM_RETRACT (CDM_SERVICE_OFFSET + 5)
4086#define WFS_CMD_CDM_OPEN_SHUTTER (CDM_SERVICE_OFFSET + 7)
4087#define WFS_CMD_CDM_CLOSE_SHUTTER (CDM_SERVICE_OFFSET + 8)
4088#define WFS_CMD_CDM_SET_TELLER_INFO (CDM_SERVICE_OFFSET + 9)
4089#define WFS_CMD_CDM_SET_CASH_UNIT_INFO (CDM_SERVICE_OFFSET + 10)
4090#define WFS_CMD_CDM_START_EXCHANGE (CDM_SERVICE_OFFSET + 11)
4091#define WFS_CMD_CDM_END_EXCHANGE (CDM_SERVICE_OFFSET + 12)
4092#define WFS_CMD_CDM_OPEN_SAFE_DOOR (CDM_SERVICE_OFFSET + 13)
4093#define WFS_CMD_CDM_CALIBRATE_CASH_UNIT (CDM_SERVICE_OFFSET + 15)
4094#define WFS_CMD_CDM_SET_MIX_TABLE (CDM_SERVICE_OFFSET + 20)
4095#define WFS_CMD_CDM_RESET (CDM_SERVICE_OFFSET + 21)
4096#define WFS_CMD_CDM_TEST_CASH_UNITS (CDM_SERVICE_OFFSET + 22)
4097#define WFS_CMD_CDM_COUNT (CDM_SERVICE_OFFSET + 23)
4098#define WFS_CMD_CDM_SET_GUIDANCE_LIGHT (CDM_SERVICE_OFFSET + 24)
4099#define WFS_CMD_CDM_POWER_SAVE_CONTROL (CDM_SERVICE_OFFSET + 25)
4100#define WFS_CMD_CDM_PREPARE_DISPENSE (CDM_SERVICE_OFFSET + 26)
4101#define WFS_CMD_CDM_SET_BLACKLIST (CDM_SERVICE_OFFSET + 27)
4102CWA 16926-64:2015 (E)
4103113
4104#define WFS_CMD_CDM_SYNCHRONIZE_COMMAND (CDM_SERVICE_OFFSET + 28)
4105/* CDM Messages */
4106#define WFS_SRVE_CDM_SAFEDOOROPEN (CDM_SERVICE_OFFSET + 1)
4107#define WFS_SRVE_CDM_SAFEDOORCLOSED (CDM_SERVICE_OFFSET + 2)
4108#define WFS_USRE_CDM_CASHUNITTHRESHOLD (CDM_SERVICE_OFFSET + 3)
4109#define WFS_SRVE_CDM_CASHUNITINFOCHANGED (CDM_SERVICE_OFFSET + 4)
4110#define WFS_SRVE_CDM_TELLERINFOCHANGED (CDM_SERVICE_OFFSET + 5)
4111#define WFS_EXEE_CDM_DELAYEDDISPENSE (CDM_SERVICE_OFFSET + 6)
4112#define WFS_EXEE_CDM_STARTDISPENSE (CDM_SERVICE_OFFSET + 7)
4113#define WFS_EXEE_CDM_CASHUNITERROR (CDM_SERVICE_OFFSET + 8)
4114#define WFS_SRVE_CDM_ITEMSTAKEN (CDM_SERVICE_OFFSET + 9)
4115#define WFS_EXEE_CDM_PARTIALDISPENSE (CDM_SERVICE_OFFSET + 10)
4116#define WFS_EXEE_CDM_SUBDISPENSEOK (CDM_SERVICE_OFFSET + 11)
4117#define WFS_SRVE_CDM_ITEMSPRESENTED (CDM_SERVICE_OFFSET + 13)
4118#define WFS_SRVE_CDM_COUNTS_CHANGED (CDM_SERVICE_OFFSET + 14)
4119#define WFS_EXEE_CDM_INCOMPLETEDISPENSE (CDM_SERVICE_OFFSET + 15)
4120#define WFS_EXEE_CDM_NOTEERROR (CDM_SERVICE_OFFSET + 16)
4121#define WFS_SRVE_CDM_MEDIADETECTED (CDM_SERVICE_OFFSET + 17)
4122#define WFS_EXEE_CDM_INPUT_P6 (CDM_SERVICE_OFFSET + 18)
4123#define WFS_SRVE_CDM_DEVICEPOSITION (CDM_SERVICE_OFFSET + 19)
4124#define WFS_SRVE_CDM_POWER_SAVE_CHANGE (CDM_SERVICE_OFFSET + 20)
4125#define WFS_EXEE_CDM_INFO_AVAILABLE (CDM_SERVICE_OFFSET + 21)
4126#define WFS_EXEE_CDM_INCOMPLETERETRACT (CDM_SERVICE_OFFSET + 22)
4127#define WFS_SRVE_CDM_SHUTTERSTATUSCHANGED (CDM_SERVICE_OFFSET + 23)
4128/* values of WFSCDMSTATUS.fwDevice */
4129#define WFS_CDM_DEVONLINE WFS_STAT_DEVONLINE
4130#define WFS_CDM_DEVOFFLINE WFS_STAT_DEVOFFLINE
4131#define WFS_CDM_DEVPOWEROFF WFS_STAT_DEVPOWEROFF
4132#define WFS_CDM_DEVNODEVICE WFS_STAT_DEVNODEVICE
4133#define WFS_CDM_DEVHWERROR WFS_STAT_DEVHWERROR
4134#define WFS_CDM_DEVUSERERROR WFS_STAT_DEVUSERERROR
4135#define WFS_CDM_DEVBUSY WFS_STAT_DEVBUSY
4136#define WFS_CDM_DEVFRAUDATTEMPT WFS_STAT_DEVFRAUDATTEMPT
4137#define WFS_CDM_DEVPOTENTIALFRAUD WFS_STAT_DEVPOTENTIALFRAUD
4138/* values of WFSCDMSTATUS.fwSafeDoor */
4139#define WFS_CDM_DOORNOTSUPPORTED (1)
4140#define WFS_CDM_DOOROPEN (2)
4141#define WFS_CDM_DOORCLOSED (3)
4142#define WFS_CDM_DOORUNKNOWN (5)
4143/* values of WFSCDMSTATUS.fwDispenser */
4144#define WFS_CDM_DISPOK (0)
4145#define WFS_CDM_DISPCUSTATE (1)
4146#define WFS_CDM_DISPCUSTOP (2)
4147#define WFS_CDM_DISPCUUNKNOWN (3)
4148/* values of WFSCDMSTATUS.fwIntermediateStacker */
4149#define WFS_CDM_ISEMPTY (0)
4150#define WFS_CDM_ISNOTEMPTY (1)
4151#define WFS_CDM_ISNOTEMPTYCUST (2)
4152#define WFS_CDM_ISNOTEMPTYUNK (3)
4153#define WFS_CDM_ISUNKNOWN (4)
4154#define WFS_CDM_ISNOTSUPPORTED (5)
4155/* Size and max index of dwGuidLights array */
4156#define WFS_CDM_GUIDLIGHTS_SIZE (32)
4157#define WFS_CDM_GUIDLIGHTS_MAX (WFS_CDM_GUIDLIGHTS_SIZE - 1)
4158/* Indices of WFSCDMSTATUS.dwGuidLights [...]
4159CWA 16926-64:2015 (E)
4160114
4161 WFSCDMCAPS.dwGuidLights [...] */
4162#define WFS_CDM_GUIDANCE_POSOUTNULL (0)
4163#define WFS_CDM_GUIDANCE_POSOUTLEFT (1)
4164#define WFS_CDM_GUIDANCE_POSOUTRIGHT (2)
4165#define WFS_CDM_GUIDANCE_POSOUTCENTER (3)
4166#define WFS_CDM_GUIDANCE_POSOUTTOP (4)
4167#define WFS_CDM_GUIDANCE_POSOUTBOTTOM (5)
4168#define WFS_CDM_GUIDANCE_POSOUTFRONT (6)
4169#define WFS_CDM_GUIDANCE_POSOUTREAR (7)
4170/* Values of WFSCDMSTATUS.dwGuidLights [...]
4171 WFSCDMCAPS.dwGuidLights [...] */
4172#define WFS_CDM_GUIDANCE_OFF (0x00000001)
4173#define WFS_CDM_GUIDANCE_SLOW_FLASH (0x00000004)
4174#define WFS_CDM_GUIDANCE_MEDIUM_FLASH (0x00000008)
4175#define WFS_CDM_GUIDANCE_QUICK_FLASH (0x00000010)
4176#define WFS_CDM_GUIDANCE_CONTINUOUS (0x00000080)
4177#define WFS_CDM_GUIDANCE_RED (0x00000100)
4178#define WFS_CDM_GUIDANCE_GREEN (0x00000200)
4179#define WFS_CDM_GUIDANCE_YELLOW (0x00000400)
4180#define WFS_CDM_GUIDANCE_BLUE (0x00000800)
4181#define WFS_CDM_GUIDANCE_CYAN (0x00001000)
4182#define WFS_CDM_GUIDANCE_MAGENTA (0x00002000)
4183#define WFS_CDM_GUIDANCE_WHITE (0x00004000)
4184#define WFS_CDM_GUIDANCE_EXIT (0x00200000)
4185/* Values of WFSCDMSTATUS.dwGuidLights [...]
4186 WFSCDMCAPS.dwGuidLights [...] */
4187#define WFS_CDM_GUIDANCE_NOT_AVAILABLE (0x0000)
4188/* values of WFSCDMSTATUS.wDevicePosition
4189 WFSCDMDEVICEPOSITION.wPosition */
4190#define WFS_CDM_DEVICEINPOSITION (0)
4191#define WFS_CDM_DEVICENOTINPOSITION (1)
4192#define WFS_CDM_DEVICEPOSUNKNOWN (2)
4193#define WFS_CDM_DEVICEPOSNOTSUPP (3)
4194/* values of WFSCDMOUTPOS.fwShutter */
4195#define WFS_CDM_SHTCLOSED (0)
4196#define WFS_CDM_SHTOPEN (1)
4197#define WFS_CDM_SHTJAMMED (2)
4198#define WFS_CDM_SHTUNKNOWN (3)
4199#define WFS_CDM_SHTNOTSUPPORTED (4)
4200/* values of WFSCDMOUTPOS.fwPositionStatus */
4201#define WFS_CDM_PSEMPTY (0)
4202#define WFS_CDM_PSNOTEMPTY (1)
4203#define WFS_CDM_PSUNKNOWN (2)
4204#define WFS_CDM_PSNOTSUPPORTED (3)
4205/* values of WFSCDMOUTPOS.fwTransport */
4206#define WFS_CDM_TPOK (0)
4207#define WFS_CDM_TPINOP (1)
4208#define WFS_CDM_TPUNKNOWN (2)
4209#define WFS_CDM_TPNOTSUPPORTED (3)
4210/* values of WFSCDMOUTPOS.fwTransportStatus */
4211#define WFS_CDM_TPSTATEMPTY (0)
4212#define WFS_CDM_TPSTATNOTEMPTY (1)
4213#define WFS_CDM_TPSTATNOTEMPTYCUST (2)
4214#define WFS_CDM_TPSTATNOTEMPTY_UNK (3)
4215#define WFS_CDM_TPSTATNOTSUPPORTED (4)
4216CWA 16926-64:2015 (E)
4217115
4218/* values of WFSCDMOUTPOS.fwJammedShutterPosition */
4219#define WFS_CDM_SHUTTERPOS_NOTSUPPORTED (0)
4220#define WFS_CDM_SHUTTERPOS_NOTJAMMED (1)
4221#define WFS_CDM_SHUTTERPOS_OPEN (2)
4222#define WFS_CDM_SHUTTERPOS_PARTIALLY_OPEN (3)
4223#define WFS_CDM_SHUTTERPOS_CLOSED (4)
4224#define WFS_CDM_SHUTTERPOS_UNKNOWN (5)
4225/* values of WFSCDMCAPS.fwType */
4226#define WFS_CDM_TELLERBILL (0)
4227#define WFS_CDM_SELFSERVICEBILL (1)
4228#define WFS_CDM_TELLERCOIN (2)
4229#define WFS_CDM_SELFSERVICECOIN (3)
4230/* values of WFSCDMCAPS.fwRetractAreas,
4231 WFSCDMRETRACT.usRetractArea */
4232#define WFS_CDM_RA_RETRACT (0x0001)
4233#define WFS_CDM_RA_TRANSPORT (0x0002)
4234#define WFS_CDM_RA_STACKER (0x0004)
4235#define WFS_CDM_RA_REJECT (0x0008)
4236#define WFS_CDM_RA_NOTSUPP (0x0010)
4237#define WFS_CDM_RA_ITEMCASSETTE (0x0020)
4238/* values of WFSCDMCAPS.fwRetractTransportActions,
4239 WFSCDMCAPS.fwRetractStackerActions */
4240#define WFS_CDM_PRESENT (0x0001)
4241#define WFS_CDM_RETRACT (0x0002)
4242#define WFS_CDM_REJECT (0x0004)
4243#define WFS_CDM_NOTSUPP (0x0008)
4244#define WFS_CDM_ITEMCASSETTE (0x0010)
4245/* values of WFSCDMCAPS.fwMoveItems */
4246#define WFS_CDM_FROMCU (0x0001)
4247#define WFS_CDM_TOCU (0x0002)
4248#define WFS_CDM_TOTRANSPORT (0x0004)
4249#define WFS_CDM_TOSTACKER (0x0008)
4250/* values of WFSCDMCASHUNIT.usType */
4251#define WFS_CDM_TYPENA (1)
4252#define WFS_CDM_TYPEREJECTCASSETTE (2)
4253#define WFS_CDM_TYPEBILLCASSETTE (3)
4254#define WFS_CDM_TYPECOINCYLINDER (4)
4255#define WFS_CDM_TYPECOINDISPENSER (5)
4256#define WFS_CDM_TYPERETRACTCASSETTE (6)
4257#define WFS_CDM_TYPECOUPON (7)
4258#define WFS_CDM_TYPEDOCUMENT (8)
4259#define WFS_CDM_TYPEREPCONTAINER (11)
4260#define WFS_CDM_TYPERECYCLING (12)
4261/* values of WFSCDMCASHUNIT.usStatus */
4262#define WFS_CDM_STATCUOK (0)
4263#define WFS_CDM_STATCUFULL (1)
4264#define WFS_CDM_STATCUHIGH (2)
4265#define WFS_CDM_STATCULOW (3)
4266#define WFS_CDM_STATCUEMPTY (4)
4267#define WFS_CDM_STATCUINOP (5)
4268#define WFS_CDM_STATCUMISSING (6)
4269#define WFS_CDM_STATCUNOVAL (7)
4270#define WFS_CDM_STATCUNOREF (8)
4271#define WFS_CDM_STATCUMANIP (9)
4272/* values of WFSCDMMIXTYPE.usMixType */
4273CWA 16926-64:2015 (E)
4274116
4275#define WFS_CDM_MIXALGORITHM (1)
4276#define WFS_CDM_MIXTABLE (2)
4277/* values of WFSCDMMIXTYPE.usMixNumber */
4278#define WFS_CDM_INDIVIDUAL (0)
4279/* values of WFSCDMMIXTYPE.usSubType (predefined mix algorithms) */
4280#define WFS_CDM_MIX_MINIMUM_NUMBER_OF_BILLS (1)
4281#define WFS_CDM_MIX_EQUAL_EMPTYING_OF_CASH_UNITS (2)
4282#define WFS_CDM_MIX_MAXIMUM_NUMBER_OF_CASH_UNITS (3)
4283/* values of WFSCDMPRESENTSTATUS.wPresentState */
4284#define WFS_CDM_PRESENTED (1)
4285#define WFS_CDM_NOTPRESENTED (2)
4286#define WFS_CDM_UNKNOWN (3)
4287/* values of WFSCDMDISPENSE.fwPosition,
4288 WFSCDMCAPS.fwPositions,
4289 WFSCDMOUTPOS.fwPosition,
4290 WFSCDMTELLERDETAILS.fwOutputPosition,
4291 WFSCDMPHYSICALCU.fwPosition */
4292#define WFS_CDM_POSNULL (0x0000)
4293#define WFS_CDM_POSLEFT (0x0001)
4294#define WFS_CDM_POSRIGHT (0x0002)
4295#define WFS_CDM_POSCENTER (0x0004)
4296#define WFS_CDM_POSTOP (0x0040)
4297#define WFS_CDM_POSBOTTOM (0x0080)
4298#define WFS_CDM_POSFRONT (0x0800)
4299#define WFS_CDM_POSREAR (0x1000)
4300/* additional values of WFSCDMPHYSICALCU.fwPosition */
4301#define WFS_CDM_POSREJECT (0x0100)
4302/* values of WFSCDMTELLERDETAILS.ulInputPosition */
4303#define WFS_CDM_POSINLEFT (0x0001)
4304#define WFS_CDM_POSINRIGHT (0x0002)
4305#define WFS_CDM_POSINCENTER (0x0004)
4306#define WFS_CDM_POSINTOP (0x0008)
4307#define WFS_CDM_POSINBOTTOM (0x0010)
4308#define WFS_CDM_POSINFRONT (0x0020)
4309#define WFS_CDM_POSINREAR (0x0040)
4310/* values of fwExchangeType */
4311#define WFS_CDM_EXBYHAND (0x0001)
4312#define WFS_CDM_EXTOCASSETTES (0x0002)
4313/* values of WFSCDMTELLERUPDATE.usAction */
4314#define WFS_CDM_CREATE_TELLER (1)
4315#define WFS_CDM_MODIFY_TELLER (2)
4316#define WFS_CDM_DELETE_TELLER (3)
4317/* values of WFSCDMCUERROR.wFailure */
4318#define WFS_CDM_CASHUNITEMPTY (1)
4319#define WFS_CDM_CASHUNITERROR (2)
4320#define WFS_CDM_CASHUNITFULL (4)
4321#define WFS_CDM_CASHUNITLOCKED (5)
4322#define WFS_CDM_CASHUNITINVALID (6)
4323#define WFS_CDM_CASHUNITCONFIG (7)
4324#define WFS_CDM_CASHUNITNOTCONF (8)
4325/* values of lpusReason in WFS_EXEE_CDM_NOTEERROR */
4326CWA 16926-64:2015 (E)
4327117
4328#define WFS_CDM_DOUBLENOTEDETECTED (1)
4329#define WFS_CDM_LONGNOTEDETECTED (2)
4330#define WFS_CDM_SKEWEDNOTE (3)
4331#define WFS_CDM_INCORRECTCOUNT (4)
4332#define WFS_CDM_NOTESTOOCLOSE (5)
4333#define WFS_CDM_OTHERNOTEERROR (6)
4334#define WFS_CDM_SHORTNOTEDETECTED (7)
4335/* values of WFSCDMPREPAREDISPENSE.wAction */
4336#define WFS_CDM_START (1)
4337#define WFS_CDM_STOP (2)
4338/* values of WFSCDMSTATUS.wAntiFraudModule */
4339#define WFS_CDM_AFMNOTSUPP (0)
4340#define WFS_CDM_AFMOK (1)
4341#define WFS_CDM_AFMINOP (2)
4342#define WFS_CDM_AFMDEVICEDETECTED (3)
4343#define WFS_CDM_AFMUNKNOWN (4)
4344/* values of WFSCDMGETITEMINFO.usLevel,
4345 WFSCDMITEMINFOSUMMARY.usLevel,
4346 WFSCDMGETALLITEMSINFO.usLevel,
4347 WFSCDMITEMINFOALL.usLevel */
4348#define WFS_CDM_LEVEL_1 (1)
4349#define WFS_CDM_LEVEL_2 (2)
4350#define WFS_CDM_LEVEL_3 (3)
4351#define WFS_CDM_LEVEL_4 (4)
4352/* values of WFSCDMITEMINFOALL.usLevel */
4353#define WFS_CDM_LEVEL_ALL (0)
4354/* values for WFSCDMGETITEMINFO.dwItemInfoType */
4355#define WFS_CDM_ITEM_SERIALNUMBER (0x00000001)
4356#define WFS_CDM_ITEM_SIGNATURE (0x00000002)
4357#define WFS_CDM_ITEM_IMAGEFILE (0x00000004)
4358/* values of lpusReason in WFS_EXEE_CDM_INCOMPLETERETRACT */
4359#define WFS_CDM_IRRETRACTFAILURE (1)
4360#define WFS_CDM_IRRETRACTAREAFULL (2)
4361#define WFS_CDM_IRFOREIGNITEMSDETECTED (3)
4362#define WFS_CDM_IRINVALIDBUNCH (4)
4363/* values for WFSCDMITEMINFOALL.wOnBlacklist */
4364#define WFS_CDM_ONBLACKLIST (0x0001)
4365#define WFS_CDM_NOTONBLACKLIST (0x0002)
4366#define WFS_CDM_BLACKLISTUNKNOWN (0x0003)
4367/* values for WFSCDMITEMINFOALL.wItemLocation */
4368#define WFS_CDM_LOCATION_DEVICE (0x0001)
4369#define WFS_CDM_LOCATION_CASHUNIT (0x0002)
4370#define WFS_CDM_LOCATION_CUSTOMER (0x0003)
4371#define WFS_CDM_LOCATION_UNKNOWN (0x0004)
4372/* XFS CDM Errors */
4373#define WFS_ERR_CDM_INVALIDCURRENCY (-(CDM_SERVICE_OFFSET + 0))
4374#define WFS_ERR_CDM_INVALIDTELLERID (-(CDM_SERVICE_OFFSET + 1))
4375#define WFS_ERR_CDM_CASHUNITERROR (-(CDM_SERVICE_OFFSET + 2))
4376#define WFS_ERR_CDM_INVALIDDENOMINATION (-(CDM_SERVICE_OFFSET + 3))
4377#define WFS_ERR_CDM_INVALIDMIXNUMBER (-(CDM_SERVICE_OFFSET + 4))
4378#define WFS_ERR_CDM_NOCURRENCYMIX (-(CDM_SERVICE_OFFSET + 5))
4379CWA 16926-64:2015 (E)
4380118
4381#define WFS_ERR_CDM_NOTDISPENSABLE (-(CDM_SERVICE_OFFSET + 6))
4382#define WFS_ERR_CDM_TOOMANYITEMS (-(CDM_SERVICE_OFFSET + 7))
4383#define WFS_ERR_CDM_UNSUPPOSITION (-(CDM_SERVICE_OFFSET + 8))
4384#define WFS_ERR_CDM_SAFEDOOROPEN (-(CDM_SERVICE_OFFSET + 10))
4385#define WFS_ERR_CDM_SHUTTERNOTOPEN (-(CDM_SERVICE_OFFSET + 12))
4386#define WFS_ERR_CDM_SHUTTEROPEN (-(CDM_SERVICE_OFFSET + 13))
4387#define WFS_ERR_CDM_SHUTTERCLOSED (-(CDM_SERVICE_OFFSET + 14))
4388#define WFS_ERR_CDM_INVALIDCASHUNIT (-(CDM_SERVICE_OFFSET + 15))
4389#define WFS_ERR_CDM_NOITEMS (-(CDM_SERVICE_OFFSET + 16))
4390#define WFS_ERR_CDM_EXCHANGEACTIVE (-(CDM_SERVICE_OFFSET + 17))
4391#define WFS_ERR_CDM_NOEXCHANGEACTIVE (-(CDM_SERVICE_OFFSET + 18))
4392#define WFS_ERR_CDM_SHUTTERNOTCLOSED (-(CDM_SERVICE_OFFSET + 19))
4393#define WFS_ERR_CDM_PRERRORNOITEMS (-(CDM_SERVICE_OFFSET + 20))
4394#define WFS_ERR_CDM_PRERRORITEMS (-(CDM_SERVICE_OFFSET + 21))
4395#define WFS_ERR_CDM_PRERRORUNKNOWN (-(CDM_SERVICE_OFFSET + 22))
4396#define WFS_ERR_CDM_ITEMSTAKEN (-(CDM_SERVICE_OFFSET + 23))
4397#define WFS_ERR_CDM_INVALIDMIXTABLE (-(CDM_SERVICE_OFFSET + 27))
4398#define WFS_ERR_CDM_OUTPUTPOS_NOT_EMPTY (-(CDM_SERVICE_OFFSET + 28))
4399#define WFS_ERR_CDM_INVALIDRETRACTPOSITION (-(CDM_SERVICE_OFFSET + 29))
4400#define WFS_ERR_CDM_NOTRETRACTAREA (-(CDM_SERVICE_OFFSET + 30))
4401#define WFS_ERR_CDM_NOCASHBOXPRESENT (-(CDM_SERVICE_OFFSET + 33))
4402#define WFS_ERR_CDM_AMOUNTNOTINMIXTABLE (-(CDM_SERVICE_OFFSET + 34))
4403#define WFS_ERR_CDM_ITEMSNOTTAKEN (-(CDM_SERVICE_OFFSET + 35))
4404#define WFS_ERR_CDM_ITEMSLEFT (-(CDM_SERVICE_OFFSET + 36))
4405#define WFS_ERR_CDM_INVALID_PORT (-(CDM_SERVICE_OFFSET + 37))
4406#define WFS_ERR_CDM_POWERSAVETOOSHORT (-(CDM_SERVICE_OFFSET + 38))
4407#define WFS_ERR_CDM_POWERSAVEMEDIAPRESENT (-(CDM_SERVICE_OFFSET + 39))
4408#define WFS_ERR_CDM_POSITION_NOT_EMPTY (-(CDM_SERVICE_OFFSET + 40))
4409#define WFS_ERR_CDM_INCOMPLETERETRACT (-(CDM_SERVICE_OFFSET + 41))
4410#define WFS_ERR_CDM_COMMANDUNSUPP (-(CDM_SERVICE_OFFSET + 42))
4411#define WFS_ERR_CDM_SYNCHRONIZEUNSUPP (-(CDM_SERVICE_OFFSET + 43))
4412/*=================================================================*/
4413/* CDM Info Command Structures */
4414/*=================================================================*/
4415typedef struct _wfs_cdm_position
4416{
4417 WORD fwPosition;
4418 WORD fwShutter;
4419 WORD fwPositionStatus;
4420 WORD fwTransport;
4421 WORD fwTransportStatus;
4422 WORD fwJammedShutterPosition;
4423} WFSCDMOUTPOS, *LPWFSCDMOUTPOS;
4424typedef struct _wfs_cdm_status
4425{
4426 WORD fwDevice;
4427 WORD fwSafeDoor;
4428 WORD fwDispenser;
4429 WORD fwIntermediateStacker;
4430 LPWFSCDMOUTPOS *lppPositions;
4431 LPSTR lpszExtra;
4432 DWORD dwGuidLights[WFS_CDM_GUIDLIGHTS_SIZE];
4433 WORD wDevicePosition;
4434 USHORT usPowerSaveRecoveryTime;
4435 WORD wAntiFraudModule;
4436} WFSCDMSTATUS, *LPWFSCDMSTATUS;
4437typedef struct _wfs_cdm_caps
4438{
4439 WORD wClass;
4440 WORD fwType;
4441 WORD wMaxDispenseItems;
4442 BOOL bCompound;
4443 BOOL bShutter;
4444 BOOL bShutterControl;
4445 WORD fwRetractAreas;
4446CWA 16926-64:2015 (E)
4447119
4448 WORD fwRetractTransportActions;
4449 WORD fwRetractStackerActions;
4450 BOOL bSafeDoor;
4451 BOOL bCashBox;
4452 BOOL bIntermediateStacker;
4453 BOOL bItemsTakenSensor;
4454 WORD fwPositions;
4455 WORD fwMoveItems;
4456 WORD fwExchangeType;
4457 LPSTR lpszExtra;
4458 DWORD dwGuidLights[WFS_CDM_GUIDLIGHTS_SIZE];
4459 BOOL bPowerSaveControl;
4460 BOOL bPrepareDispense;
4461 BOOL bAntiFraudModule;
4462 DWORD dwItemInfoTypes;
4463 BOOL bBlacklist;
4464 LPDWORD lpdwSynchronizableCommands;
4465} WFSCDMCAPS, *LPWFSCDMCAPS;
4466typedef struct _wfs_cdm_physicalcu
4467{
4468 LPSTR lpPhysicalPositionName;
4469 CHAR cUnitID[5];
4470 ULONG ulInitialCount;
4471 ULONG ulCount;
4472 ULONG ulRejectCount;
4473 ULONG ulMaximum;
4474 USHORT usPStatus;
4475 BOOL bHardwareSensor;
4476 ULONG ulDispensedCount;
4477 ULONG ulPresentedCount;
4478 ULONG ulRetractedCount;
4479} WFSCDMPHCU, *LPWFSCDMPHCU;
4480typedef struct _wfs_cdm_cashunit
4481{
4482 USHORT usNumber;
4483 USHORT usType;
4484 LPSTR lpszCashUnitName;
4485 CHAR cUnitID[5];
4486 CHAR cCurrencyID[3];
4487 ULONG ulValues;
4488 ULONG ulInitialCount;
4489 ULONG ulCount;
4490 ULONG ulRejectCount;
4491 ULONG ulMinimum;
4492 ULONG ulMaximum;
4493 BOOL bAppLock;
4494 USHORT usStatus;
4495 USHORT usNumPhysicalCUs;
4496 LPWFSCDMPHCU *lppPhysical;
4497 ULONG ulDispensedCount;
4498 ULONG ulPresentedCount;
4499 ULONG ulRetractedCount;
4500} WFSCDMCASHUNIT, *LPWFSCDMCASHUNIT;
4501typedef struct _wfs_cdm_cu_info
4502{
4503 USHORT usTellerID;
4504 USHORT usCount;
4505 LPWFSCDMCASHUNIT *lppList;
4506} WFSCDMCUINFO, *LPWFSCDMCUINFO;
4507typedef struct _wfs_cdm_teller_info
4508{
4509 USHORT usTellerID;
4510 CHAR cCurrencyID[3];
4511} WFSCDMTELLERINFO, *LPWFSCDMTELLERINFO;
4512typedef struct _wfs_cdm_teller_totals
4513CWA 16926-64:2015 (E)
4514120
4515{
4516 charCHAR cCurrencyID[3];
4517 ULONG ulItemsReceived;
4518 ULONG ulItemsDispensed;
4519 ULONG ulCoinsReceived;
4520 ULONG ulCoinsDispensed;
4521 ULONG ulCashBoxReceived;
4522 ULONG ulCashBoxDispensed;
4523} WFSCDMTELLERTOTALS, *LPWFSCDMTELLERTOTALS;
4524typedef struct _wfs_cdm_teller_details
4525{
4526 USHORT usTellerID;
4527 ULONG ulInputPosition;
4528 WORD fwOutputPosition;
4529 LPWFSCDMTELLERTOTALS *lppTellerTotals;
4530} WFSCDMTELLERDETAILS, *LPWFSCDMTELLERDETAILS;
4531typedef struct _wfs_cdm_currency_exp
4532{
4533 CHAR cCurrencyID[3];
4534 SHORT sExponent;
4535} WFSCDMCURRENCYEXP, *LPWFSCDMCURRENCYEXP;
4536typedef struct _wfs_cdm_mix_type
4537{
4538 USHORT usMixNumber;
4539 USHORT usMixType;
4540 USHORT usSubType;
4541 LPSTR lpszName;
4542} WFSCDMMIXTYPE, *LPWFSCDMMIXTYPE;
4543typedef struct _wfs_cdm_mix_row
4544{
4545 ULONG ulAmount;
4546 LPUSHORT lpusMixture;
4547} WFSCDMMIXROW, *LPWFSCDMMIXROW;
4548typedef struct _wfs_cdm_mix_table
4549{
4550 USHORT usMixNumber;
4551 LPSTR lpszName;
4552 USHORT usRows;
4553 USHORT usCols;
4554 LPULONG lpulMixHeader;
4555 LPWFSCDMMIXROW *lppMixRows;
4556} WFSCDMMIXTABLE, *LPWFSCDMMIXTABLE;
4557typedef struct _wfs_cdm_denomination
4558{
4559 CHAR cCurrencyID[3];
4560 ULONG ulAmount;
4561 USHORT usCount;
4562 LPULONG lpulValues;
4563 ULONG ulCashBox;
4564} WFSCDMDENOMINATION, *LPWFSCDMDENOMINATION;
4565typedef struct _wfs_cdm_present_status
4566{
4567 LPWFSCDMDENOMINATION lpDenomination;
4568 WORD wPresentState;
4569 LPSTR lpszExtra;
4570} WFSCDMPRESENTSTATUS, *LPWFSCDMPRESENTSTATUS;
4571typedef struct _wfs_cdm_signature
4572{
4573 ULONG ulLength;
4574 LPVOID lpData;
4575} WFSCDMSIGNATURE, *LPWFSCDMSIGNATURE;
4576CWA 16926-64:2015 (E)
4577121
4578typedef struct _wfs_cdm_get_item_info
4579{
4580 USHORT usLevel;
4581 USHORT usIndex;
4582 DWORD dwItemInfoType;
4583} WFSCDMGETITEMINFO, *LPWFSCDMGETITEMINFO;
4584typedef struct _wfs_cdm_item_info
4585{
4586 CHAR cCurrencyID[3];
4587 ULONG ulValue;
4588 USHORT usRelease;
4589 LPWSTR lpszSerialNumber;
4590 LPWFSCDMSIGNATURE lpSignature;
4591 LPSTR lpszImageFileName;
4592} WFSCDMITEMINFO, *LPWFSCDMITEMINFO;
4593typedef struct _wfs_cdm_get_all_items_info
4594{
4595 USHORT usLevel;
4596} WFSCDMGETALLITEMSINFO, *LPWFSCDMGETALLITEMSINFO;
4597typedef struct _wfs_cdm_item_info_all
4598{
4599 USHORT usLevel;
4600 CHAR cCurrencyID[3];
4601 ULONG ulValue;
4602 USHORT usRelease;
4603 LPWSTR lpszSerialNumber;
4604 LPSTR lpszImageFileName;
4605 WORD wOnBlacklist;
4606 WORD wItemLocation;
4607 USHORT usNumber;
4608} WFSCDMITEMINFOALL, *LPWFSCDMITEMINFOALL;
4609typedef struct _wfs_cdm_all_items_info
4610{
4611 USHORT usCount;
4612 LPWFSCDMITEMINFOALL *lppItemsList;
4613} WFSCDMALLITEMSINFO, *LPWFSCDMALLITEMSINFO;
4614/*=================================================================*/
4615/* CDM Execute Command Structures */
4616/*=================================================================*/
4617typedef struct _wfs_cdm_denominate
4618{
4619 USHORT usTellerID;
4620 USHORT usMixNumber;
4621 LPWFSCDMDENOMINATION lpDenomination;
4622} WFSCDMDENOMINATE, *LPWFSCDMDENOMINATE;
4623typedef struct _wfs_cdm_dispense
4624{
4625 USHORT usTellerID;
4626 USHORT usMixNumber;
4627 WORD fwPosition;
4628 BOOL bPresent;
4629 LPWFSCDMDENOMINATION lpDenomination;
4630} WFSCDMDISPENSE, *LPWFSCDMDISPENSE;
4631typedef struct _wfs_cdm_physical_cu
4632{
4633 BOOL bEmptyAll;
4634 WORD fwPosition;
4635 LPSTR lpPhysicalPositionName;
4636} WFSCDMPHYSICALCU, *LPWFSCDMPHYSICALCU;
4637CWA 16926-64:2015 (E)
4638122
4639typedef struct _wfs_cdm_counted_phys_cu
4640{
4641 LPSTR lpPhysicalPositionName;
4642 CHAR cUnitId[5];
4643 ULONG ulDispensed;
4644 ULONG ulCounted;
4645 USHORT usPStatus;
4646} WFSCDMCOUNTEDPHYSCU, *LPWFSCDMCOUNTEDPHYSCU;
4647typedef struct _wfs_cdm_count
4648{
4649 USHORT usNumPhysicalCUs;
4650 LPWFSCDMCOUNTEDPHYSCU *lppCountedPhysCUs;
4651} WFSCDMCOUNT, *LPWFSCDMCOUNT;
4652typedef struct _wfs_cdm_retract
4653{
4654 WORD fwOutputPosition;
4655 USHORT usRetractArea;
4656 USHORT usIndex;
4657} WFSCDMRETRACT, *LPWFSCDMRETRACT;
4658typedef struct _wfs_cdm_item_number
4659{
4660 CHAR cCurrencyID[3];
4661 ULONG ulValues;
4662 USHORT usRelease;
4663 ULONG ulCount;
4664 USHORT usNumber;
4665} WFSCDMITEMNUMBER, *LPWFSCDMITEMNUMBER;
4666typedef struct _wfs_cdm_item_number_list
4667{
4668 USHORT usNumOfItemNumbers;
4669 LPWFSCDMITEMNUMBER *lppItemNumber;
4670} WFSCDMITEMNUMBERLIST, *LPWFSCDMITEMNUMBERLIST;
4671typedef struct _wfs_cdm_teller_update
4672{
4673 USHORT usAction;
4674 LPWFSCDMTELLERDETAILS lpTellerDetails;
4675} WFSCDMTELLERUPDATE, *LPWFSCDMTELLERUPDATE;
4676typedef struct _wfs_cdm_start_ex
4677{
4678 WORD fwExchangeType;
4679 USHORT usTellerID;
4680 USHORT usCount;
4681 LPUSHORT lpusCUNumList;
4682} WFSCDMSTARTEX, *LPWFSCDMSTARTEX;
4683typedef struct _wfs_cdm_itemposition
4684{
4685 USHORT usNumber;
4686 LPWFSCDMRETRACT lpRetractArea;
4687 WORD fwOutputPosition;
4688} WFSCDMITEMPOSITION, *LPWFSCDMITEMPOSITION;
4689typedef struct _wfs_cdm_calibrate
4690{
4691 USHORT usNumber;
4692 USHORT usNumOfBills;
4693 LPWFSCDMITEMPOSITION *lpPosition;
4694} WFSCDMCALIBRATE, *LPWFSCDMCALIBRATE;
4695typedef struct _wfs_cdm_set_guidlight
4696{
4697 WORD wGuidLight;
4698 DWORD dwCommand;
4699CWA 16926-64:2015 (E)
4700123
4701} WFSCDMSETGUIDLIGHT, *LPWFSCDMSETGUIDLIGHT;
4702typedef struct _wfs_cdm_power_save_control
4703{
4704 USHORT usMaxPowerSaveRecoveryTime;
4705} WFSCDMPOWERSAVECONTROL, *LPWFSCDMPOWERSAVECONTROL;
4706typedef struct _wfs_cdm_prepare_dispense
4707{
4708 WORD wAction;
4709} WFSCDMPREPAREDISPENSE, *LPWFSCDMPREPAREDISPENSE;
4710typedef struct _wfs_cdm_blacklist_element
4711{
4712 LPWSTR lpszSerialNumber;
4713 CHAR cCurrencyID[3];
4714 ULONG ulValue;
4715} WFSCDMBLACKLISTELEMENT, *LPWFSCDMBLACKLISTELEMENT;
4716typedef struct _wfs_cdm_blacklist
4717{
4718 LPWSTR lpszVersion;
4719 USHORT usCount;
4720 LPWFSCDMBLACKLISTELEMENT *lppBlacklistElements;
4721} WFSCDMBLACKLIST, *LPWFSCDMBLACKLIST;
4722typedef struct _wfs_cdm_synchronize_command
4723{
4724 DWORD dwCommand;
4725 LPVOID lpCmdData;
4726} WFSCDMSYNCHRONIZECOMMAND, *LPWFSCDMSYNCHRONIZECOMMAND;
4727/*=================================================================*/
4728/* CDM Message Structures */
4729/*=================================================================*/
4730typedef struct _wfs_cdm_cu_error
4731{
4732 WORD wFailure;
4733 LPWFSCDMCASHUNIT lpCashUnit;
4734} WFSCDMCUERROR, *LPWFSCDMCUERROR;
4735typedef struct _wfs_cdm_counts_changed
4736{
4737 USHORT usCount;
4738 LPUSHORT lpusCUNumList;
4739} WFSCDMCOUNTSCHANGED, *LPWFSCDMCOUNTSCHANGED;
4740typedef struct _wfs_cdm_device_position
4741{
4742 WORD wPosition;
4743} WFSCDMDEVICEPOSITION, *LPWFSCDMDEVICEPOSITION;
4744typedef struct _wfs_cdm_power_save_change
4745{
4746 USHORT usPowerSaveRecoveryTime;
4747} WFSCDMPOWERSAVECHANGE, *LPWFSCDMPOWERSAVECHANGE;
4748typedef struct _wfs_cdm_item_info_summary
4749{
4750 USHORT usLevel;
4751 USHORT usNumOfItems;
4752} WFSCDMITEMINFOSUMMARY, *LPWFSCDMITEMINFOSUMMARY;
4753typedef struct _wfs_cdm_incomplete_retract
4754{
4755 WFSCDMITEMNUMBERLIST lpItemNumberList;
4756 USHORT usReason;
4757} WFSCDMINCOMPLETERETRACT, *LPWFSCDMINCOMPLETERETRACT;
4758CWA 16926-64:2015 (E)
4759124
4760typedef struct _wfs_cdm_shutter_status_changed
4761{
4762 WORD fwPosition;
4763 WORD fwShutter;
4764} WFSCDMSHUTTERSTATUSCHANGED, *LPWFSCDMSHUTTERSTATUSCHANGED;
4765/* restore alignment */
4766#pragma pack (pop)
4767#ifdef __cplusplus
4768} /*extern "C"*/
4769#endif
4770#endif /* __INC_XFSCDM__H */