Captuvo.h 96.4 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
//
//  Captuvo.h
//  Honeywell_SDK
//
//  Created by Edward Finegan (edward@dryraintechnologies.com) on 5/20/12.
//

#import <UIKit/UIKit.h>
#import <ExternalAccessory/ExternalAccessory.h>


#pragma mark -
#pragma mark Data Types

/**
 @brief Enumeration for connection status
 */
typedef enum {
   ProtocolConnectionStatusConnected,                                   /**< A successful connection was made */
   ProtocolConnectionStatusAlreadyConnected,                            /**< The protocol is already connected */
   ProtocolConnectionStatusBatteryDepleted,                             /**< The protocol is unable to be connected due to low battery */
   ProtocolConnectionStatusUnableToConnectIncompatiableSledFirmware,    /**< The protocol was unable to be connected due to an error */
   ProtocolConnectionStatusUnableToConnect,                             /**< The protocol was unable to be connected due to an error */
} ProtocolConnectionStatus;



/*
 @brief Enumeration for HID status
 */
typedef enum {

    HIDActiveLock,              /**<HID Active and locked       */
    HIDActiveUnlock,            /**<HID Active and Unlocked     */
    HIDUnactiveLock,            /**<HID UnActive and Locked     */
    HIDUnactiveUnlock           /**<HID UnActive and Unlocked   */

}HIDCurStatus;

/*
@brief Enumeration for Scan Key status
 */

typedef enum
{
    ScanKeyPressing,            /** Scan Key pressed    */
    ScanKeyReleased,            /** Scan Key released   */
}ScanKeyStatus;

/**
 @brief Enumeration for beeper volume
 */
typedef enum {
   BeeperVolumeLow,                 /**< Low volume */
   BeeperVolumeMedium,              /**< Medium volume */
   BeeperVolumeHigh,                /**< High volume */
   BeeperVolumeOff                  /**< Volume off */
} BeeperVolume;

/**
 @brief Enumeration for beeper pitch
 */
typedef enum {
   BeeperPitchLow,                  /**< Low pitch */
   BeeperPitchMedium,               /**< Medium pitch */
   BeeperPitchHigh                  /**< High pitch */
} BeeperPitch;

/**
 @brief Enumeration for beeper pitch on error
 */
typedef enum {
   BeeperErrorPitchRazz,            /**< Very Low pitch */
   BeeperErrorPitchMedium,          /**< Medium pitch */
   BeeperErrorPitchHigh             /**< High pitch */
} BeeperErrorPitch;

/**
 @brief Enumeration for beeper duration
 */
typedef enum {
   BeeperDurationShort,             /**< Short duration */
   BeeperDurationNormal             /**< Normal duration */
} BeeperDuration;

/**
 @brief Enumeration for selecting what tracts the MSR should read
 */
typedef enum {
   TrackSelectionAnyTrack,             /**< Any Track */
   TrackSelectionRequire1,             /**< Require Track 1 Only */
   TrackSelectionRequire2,             /**< Require Track 2 Only */
   TrackSelectionRequire1and2,         /**< Require Track 1 & Track 2 */
   TrackSelectionRequire3,             /**< Require Track 3 Only */
   TrackSelectionRequire1and3,         /**< Require Track 1 & Track 3 */
   TrackSelectionRequire2and3,         /**< Require Track 2 & Track 3 */
   TrackSelectionRequireAllTracks,     /**< Require All Three Tracks */
   TrackSelectionAnyTrack1or2,         /**< Any Track 1 & 2 */
   TrackSelectionAnyTrack2or3,         /**< Any Track 2 & 3 */
   TrackSelectionUndefined             /**< Error state */
} TrackSelection;


/**
 @brief Enumeration representing the current security level of the MSR
 */
typedef enum{
   SecurityLevel0,
   SecurityLevel1,
   SecurityLevel2,
   SecurityLevel3,
   SecurityLevel4,
   SecurityLevelUndefined
}SecurityLevel;

/**
 @brief Enumeration for selecting symbologies
 */
typedef enum {
   SymbologyAll,
   SymbologyAustralianPost,
   SymbologyAztecCode,
   SymbologyBritishPost,
   SymbologyCanadianPost,
   SymbologyChinaPost,
   SymbologyChineseSensibleCode,
   SymbologyCodabar,
   SymbologyCodablockA,
   SymbologyCodablockF,
   SymbologyCode11,
   SymbologyCode128,
   SymbologyGS1_128,
   SymbologyCode32Pharmaceutical,
   SymbologyCode39,
   SymbologyCode49,
   SymbologyCode93And93i,
   SymbologyDataMatrix,
   SymbologyEAN13,
   SymbologyEAN13WithAddOn,
   SymbologyEAN13WithExtendedCouponCode,
   SymbologyEAN8,
   SymbologyEAN8WithAddOn,
   SymbologyGS1Composite,
   SymbologyGS1DataBar,
   SymbologyInfoMail,
   SymbologyIntelligentMailBarcode,
   SymbologyInterleaved2Of5,
   SymbologyJapanesePost,
   SymbologyKIXPost,
   SymbologyKoreaPost,
   SymbologyMatrix2Of5,
   SymbologyMaxiCode,
   SymbologyMicroPDF417,
   SymbologyMSI,
   SymbologyNEC2Of5,
   SymbologyOCRMICR,
   SymbologyOCRSEMIFont,
   SymbologyOCRA,
   SymbologyOCRB,
   SymbologyPDF417,
   SymbologyPlanetCode,
   SymbologyPostal4i,
   SymbologyPostnet,
   SymbologyQRCodeAndMicroQRCode,
   SymbologyStraight2Of5IATA,
   SymbologyStraight2Of5Industrial,
   SymbologyTCIFLinkedCode39,
   SymbologyTelepen,
   SymbologyUPCA,
   SymbologyUPCAWithAddOn,
   SymbologyUPCAWithExtendedCouponCode,
   SymbologyUPCE,
   SymbologyUPCEWithAddOn,
   SymbologyUPCE1,
   SymbologyUndefined
} Symbology;


/**
 @brief Enumeration for the state of the battery and charging
 */
typedef enum {
   ChargeStatusNotCharging,         /**< The battery is not connected to external power. */
   ChargeStatusCharging,            /**< Device is connected to an external power source and is charging. */
   ChargeStatusChargeComplete,      /**< Device is connected to an external power but is not charing becuase the battery is full. */
   ChargeStatusUndefined            /**< The status of the battery can not be determined. This is often an error state. */
} ChargeStatus;


/**
 @brief Enumeration for the charge remaining in the battery.
 */
typedef enum {
   BatteryStatusPowerSourceConnected,        /**< Device is connected to a power source */
   BatteryStatus4Of4Bars,                    /**< Battery indicator should read 4 of 4 bars */
   BatteryStatus3Of4Bars,                    /**< Battery indicator should read 3 of 4 bars */
   BatteryStatus2Of4Bars,                    /**< Battery indicator should read 2 of 4 bars */
   BatteryStatus1Of4Bars,                    /**< Battery indicator should read 1 of 4 bars */
   BatteryStatus0Of4Bars,                    /**< Battery indicator should read 0 of 4 bars */
   BatteryStatusUndefined                    /**< Unable to determine the battery level */
} BatteryStatus;

#pragma mark -
#pragma mark Symbology Configuration Objects

/**
 @brief Enumeration of the UPC-A extended coupon code settings
 */
typedef enum {
    UPCA_EAN13_ExtendedCouponCodeOff,                       /**< Extended coupon code off */
    UPCA_EAN13_ExtendedCouponCodeAllowConcatenation,        /**< Allow concatenation of the extended coupon code */
    UPCA_EAN13_ExtendedCouponCodeRequireConcatenation       /**< Require concatenation of the extended coupon code */
} UPCA_EAN13_ExtendedCouponCode;


/**
 @brief Enumeration of the PartNumber configuration number serial number
 */

typedef struct
{
	Byte mfgSignature[4];
    Byte partNumber[18];
    Byte configurationNumber[20];
    Byte serialNumber[10];
    Byte finalAssemblyDate[8];
    Byte odmTrackingNumber[8];

} MfgBlockData;


/**
 @brief UPCA is the object used to configure the UPC-A symbology
 */
@interface UPCA : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) BOOL enableCheckDigit;
@property (assign,nonatomic) BOOL enableNumberSystem;
@property (assign,nonatomic) BOOL enable2DigitAddenda;
@property (assign,nonatomic) BOOL enable5DigitAddenda;
@property (assign,nonatomic) BOOL requireAddenda;
@property (assign,nonatomic) BOOL enableAddendaSeparator;
@property UPCA_EAN13_ExtendedCouponCode extendedCouponCode;

@end

/**
 @brief UPCE0 is the object used to configure the UPC-E0 symbology
 */
@interface UPCE0 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) BOOL enableExpand;
@property (assign,nonatomic) BOOL requireAddenda;
@property (assign,nonatomic) BOOL enableAddendaSeparator;
@property (assign,nonatomic) BOOL enableCheckDigit;
@property (assign,nonatomic) BOOL enableNumberSystem;
@property (assign,nonatomic) BOOL enable2DigitAddenda;
@property (assign,nonatomic) BOOL enable5DigitAddenda;
@property (assign,nonatomic) BOOL enableUPCE1;

@end

/**
 @brief EAN13 is the object used to configure the EAN 13 symbology
 */
@interface EAN13 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) BOOL enableCheckDigit;
@property (assign,nonatomic) BOOL enable2DigitAddenda;
@property (assign,nonatomic) BOOL enable5DigitAddenda;
@property (assign,nonatomic) BOOL requireAddenda;
@property (assign,nonatomic) BOOL enableAddendaSeparator;
@property (assign,nonatomic) BOOL enableISBNtranslate;

@end

/**
 @brief EAN8 is the object used to configure the EAN 8 symbology
 */
@interface EAN8 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) BOOL enableCheckDigit;
@property (assign,nonatomic) BOOL enable2DigitAddenda;
@property (assign,nonatomic) BOOL enable5DigitAddenda;
@property (assign,nonatomic) BOOL requireAddenda;
@property (assign,nonatomic) BOOL enableAddendaSeparator;

@end

/**
 @brief Enumeration of the Codabar checks character settings
 */
typedef enum {
    CodabarCheckCharNoCheckChar,                        /**< Disable the check character */
    CodabarCheckCharValidateNotTransmitted,             /**< validate the check character but do not send it with the barcode data */
    CodabarCheckCharValidateAndTransmit                 /**< validate the check character and send it with the barcode data */
} CodabarCheckChar;

/**
 @brief Enumeration of the Codabar concatenation settings
 */
typedef enum {
    CodabarConcatenationOn,                             /**< Concatenation on */
    CodabarConcatenationOff,                            /**< Concatenation off */
    CodabarConcatenationRequired                        /**< Concatenation required */
} CodabarConcatenation;

/**
 @brief Codabar is the object used to configure the Codabar symbology
 */
@interface Codabar : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) BOOL transmitStatStopChar;
@property (assign,nonatomic) CodabarCheckChar checkCharStatus;
@property (assign,nonatomic) CodabarConcatenation concatenationStatus;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Enumeration of the Code 39 check character settings
 */
typedef enum {
    Code39CheckCharNoCheckChar,                         /**< Disable the check character */
    Code39CheckCharValidateNotTransmitted,              /**< Vaildate the check character but do not send it with the barcode data */
    Code39CheckCharValidateAndTransmit                  /**< Vaildate the check character and send it with the barcode data */
} Code39CheckChar;

/**
 @brief Code39 is the object used to configure the Code 39 symbology
 */
@interface Code39 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) BOOL transmitStatStopChar;
@property (assign,nonatomic) Code39CheckChar checkCharStatus;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;
@property (assign,nonatomic) BOOL enableAppendMode;
@property (assign,nonatomic) BOOL enableCode32Pharmaceutical;
@property (assign,nonatomic) BOOL enableFullASCII;

@end

/**
 @brief Enumeration of the Interleaved2of5 object's check character settings
 */
typedef enum {
    Interleaved2of5CheckCharNoCheckChar,                    /**< Disable the check character */
    Interleaved2of5CheckCharValidateNotTransmitted,         /**< validate the check character but do not send it with the barcode data */
    Interleaved2of5CheckCharValidateAndTransmit             /**< validate the check character and send it with the barcode data */
} Interleaved2of5CheckChar;

/**
 @brief Interleaved2of5 is the object used to configure the Interleaved 2 of 5 symbology
 */
@interface Interleaved2of5 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) Interleaved2of5CheckChar checkCharStatus;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Enumeration of the NEC2of5CheckChar object's check character settings
 */
typedef enum {
    NEC2of5CheckCharNoCheckChar,                            /**< Disable the check character */
    NEC2of5CheckCharValidateNotTransmitted,                 /**< validate the check character but do not send it with the barcode data */
    NEC2of5CheckCharValidateAndTransmit                     /**< validate the check character and send it with the barcode data */
} NEC2of5CheckChar;

/**
 @brief NEC2of5 is the object used to configure the NEC 2 of 5 symbology
 */
@interface NEC2of5 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) NEC2of5CheckChar checkCharStatus;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Code93 is the object used to configure the Code 93 symbology
 */
@interface Code93 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Straight2of5Industrial is the object used to configure the Straight 2 of 5 Industrial symbology
 */
@interface Straight2of5Industrial : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Straight2of5IATA is the object used to configure the Straight 2 of 5 IATA symbology
 */
@interface Straight2of5IATA : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Matrix2of5 is the object used to configure the Matrix 2 of 5 symbology
 */
@interface Matrix2of5 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Enumeration of the Code11 object's check digit settings
 */
typedef enum {
    Code11CheckDigit1,              /**< Check digit one */
    Code11CheckDigit2               /**< Check digit two */
} Code11CheckDigit;

/**
 @brief Code11 is the object used to configure the Code 11 symbology
 */
@interface Code11 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;
@property (assign,nonatomic) Code11CheckDigit checkDigit;

@end

/**
 @brief Code128 is the object used to configure the Code 128 symbology
 */
@interface Code128 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;
@property (assign,nonatomic) BOOL enableISBTconcatenation;

@end

/**
 @brief GS1_128 is the object used to configure the GS1-128 symbology
 */
@interface GS1_128 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end


/**
 @brief Enumeration of the Telepen object's output settings
 */
typedef enum {
    TelepenOutputAIM,               /**< AIM Telepen output */
    TelepenOutputOriginal           /**< Original Telepen output */
} TelepenOutput;

/**
 @brief Telepen is the object used to configure the Telepen symbology
 */
@interface Telepen : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;
@property (assign,nonatomic) TelepenOutput output;

@end

/**
 @brief Enumeration of the MIS object's check character settings
 */
typedef enum {
    MSICheckCharValidateType10NotTransmitted,                   /**< Validate type 10 but do not transmit with barcode data */
    MSICheckCharValidateType10AndTransmit,                      /**< Validate type 10 and transmit with barcode data */
    MSICheckCharValidate2Type10NotTransmitted,                  /**< Validate 2 type 10 characters but do not transmit with barcode data */
    MSICheckCharValidate2Type10AndTransmit,                     /**< Validate 2 type 10 characters and transmit with barcode data */
    MSICheckCharValidateType10And11NotTransmitted,              /**< Validate type 10 then they 11 characters but do not transmit with barcode data */
    MSICheckCharValidateType10And11AndTransmit,                 /**< Validate type 10 then they 11 characters and transmit with barcode data */
    MSICheckCharDisableCeckChar                                 /**< Disasble check characters */
} MSICheckChar;

/**
 @brief MSI is the object used to configure the MSI symbology
 */
@interface MSI : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;
@property (assign,nonatomic) MSICheckChar checkChar;

@end

/**
 @brief Enumeration of the GS1 global emulation settings
 */
typedef enum {
   GS1Emulation128,                                             /**< GS1-128 emulation */
   GS1EmulationdDatabar,                                        /**< GS1 DataBar emulation */
   GS1EmulationdExpansionCodeOff,                               /**< GS1 Code Expansion off */
   GS1EmulationdEAN8toEAN13Conversion,                          /**< EAN8 to EAN13 conversion */
   GS1EmulationdOff                                             /**< Emulation off */
} GS1Emulation;

/**
 @brief GS1DataBarOmnidirectional is the object used to configure the GS1 DataBar Omnidirectional symbology
 */
@interface GS1DataBarOmnidirectional : NSObject

@property (assign,nonatomic) BOOL enabled;
//Global GS1 parameters
@property (assign,nonatomic) BOOL enableGS1CompositeCodes;
@property (assign,nonatomic) BOOL enableUPC_EANversion;
@property (assign,nonatomic) int compositeCodeMinMessageLength;
@property (assign,nonatomic) int compositeCodeMaxMessageLength;
@property (assign,nonatomic) GS1Emulation emulationMode;
@end

/**
 @brief GS1DataBarLimited is the object used to configure the GS1 DataBar Limited symbology
 */
@interface GS1DataBarLimited : NSObject

@property (assign,nonatomic) BOOL enabled;
//Global GS1 parameters
@property (assign,nonatomic) BOOL enableGS1CompositeCodes;
@property (assign,nonatomic) BOOL enableUPC_EANversion;
@property (assign,nonatomic) int compositeCodeMinMessageLength;
@property (assign,nonatomic) int compositeCodeMaxMessageLength;
@property (assign,nonatomic) GS1Emulation emulationMode;

@end

/**
 @brief GS1DataBarExpanded is the object used to configure the GS1 DataBar Expanded symbology
 */
@interface GS1DataBarExpanded : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;
//Global GS1 parameters
@property (assign,nonatomic) BOOL enableGS1CompositeCodes;
@property (assign,nonatomic) BOOL enableUPC_EANversion;
@property (assign,nonatomic) int compositeCodeMinMessageLength;
@property (assign,nonatomic) int compositeCodeMaxMessageLength;
@property (assign,nonatomic) GS1Emulation emulationMode;

@end

/**
 @brief CodablockA is the object used to configure the Codablock A symbology
 */
@interface CodablockA : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief CodablockF is the object used to configure the Codablock F symbology
 */
@interface CodablockF : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief PDF417 is the object used to configure the PDF417 symbology
 */
@interface PDF417 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief ChineseSensible is the object used to configure the Chinese Sensible symbology
 */
@interface ChineseSensible : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief Aztec is the object used to configure the Aztec symbology
 */
@interface Aztec : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief MaxiCode is the object used to configure the MaxiCode symbology
 */
@interface MaxiCode : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief DataMatrix is the object used to configure the Data Matrix symbology
 */
@interface DataMatrix : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief MicroPDF417 is the object used to configure the MicroPDF417 symbology
 */
@interface MicroPDF417 : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

/**
 @brief TCIFLinkedCode39 is the object used to configure the TCIF Linked Code 39 symbology
 */
@interface TCIFLinkedCode39 : NSObject

@property (assign,nonatomic) BOOL enabled;

@end

/**
 @brief QRCode is the object used to configure the QR Code symbology
 */
@interface QRCode : NSObject

@property (assign,nonatomic) BOOL enabled;
@property (assign,nonatomic) int minMessageLength;
@property (assign,nonatomic) int maxMessageLength;

@end

#pragma mark -
#pragma mark Event Protocol
/**
 @brief The protocol that must be implemented to become a SDK delegate.

 Each method defined in the protocol represents a specific response from SDK actions. Each is optional and only needs to be implemented by delegate objects that are interested in the specific response.
  */
@protocol CaptuvoEventsProtocol <NSObject>

@optional

/**
 @brief This delegate method is called when the Captuvo hardware connects to the iOS device.
 */
-(void)captuvoConnected;//

/**
 @brief This delegate method is called when the Captuvo hardware disconnects from the iOS device.
 */
-(void)captuvoDisconnected;//

/**
 @brief This <em>decoderReady<em> delegate method is called when the Decoder session is ready.
 */
- (void)decoderReady;

/**
 @brief This <em>msrReady<em> delegate method is called when the MSR session is ready.
 */
- (void)msrReady;

/**
 @brief This <em>pmReady<em> delegate method is called when the PM session is ready.
 */
- (void)pmReady ;

/**
 @brief This delegate method is called when the decoder read string data from a barcode.

 @param (NSString*)data The data as a string.
 */
-(void)decoderDataReceived:(NSString*)data;//


/**
 @brief This delegate method is called when the decoder reads raw data from a barcode.

 @param (NSData*)data The data as a string.
 */
-(void)decoderRawDataReceived:(NSData*)data;//


/**
 @brief This delegate method is called when the decoder revision is requested.

 The delegate message passes the decoder revision data from the <em>-(void)requestDecoderRevision</em> method. This revision number is for the decoder subsystem in the device.

 @param (NSString*)revision The raw data from the decoder.
 */
-(void)decoderRevisionReceived:(NSString*)revision;//

/**
 @brief This delegate method is called when the decoder software revision is requested.

 The delegate message passes the decoder software revision data from the <em>-(void)requestDecoderSoftwareRevision</em> method. This revision number is for the decoder software on the device.

 @param (NSString*)revision The raw data from the decoder.
 */
-(void)decoderSoftwareRevision:(NSString*)revision;//

/**
 @brief This delegate method is called when the decoder driver revision is requested.

 The delegate message passes the decoder driver revision data from the <em>-(void)requestDecoderDriverRevision</em> method. This revision number is for the decoder driver for the device.

 @param (NSString*)revision The raw data from the decoder.
 */
-(void)decoderDriverRevision:(NSString*)revision;//

/**
 @brief This delegate method is called when the decoder driver revision is requested.

 The delegate message passes the decoder serial number data from the <em>-(void)requestDecoderSerialNumber</em> method. This decoder serial number is for the decoder serial number of the device.

 @param (NSString*)The decoder serial number.
 */
-(void)decoderSerialNumber:(NSString*)seralNumber;//

/**
 @brief This delegate method is called when the status of the beep for a good read is requested.

 The delegate message passes the status of the good read beeper. It is requested from the <em>-(void)requestDecoderBeeperForGoodReadStatus</em> method.

 @param (BOOL)isEnabled Yes if the beeper is enabled for a good read.
 */
-(void)decoderBeeperForGoodReadStatus:(BOOL)isEnabled;//

/**
 @brief This delegate method is called when the status of the trigger click is requested.

 The delegate message passes the status of the trigger click. It is requested from the <em>-(void)requestDecoderTriggerClickStatus</em> method.

 @param (BOOL)isEnabled Yes if the trigger click is enabled.
 */
-(void)decoderTriggerClickStatus:(BOOL)isEnabled;//

/**
 @brief This delegate method is called when the status of the power up beep is requested.

 The delegate message passes the status of the power up beep. It is requested from the <em>-(void)requestDecoderPowerUpBeepStatus</em> method.

 @param (BOOL)isEnabled Yes if the power up beep is enabled.
 */
-(void)decoderPowerUpBeepStatus:(BOOL)isEnabled;//

/**
 @brief This delegate method is called when the volume of the beeper is requested for a good read.

 The delegate message passes the volume of the beeper on a good read. It is requested from the <em>-(void)requestDecoderGoodReadBeeperVolumeStatus</em> method.

 @param (BeeperVolume)volume The volume of the beeper after a good read.
 */
-(void)decoderGoodReadBeeperVolumeStatus:(BeeperVolume)volume;//

/**
 @brief This delegate method is called when the pitch of the beeper is requested for a good read.

 The delegate message passes the pitch of the beeper on a good read. It is requested from the <em>-(void)requestDecoderBeeperPitchGoodReadStatus</em> method.

 @param (BeeperPitch)pitch The pitch of the beeper after a good read.
 */
-(void)decoderBeeperPitchGoodReadStatus:(BeeperPitch)pitch;//

/**
 @brief This delegate method is called when the pitch of the beeper after an error is requested.

 The delegate message passes the pitch of the beeper after an error. It is requested from the <em>-(void)requestDecoderBeeperPitchErrorStatus</em> method.

 @param (BeeperErrorPitch)pitch The pitch of the beeper after an error.
 */
-(void)decoderBeeperPitchErrorStatus:(BeeperErrorPitch)pitch;//

/**
 @brief This delegate method is called when the duration of the beeper after a good read is requested.

 The delegate message passes the duration of the beeper after a good read. It is requested from the <em>-(void)requestDecoderBeeperDurationGoodReadStatus</em> method.

 @param (BeeperDuration)duration The duration of the beeper after a good read.
 */
-(void)decoderBeeperDurationGoodReadStatus:(BeeperDuration)duration;//

/**
 @brief This delegate method is called when the number of beeps after a good read is requested.

 The delegate message passes the number of beeps after a good read. It is requested from the <em>-(void)requestDecoderNumberOfBeepsGoodReadStatus</em> method.

 @param (int)numberOfBeeps The number of beeps after a good read.
 */
-(void)decoderNumberOfBeepsGoodReadStatus:(int)numberOfBeeps;//

/**
 @brief This delegate method is called when the number of beeps after an error is requested.

 The delegate message passes the number of beeps after an error. It is requested from the <em>-(void)requestDecoderNumberOfBeepsErrorStatus</em> method.

 @param (int)numberOfBeeps The number of beeps after an error read.
 */
-(void)decoderNumberOfBeepsErrorStatus:(int)numberOfBeeps;//

/**
 @brief This delegate method is called when the delay between good reads is requested.

 The delegate message passes the number milliseconds that must pass before a second good read can be done. It is requested from the <em>-(void)requestDecoderGoodReadDelayInMilliSecondsStatus</em> method.

 @param (int)milliseconds The delay in milliseconds between two good reads.
 */
-(void)decoderGoodReadDelayInMilliSecondsStatus:(int)milliseconds;//

/**
 @brief This delegate method is called when the trigger timeout is requested.

 The delegate message passes the trigger timeout in milliseconds. It is requested from the <em>-(void)requestDecoderSerialTriggerTimeoutInMilliSecondsStatus</em> method.

 @param (int)milliseconds The trigger timeout in milliseconds.
 */
-(void)decoderSerialTriggerTimeoutInMilliSecondsStatus:(int)milliseconds;//

/**
 @brief This delegate method is called when the status of the interlaced aimer is requested.

 The delegate message passes the status of the interlaced aimer. It is requested from the <em>-(void)requestDecoderInterlacedAimerModeStatus</em> method.

 @param (BOOL)isEnabled YES if the interlaced aimer is enabled.
 */
-(void)decoderInterlacedAimerModeStatus:(BOOL)isEnabled;//

/**
 @brief This delegate method is called when the status of the preferred symbology setting is requested.

 The delegate message passes the status of if the preferred symbology setting is enabled. It is requested from the <em>-(void)requestDecoderPreferredSymbologyStatus</em> method.

 @param (BOOL)isEnabled YES if the preferred symbology is enabled.
 */
-(void)decoderPreferredSymbologyStatus:(BOOL)isEnabled;//

/**
 @brief This delegate method is called when the high priority symbology is requested.

 The delegate message passes the symbology that is set as high priority. It is requested from the <em>-(void)requestDecoderHighPrioritySymbologyStatus</em> method.

 @param (Symbology)symbology The symbology that is currently set as high priority.
 */
-(void)decoderHighPrioritySymbologyStatus:(Symbology)symbology;//

/**
 @brief This delegate method is called when the low priority symbology is requested.

 The delegate message passes the symbology that is set as low priority. It is requested from the <em>-(void)requestDecoderLowPrioritySymbologyStatus</em> method.

 @param (Symbology)symbology The symbology that is currently set as low priority.
 */
-(void)decoderLowPrioritySymbologyStatus:(Symbology)symbology;//

/**
 @brief This delegate method is called when the preferred symbology timeout is requested.

 The delegate message passes the preferred symbology timeout. It is requested from the <em-(void)requestDecoderPreferredSymbologyTimeoutInMilliSecondsStatus</em> method.

 @param (int)milliseconds The timeout period in milliseconds.
 */
-(void)decoderPreferredSymbologyTimeoutInMilliSecondsStatus:(int)milliseconds;//

/**
 @brief This delegate method is called when the status of the centering feature is requested.

 The delegate message passes the status of the centering feature. It is requested from the <em-(void)requestDecoderCenteringStatus</em> method.

 @param (BOOL)isEnabled Yes if centering is enabled.
 */
-(void)decoderCenteringStatus:(BOOL)isEnabled;//

/**
 @brief This delegate method is called when the top of centering window location is requested.

 The delegate message passes the location of the top of centering window as a percent of the height. It is requested from the <em-(void)requestDecoderTopOfCenteringWindowStatus</em> method.

 @param (int)locationAsPrecent The location of the top of the centering window.
 */
-(void)decoderTopOfCenteringWindowLocation:(int)locationAsPrecent;//

/**
 @brief This delegate method is called when the bottom of centering window location is requested.

 The delegate message passes the location of the bottom of centering window as a percent of the height. It is requested from the <em-(void)requestDecoderBottomOfCenteringWindowStatus</em> method.

 @param (int)locationAsPrecent The location of the bottom of the centering window.
 */
-(void)decoderBottomOfCenteringWindowLocation:(int)locationAsPrecent;//

/**
 @brief This delegate method is called when the left of the centering window location is requested.

 The delegate message passes the location of the left of centering window as a percent from the left edge. It is requested from the <em-(void)requestDecoderLeftOfCenteringWindowStatus</em> method.

 @param (int)locationAsPrecent The location of the left of the centering window.
 */
-(void)decoderLeftOfCenteringWindowLocation:(int)locationAsPrecent;//

/**
 @brief This delegate method is called when the right of the centering window location is requested.

 The delegate message passes the location of the right of centering window as a percent from the right edge. It is requested from the <em-(void)requestDecoderRightOfCenteringWindowStatus</em> method.

 @param (int)locationAsPrecent The location of the right of the centering window.
 */
-(void)decoderRightOfCenteringWindowLocation:(int)locationAsPrecent;//

/**
 @brief This delegate method is called when data is returned from using the direct pass though method for the decoder.

 The delegate message passes response data from the use of the <em>-(void)decoderPassThrough:(NSData*)data expectingReturnData:(BOOL)returnData</em> method. The data received for this method is directly returned as an NSData.

 @param (NSData*)data The raw data from the decoder.
 */
-(void)decoderPassThroughReturnData:(NSData*)data;//

/**
 @brief This delegate method is called when data is returned from using the enable.

 The delegate message passes response data from the use of the <em>-(void)enableDecoderEnhancedManualTriggerMode:(BOOL)enable persistSetting:(BOOL)persist/em> method. The data received for this method is directly returned as an NSData.

 @param (NSData*)data The manual trigger mode.
 */
-(void)DecoderEnhancedManualTriggerMode:(NSData*)data;


//MSR Delegates

/**
 @brief This delegate method is called when the MSR has data to send to its delegates from a card swipe.

 When data from a card swipe is read it is sent to delegates using this method. The <em>status</EM> parameter will be <em>YES</em> if the checksum received from the MSR matches the expected calculated checksum. In most cases this can be ignored because it will always be <em>YES</em> except for the rare occasions of a hardware issue.

 @param (NSString*)data The data as a string.
 @param (BOOL)status Yes if the checksum is correct for the data received from the Captuvo.
 */
-(void)msrStringDataReceived:(NSString*)data validData:(BOOL)status;//

/**
 @brief This delegate method is called when the MSR has data to send to its delegates from a card swipe.