|
|
@@ -29,17 +29,17 @@ namespace OHVConnector
|
|
|
TsQueue<QueueObject> qQ = new TsQueue<QueueObject>();
|
|
|
TsQueue<OCSMessage> qqW = new TsQueue<OCSMessage>();
|
|
|
|
|
|
- byte[] crcTable = ChksumUtils.Crc8GenTable(0xD5);
|
|
|
+ byte[] crcTable = ChksumUtils.Crc8GenTable( 0xD5 );
|
|
|
|
|
|
TimerTemplate<byte, OCSMessage> quzT3 = new TimerTemplate<byte, OCSMessage>();
|
|
|
TsMap<long, SyncObject> ddReq = new TsMap<long, SyncObject>(); //sync 통신을 위함.
|
|
|
|
|
|
TcpConnector h = new TcpConnector();
|
|
|
|
|
|
- Thread _TQ;//pumping queue thread
|
|
|
- Thread _TW;//write
|
|
|
- Thread _TR;//read
|
|
|
- Thread _TLINK;//Linktest
|
|
|
+ Thread _TQ; //pumping queue thread
|
|
|
+ Thread _TW; //write
|
|
|
+ Thread _TR; //read
|
|
|
+ Thread _TLINK; //Link test
|
|
|
|
|
|
bool ModeActive { get; set; }
|
|
|
bool? inited;
|
|
|
@@ -97,7 +97,7 @@ namespace OHVConnector
|
|
|
public void Disconnect()
|
|
|
{
|
|
|
//if (inited.HasValue && inited.Value)
|
|
|
- _OnLog( "HSMS DISCONNECT REQ " + Config );
|
|
|
+ _OnLog( "OCS DISCONNECT REQ " + Config );
|
|
|
|
|
|
inited = false;
|
|
|
quzT3.StopAll();
|
|
|
@@ -107,7 +107,7 @@ namespace OHVConnector
|
|
|
h.StopListen();
|
|
|
ThreadUtils.Kill( _TR );
|
|
|
|
|
|
- h.CloseSocket();//Kill을 사용할 경우 뒤에 존재해야 한다.
|
|
|
+ h.CloseSocket();//Kill 을 사용할 경우 뒤에 존재해야 한다.
|
|
|
}
|
|
|
|
|
|
void _OnDicontd( Exception e )
|
|
|
@@ -154,22 +154,21 @@ namespace OHVConnector
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
-
|
|
|
private void _OnLog( string obj )
|
|
|
{
|
|
|
qQ.Enqueue( new QoLog { Arg0 = obj } );
|
|
|
}
|
|
|
|
|
|
- private void _OnTimeout(byte crc, OCSMessage msg)
|
|
|
+ private void _OnTimeout( byte crc, OCSMessage msg )
|
|
|
{
|
|
|
- if (null == msg)
|
|
|
+ if ( null == msg )
|
|
|
{
|
|
|
- logger.W("T3 [{0}] attachment is null", crc);
|
|
|
+ logger.W( "T3 [{0}] attachment is null", crc );
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
qQ.Enqueue( new QoTimeout { Arg0 = msg } );
|
|
|
- _OnLog($"T3 TIMEOUT {msg.LogFormat()}");
|
|
|
+ _OnLog( $"T3 TIMEOUT {msg.LogFormat()}" );
|
|
|
}
|
|
|
|
|
|
#region Thread Method
|
|
|
@@ -188,9 +187,9 @@ namespace OHVConnector
|
|
|
waked = LockUtils.Wait( lockLink );
|
|
|
|
|
|
if ( waked )
|
|
|
- continue;//notify: 패킷을 수신할때마다 reset함.
|
|
|
+ continue;//notify: 패킷을 수신할때마다 reset 함.
|
|
|
|
|
|
- if ( Connected )//연결여부와 상관없이 thread가 기동되므로 연결시에만.
|
|
|
+ if ( Connected )//연결여부와 상관없이 thread 가 기동되므로 연결시에만.
|
|
|
{
|
|
|
//SendCtrlMsg(5);
|
|
|
}
|
|
|
@@ -375,8 +374,8 @@ namespace OHVConnector
|
|
|
ocsMeg.Tag = h.ReadAscii( 4 );
|
|
|
ocsMeg.SubCode = h.ReadAscii( 3 );
|
|
|
|
|
|
- if (ocsMeg.Kind == eKind.B)
|
|
|
- ocsMeg.BatterySOH = h.ReadAscii(3);
|
|
|
+ if ( ocsMeg.Kind == eKind.B )
|
|
|
+ ocsMeg.BatterySOH = h.ReadAscii( 3 );
|
|
|
|
|
|
//CheckSum 을 해야 하나??
|
|
|
ocsMeg.CheckSum = h.ReadAscii( 1 );
|
|
|
@@ -425,13 +424,13 @@ namespace OHVConnector
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- //Send 한 Message 의 Reply 로 판단.
|
|
|
- var crc = MakeCRC8CheckSum(recd, false);
|
|
|
- if (this.quzT3.HasId(crc))
|
|
|
+ //Send 한 Message 의 Reply 로 판단.
|
|
|
+ var crc = MakeCRC8CheckSum( recd, false );
|
|
|
+ if ( this.quzT3.HasId( crc ) )
|
|
|
{
|
|
|
- //Send 목록에서 삭제한다.
|
|
|
- this.quzT3.Stop(crc);
|
|
|
- this._OnLog($"[Reply] - {recd.LogFormat()}");
|
|
|
+ //Send 목록에서 삭제한다.
|
|
|
+ this.quzT3.Stop( crc );
|
|
|
+ this._OnLog( $"[Reply] - {recd.LogFormat()}" );
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
@@ -445,7 +444,8 @@ namespace OHVConnector
|
|
|
h.CloseSocket();
|
|
|
_OnDicontd( e );
|
|
|
|
|
|
- LockUtils.Wait( 1000 );//잠시대기.
|
|
|
+ var waitTime = ( this.Config.T3 + 2 ) * ConstUtils.ONE_SECOND;
|
|
|
+ LockUtils.Wait( waitTime );//잠시대기.
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
@@ -521,16 +521,16 @@ namespace OHVConnector
|
|
|
}
|
|
|
|
|
|
#region 2020.08.25. Kang. OCS에서 응답 안하는 것에 대해 Retry 를 위해 추가.
|
|
|
- var crc = MakeCRC8CheckSum(msg, true);
|
|
|
+ var crc = MakeCRC8CheckSum( msg, true );
|
|
|
//logger.D(checkSum);
|
|
|
|
|
|
- if (this.quzT3.HasId(crc))
|
|
|
+ if ( this.quzT3.HasId( crc ) )
|
|
|
{
|
|
|
- _OnLog("quzT3 Has ID" + msg.LogFormat());
|
|
|
+ _OnLog( "quzT3 Has ID" + msg.LogFormat() );
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- this.quzT3.StartOnce(Config.T3 * ConstUtils.ONE_SECOND, crc, msg);
|
|
|
+ this.quzT3.StartOnce( Config.T3 * ConstUtils.ONE_SECOND, crc, msg );
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
@@ -557,29 +557,29 @@ namespace OHVConnector
|
|
|
/// 응답을 보낼 때 사용.
|
|
|
/// </summary>
|
|
|
/// <param name="msg"></param>
|
|
|
- public void Reply(OCSMessage msg)
|
|
|
+ public void Reply( OCSMessage msg )
|
|
|
{
|
|
|
msg.RevID = Config.HostID;
|
|
|
msg.SendID = Config.ID;
|
|
|
|
|
|
- if (!Connected)
|
|
|
+ if ( !Connected )
|
|
|
{
|
|
|
- _OnLog("Reply fail not connected" + msg.LogFormat());
|
|
|
+ _OnLog( "Reply fail not connected" + msg.LogFormat() );
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- qqW.Enqueue(msg);
|
|
|
+ qqW.Enqueue( msg );
|
|
|
}
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
#region HelpMothed
|
|
|
- byte MakeCRC8CheckSum(OCSMessage msg, bool isSend)
|
|
|
+ byte MakeCRC8CheckSum( OCSMessage msg, bool isSend )
|
|
|
{
|
|
|
- if (isSend)
|
|
|
- return ChksumUtils.Crc8(this.crcTable, msg.ToCRC8Byte4Send());
|
|
|
+ if ( isSend )
|
|
|
+ return ChksumUtils.Crc8( this.crcTable, msg.ToCRC8Byte4Send() );
|
|
|
else
|
|
|
- return ChksumUtils.Crc8(this.crcTable, msg.ToCRC8Byte4Received());
|
|
|
+ return ChksumUtils.Crc8( this.crcTable, msg.ToCRC8Byte4Received() );
|
|
|
}
|
|
|
void ChgTcpTimeout( bool infinite )
|
|
|
{
|