Skip to content

Commit

Permalink
SMS Deliver Report. Bug fixes (#45)
Browse files Browse the repository at this point in the history
  • Loading branch information
hbjorgo authored Dec 10, 2024
1 parent c57af5e commit f545198
Show file tree
Hide file tree
Showing 43 changed files with 1,293 additions and 449 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#Log folders
Logs/

**/*/launchSettings.json

# User-specific files
*.suo
*.user
Expand Down
130 changes: 102 additions & 28 deletions src/HeboTech.ATLib.TestConsole/FunctionalityTest.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using HeboTech.ATLib.DTOs;
using HeboTech.ATLib.Events;
using HeboTech.ATLib.Modems.Cinterion;
using HeboTech.ATLib.Modems.D_LINK;
using HeboTech.ATLib.Modems.Generic;
using HeboTech.ATLib.Parsers;
using System;
Expand All @@ -12,22 +13,54 @@ namespace HeboTech.ATLib.TestConsole
{
public static class FunctionalityTest
{
private static readonly string debugPath = System.IO.Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"Downloads",
"atlog",
"log.txt"
);

private static void Log(string message)
{
string formattedLine = $"({DateTime.Now}) {message}";
try
{
System.IO.File.AppendAllLines(debugPath, [formattedLine]);
}
catch (Exception e)
{
//Console.WriteLine($"Error while logging: {e}");
}
}

public static async Task RunAsync(System.IO.Stream stream, string pin)
{
using AtChannel atChannel = AtChannel.Create(stream);
//atChannel.EnableDebug((string line) => Console.WriteLine(line));
atChannel.EnableDebug(Log);
using IMC55i modem = new MC55i(atChannel);
//using IDWM222 modem = new DWM222(atChannel);
atChannel.Open();
await atChannel.ClearAsync();

modem.ErrorReceived += Modem_ErrorReceived;

modem.GenericEvent += Modem_GenericEvent;

modem.IncomingCall += Modem_IncomingCall;
modem.MissedCall += Modem_MissedCall;
modem.CallStarted += Modem_CallStarted;
modem.CallEnded += Modem_CallEnded;

modem.SmsStorageReferenceReceived += Modem_SmsStorageReferenceReceived;
modem.SmsReceived += Modem_SmsReceived;

modem.SmsStatusReportReceived += Modem_SmsStatusReportReceived;
modem.SmsStatusReportStorageReferenceReceived += Modem_SmsStatusReportStorageReferenceReceived;

modem.BroadcastMessageReceived += Modem_BroadcastMessageReceived;
modem.BroadcastMessageStorageReferenceReceived += Modem_BroadcastMessageStorageReferenceReceived;

modem.UssdResponseReceived += Modem_UssdResponseReceived;
modem.ErrorReceived += Modem_ErrorReceived;
modem.GenericEvent += Modem_GenericEvent;

// Configure modem with required settings before PIN
var requiredSettingsBeforePin = await modem.SetRequiredSettingsBeforePinAsync();
Expand Down Expand Up @@ -81,14 +114,6 @@ public static async Task RunAsync(System.IO.Stream stream, string pin)
var batteryStatus = await modem.GetBatteryStatusAsync();
Console.WriteLine($"Battery Status: {batteryStatus}");

{
if (modem is IMC55i mc55i)
{
var mc55iBatteryStatus = await mc55i.MC55i_GetBatteryStatusAsync();
Console.WriteLine($"MC55i Battery Status: {mc55iBatteryStatus}");
}
}

var productInfo = await modem.GetProductIdentificationInformationAsync();
Console.WriteLine($"Product Information:{Environment.NewLine}{productInfo}");

Expand All @@ -98,18 +123,21 @@ public static async Task RunAsync(System.IO.Stream stream, string pin)
var dateTime = await modem.GetDateTimeAsync();
Console.WriteLine($"Date and time: {dateTime}");

var selectMessageService = await modem.SetSelectMessageService(0);
Console.WriteLine($"Setting select message service: {selectMessageService}");

var newSmsIndicationResult = await modem.SetNewSmsIndicationAsync(2, 1, 0, 0, 1);
var newSmsIndicationResult = await modem.SetNewSmsIndicationAsync(2, 1, 0, 2, 0); // 2, 1, 0, 2, 0 (CSMS=0)
Console.WriteLine($"Setting new SMS indication: {newSmsIndicationResult}");

var supportedStorages = await modem.GetSupportedPreferredMessageStoragesAsync();
Console.WriteLine($"Supported storages:{Environment.NewLine}{supportedStorages}");
var currentStorages = await modem.GetPreferredMessageStoragesAsync();
Console.WriteLine($"Current storages:{Environment.NewLine}{currentStorages}");
var setPreferredStorages = await modem.SetPreferredMessageStorageAsync(MessageStorage.SM, MessageStorage.SM, MessageStorage.SM);
var setPreferredStorages = await modem.SetPreferredMessageStorageAsync(MessageStorage.MT, MessageStorage.MT, MessageStorage.MT);
Console.WriteLine($"Storages set:{Environment.NewLine}{setPreferredStorages}");

Console.WriteLine("Done. Press 'a' to answer call, 'd' to dial, 'h' to hang up, 's' to send SMS, 'r' to read an SMS, 'l' to list all SMSs, 'u' to send USSD code, 'x' to send raw command, 'z' to send raw command with response, '+' to enable debug, '-' to disable debug and 'q' to exit...");
Log("Initialization done");
Console.WriteLine("Done. Press 'a' to answer call, 'd' to dial, 'h' to hang up, 's' to send SMS, 'r' to read an SMS, 'l' to list all SMSs, 'p' to delete an SMS, 'u' to send USSD code, 'x' to send raw command, 'z' to send raw command with response, '+' to enable debug, '-' to disable debug and 'q' to exit...");
ConsoleKey key;
while ((key = Console.ReadKey().Key) != ConsoleKey.Q)
{
Expand Down Expand Up @@ -164,21 +192,38 @@ public static async Task RunAsync(System.IO.Stream stream, string pin)
string smsMessage = Console.ReadLine();

Console.WriteLine("Sending SMS...");
IEnumerable<ModemResponse<SmsReference>> smsReferences = await modem.SendSmsAsync(phoneNumber, smsMessage);
IEnumerable<ModemResponse<SmsReference>> smsReferences = await modem.SendSmsAsync(new SmsSubmitRequest(phoneNumber, smsMessage) { EnableStatusReportRequest = true, ValidityPeriod = ValidityPeriod.Relative(RelativeValidityPeriods.Minutes_5) });
foreach (var smsReference in smsReferences)
Console.WriteLine($"SMS Reference: {smsReference}");
break;
}
case ConsoleKey.R:
Console.WriteLine("Enter SMS index:");
if (int.TryParse(Console.ReadLine(), out int smsIndex))
{
var sms = await modem.ReadSmsAsync(smsIndex);
Console.WriteLine(sms);
Console.WriteLine("Enter SMS index:");
if (int.TryParse(Console.ReadLine(), out int smsIndex))
{
var sms = await modem.ReadSmsAsync(smsIndex);
if (sms.Success)
{
Console.WriteLine(sms.Result);
}
}
else
Console.WriteLine("Invalid SMS index");
break;
}
case ConsoleKey.P:
{
Console.WriteLine("Enter SMS index:");
if (int.TryParse(Console.ReadLine(), out int smsIndex))
{
var deleteResponse = await modem.DeleteSmsAsync(smsIndex);
Console.WriteLine(deleteResponse);
}
else
Console.WriteLine("Invalid SMS index");
break;
}
else
Console.WriteLine("Invalid SMS index");
break;
case ConsoleKey.U:
Console.WriteLine("Enter USSD Code:");
var ussd = Console.ReadLine();
Expand All @@ -188,10 +233,14 @@ public static async Task RunAsync(System.IO.Stream stream, string pin)
case ConsoleKey.L:
Console.WriteLine("List all SMSs:");
var smss = await modem.ListSmssAsync(SmsStatus.ALL);
Console.WriteLine($"{smss.Result.Count} SMSs:");
if (smss.Success && smss.Result.Any())
{
foreach (var sms in smss.Result)
Console.WriteLine($"------------------------------------------------{Environment.NewLine}{sms}");
{
Console.WriteLine($"------------------------------------------------");
Console.WriteLine($"Index: {sms.Index}, {sms.Sms}");
}
Console.WriteLine($"------------------------------------------------");
}

Expand All @@ -208,6 +257,36 @@ public static async Task RunAsync(System.IO.Stream stream, string pin)
}
}

private static void Modem_BroadcastMessageStorageReferenceReceived(object sender, BreadcastMessageStorageReferenceReceivedEventArgs e)
{
Console.WriteLine($"Broadcast Message. Index {e.Index} at storage location {e.Storage}");
}

private static void Modem_SmsStorageReferenceReceived(object sender, SmsStorageReferenceReceivedEventArgs e)
{
Console.WriteLine($"SMS Deliver. Index {e.Index} at storage location {e.Storage}");
}

private static void Modem_SmsStatusReportStorageReferenceReceived(object sender, SmsStatusReportStorageReferenceEventArgs e)
{
Console.WriteLine($"SMS Status Report. Index {e.Index} at storage location {e.Storage}");
}

private static void Modem_BroadcastMessageReceived(object sender, BreadcastMessageReceivedEventArgs e)
{
Console.WriteLine($"Broadcast Message: {e.BroadcastMessage}");
}

private static void Modem_SmsReceived(object sender, SmsReceivedEventArgs e)
{
Console.WriteLine($"SMS Deliver: {e.SmsDeliver}");
}

private static void Modem_SmsStatusReportReceived(object sender, SmsStatusReportEventArgs e)
{
Console.WriteLine($"SMS Status Report: {e.SmsStatusReport}");
}

private static void Modem_GenericEvent(object sender, GenericEventArgs e)
{
Console.WriteLine($"Generic event: {e.Message}");
Expand All @@ -234,11 +313,6 @@ private static void Modem_CallStarted(object sender, CallStartedEventArgs e)
Console.WriteLine("Call started");
}

private static void Modem_SmsReceived(object sender, SmsReceivedEventArgs e)
{
Console.WriteLine($"SMS received. Index {e.Index} at storage location {e.Storage}");
}

private static void Modem_MissedCall(object sender, MissedCallEventArgs e)
{
Console.WriteLine($"Missed call at {e.Time} from {e.PhoneNumber}");
Expand Down
9 changes: 5 additions & 4 deletions src/HeboTech.ATLib.TestConsole/Program.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
using System;
using System.IO;
using System.IO.Ports;
using System.Linq;
using System.Net.Sockets;
using System.Reflection;
Expand Down Expand Up @@ -29,7 +28,9 @@ static async Task Main(string[] args)

Console.OutputEncoding = System.Text.Encoding.UTF8;

string pin = args[0];
string address = args[0];
int port = int.Parse(args[1]);
string pin = args[2];



Expand All @@ -45,8 +46,8 @@ static async Task Main(string[] args)


/* ######## UNCOMMENT THIS SECTION TO USE NETWORK SOCKET ######## */
using Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("192.168.1.144", 7000);
using Socket socket = new(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(address, port);
Console.WriteLine("Network socket opened");
Stream stream;
stream = new NetworkStream(socket);
Expand Down
4 changes: 2 additions & 2 deletions src/HeboTech.ATLib.TestConsole/StressTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public static async Task RunAsync(System.IO.Stream stream, string pin)

modem.IncomingCall += Modem_IncomingCall;
modem.MissedCall += Modem_MissedCall;
modem.SmsReceived += Modem_SmsReceived;
modem.SmsStorageReferenceReceived += Modem_SmsReceived;

await modem.DisableEchoAsync();

Expand Down Expand Up @@ -73,7 +73,7 @@ public static async Task RunAsync(System.IO.Stream stream, string pin)
Console.ReadKey();
}

private static void Modem_SmsReceived(object sender, Events.SmsReceivedEventArgs e)
private static void Modem_SmsReceived(object sender, Events.SmsStorageReferenceReceivedEventArgs e)
{
Console.WriteLine($"SMS received. Index {e.Index} at storage location {e.Storage}");
}
Expand Down
Loading

0 comments on commit f545198

Please sign in to comment.