Skip to content

Commit 7cbc9cf

Browse files
authored
Merge pull request #1022 from meshtastic/2.5.12
Add ignore node functionality
2 parents 90fdc78 + 49c7bd7 commit 7cbc9cf

File tree

12 files changed

+654
-16
lines changed

12 files changed

+654
-16
lines changed

Localizable.xcstrings

+9
Original file line numberDiff line numberDiff line change
@@ -8954,6 +8954,12 @@
89548954
},
89558955
"Ignore MQTT" : {
89568956

8957+
},
8958+
"Ignore Node" : {
8959+
8960+
},
8961+
"Ignored" : {
8962+
89578963
},
89588964
"Import Route" : {
89598965

@@ -18055,6 +18061,9 @@
1805518061
}
1805618062
}
1805718063
}
18064+
},
18065+
"Remove from ignored" : {
18066+
1805818067
},
1805918068
"Replace Channels" : {
1806018069

Meshtastic.xcodeproj/project.pbxproj

+15-9
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@
215215
DDDE5A1129AFE69700490C6C /* MeshActivityAttributes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDDE5A0F29AFE69700490C6C /* MeshActivityAttributes.swift */; };
216216
DDDE5A1329AFEAB900490C6C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDDE5A1229AFEAB900490C6C /* Assets.xcassets */; };
217217
DDDE5A1429AFEAB900490C6C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = DDDE5A1229AFEAB900490C6C /* Assets.xcassets */; };
218+
DDDFE73F2D0D48FF0044463C /* IgnoreNodeButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDDFE73E2D0D48FF0044463C /* IgnoreNodeButton.swift */; };
218219
DDE0F7C5295F77B700B8AAB3 /* AppSettingsEnums.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDE0F7C4295F77B700B8AAB3 /* AppSettingsEnums.swift */; };
219220
DDE5B4042B2279A700FCDD05 /* TraceRouteLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDE5B4032B2279A700FCDD05 /* TraceRouteLog.swift */; };
220221
DDE9659C2B1C3B6A00531070 /* RouteRecorder.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDE9659B2B1C3B6A00531070 /* RouteRecorder.swift */; };
@@ -506,6 +507,8 @@
506507
DDDE5A0F29AFE69700490C6C /* MeshActivityAttributes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MeshActivityAttributes.swift; sourceTree = "<group>"; };
507508
DDDE5A1229AFEAB900490C6C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
508509
DDDEE5E229DBE43E00A8E078 /* MeshtasticDataModelV11.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = MeshtasticDataModelV11.xcdatamodel; sourceTree = "<group>"; };
510+
DDDFE73E2D0D48FF0044463C /* IgnoreNodeButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IgnoreNodeButton.swift; sourceTree = "<group>"; };
511+
DDDFE7402D0D4A070044463C /* MeshtasticDataModelV 47.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = "MeshtasticDataModelV 47.xcdatamodel"; sourceTree = "<group>"; };
509512
DDE0F7C4295F77B700B8AAB3 /* AppSettingsEnums.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSettingsEnums.swift; sourceTree = "<group>"; };
510513
DDE5B4032B2279A700FCDD05 /* TraceRouteLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TraceRouteLog.swift; sourceTree = "<group>"; };
511514
DDE5B4052B227E3200FCDD05 /* TraceRouteEntityExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TraceRouteEntityExtension.swift; sourceTree = "<group>"; };
@@ -555,6 +558,7 @@
555558
251926882C3BAF2E00249DF5 /* Actions */ = {
556559
isa = PBXGroup;
557560
children = (
561+
DDDFE73E2D0D48FF0044463C /* IgnoreNodeButton.swift */,
558562
251926842C3BA97800249DF5 /* FavoriteNodeButton.swift */,
559563
251926892C3BB1B200249DF5 /* ExchangePositionsButton.swift */,
560564
251926862C3BAE2200249DF5 /* NodeAlertsButton.swift */,
@@ -1311,6 +1315,7 @@
13111315
6D825E622C34786C008DBEE4 /* CommonRegex.swift in Sources */,
13121316
DD913639270DFF4C00D7ACF3 /* LocalNotificationManager.swift in Sources */,
13131317
DDDB444C29F8AAA600EE2349 /* Color.swift in Sources */,
1318+
DDDFE73F2D0D48FF0044463C /* IgnoreNodeButton.swift in Sources */,
13141319
DDB8F4122A9EE5DD00230ECE /* UserList.swift in Sources */,
13151320
DDB75A0F2A05920E006ED576 /* FileManager.swift in Sources */,
13161321
DD3D17E02C3FB67200561584 /* LocalWeatherConditions.swift in Sources */,
@@ -1524,7 +1529,7 @@
15241529
ENABLE_USER_SCRIPT_SANDBOXING = YES;
15251530
GCC_C_LANGUAGE_STANDARD = gnu17;
15261531
GENERATE_INFOPLIST_FILE = YES;
1527-
IPHONEOS_DEPLOYMENT_TARGET = 17.5;
1532+
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
15281533
MARKETING_VERSION = 1.0;
15291534
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.MeshtasticTests;
15301535
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1547,7 +1552,7 @@
15471552
DEVELOPMENT_TEAM = GCH7VS5Y9R;
15481553
GCC_C_LANGUAGE_STANDARD = gnu17;
15491554
GENERATE_INFOPLIST_FILE = YES;
1550-
IPHONEOS_DEPLOYMENT_TARGET = 17.5;
1555+
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
15511556
MARKETING_VERSION = 1.0;
15521557
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.MeshtasticTests;
15531558
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1704,7 +1709,7 @@
17041709
"$(inherited)",
17051710
"@executable_path/Frameworks",
17061711
);
1707-
MARKETING_VERSION = 2.5.11;
1712+
MARKETING_VERSION = 2.5.12;
17081713
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
17091714
PRODUCT_NAME = "$(TARGET_NAME)";
17101715
SUPPORTS_MACCATALYST = YES;
@@ -1738,7 +1743,7 @@
17381743
"$(inherited)",
17391744
"@executable_path/Frameworks",
17401745
);
1741-
MARKETING_VERSION = 2.5.11;
1746+
MARKETING_VERSION = 2.5.12;
17421747
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
17431748
PRODUCT_NAME = "$(TARGET_NAME)";
17441749
SUPPORTS_MACCATALYST = YES;
@@ -1764,13 +1769,13 @@
17641769
INFOPLIST_FILE = Widgets/Info.plist;
17651770
INFOPLIST_KEY_CFBundleDisplayName = Widgets;
17661771
INFOPLIST_KEY_NSHumanReadableCopyright = "";
1767-
IPHONEOS_DEPLOYMENT_TARGET = 16.6;
1772+
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
17681773
LD_RUNPATH_SEARCH_PATHS = (
17691774
"$(inherited)",
17701775
"@executable_path/Frameworks",
17711776
"@executable_path/../../Frameworks",
17721777
);
1773-
MARKETING_VERSION = 2.5.11;
1778+
MARKETING_VERSION = 2.5.12;
17741779
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
17751780
PRODUCT_NAME = "$(TARGET_NAME)";
17761781
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -1797,13 +1802,13 @@
17971802
INFOPLIST_FILE = Widgets/Info.plist;
17981803
INFOPLIST_KEY_CFBundleDisplayName = Widgets;
17991804
INFOPLIST_KEY_NSHumanReadableCopyright = "";
1800-
IPHONEOS_DEPLOYMENT_TARGET = 16.6;
1805+
IPHONEOS_DEPLOYMENT_TARGET = 17.0;
18011806
LD_RUNPATH_SEARCH_PATHS = (
18021807
"$(inherited)",
18031808
"@executable_path/Frameworks",
18041809
"@executable_path/../../Frameworks",
18051810
);
1806-
MARKETING_VERSION = 2.5.11;
1811+
MARKETING_VERSION = 2.5.12;
18071812
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
18081813
PRODUCT_NAME = "$(TARGET_NAME)";
18091814
PROVISIONING_PROFILE_SPECIFIER = "";
@@ -1915,6 +1920,7 @@
19151920
DD3CC6BA28E366DF00FA9159 /* Meshtastic.xcdatamodeld */ = {
19161921
isa = XCVersionGroup;
19171922
children = (
1923+
DDDFE7402D0D4A070044463C /* MeshtasticDataModelV 47.xcdatamodel */,
19181924
DD0BE30C2CB785D8000BA445 /* MeshtasticDataModelV 46.xcdatamodel */,
19191925
DD6D5A342CA13BA600ED3032 /* MeshtasticDataModelV 45.xcdatamodel */,
19201926
DD7CF8DA2C93663C008BD10E /* MeshtasticDataModelV 44.xcdatamodel */,
@@ -1962,7 +1968,7 @@
19621968
DD5D0A9A2931AD6B00F7EA61 /* MeshtasticDataModelV2.xcdatamodel */,
19631969
DD3CC6BB28E366DF00FA9159 /* MeshtasticDataModel.xcdatamodel */,
19641970
);
1965-
currentVersion = DD0BE30C2CB785D8000BA445 /* MeshtasticDataModelV 46.xcdatamodel */;
1971+
currentVersion = DDDFE7402D0D4A070044463C /* MeshtasticDataModelV 47.xcdatamodel */;
19661972
name = Meshtastic.xcdatamodeld;
19671973
path = Meshtastic/Meshtastic.xcdatamodeld;
19681974
sourceTree = "<group>";

Meshtastic/Extensions/CoreData/UserEntityExtension.swift

+4-4
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,13 @@ extension UserEntity {
7777
return "TLORAV2118"
7878
/// Seeed Studio
7979
case "SENSECAPINDICATOR":
80-
return "SENSECAPINDICATOR"
80+
return "UNSET"
8181
case "TRACKERT1000E":
82-
return "TRACKERT1000E"
82+
return "UNSET"
8383
case "SEEEDXIAOS3":
84-
return "SEEEDXIAOS3"
84+
return "UNSET"
8585
case "WIOWM1110":
86-
return "WIOWM1110"
86+
return "UNSET"
8787
/// RAK Wireless
8888
case "RAK4631":
8989
return "UNSET"

Meshtastic/Helpers/BLEManager.swift

+58
Original file line numberDiff line numberDiff line change
@@ -1895,6 +1895,64 @@ class BLEManager: NSObject, CBPeripheralDelegate, MqttClientProxyManagerDelegate
18951895
return false
18961896
}
18971897

1898+
public func setIgnoredNode(node: NodeInfoEntity, connectedNodeNum: Int64) -> Bool {
1899+
var adminPacket = AdminMessage()
1900+
adminPacket.setIgnoredNode = UInt32(node.num)
1901+
var meshPacket: MeshPacket = MeshPacket()
1902+
meshPacket.to = UInt32(connectedNodeNum)
1903+
meshPacket.id = UInt32.random(in: UInt32(UInt8.max)..<UInt32.max)
1904+
meshPacket.priority = MeshPacket.Priority.reliable
1905+
meshPacket.wantAck = true
1906+
var dataMessage = DataMessage()
1907+
guard let adminData: Data = try? adminPacket.serializedData() else {
1908+
return false
1909+
}
1910+
dataMessage.payload = adminData
1911+
dataMessage.portnum = PortNum.adminApp
1912+
meshPacket.decoded = dataMessage
1913+
var toRadio: ToRadio!
1914+
toRadio = ToRadio()
1915+
toRadio.packet = meshPacket
1916+
guard let binaryData: Data = try? toRadio.serializedData() else {
1917+
return false
1918+
}
1919+
1920+
if connectedPeripheral?.peripheral.state ?? CBPeripheralState.disconnected == CBPeripheralState.connected {
1921+
connectedPeripheral.peripheral.writeValue(binaryData, for: TORADIO_characteristic, type: .withResponse)
1922+
return true
1923+
}
1924+
return false
1925+
}
1926+
1927+
public func removeIgnoredNode(node: NodeInfoEntity, connectedNodeNum: Int64) -> Bool {
1928+
var adminPacket = AdminMessage()
1929+
adminPacket.removeIgnoredNode = UInt32(node.num)
1930+
var meshPacket: MeshPacket = MeshPacket()
1931+
meshPacket.to = UInt32(connectedNodeNum)
1932+
meshPacket.id = UInt32.random(in: UInt32(UInt8.max)..<UInt32.max)
1933+
meshPacket.priority = MeshPacket.Priority.reliable
1934+
meshPacket.wantAck = true
1935+
var dataMessage = DataMessage()
1936+
guard let adminData: Data = try? adminPacket.serializedData() else {
1937+
return false
1938+
}
1939+
dataMessage.payload = adminData
1940+
dataMessage.portnum = PortNum.adminApp
1941+
meshPacket.decoded = dataMessage
1942+
var toRadio: ToRadio!
1943+
toRadio = ToRadio()
1944+
toRadio.packet = meshPacket
1945+
guard let binaryData: Data = try? toRadio.serializedData() else {
1946+
return false
1947+
}
1948+
1949+
if connectedPeripheral?.peripheral.state ?? CBPeripheralState.disconnected == CBPeripheralState.connected {
1950+
connectedPeripheral.peripheral.writeValue(binaryData, for: TORADIO_characteristic, type: .withResponse)
1951+
return true
1952+
}
1953+
return false
1954+
}
1955+
18981956
public func saveLicensedUser(ham: HamParameters, fromUser: UserEntity, toUser: UserEntity, adminIndex: Int32) -> Int64 {
18991957
var adminPacket = AdminMessage()
19001958
adminPacket.setHamMode = ham

Meshtastic/Helpers/MeshPackets.swift

+2
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ func nodeInfoPacket (nodeInfo: NodeInfo, channel: UInt32, context: NSManagedObje
270270
newNode.num = Int64(nodeInfo.num)
271271
newNode.channel = Int32(nodeInfo.channel)
272272
newNode.favorite = nodeInfo.isFavorite
273+
newNode.ignored = nodeInfo.isIgnored
273274
newNode.hopsAway = Int32(nodeInfo.hopsAway)
274275

275276
if nodeInfo.hasDeviceMetrics {
@@ -358,6 +359,7 @@ func nodeInfoPacket (nodeInfo: NodeInfo, channel: UInt32, context: NSManagedObje
358359
fetchedNode[0].snr = nodeInfo.snr
359360
fetchedNode[0].channel = Int32(nodeInfo.channel)
360361
fetchedNode[0].favorite = nodeInfo.isFavorite
362+
fetchedNode[0].ignored = nodeInfo.isIgnored
361363
fetchedNode[0].hopsAway = Int32(nodeInfo.hopsAway)
362364

363365
if nodeInfo.hasUser {

Meshtastic/Meshtastic.xcdatamodeld/.xccurrentversion

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@
33
<plist version="1.0">
44
<dict>
55
<key>_XCCurrentVersionName</key>
6-
<string>MeshtasticDataModelV 46.xcdatamodel</string>
6+
<string>MeshtasticDataModelV 47.xcdatamodel</string>
77
</dict>
88
</plist>

0 commit comments

Comments
 (0)