diff options
author | Harald Welte <laforge@gnumonks.org> | 2010-08-12 20:30:07 +0800 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2010-08-12 20:30:07 +0800 |
commit | a1111c14e99e17688c237ce2041080fa765425e3 (patch) | |
tree | f9a42e6103d989687272dfda2469f98c5a27d6fc | |
parent | b134db2bdc1f3334cd11853b5b9426266d3995b4 (diff) |
add support for decoding re-entering of a station
When entering, leaving and re-entering the station, a different
transaction code (0x80) seems to be used, as opposed to the normal 0x00.
I don't really understand why, since at least billing-wise it makes no
difference. If you enter and leave without a ride, you still need to pay the
fare. However, it might count as a 'connection' similar to the situation
when you make a connection from bus to MRT or otherwise. In that case,
there is some reduction of the fare price of the second ride.
-rw-r--r-- | easytool/data.c | 1 | ||||
-rw-r--r-- | easytool/easycard.h | 1 | ||||
-rw-r--r-- | easytool/easytool.c | 4 |
3 files changed, 6 insertions, 0 deletions
diff --git a/easytool/data.c b/easytool/data.c index ac5530b..4b706a7 100644 --- a/easytool/data.c +++ b/easytool/data.c @@ -118,6 +118,7 @@ const struct value_string taipei_mrt_stn_id[] = { /* Easycard Transaction Type names */ const struct value_string easy_tt_names[] = { { EASY_TT_MRT_ENTER, "Enter MRT Stn" }, + { EASY_TT_MRT_REENTER, "ReEnter MRT Stn" }, { EASY_TT_MRT_EXIT, "Leave MRT Stn" }, { EASY_TT_PURCHASE, "Shop Purchase" }, { 0, NULL } diff --git a/easytool/easycard.h b/easytool/easycard.h index b4d4afc..9d547f8 100644 --- a/easytool/easycard.h +++ b/easytool/easycard.h @@ -4,6 +4,7 @@ #include "utils.h" #define EASY_TT_MRT_ENTER 0x00 +#define EASY_TT_MRT_REENTER 0x80 #define EASY_TT_MRT_EXIT 0x11 #define EASY_TT_PURCHASE 0x20 diff --git a/easytool/easytool.c b/easytool/easytool.c index efb083f..b02842d 100644 --- a/easytool/easytool.c +++ b/easytool/easytool.c @@ -135,6 +135,7 @@ static void dump_easy_log(const struct easy_log_rec *elr) elr->amount, elr->remaining); switch (elr->trans_type) { case EASY_TT_MRT_ENTER: + case EASY_TT_MRT_REENTER: case EASY_TT_MRT_EXIT: printf("\tMRT Station %s\n", get_value_string(taipei_mrt_stn_id, @@ -183,6 +184,9 @@ static void dump_easycard(mifare_tag *mft) unsigned int i; for (i = 0; i < 3; i++) { void *data = mft->amb[block_base+i].mbd.abtData; + /* first block of sector 3 is not a log record */ + if (sect == 3 && i == 0) + continue; dump_easy_log(data); } } |