PCSC/Ada ChangeLog
==================

Version 0.7.1 (2011-11-26)
--------------------------
.Additions and changes

* Doc: Remove unneeded Makefile targets (77059b5)

* Link to online API doc on index page (2fcc762)

* Simplify doc build (7cd1147)

* Don't include doc and pcsc-version.ads in tarball (82ec7a7)
- No need to pre-generate these files as they are either automatically
  created by make or manually on user request (make doc).

* Remove DOCDIR on distclean (f6bafbf)

* Add doc/.gitignore file (6069761)

* Introduce software revision number (826e0a9)
- The next release will be 0.7.1

* Doc: Remove unneeded emphasis on 'thick' (1ee575f)

* Doc: Replace navy color with gray (c5e4660)

* Doc: Add -webkit and -moz border config (79d0e24)

* Doc: Introduce fancy header, footer (353e252)

* Doc: Update stylesheet (336c42a)

* Doc: Disable badges (8850888)

* Doc: Use custom asciidoc config file (7b93f5c)

* Rename alog.css to asciidoc.css (a0de971)

* Update README file (152b007)

* Doc: Remove unneeded -a icons command-line option (6225c99)

* Doc: Remove TIP from README (7b00728)

* Update README file (1ce8d7f)

* Make apidoc and doc independent targets (32d0f71)

* Remove unneeded copyright section from README (07481dd)

* Makefile: Add target to build doc/apidoc (493a10f)

* Doc: Auto-build pcscada webpage using asciidoc (6ba8785)

* Rename docs target to apidoc (a70edad)

* Install API doc into doc/html/api directory (31d76d7)


Version 0.7 (2011-08-23)
------------------------
.Additions and changes

* Update CHANGELOG for release 0.7. (7fe7f01)

* Add lib and obj subdirs to gitignore. (4365106)

* Simplify Compiler_Switches. (44d2826)

* Update copyright headers. (7547034)

* Update README file. (7291f2d)

* Bump MINOR version to 7. (c7f76d0)

* Unify test names. (5f20f26)

* Transmit: Remove send buffer default expression. (950f2b2)

* Correctly handle byte sets not starting at index 1. (e3f0dfc)

* Introduce internal ATR_Byte_Count type. (bf54072)

* Status_Change: Reset ATR data on card removal. (996ac00)

* Add exception handler to status peeker. (a27de6a)

* Rename ATR_Type to ATR_Data_Type. (acb1b94)

* Allow ATR size of 33 bytes. (e7c20f4)
- According to ISO 7816-3, the answer to reset is at most 33 characters
  (including the initial character).

* Transmit: Return optional recv PCI data to caller. (dd4ff89)
- Thanks to Stefan Berghofer for the hint.

* Provide additional Transmit procedure. (279cde9)
- This procedure transmits Send_Len bytes of the given buffer to the card.

* Minor: Fix indentation. (45d1165)

* Use 79 in line length checks (-gnatyM79). (5cef8b1)

* SCU: Add To_String() function with Len parameter. (027ce74)
- This function converts Len bytes from byte set to string.

* SCardSetAttrib: Use Byte_Array type for pbAttr. (09a4aa6)

* Remove obsolete TODO in Init_Attribute_Set(). (f106d71)

* Make SCardTransmit() a Valued_Procedure. (6fe7bc7)

* Make SCardStatus() a Valued_Procedure. (3b60575)

* Minor: Fix Null_Byte constant alignment. (260f688)

* SCardTransmit: Use Byte_Array type for pbSendBuffer. (e6688b9)
- See Ada RM B.3/70: An Ada parameter of an array type with component
  type T, of any mode, is passed as a t* argument to a C function, where t
  is the C type corresponding to the Ada type T.

* Use Natural range instead of C.size_t for Byte_Array. (178a422)

* Remove unneeded type conversions. (6b27e9d)

* Minor: More code cleanup in examples. (e255c7b)

* Minor: Remove unnecessary spaces in thin example. (db37035)

* Minor: Remove unnecessary spaces in test output. (57fb476)

* Fix Library_Name in IFD example project file. (a3cf804)

* Add IFD handler example. (cdb6d17)

* Add initial Thin.IFDHandler package. (18ae12d)

* Add UCHAR, PDWORD and ATR_Access (sub)types. (af1d7a2)

* Minor code cleanup. (f9a6bc4)

* Remove unnecessary comment. (3227dcc)

* Minor: Correct indentation in pcsc-version file. (1651809)


Version 0.6 (2010-01-13)
------------------------
.Additions and changes

* Update CHANGELOG for release 0.6. (bc52668)

* Remove 'git describe' version string. (3baf31c)

* Don't force pcscada-git-rev target. (a8f911e)

* Remove pcscada.specs in docs target. (bf94d81)

* Update README file. (3e85b9d)

* Add sample code. (c7e188a)

* Use dotted notation for ahven code. (4c6fec0)

* Replace box comments by dashed line separators. (defea84)

* Bump MINOR version to 6. (4de4606)

* Remove unneeded Builder packages from project files. (840c76f)

* Remove unneeded -fPIC from Compiler_Switches. (81a954d)

* Use 'git describe' for GIT_REV. (38d7c53)

* Add library kind selection support to build logic. (2d9d121)

* Remove explicit 'in' parameter mode. (19b9f26)

* Use common settings in library project too. (f374432)

* Remove apidoc directory on distclean. (110be42)

* Let gnatmake create missing dirs. (2a6cbdf)

* Add Detect_Blocking pragma. (b18c2f8)

* Factor out common settings to PCSCAda_Common. (3b4daf8)

* Remove unneeded Linker_Options ("-lahven"). (c3f9a84)

* Add missing ahven dependency to project file. (8819653)

* Link libpcscada (dynamic) against pcsclite. (9d857fa)

* Don't remove generated pcsc-version.ads file on distclean. (f872703)

* Add another TODO item. (6c13873)

* Change examples project name to PCSCAda_Examples. (3038bc6)

* Create API doc in 'dist' target. (2a1216f)

* Remove API doc, will be generated in 'dist' target when needed. (486dbd8)


Version 0.5 (2008-12-10)
------------------------
.Additions and changes

* Moved comment below 'pragma Elaborate_All' in PCSC.Thin.Reader. (840edfc)
- Otherwise, this comment is used as package description.

* Fixed CHANGELOG after rebase. (c535fb7)

* Added CHANGELOG for version 0.5. (f15b76f)

* Enabled almost all warnings (except: 'Hiding'). (4ee4b02)
- Warnings are treated as errors now.
- Fixed elaboration order problem with SCARD_CTL_CODE function in
  PCSC.Thin.Reader.

* Enabled all validity checks. (7136ae9)

* Made code comply with new style checks. (01fdac7)

* Enabled almost all style checks (all except 'Check sep. specs'). (7e3250e)
- Switched to GPS format of project files.

* Replaced all Unchecked_Access with just Access in thin_example. (fd09375)

* Changed install destination of ALI files, lib and sources. (d5b0974)

* Minor coding style fixes, some suggested by gnatpp. (e1638f7)

* Added build_lib dependency to install_lib target in Makefile. (6c180f5)

* Added version information to 'Build' section in README. (7f201c3)

* Added 'dist' target to Makefile to create dist tarball. (2be60a7)

* Updated README file. (ecbd973)
- Added notice about PC/SC development files to README.
- Simplified URLs in README file (works with asciidoc 8.3.0).

* No need to obfuscate the AUTHORS e-mail. (c10a946)

* Added another TODO item. (8901130)

* Removed TODO comment in pcsc-scard body (status: no problem). (e0f9022)

* Added Get_PCI() function to retrieve usable PCI for a given Card. (de07e89)

* Removed Send_Pci argument from Transmit() procedure. (6b482f0)
- Setting the correct send PCI is handled transparently in the
  thick binding layer.
- If a card uses a protocol we don't know a valid PCI for, a
  No_PCI_for_Proto exception will be thrown.

* Fixed Control() and Transmit() procedure. (2ea910a)
- The workaround for "access-to-variable designates constant" was
  broken because only one byte has been passed on to the thin
  binding. Fixed this by copying the initial send buffer.

* Added thick binding subtype IO_Request of Thin.SCARD_IO_REQUEST. (818c183)
- Use this subtype for Recv_Pci argument of Transmit() procedure.

* Added 0 initialization of SCARD_IO_REQUEST record type fields. (667fdad)

* Corrected usage of pioRecvPci argument for SCardTransmit. (cebb7db)

* Updated PCSC/Ada API documentation. (c82cf4d)

* Removed TODO item (status: done). (5f5ad7c)

* Extended purpose header comment of SCard.Monitor package. (c295c5d)

* Moved Current_Context from private spec to Reader_Monitor body. (500796c)
- Extended Run() entry of Status_Peeker task with Context_Handle
  argument. The Reader_Monitor uses this entry to pass on the
  Current_Context to the Status_Peeker task.

* Start reader monitoring task after registering the observer. (2c34e37)

* Removed Do_Cancel flag: added separate Stop_Peeker, Stop_Monitor. (154c20f)

* Renamed 'Status_Observer' task type to 'Status_Peeker'. (21050b4)
- Status_Observer is misleading because the expression 'observer'
  is already used in a different context.

* Added more output to simple observer example. (62e3762)

* Added S_Reader_Unavailable to interesting states for observer. (2e7bf9c)

* Implemented an observer pattern for the Reader_Monitor task. (fb04123)
- Client code can extend the abstract type 'Observer' to create
  new observers. Observers are used to inform the client code
  about changes in reader state for all known readers.
- Observers provide a 'States' Reader_States_Set which stores
  all the reader states a specific observer is interested in.
- Added protected type Protected_Observer_Set as storage for all
  registered observers.
- Added Register() entry to Reader_Monitor, used to add new
  observers to the protected type Protected_Observer_Set.
- Protected_Observer_Set.Notify_All() is used to inform
  interested observers about a change of reader state.
- Added simple reader observer in examples/cardd.

* Added missing rgReaderStates argument to SCardGetStatusChange. (eba80ef)
- Only needed because adabrowse does not like 'null' default
  initialization of anonymous access types, see commit
  70391cad3b813f5ebfa90f13e47276652fab12fe.

* Updated PCSC/Ada API documentation. (8231def)

* Removed 'null' initialization of rgReaderStates anonymous access. (e693dde)
- adabrowse exits with the error 'null cannot be of an anonymous
  access type'.

* Changed e-mail address for copyright headers. (263e47a)

* Ignore non existing pcsc-version.ads file in distclean target. (ab4eac4)

* Added exception block around call to Establish_Context(). (d9d7efa)

* Added another TODO item. (ac9c1b4)

* Made Status_Observer a task type and moved it to private part. (03a0a9b)

* Added Status_Observer task to Reader_Monitor task. (50276fe)
- Status_Observer calls the Status_Change procedure to detect
  status changes on all known readers (until Do_Cancel = True).
- Renamed Reader_Monitor.Run to Reader_Monitor.Start.
- Renamed Reader_Monitor.Cancel to Reader_Monitor.Stop.
- Reader_Monitor.Stop does actually stop the Reader_Monitor.

* Changed AUTHORS e-mail address. (3104e2a)

* Moved Create_Condition and Update_Reader_Table to private part. (e52088c)

* Added Cancel() entry to Reader_Monitor task. (44b4cb2)
- Renamed Start() to Init().
- Added Run() entry to Reader_Monitor.

* Fixed erroneous usage of Reader_Monitor.Run() entry. (c573aac)
- Added access to Context type: Context_Handle.
- Renamed Run() entry to Start().
- Use the Start rendevous point to init the tasks
  Current_Context.

* Minor: coding style fixes. (58d55ed)

* Added missing header comment for Update_Reader_Condition. (8e6766d)

* Added missing header comment for Update_Status_Set. (35a8143)

* Added missing header for Update_Reader_Table, Create_Condition. (38bcd2e)

* Corrected comment for Remove() procedure. (12cadaa)

* Fixed handling of 'all reader vanished' event (again). (428e7bc)

* Added missing call to Reader_Monitor.Run (Context). (f9866fd)

* Re-added exception block in cardd example. (83ac252)

* Minor coding style changes. (0271be1)

* Replaced Run() procedure of SCard.Monitor with task type. (cb39c8e)

* Added handling of empty condition tables to Status_Change(). (8c282ba)

* Implemented Event_Counter for Status_Change operation. (9c4e1ce)
- SCardGetStatusChange adds an event counter in the upper word
  of dwEventState. This value must be stored to construct the
  correct value of dwCurentState for further calls to
  Status_Change.

* Removed type definitions from header comments. (acfad62)

* Added code to remove vanished readers from the readers table. (bbd48a4)

* Fixed Bug in Update_Status_Set: use correct Index for Event_State. (2ee94d8)

* Added support for multiple reader monitoring to SCard.Monitor. (4b90ac6)
- Not yet functional.

* Added Cancel() procedure to thick binding for Thin.SCardCancel. (17bd157)

* Added thin binding for SCardCancel function. (1c7176d)

* Fixed problem with Status_Change() and multiple readers. (8f15151)
- Removed one indirection: made READERSTATE_Array an array of
  READERSTATEs, not access to READERSTATEs.
- Added Create_Readerstate() helper function to create new
  Thin.READERSTATE objects.
- Removed Thin.READERSTATE_Access type.
- Removed Unchecked_Deallocation for Thin.READERSTATE_Access.

* Updated TODO item. (2df04cb)

* Remove S_Reader_Changed state before updating Current_State. (6e29fe7)

* Added Remove() procedure to Reader_States_Set. (69db08f)

* Use new SCard.Monitor package for reader condition detection. (7e3e952)

* Added SCard.Monitor package. (079ee1f)
- Used to monitor reader status changes. At the moment, the
  simple procedure Run() inside the package just prints the
  new reader states to stdout.
- This code will be replaced by a task implementation of an
  observer pattern in the future. Client code can then register
  new observers to the monitor for different reader states.

* Renamed Vector_Of_Status_Package to Vector_Of_Condition_Package. (3249fd8)

* Added first (not yet working) version of cardd. (c694543)

* Changed Get() for Reader_Condition_Set to return a handle. (303dedf)
- This throws a GNAT BUG DETECTED with 4.1.2 20061115
  (prerelease) (Debian 4.1.1-22) (i486-pc-linux-gnu)

* Added another TODO item. (2f52de3)

* Added support for multiple Current_States readerstates. (3ae057f)
- Removed corresponding TODO item.
- Added further functions for simple Set operations
  ([First|Last]_Item, [First|Last]_Index).
- Renamed some existing Set operations to new naming convention.

* Renamed Status_Set related parameter names to 'Conditions'. (4c56394)

* Refactoring: renamed 'Reader_Status' to 'Reader_Table'. (e171828)

* Refactoring: renamed Reader_Status type to Reader_Condition. (bf0f734)
- Removed corresponding TODO item.

* Use Is_In function of Card_States_Set to test for card presence. (2b1a9e9)

* Added Is_In functions for [Card|Reader]_States_Set. (ac3146d)
- Used to test if a given State is present in Set.

* Minor: Fixed indentation for TODO entry. (38d4464)

* Use new SPE_Init() and SPE_Exec() procedures for SPE operations. (8f966c8)

* Divided Supports_SPE() into two procedures: SPE_Init, SPE_Exec. (cd79fe0)
- SPE_Init is used to check if a reader supports SPE operation.
  If it does, the Verify_Ctrl value of the card handle is
  initialized.
- SPE_Exec performs the actual SPE operation by sending the
  Verify_Ctrl code to the reader using a PC/SC v2.0.2 Part 10
  PIN verification data structure.

* Added Verify_Ctrl DWORD to Card type. (44e990c)

* Added SCard_Not_Supported exception. (aa62731)
- Raised if an operation has been requested which is not
- supported by the reader or card.

* First working version of SPE testcode. (4a6cbd8)
- The PIN_VERIFY_STRUCTURE is correctly sent to the card reader.

* Added representation clause for PIN_VERIFY_STRUCTURE type. (ddb2556)

* Extended Supports_SPE() function with PIN verify testcode. (383389d)
- Only used to test SPE operation, will be removed later.

* Added PIN_VERIFY_STRUCTURE record type to the thin binding. (875d569)

* Display info and return if no readers are found. (1a4962f)

* Added FEATURE flags to thin binding. (c188014)

* Added missing call to Action_Result() after Card Status request. (cd25bcc)

* Added record representation clause for PCSC_TLV_STRUCTURE record. (fa844c9)
- Not yet tested.

* Get card status first before testing for verify feature. (e0b7d20)
- Not yet complete, an Is_In() function for Card_States and
  Reader_States sets is needed to test for a specific state.

* Renamed Reader_Proto, Reader_ATR objects to Card_Proto, Card_ATR. (6e17f5a)

* Added outer exception block to pinpad example. (59d2f71)

* Updated API documentation. (33087da)

* Remove generated pcsc-version.ads file when distcleaning. (d1908b9)

* Added Action_Info() and Action_Result() helper functions. (4c46b18)
- Used by test and example programs to display information and
  result of a scard operation.

* Cleanup in thin binding example. (d0eabbf)

* Added project file for all examples. (56b5b41)

* Added first version of a SPE operation example. (5cdb784)

* Added Supports_SPE() convenience function to the thick binding. (50f1973)
- Can be used to test if a reader supporst SPE (secure PIN entry)
  operations.
- First implementation, not yet complete.

* Added CM_IOCTL_GET_FEATURE_REQUEST and PCSC_TLV_STRUCTURE. (a9b91ca)

* Declared Send_Buffers as constants. (370f96b)

* Added SCARD_CTL_CODE function to thin binding. (7379bb4)

* Made Send_Buffer of Transmit() and Control() an 'in' parameter. (de8aae7)
- Set default value to Null_Byte_Set.
- Added access type Byte_Access to thin binding.

* Minor: corrected indentation of comments in scard spec file. (77fdafe)

* Minor: corrected indentation for procedure params. (9932dea)

* Added MAX_BUFFER_SIZE constant to thin binding spec. (f7072af)

* Allow Get_Attribute tests to fail. (ac95f24)
- Using an explicit exception handler block.
- SCardGetAttribute is not supported by all ifd handlers.

* Allow READERSTATE_Access to point to the storage pool only. (f5626a7)

* Removed valgrind SCardControl related TODO item. (a080370)
- "Syscall param write(buf) points to uninitialised byte(s)" also
  happens when using the C API directly.

* Use GNAT external reference in lib project file to set Version. (902466c)

* Generate PCSC/Ada version information in Makefile. (44840b2)
- Added .gitignore to ignore generated file (pcsc-version.ads)
  and pcscada.specs (needed for adabrowse).

* Added another missing constant keyword in tests_utils body. (55ceabd)

* Removed obsolete TODO item (already resolved). (b875c80)

* Don't indent package index when generating API doc. (a1e4b67)

* Switched to AdaBrowse for automatic API doc generation. (fd28ae4)
- Added Makefile target 'docs' to create/update documentation.
- Minor specs reformatting to let the generated doc look nicer.

* Added "-gnaty3abefhiklmprt" and "-gnatwa" to Compiler switches. (0826eb1)
- Fixed various warnings reported by the compiler using these
  switches (mostly added constant keyword where usable).

* Added testcase for Thin.DWORD to Reader_States_Set conversion. (f4cdc9f)

* Added testcase for Thin.DWORD to Card_States_Set conversion. (66fdf28)

* Added test for Thin.DWORD to type Proto conversion. (f68030d)

* Moved Free() for Thin.READERSTATE_Array to Conversion package. (07bdbb8)
- Call this function after Test_To_C_RStatus_Set testcase to free
  memory after test.

* Renamed To_LPSTR function to To_Chars_Ptr. (0f5b7d2)
- Added corresponding testcase Test_To_Chars_Ptr.

* Implemented To_C (Reader_Status_Set) testcase. (d560c9d)

* Added To_Reader_ID from String type helper function. (ef24449)

* Reduced MAX_ATR_SIZE constant to 32. (0a6be2c)

* Added testcase stub for Test_To_C_RStatus_Set. (ece110a)
- Tests To_C conversion of Reader_Status_Set type.
- Simple function re-ordering in scard-conversion body.

* Create position-independent code (PIC) when compiling libpcscada. (5426194)
- Store call stack in exceptions for all build targets (utests,
  itests and lib).

* Added first testcase for PCSC.SCard.Conversion package. (cc2d3b3)
- Testcase : Slice_Readerstring.
- Added Last() and Get() functions for Reader_ID_Set.
- Renamed Get_Status() to Get() for Reader_Status_Set.

* Added PCSC.SCard.Conversion package description in spec file. (fe2d0b9)

* Moved conversion helpers into private package SCard.Conversion. (5026465)
- Needed to make these functions/procedures testable.

* Removed unneeded 'with Interfaces.C' from utils package. (9d09dd3)

* Synced TODO and README files with online versions. (1fab774)

* Added another TODO item. (51ed4c4)

* Removed Empty_Vector declarations in pcsc-scard package. (86d3034)
- Vectors are default initialized to Empty_Vector if not
  otherwise initialized.
- Removed corresponding TODO item.

* Using 'Length attribute to test for empty strings in test_utils. (7567067)
- Removed corresponding TODO item.

* Corrected typo in test_utils package. (1c1e90e)

* Use 'private with' for Interfaces.C* in pcsc-scard spec. (a0cd46e)
- This guarantees that types declared in these packages are only
  used in the private part of the thick binding.

* Removed Byte_Array_Access related Unchecked_Access attributes. (d80b8a0)
- When using anonymous 'access Byte', specifying 'Access works.

* Removed declaration of Byte_Array_Access type. (c915892)
- Use anonymous 'access Byte' instead.

* Completed unit tests for utils package. (06b74e8)
- Added Test_BArray_To_Hex_String testcase (tests Byte_Array to
  hex string conversion).
- Declared all Null_* constants in thin binding as private.
- Moved declaration of Null_Byte to thin binding; this type is
  also used in thick binding now.
- Added Null_Byte_Array type in pcsc-thin spec.

* Added Test_BSet_To_Hex_String testcase. (e0eced7)
- Tests Byte_Set to hex string conversion.
- Fixed some comments in pcsc-scard-utils spec.
- Fixed bug in To_Hex_String (Byte_Set) :
  o use Length attribute instead of Last attribute.

* Minor updates of spec comments. (91f936e)

* Added routine stubs for Byte_[Array|Set] to hex string testcases. (6905e23)

* Added Null_Byte_Set conversion test to Test_To_Long_Long_Integer. (9fb812b)
- Fixed procedure header comment.

* Added Test_ATR_To_Hex_String testcase. (8ccb520)
- Implemented To_Atr helper function which is used to create new
  ATR objects from Byte_Sets.
- Renamed exception 'Number_Too_Big' to 'Bytes_Too_Big' and
  moved the spec into pcsc.ads file.

* Changed test_pcscada to work with new reader status codes. (9e15223)

* Added another TODO item. (8f2bd36)

* Added Test_ReaderID_To_String testcase. (9726996)
- Made Reader_ID a private type.

* Completed Test_CStates_Set_To_String testcase. (e1422c2)
- Renamed all card states to start with S_Card_*
- Renamed all reader states to start with S_Reader_*
- Added procedure to add Card_State to Card_States_Set.
  o used mainly for testing purposes.

* Minor style fixes: indent and exception comment. (e15bf1c)

* Added another TODO item. (0dd3d94)

* Added empty Reader_States_Set test to Test_RStates_Set_To_String. (7d9b704)

* Added stub for Test_CStates_Set_To_String testcase. (452b7ab)

* Renamed Convert_Long_Long_Integer to Test_To_Long_Long_Integer. (28e958a)

* Removed 'use' clause where appropriate. (ac07e94)
- Replaced by 'use type' when operator is needed.

* Added test for Reader_States_Set to String conversion. (c28dae3)
- Added Add (Reader_State) procedure to make testing possible.
- Renamed Add_Reader for Reader_Status type to Add.
- Added another TODO item (reduction of 'use clause').
- Use 'box' <> for default values in qualified expressions.

* Added another TODO item. (b11775e)
- Plus cleanup.
- Use capital letters.

* Added test for Byte_Set to String conversion. (a386a9f)

* Minor style corrections. (0f84756)

* Use different obj subdirs for each specific target. (1c7dedb)
- Avoids double definitions when linking.

* Completed implementation of To_Long_Long_Integer function. (575138d)
- Added testcases for a small Byte_Set and a Byte_Set which is
  too big to be converted to Long_Long_Integer.

* Added Number_Too_Big exception. (80edc70)
- Will be raised by To_Long_Long_Integer function if a given
  Byte_Set cannot be converted because it's bigger than
  Long_Long_Integer'Last.

* Replaced To_Integer (Byte_Set) with To_Long_Long_Integer function. (63b0088)
- To_Integer worked onyl for Byte_Set (1 .. 2).
- To_Long_Long_Integer is not quite ready yet, it cannot handle
  different Byte_Set sizes.
- Added testcase for To_Long_Long_Integer conversion.

* Let dummy utils testcase fail (not yet implemented). (b7b9c40)

* Added unit test runner (ahven based). (3714855)
- Divided pcscada project files into pcscada_lib, pcscada_utests
  and pcscada_itests.
- Added skeleton utils test case.

* Create libpcscada.so symlink directly in $(PREFIX)/lib dir. (8886391)

* Renamed thick_tests.adb to test_pcscada.adb. (073b15e)
- Added utests and itests targets to Makefile.
- utests: unit tests (soon to come).
- itests: integration tests with reader and smarcard.

* Moved thin_tests.adb to new examples directory. (df267ce)

* Added install target to Makefile and gnat dynamic library project (bf19223)
file.

* Initial release version will be '0.5'. (f427f87)

* Corrected comment for version constant. (3d48266)

* No need for Card_States_Set and Reader_States_Set to be tagged (7b75743)
types.

* Changed order of Context and Card parameter in Connect procedure. (63b3c58)

* Using Update_Status_Set and Update_Reader_Status procedures to update (1386b3c)
Reader_Status_Set vector after calling Thin.SCardGetStatusChange.

* Added another TODO. (a1250f3)

* Added Print_Testinfo and Print_Result helper procedures to display infos about (9533458)
running tests.

* Added thick binding for SCardControl function. (c2a477c)
- Changed send and receive buffer types from void pointers to
  Byte_Array_Access in thin binding.

* Added another TODO item. (7037444)

* Removed 'with PCSC.Thin' from thick binding test (not needed any more). (78f6879)

* Added Null_[Byte_Set|ATR] default parameters where appropriate. (c0f8541)

* Added SCard.Attr_Maxinput Get_Attribute test. (34ea133)
- Added To_Integer conversion for Byte_Set.

* Refactoring: Use To_Hex_String functions to get hex-representation strings. (9a259bf)
- Added another Get_Attribute test case: Attr_ATR_String tag.

* Refactoring: Use To_Hex_String functions to get hex-representation strings. (f27e9ff)

* Renamed To_String functions to 'To_Hex_String' for those returning (8dd04da)
hex-representation strings.

- Removed SCard prefix usage in utils package (not needed there).
- Added another To_Hex_String function (Byte_Set, implicit length).
- Added missing in keywords for function parameters.

* Added two more TODOs. (b88a3c2)

* Added mapping array for attribute tags. (b8a8991)

* Added remaining attribute tags. (fcd9f86)

* Left trim Attr_Vendor_Name size output. (5f50b48)

* Added more abstraction to Byte_Set type. (d0a5c51)

* Extended Init_Attribute_Set function documentation. (527bb40)

* Removed Get_Attribute_Size test from thick binding test program. (7a78c64)

* Updated package description for PCSC.Thin.Reader. (71cd81b)

* Corrected Init_Attribute_Set header comment. (846a413)

* Added missing pcsc-thin-reader.ads file. (7c8046b)

* Replaced Get_Attribute_Size with Init_Attribute_Set function. (5ccb033)
- Returns a Null_Byte initialized byte set which can store the
  attribute identified by Attr parameter.

* First working version of Attribute handling in thick binding code. (c328358)
- Added Get_Attribute procedure; used to get attributes from the IFD handler.
- Added Get_Attribute_Size function to acquire size needed to store an
  attribute.
- Added tests to thick binding test program.

* Added default mode Share_Shared to Connect procedure. (2694d56)

* Added more TODOs (preferred proto support for Connect procedure). (04a080c)

* Validate Context first before calling Release_Context in (63fb3d2)
exception handler code.

* Use Return_Code'Image for Image of Return_Code not Thin.DWORD. (cc9d23f)

* Rewrote thick binding test program. (df27c42)
- It's similar to pcsc-lite testpcsc.c.
- This way it's easier to compare the test results.

* Last return code from the API is stored by calling Store_Error procedure. (d4ba371)
- Get_Return_Code can be used by the client to inquire the last return code.

* Print ATR info string after Status_Change test. (e26a015)

* Added Size functions for SCard.ATR type. (5bccf9d)

* Removed Timeout parameter from Wait_For_Readers procedure. (c0f9af1)

* Minor cleanup of declarations in thick_tests body. (7c33b53)

* Added Wait_For_Readers procedure. (c729605)
- Calls SCardGetStatusChange for reader for detection.
- Added Empty_Reader_Status_Set constant.
- Waiting for readers to become active works in thick_tests.

* Moved Callback type to utils package. (3fc8c40)

* Minor style fixes. (925c999)

* Minor style correction: use correct indent for function params. (8f442a7)

* Replaced Readers_List with private type Reader_ID_Set. (b6dc4d0)
- Added functions First and Empty for Reader_ID_Set handling (more to come).
- Added Null_Reader_ID constant.
- Moved Slice_Readerstring spec to body.

* SCard.ATR is a private type now. (15c7a88)
- Users do not need to care about ATR length any more.

* Added very basic error handling to thin_tests. (3a4142b)

* Refactoring: renamed Reader_Status_Array to Reader_Status_Set. (2724e01)
- Still not optimal: could be easily confused with Reader_States_Set.

* Refactoring: renamed Reader_States_Array to Reader_States_Set. (13002d4)

* Refactoring: renamed Card_States_Array to Card_States_Set. (ab0715f)

* Free() READERSTATE_Array after converting results back to Ada types. (60a4ef9)

* Basic status change detection works for client code. (316ef81)
- Added simple Size/Get_Status functions for Reader_Status_Array.
- Updating Reader_Status items in Reader_Status_Array by calling
  Replace_Element.
- TODO: Update already existing elements, replacing is not appropriate.

* Added explanation to Status_Change procedure. (06d6be2)
- Minor refactoring: renamed States to Reader_States.

* Implemented To_Ada conversion from C readerstate (DWORD) to Reader_States type. (c41ba87)
- Also added To_String function for Reader_States type.

* Added type Reader_States_Array. (b87285e)
- Used to handle multiple reader states.

* Refactoring: renamed Readerstates type to Reader_Status_Array. (6f6cf76)

* Refactoring: renamed Card_States to Card_States_Array. (316cdb9)

* Use Thin.SCARD_STATE_UNAWARE instead of 0 for dwEventState when constructing C (f871645)
states.

* Readerstates_Access not needed at the moment. (b939b9c)

* Thick binding reader status change detection works. (4ff36ae)
- Reduced p2p array to just array of pointers.
- Moved spec for thick binding conversion functions to body.
- Added some comments.

* First version with a thick binding for reader status change detection. (df8f9a1)
- Still needs huge cleanup / improvement.
- Comments missing.

* Removed test status change detection. (2bb614c)
- Code did only work for one reader anyway.

* Use correct range for Return_Code subtype. (17e7a69)

* Updated comments to make API doc look nice. (775fbe4)

* Added Byte_Set subtype to thick-binding. (ca9222f)
- At the moment, Byte_Sets are just subtypes of Thin.Byte_Arrays;
  this should be improved by a real abstraction soon.

* Minor corrections in comments. (a66e3cd)

* Added thick-binding abstraction for SCARD_IO_REQUESTs of thin-binding. (48ad8bd)

* Added 'tests' target to Makefile. (17de321)
- Used to start thin- and thick-test binaries.

* Separated thick- and thin-binding tests into different files. (c1e9cbb)

* Added Recv_Len argument to Transmit() procedure. (9f7e245)
- Indicates actual bytes returned from SCard.

* Use correct value for cbSendLength parameter in Transmit(). (ebd57c0)

* Print out test APDU to send before calling Transmit() procedure. (44a0b64)

* First basic thick binding implementation of Transmit() procedure. (a533a23)
- Needs further abstraction from thin binding.

* Moved Print_ReaderID() helper procedure to SCard.Utils package. (dcd13dc)
- No need for using Unrestricted_Access in For_Every_Reader() any more.

* Card states are handled in an indefinite vector. (9199b58)
- Actual implementation is hidden for a client.
- Made Utils a child package of PCSC.SCard to provide access to private
  card states package.

* Added Card_State_Array type. (06c27f2)
- Stores multiple card states translated from C dword (by To_Ada).
- Added To_String for Card_State_Array.

* Using correct state type for Status procedure (Card_State). (584dd69)
- Bitwise 'and' works.
- Renamed some state constants.

* Added thick binding for SCardStatus function. (bc17b48)
- Prototype, not yet fully functional. Still needs some refactoring.
- To_Ada (SCard_State) does not work yet since more than one state is encoded
  in dwState returned from SCardStatus.

* Added thick binding for SCardDisconnect function. (3f63e14)

* Added thick binding for SCardEndTransaction function. (ba3612a)
- Code cleanup in runner.
- Renamed SCard_Init to SCard_Action.

* Added thick binding for SCardBeginTransaction function. (bbe58a3)
- Removed SCARD_PROTOCOL_T15 proto in Connect and Reconnect procedures for now.

* Added thick binding for SCardReconnect procedure. (4e3040a)

* Removed SCard_Mode as parameter from Connect procedure in thick binding. (ae22837)
- Modes are tried in order.

* Moved helper functions/procedures to extra package PCSC.Utils. (82d907d)

* Removed Ada.Text_IO, not needed in thick binding. (014876e)

* Implemented Get_Active_Proto function. (174d3a3)
- Returns protocol in use after SCard connect.

* Implemented first working Connect procedure in thick binding. (ae4668e)

* Added SCard_Proto type needed for Connect(). (38a529b)
- Contains possible SCard protocols.

* Added SCard_Mode type needed for Connect(). (03994c7)

* For_Every_Reader rewrite. (3c523e3)
- Use access to procedure instead of generic.
- Print_ReaderID should be moved to new helper scard package.

* Added For_Every_Reader generic. (8171b9e)
- Can be used to perform actions on all available readers.

* Implemented To_String for Reader_ID. (5989b62)

* List_Readers returns a vector of Reader_IDs instead of just a string. (8fa9911)
- Slice_Readerstring () is responsible for slicing the char array coming from
  the thin binding into reader friendly names and fill Readers_List vector.
- TODO: Implement iterator.

* Using aliased char_array for call to SCardListReaders. (2fcf5c0)
- No Free () for char_array needed any longer.

* List_Readers slices '\0' separated readers list correctly. (2d12659)
- Using char_array.
- Implemented Free() for char_array.

* Fixed memory allocation in ListReaders. (494772c)

* Added first thick-binding procedures. (1b3fca9)

* Initial import of PCSC/Ada project. (c49ec49)
