SmartX 14 digit tag sid handle as error-borrower
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 14 Oct 2023 12:57:32 +0000 (14:57 +0200)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 14 Oct 2023 12:57:32 +0000 (14:57 +0200)
examples/selfcheck.html
examples/selfcheck.js
lib/Biblio/RFID/Reader.pm
scripts/RFID-JSONP-server.pl

index 1c0b378..6a54b77 100644 (file)
@@ -217,5 +217,9 @@ Greška. Odnesite knjige na pult.
 
 </div>
 
+<div class="page" id="error-borrower">
+       Studentska iskaznica nije povezana sa AAI@EduHr
+</div>
+
 </body>
 </html>
index 218bf3a..8b7b029 100644 (file)
@@ -84,7 +84,7 @@ function change_page(new_state) {
                        },end_timeout);
                }
 
-               if ( state == 'error' ) {
+               if ( state == 'error' || state == 'error-borrower' ) {
                        beep( 'error page' );
                        window.setTimeout(function(){
                                //change_page('start');
@@ -106,6 +106,12 @@ function got_visible_tags(data,textStatus) {
                html = '<ul class="tags">';
                $.each(data.tags, function(i,tag) {
                        console.debug( i, tag );
+
+                 if ( tag.hasOwnProperty('error') ) {
+                               html += 'ERROR ' + tag.sid + ' ' + tag.error;
+                               change_page('error-borrower');
+                 } else {
+
                        html += '<li><tt class="' + tag.security + '">' + tag.sid;
                        var content = tag.content || tag.borrower.cardnumber;
 
@@ -132,6 +138,9 @@ function got_visible_tags(data,textStatus) {
                                window[state]( content, tag ); // call function with barcode
 
                        }
+
+                 } // not error
+
                });
                html += '</ul>';
 
index b3b6fd7..cb8a674 100644 (file)
@@ -83,8 +83,16 @@ sub tags {
                                };
                                if ( $@ ) {
                                        warn "ERROR reading $tag: $@\n";
-                                       $self->_invalidate_tag( $tag );
-                                       next;
+                                       if ( length $tag == 14 ) {
+                                               warn "XXX $tag probably new SmartX 2023+\n";
+                                               $self->{_tags}->{$tag}->{blocks} = [];
+                                               $self->{_tags}->{$tag}->{afi} = 0;
+                                               $self->{_tags}->{$tag}->{type} = 'SmartX';
+                                               $self->{_tags}->{$tag}->{reader} = ref $rfid; # save reader info
+                                       } else {
+                                               $self->_invalidate_tag( $tag );
+                                               next;
+                                       }
                                }
 
                                $triggers->{enter}->( $tag ) if $triggers->{enter};
index 62ae9b1..5440763 100755 (executable)
@@ -216,6 +216,7 @@ sub http_server {
                                        }
                                        close($fh);
                                }
+                               $rfid_sid_cache = undef if $path eq 'examples/selfcheck.html'; # invalidate on reload
                        } elsif ( $method =~ m{/scan(/only/(.+))?} ) {
                                my $only = $2;
                                my @tags = $rfid->tags( reader => sub {
@@ -235,6 +236,7 @@ sub http_server {
                                                my $borrower = rfid_borrower $hash;
                                                if ( exists $borrower->{error} ) {
                                                        warn "ERROR ", dump($borrower);
+                                                       $hash->{error} = $borrower->{error};
                                                } else {
                                                        $hash->{borrower} = $borrower->{borrower};
                                                        $hash->{content}  = $borrower->{borrower}->{cardnumber}; # compatibile with 3M tags