@ -473,23 +473,23 @@ bool MyMesh::allowPacketForward(const mesh::Packet* packet) {
void MyMesh : : sendFloodScoped ( const ContactInfo & recipient , mesh : : Packet * pkt , uint32_t delay_millis ) {
// TODO: dynamic send_scope, depending on recipient and current 'home' Region
if ( send_scope . isNull ( ) ) {
sendFlood ( pkt , delay_millis ) ;
sendFlood ( pkt , delay_millis , _prefs . path_hash_mode + 1 ) ;
} else {
uint16_t codes [ 2 ] ;
codes [ 0 ] = send_scope . calcTransportCode ( pkt ) ;
codes [ 1 ] = 0 ; // REVISIT: set to 'home' Region, for sender/return region?
sendFlood ( pkt , codes , delay_millis ) ;
sendFlood ( pkt , codes , delay_millis , _prefs . path_hash_mode + 1 ) ;
}
}
void MyMesh : : sendFloodScoped ( const mesh : : GroupChannel & channel , mesh : : Packet * pkt , uint32_t delay_millis ) {
// TODO: have per-channel send_scope
if ( send_scope . isNull ( ) ) {
sendFlood ( pkt , delay_millis ) ;
sendFlood ( pkt , delay_millis , _prefs . path_hash_mode + 1 ) ;
} else {
uint16_t codes [ 2 ] ;
codes [ 0 ] = send_scope . calcTransportCode ( pkt ) ;
codes [ 1 ] = 0 ; // REVISIT: set to 'home' Region, for sender/return region?
sendFlood ( pkt , codes , delay_millis ) ;
sendFlood ( pkt , codes , delay_millis , _prefs . path_hash_mode + 1 ) ;
}
}
@ -937,6 +937,7 @@ void MyMesh::handleCmdFrame(size_t len) {
StrHelper : : strzcpy ( ( char * ) & out_frame [ i ] , FIRMWARE_VERSION , 20 ) ;
i + = 20 ;
out_frame [ i + + ] = _prefs . client_repeat ; // v9+
out_frame [ i + + ] = _prefs . path_hash_mode ; // v10+
_serial - > writeFrame ( out_frame , i ) ;
} else if ( cmd_frame [ 0 ] = = CMD_APP_START & &
len > = 8 ) { // sent when app establishes connection, respond with node ID
@ -1113,8 +1114,9 @@ void MyMesh::handleCmdFrame(size_t len) {
pkt = createSelfAdvert ( _prefs . node_name , sensors . node_lat , sensors . node_lon ) ;
}
if ( pkt ) {
if ( len > = 2 & & cmd_frame [ 1 ] = = 1 ) { // optional param (1 = flood, 0 = zero hop)
sendFlood ( pkt ) ; // TODO: which path_hash_size to use??
if ( len > = 2 & & cmd_frame [ 1 ] > = 1 & & cmd_frame [ 1 ] < = 3 ) { // optional param (1..3 = flood, 0 = zero hop)
unsigned long delay_millis = 0 ;
sendFlood ( pkt , delay_millis , cmd_frame [ 1 ] ) ;
} else {
sendZeroHop ( pkt ) ;
}
@ -1306,6 +1308,9 @@ void MyMesh::handleCmdFrame(size_t len) {
_prefs . advert_loc_policy = cmd_frame [ 3 ] ;
if ( len > = 5 ) {
_prefs . multi_acks = cmd_frame [ 4 ] ;
if ( len > = 6 ) {
_prefs . path_hash_mode = cmd_frame [ 5 ] ;
}
}
}
}