mirror of https://github.com/duggerd/KFDtool.git
SW: Cleanup contributed code; fixes #9
This commit is contained in:
parent
79f69711b6
commit
258f80d4c9
12
README.md
12
README.md
|
@ -32,12 +32,20 @@ Features
|
||||||
|
|
||||||
The KFDtool software supports KFD features through the KFDtool hardware adapter (TWI/3WI/Three Wire Interface), as well as through a IP (UDP) connection (DLI/Data Link Independent interface).
|
The KFDtool software supports KFD features through the KFDtool hardware adapter (TWI/3WI/Three Wire Interface), as well as through a IP (UDP) connection (DLI/Data Link Independent interface).
|
||||||
|
|
||||||
Supported Manual Rekeying Features (TIA-102.AACD-A section 2.3)
|
Supported Manual Rekeying Features (TIA-102.AACD-A)
|
||||||
|
|
||||||
* 2.3.1 Keyload
|
* 2.3.1 Keyload
|
||||||
* 2.3.2 Key Erase
|
* 2.3.2 Key Erase
|
||||||
* 2.3.3 Erase All Keys
|
* 2.3.3 Erase All Keys
|
||||||
* 2.3.4 View Key Info
|
* 2.3.4 View Key Info
|
||||||
|
* 2.3.5 View Individual RSI
|
||||||
|
* 2.3.6 Load Individual RSI
|
||||||
|
* 2.3.7 View KMF RSI
|
||||||
|
* 2.3.8 Load KMF RSI
|
||||||
|
* 2.3.9 View MNP
|
||||||
|
* 2.3.10 Load MNP
|
||||||
|
* 2.3.11 View Keyset Info
|
||||||
|
* 2.3.12 Activate Keyset
|
||||||
|
|
||||||
Motorola refers to the P25 standard 3 wire interface (3WI) keyload protocol as ASTRO 25 mode or CKR mode.
|
Motorola refers to the P25 standard 3 wire interface (3WI) keyload protocol as ASTRO 25 mode or CKR mode.
|
||||||
|
|
||||||
|
@ -54,7 +62,7 @@ Key validators/generators are available for the following algorithms:
|
||||||
|
|
||||||
The KFDtool software only supports MR Emulator features through the KFDtool hardware adapter (TWI/3WI/Three Wire Interface) at this time.
|
The KFDtool software only supports MR Emulator features through the KFDtool hardware adapter (TWI/3WI/Three Wire Interface) at this time.
|
||||||
|
|
||||||
Supported Manual Rekeying Features (TIA-102.AACD-A section 2.3)
|
Supported Manual Rekeying Features (TIA-102.AACD-A)
|
||||||
|
|
||||||
* 2.3.1 Keyload
|
* 2.3.1 Keyload
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,6 @@ namespace KFDtool.P25.ManualRekey
|
||||||
DeviceProtocol.EndSession();
|
DeviceProtocol.EndSession();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.1 */
|
|
||||||
public void Keyload(List<CmdKeyItem> keyItems)
|
public void Keyload(List<CmdKeyItem> keyItems)
|
||||||
{
|
{
|
||||||
List<List<CmdKeyItem>> keyGroups = KeyPartitioner.PartitionKeys(keyItems);
|
List<List<CmdKeyItem>> keyGroups = KeyPartitioner.PartitionKeys(keyItems);
|
||||||
|
@ -196,33 +195,6 @@ namespace KFDtool.P25.ManualRekey
|
||||||
End();
|
End();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.2 */
|
|
||||||
public void LoadIndividualRsi()
|
|
||||||
{
|
|
||||||
//cg
|
|
||||||
// This is implemented with ChangeRSI()
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.3 */
|
|
||||||
public void LoadKmfRsi()
|
|
||||||
{
|
|
||||||
//cg
|
|
||||||
// This command is actually LoadConfig
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.4 */
|
|
||||||
public void LoadMnp()
|
|
||||||
{
|
|
||||||
//cg
|
|
||||||
// This process actually takes two commands:
|
|
||||||
// List KMF RSI
|
|
||||||
// Load Config, with RSI and new MNP
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.5 */
|
|
||||||
public void EraseKeys(List<CmdKeyItem> keyItems)
|
public void EraseKeys(List<CmdKeyItem> keyItems)
|
||||||
{
|
{
|
||||||
List<List<CmdKeyItem>> keyGroups = KeyPartitioner.PartitionKeys(keyItems);
|
List<List<CmdKeyItem>> keyGroups = KeyPartitioner.PartitionKeys(keyItems);
|
||||||
|
@ -355,7 +327,6 @@ namespace KFDtool.P25.ManualRekey
|
||||||
End();
|
End();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.6 */
|
|
||||||
public void EraseAllKeys()
|
public void EraseAllKeys()
|
||||||
{
|
{
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -393,7 +364,6 @@ namespace KFDtool.P25.ManualRekey
|
||||||
End();
|
End();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.7 */
|
|
||||||
public List<RspKeyInfo> ViewKeyInfo()
|
public List<RspKeyInfo> ViewKeyInfo()
|
||||||
{
|
{
|
||||||
List<RspKeyInfo> result = new List<RspKeyInfo>();
|
List<RspKeyInfo> result = new List<RspKeyInfo>();
|
||||||
|
@ -474,16 +444,8 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.8 */
|
|
||||||
public void ViewIndividualRsi()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.7.2.15 */
|
|
||||||
public int ViewKmfRsi()
|
public int ViewKmfRsi()
|
||||||
{
|
{
|
||||||
//cg
|
|
||||||
int result = new int();
|
int result = new int();
|
||||||
|
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -527,10 +489,8 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.7.2.13 */
|
|
||||||
public int ViewMnp()
|
public int ViewMnp()
|
||||||
{
|
{
|
||||||
//cg
|
|
||||||
int result = new int();
|
int result = new int();
|
||||||
|
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -574,46 +534,8 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.11 */
|
|
||||||
public void ViewKeysetInfo()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.12 */
|
|
||||||
public void ActivateKeyset()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.13 */
|
|
||||||
public void LoadAuthenticationKey()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.14 */
|
|
||||||
public void DeleteAuthenticationKey()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.15 */
|
|
||||||
public void ViewSuidInfo()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.8.16 */
|
|
||||||
public void ViewActiveSuidInfo()
|
|
||||||
{
|
|
||||||
throw new NotImplementedException();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.7.2.22 */
|
|
||||||
public RspRsiInfo LoadConfig(int kmfRsi, int mnp)
|
public RspRsiInfo LoadConfig(int kmfRsi, int mnp)
|
||||||
{
|
{
|
||||||
//cg
|
|
||||||
RspRsiInfo result = new RspRsiInfo();
|
RspRsiInfo result = new RspRsiInfo();
|
||||||
|
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -630,7 +552,6 @@ namespace KFDtool.P25.ManualRekey
|
||||||
result.RSI = kmm.RSI;
|
result.RSI = kmm.RSI;
|
||||||
result.MN = kmm.MN;
|
result.MN = kmm.MN;
|
||||||
result.Status = kmm.Status;
|
result.Status = kmm.Status;
|
||||||
//Console.WriteLine("response status: {0}", kmm.Status);
|
|
||||||
}
|
}
|
||||||
else if (rspKmmBody is NegativeAcknowledgment)
|
else if (rspKmmBody is NegativeAcknowledgment)
|
||||||
{
|
{
|
||||||
|
@ -657,10 +578,8 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.7.2.1 */
|
|
||||||
public RspRsiInfo ChangeRsi(int rsiOld, int rsiNew, int mnp)
|
public RspRsiInfo ChangeRsi(int rsiOld, int rsiNew, int mnp)
|
||||||
{
|
{
|
||||||
//cg
|
|
||||||
RspRsiInfo result = new RspRsiInfo();
|
RspRsiInfo result = new RspRsiInfo();
|
||||||
|
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -671,11 +590,12 @@ namespace KFDtool.P25.ManualRekey
|
||||||
cmdKmmBody.RsiOld = rsiOld;
|
cmdKmmBody.RsiOld = rsiOld;
|
||||||
cmdKmmBody.RsiNew = rsiNew;
|
cmdKmmBody.RsiNew = rsiNew;
|
||||||
cmdKmmBody.MessageNumber = mnp;
|
cmdKmmBody.MessageNumber = mnp;
|
||||||
|
|
||||||
KmmBody rspKmmBody = TxRxKmm(cmdKmmBody);
|
KmmBody rspKmmBody = TxRxKmm(cmdKmmBody);
|
||||||
|
|
||||||
if (rspKmmBody is ChangeRsiResponse)
|
if (rspKmmBody is ChangeRsiResponse)
|
||||||
{
|
{
|
||||||
ChangeRsiResponse kmm = rspKmmBody as ChangeRsiResponse;
|
ChangeRsiResponse kmm = rspKmmBody as ChangeRsiResponse;
|
||||||
//Console.WriteLine("response status: {0}", kmm.Status);
|
|
||||||
result.RSI = rsiNew;
|
result.RSI = rsiNew;
|
||||||
result.MN = mnp;
|
result.MN = mnp;
|
||||||
result.Status = kmm.Status;
|
result.Status = kmm.Status;
|
||||||
|
@ -705,10 +625,8 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.7.2.7 */
|
|
||||||
public List<RspRsiInfo> ViewRsiItems()
|
public List<RspRsiInfo> ViewRsiItems()
|
||||||
{
|
{
|
||||||
//cg
|
|
||||||
List<RspRsiInfo> result = new List<RspRsiInfo>();
|
List<RspRsiInfo> result = new List<RspRsiInfo>();
|
||||||
|
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -721,8 +639,6 @@ namespace KFDtool.P25.ManualRekey
|
||||||
while (more)
|
while (more)
|
||||||
{
|
{
|
||||||
InventoryCommandListRsiItems commandKmmBody = new InventoryCommandListRsiItems();
|
InventoryCommandListRsiItems commandKmmBody = new InventoryCommandListRsiItems();
|
||||||
//commandKmmBody.InventoryMarker = marker;
|
|
||||||
//commandKmmBody.MaxKeysRequested = 78;
|
|
||||||
|
|
||||||
KmmBody responseKmmBody = TxRxKmm(commandKmmBody);
|
KmmBody responseKmmBody = TxRxKmm(commandKmmBody);
|
||||||
|
|
||||||
|
@ -730,8 +646,6 @@ namespace KFDtool.P25.ManualRekey
|
||||||
{
|
{
|
||||||
InventoryResponseListRsiItems kmm = responseKmmBody as InventoryResponseListRsiItems;
|
InventoryResponseListRsiItems kmm = responseKmmBody as InventoryResponseListRsiItems;
|
||||||
|
|
||||||
//marker = kmm.InventoryMarker;
|
|
||||||
|
|
||||||
Logger.Debug("inventory marker: {0}", marker);
|
Logger.Debug("inventory marker: {0}", marker);
|
||||||
|
|
||||||
if (marker == 0)
|
if (marker == 0)
|
||||||
|
@ -783,10 +697,8 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.7.2.9 */
|
|
||||||
public List<RspKeysetInfo> ViewKeysetTaggingInfo()
|
public List<RspKeysetInfo> ViewKeysetTaggingInfo()
|
||||||
{
|
{
|
||||||
//cg
|
|
||||||
List<RspKeysetInfo> result = new List<RspKeysetInfo>();
|
List<RspKeysetInfo> result = new List<RspKeysetInfo>();
|
||||||
|
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -843,10 +755,8 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TIA 102.AACD-A 3.7.2.3 */
|
|
||||||
public RspChangeoverInfo ActivateKeyset(int keysetSuperseded, int keysetActivated)
|
public RspChangeoverInfo ActivateKeyset(int keysetSuperseded, int keysetActivated)
|
||||||
{
|
{
|
||||||
//cg
|
|
||||||
RspChangeoverInfo result = new RspChangeoverInfo();
|
RspChangeoverInfo result = new RspChangeoverInfo();
|
||||||
|
|
||||||
Begin();
|
Begin();
|
||||||
|
@ -857,29 +767,13 @@ namespace KFDtool.P25.ManualRekey
|
||||||
cmdKmmBody.KeysetIdSuperseded = keysetSuperseded;
|
cmdKmmBody.KeysetIdSuperseded = keysetSuperseded;
|
||||||
cmdKmmBody.KeysetIdActivated = keysetActivated;
|
cmdKmmBody.KeysetIdActivated = keysetActivated;
|
||||||
KmmBody rspKmmBody = TxRxKmm(cmdKmmBody);
|
KmmBody rspKmmBody = TxRxKmm(cmdKmmBody);
|
||||||
|
|
||||||
if (rspKmmBody is ChangeoverResponse)
|
if (rspKmmBody is ChangeoverResponse)
|
||||||
{
|
{
|
||||||
ChangeoverResponse kmm = rspKmmBody as ChangeoverResponse;
|
ChangeoverResponse kmm = rspKmmBody as ChangeoverResponse;
|
||||||
/*
|
|
||||||
for (int i = 0; i < kmm.KeysetItems.Count; i++)
|
|
||||||
{
|
|
||||||
KeysetItem item = kmm.KeysetItems[i];
|
|
||||||
|
|
||||||
RspKeysetInfo res = new RspKeysetInfo();
|
|
||||||
|
|
||||||
res.KeysetId = item.KeysetId;
|
|
||||||
res.KeysetName = item.KeysetName;
|
|
||||||
res.KeysetType = item.KeysetType;
|
|
||||||
res.ActivationDateTime = item.ActivationDateTime;
|
|
||||||
res.ReservedField = item.ReservedField;
|
|
||||||
|
|
||||||
result.Add(res);
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
result.KeysetIdSuperseded = kmm.KeysetIdSuperseded;
|
result.KeysetIdSuperseded = kmm.KeysetIdSuperseded;
|
||||||
result.KeysetIdActivated = kmm.KeysetIdActivated;
|
result.KeysetIdActivated = kmm.KeysetIdActivated;
|
||||||
//Console.WriteLine("response status: {0}", kmm.Status);
|
|
||||||
}
|
}
|
||||||
else if (rspKmmBody is NegativeAcknowledgment)
|
else if (rspKmmBody is NegativeAcknowledgment)
|
||||||
{
|
{
|
||||||
|
@ -906,7 +800,24 @@ namespace KFDtool.P25.ManualRekey
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void LoadAuthenticationKey()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteAuthenticationKey()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ViewSuidInfo()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void ViewActiveSuidInfo()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue