// Path: app/src/main/java/org/hexpresso/obd/ObdMessageData.java
// public class ObdMessageData {
//     private ArrayList<String>  mData              = null;
//     private String             mRawData           = null;
//     private String             mMessageIdentifier = null;
// 
//     public ObdMessageData(String rawData) {
//         // Remove all whitespace characters but ' '
//         rawData = rawData.replaceAll("[\\t\\n\\x0B\\f\\r]", "");
// 
//         // Split the data into items
//         String[] data = rawData.split("\\s");
//         if ( data.length == 0 )
//         {
//             return;
//         }
// 
//         // Get the message identifier (first value)
//         mMessageIdentifier = data[0];
// 
//         // Get the message data (other values)
//         mData = new ArrayList<>();
//         for( int i = 1; i < data.length; ++i ) {
//             // Only keep 2 bytes data values (remove "<DATA ERROR" values)
//             String item = data[i];
//             if ( item.length() == 2 ) {
//                 mData.add(data[i]);
//             }
//         }
// 
//         mRawData = rawData;
// /*
//         if (!rawData.matches("([0-9A-F])+")) {
//             throw new NonNumericResponseException(rawData);
//         }
// */
//     }
// 
//     public String getMessageIdentifier() {
//         return mMessageIdentifier;
//     }
// 
//     public String getRawData() {
//         return mRawData;
//     }
// 
//     public ArrayList<String> getData() {
//         return mData;
//     }
// 
//     public int getSize()
//     {
//         return mData.size();
//     }
// 
//     public int getDataByte(int index) {
//         return Integer.parseInt(mData.get(index), 16);
//     }
// }
// 
// Path: app/src/main/java/org/hexpresso/obd/ObdMessageFilter.java
// public abstract class ObdMessageFilter {
// 
//     private String mMessageIdentifier   = null;
//     private ArrayList<ObdMessageFilterListener> mObdMessageFilterListeners = null;
// 
//     private ObdMessageFilter() {
// 
//     }
// 
//     protected ObdMessageFilter(String messageIdentifier) {
//         mObdMessageFilterListeners = new ArrayList<>();
//         mMessageIdentifier = messageIdentifier;
//     }
// 
//     public void receive(String rawData)
//     {
//         // Check that the message identifier match
//         if ( !rawData.startsWith( mMessageIdentifier ) )
//         {
//             return;
//         }
// 
//         ObdMessageData obdMessage = new ObdMessageData(rawData);
// 
//         if ( doProcessMessage(obdMessage) )
//         {
//             for (ObdMessageFilterListener listener: mObdMessageFilterListeners) {
//                 listener.onMessageReceived(this);
//             }
//         }
//     }
// 
//     protected abstract boolean doProcessMessage(ObdMessageData messageData);
// 
// 
//     public interface ObdMessageFilterListener {
//         void onMessageReceived(ObdMessageFilter messageFilter);
//     }
// 
//     public void addObdMessageFilterListener(ObdMessageFilterListener listener) {
//         mObdMessageFilterListeners.add(listener);
//     }
// }


import org.hexpresso.obd.ObdMessageData;
import org.hexpresso.obd.ObdMessageFilter;
import java.util.ArrayList;

package org.hexpresso.soulevspy.obd;



/**
 * Created by Pierre-Etienne Messier <pierre.etienne.messier@gmail.com> on 2015-10-13.
 */
public class Status050MessageFilter extends ObdMessageFilter {

    public enum TurnSignal {

// Path: app/src/main/java/org/hexpresso/obd/ObdMessageData.java
// public class ObdMessageData {
//     private ArrayList<String>  mData              = null;
//     private String             mRawData           = null;
//     private String             mMessageIdentifier = null;
// 
//     public ObdMessageData(String rawData) {
//         // Remove all whitespace characters but ' '
//         rawData = rawData.replaceAll("[\\t\\n\\x0B\\f\\r]", "");
// 
//         // Split the data into items
//         String[] data = rawData.split("\\s");
//         if ( data.length == 0 )
//         {
//             return;
//         }
// 
//         // Get the message identifier (first value)
//         mMessageIdentifier = data[0];
// 
//         // Get the message data (other values)
//         mData = new ArrayList<>();
//         for( int i = 1; i < data.length; ++i ) {
//             // Only keep 2 bytes data values (remove "<DATA ERROR" values)
//             String item = data[i];
//             if ( item.length() == 2 ) {
//                 mData.add(data[i]);
//             }
//         }
// 
//         mRawData = rawData;
// /*
//         if (!rawData.matches("([0-9A-F])+")) {
//             throw new NonNumericResponseException(rawData);
//         }
// */
//     }
// 
//     public String getMessageIdentifier() {
//         return mMessageIdentifier;
//     }
// 
//     public String getRawData() {
//         return mRawData;
//     }
// 
//     public ArrayList<String> getData() {
//         return mData;
//     }
// 
//     public int getSize()
//     {
//         return mData.size();
//     }
// 
//     public int getDataByte(int index) {
//         return Integer.parseInt(mData.get(index), 16);
//     }
// }
// 
// Path: app/src/main/java/org/hexpresso/obd/ObdMessageFilter.java
// public abstract class ObdMessageFilter {
// 
//     private String mMessageIdentifier   = null;
//     private ArrayList<ObdMessageFilterListener> mObdMessageFilterListeners = null;
// 
//     private ObdMessageFilter() {
// 
//     }
// 
//     protected ObdMessageFilter(String messageIdentifier) {
//         mObdMessageFilterListeners = new ArrayList<>();
//         mMessageIdentifier = messageIdentifier;
//     }
// 
//     public void receive(String rawData)
//     {
//         // Check that the message identifier match
//         if ( !rawData.startsWith( mMessageIdentifier ) )
//         {
//             return;
//         }
// 
//         ObdMessageData obdMessage = new ObdMessageData(rawData);
// 
//         if ( doProcessMessage(obdMessage) )
//         {
//             for (ObdMessageFilterListener listener: mObdMessageFilterListeners) {
//                 listener.onMessageReceived(this);
//             }
//         }
//     }
// 
//     protected abstract boolean doProcessMessage(ObdMessageData messageData);
// 
// 
//     public interface ObdMessageFilterListener {
//         void onMessageReceived(ObdMessageFilter messageFilter);
//     }
// 
//     public void addObdMessageFilterListener(ObdMessageFilterListener listener) {
//         mObdMessageFilterListeners.add(listener);
//     }
// }


// Path: app/src/main/java/org/hexpresso/soulevspy/obd/Status050MessageFilter.java
import org.hexpresso.obd.ObdMessageData;
import org.hexpresso.obd.ObdMessageFilter;
import java.util.ArrayList;

package org.hexpresso.soulevspy.obd;



/**
 * Created by Pierre-Etienne Messier <pierre.etienne.messier@gmail.com> on 2015-10-13.
 */
public class Status050MessageFilter extends ObdMessageFilter {

    public enum TurnSignal {

        OFF,
