Sub Class_Globals
    Private SerialOut As OutputStream
    Private SerialIn As InputStream
    Private astream As AsyncStreams
    Private phone As Phone
 
    Private mConnuri As String
    Private mPortspeed As String
    Private mCallback As Object
    Private mEvent As String
    Dim Response, Error As StringBuilder
    Dim SerialTimer1 As Timer
    Dim RestData As String
End Sub
Public Sub Initialize(Callback As Object, EventName As String, PortSpeed As String, URI As String)
 
    Log("Initializing Uart serial " )
    sb.Initialize
    mCallback = Callback
    mEvent = EventName
    mPortspeed = PortSpeed
    mConnuri = URI
    Log("Callback " & Callback )
    Log("Event Name " & EventName )
    Log("Port Name " & mConnuri )
    Log("Port speed " & PortSpeed )
 
    Response.Initialize
    Error.Initialize
    phone.Shell("stty -F " & mConnuri & " " & mPortspeed & " cs8 -parenb -cstopb -crtscts", Null, Response, Error)
    Log("Response : " & Response)
 
    Log("Error : " & Error)
    Log(" ")
End Sub
Public Sub start
    Log("Starting Uart serial " )
    SerialIn = File.OpenInput("",mConnuri) ' open serial input
    SerialOut = File.OpenOutput("",mConnuri,True) ' open serial output
    astream.Initialize(SerialIn,SerialOut,"Astream")
    UartState = True
    SerialTimer1.Initialize("SerialTimer1",30)
End Sub
Public Sub Disconnect
     
    astream.Close
    UartState = False
 
End Sub
Private Sub Astream_Error
    Log ("AStream_Error")
    Try
        astream.Close
        UartState = False    
        If SubExists(mCallback, mEvent & "_Error") Then
            CallSub2(mCallback, mEvent & "_Error", "Astream error")
        End If
    Catch
        Log(LastException)
    End Try
End Sub
Private Sub Astream_Terminated
    Log ("AStream_Terminated")
    If SubExists(mCallback, mEvent & "_Error") Then
        CallSub2(mCallback, mEvent & "_Error", "Astream Terminated")
    End If
End Sub
Private Sub Astream_NewData (Buffer() As Byte)
    SerialTimer1.Enabled = False
    Try
    Dim Recdata As String
    Recdata = BytesToString(Buffer, 0, Buffer.Length, "UTF8")
    RestData = RestData & Recdata
    Catch
        Log(LastException)
    End Try
    SerialTimer1.Enabled = True
End Sub
Private Sub SerialTimer1_Tick
    SerialTimer1.Enabled = False
    If SubExists(mCallback, mEvent & "_DataRecived") Then
        CallSub2(mCallback, mEvent & "_DataRecived", RestData)
    End If
    RestData = ""
End Sub
Public Sub WriteData(data As String)
    Log("Sending Serial data " & data )
    File.WriteString("","/dev/user_external_tty",data)
 
End Sub