Skip to content

Commit

Permalink
Eckelj/multi-chain-support (#17)
Browse files Browse the repository at this point in the history
* added new Commands to support different types of chains
* PlanetmintDenom
* PlanetmintChainID

---------

Signed-off-by: Jürgen Eckel <juergen@riddleandcode.com>
  • Loading branch information
eckelj committed Sep 18, 2023
1 parent 000b9a3 commit ab414aa
Show file tree
Hide file tree
Showing 3 changed files with 72 additions and 5 deletions.
2 changes: 2 additions & 0 deletions tasmota/include/i18n.h
Original file line number Diff line number Diff line change
Expand Up @@ -265,6 +265,8 @@
#define D_CMND_RESOLVEID "ResolveCID"
#define D_CMND_BALANCE "Balance"
#define D_CMND_GETACCOUNTID "GetAccountID"
#define D_CMND_PLANETMINTDENOM "PlanetmintDenom"
#define D_CMND_PLANETMINTCHAINID "PlanetmintChainID"
#define D_CMND_STATUS "Status"
#define D_STATUS1_PARAMETER "PRM"
#define D_STATUS2_FIRMWARE "FWR"
Expand Down
38 changes: 36 additions & 2 deletions tasmota/tasmota_support/support_command.ino
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@ const char kTasmotaCommands[] PROGMEM = "|" // No prefix
D_CMND_DEVICENAME "|" D_CMND_FN "|" D_CMND_FRIENDLYNAME "|" D_CMND_SWITCHMODE "|" D_CMND_INTERLOCK "|" D_CMND_TELEPERIOD "|" D_CMND_RESET "|" D_CMND_TIME "|" D_CMND_TIMEZONE "|" D_CMND_TIMESTD "|"
D_CMND_TIMEDST "|" D_CMND_ALTITUDE "|" D_CMND_LEDPOWER "|" D_CMND_LEDSTATE "|" D_CMND_LEDMASK "|" D_CMND_LEDPWM_ON "|" D_CMND_LEDPWM_OFF "|" D_CMND_LEDPWM_MODE "|"
D_CMND_WIFIPOWER "|" D_CMND_TEMPOFFSET "|" D_CMND_HUMOFFSET "|" D_CMND_SPEEDUNIT "|" D_CMND_GLOBAL_TEMP "|" D_CMND_GLOBAL_HUM"|" D_CMND_GLOBAL_PRESS "|" D_CMND_SWITCHTEXT "|" D_CMND_WIFISCAN "|" D_CMND_WIFITEST "|"
D_CMND_MNEMONIC "|" D_CMND_PUBLICKEYS "|" D_CMND_ACCOUNTID "|" D_CMND_PLANETMINTAPI "|" D_CMND_CHALLENGERESPONSE "|" D_CMND_MACHINECID "|" D_CMND_BALANCE "|" D_CMND_GETACCOUNTID "|" D_CMND_RESOLVEID "|"
D_CMND_MNEMONIC "|" D_CMND_PUBLICKEYS "|" D_CMND_ACCOUNTID "|" D_CMND_PLANETMINTAPI "|" D_CMND_CHALLENGERESPONSE "|" D_CMND_MACHINECID "|"
D_CMND_BALANCE "|" D_CMND_GETACCOUNTID "|" D_CMND_RESOLVEID "|" D_CMND_PLANETMINTDENOM "|" D_CMND_PLANETMINTCHAINID "|"
#ifdef USE_I2C
D_CMND_I2CSCAN "|" D_CMND_I2CDRIVER "|"
#endif
Expand Down Expand Up @@ -80,7 +81,8 @@ void (* const TasmotaCommand[])(void) PROGMEM = {
&CmndDevicename, &CmndFriendlyname, &CmndFriendlyname, &CmndSwitchMode, &CmndInterlock, &CmndTeleperiod, &CmndReset, &CmndTime, &CmndTimezone, &CmndTimeStd,
&CmndTimeDst, &CmndAltitude, &CmndLedPower, &CmndLedState, &CmndLedMask, &CmndLedPwmOn, &CmndLedPwmOff, &CmndLedPwmMode,
&CmndWifiPower,&CmndTempOffset, &CmndHumOffset, &CmndSpeedUnit, &CmndGlobalTemp, &CmndGlobalHum, &CmndGlobalPress, &CmndSwitchText, &CmndWifiScan, &CmndWifiTest,
&CmndMemonic, &CmndPublicKeys, &CmndAccountID, &CmndPlanetmintAPI, &CmndChallengeResponse, &CmdMachineCid, &CmndBalance, &CmndGetAccountID, &CmdResolveCid,
&CmndMemonic, &CmndPublicKeys, &CmndAccountID, &CmndPlanetmintAPI, &CmndChallengeResponse, &CmdMachineCid, &CmndBalance,
&CmndGetAccountID, &CmdResolveCid, &CmndPlanetmintDenom, &CmndPlanetmintChainID,
#ifdef USE_I2C
&CmndI2cScan, &CmndI2cDriver,
#endif
Expand Down Expand Up @@ -875,6 +877,38 @@ void CmndChallengeResponse(void) {
ResponseClear();
}

void CmndPlanetmintDenom(void) {
if( XdrvMailbox.data_len )
{
setDenom((const char*)XdrvMailbox.data, XdrvMailbox.data_len );
Response_P(S_JSON_COMMAND_SVALUE,D_CMND_PLANETMINTDENOM, XdrvMailbox.data );
}
else
{
char* p_denom = getDenom();
Response_P( "{ \"%s\": \"%s\" }", D_CMND_PLANETMINTDENOM, p_denom );
}

CmndStatusResponse(29);
ResponseClear();
}

void CmndPlanetmintChainID(void) {
if( XdrvMailbox.data_len )
{
setChainID( (const char*)XdrvMailbox.data, XdrvMailbox.data_len );
Response_P(S_JSON_COMMAND_SVALUE,D_CMND_PLANETMINTCHAINID, XdrvMailbox.data );
}
else
{
char* p_chainid = getChainID();
Response_P( "{ \"%s\": \"%s\" }", D_CMND_PLANETMINTCHAINID, p_chainid );
}

CmndStatusResponse(30);
ResponseClear();
}

void CmndStatus(void)
{
int32_t payload = XdrvMailbox.payload;
Expand Down
37 changes: 34 additions & 3 deletions tasmota/tasmota_xdrv_driver/xdrv_129_rddl_network.ino
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,8 @@ String registerCID(const char* cid){

char g_planetmintapi[100] = {0};
char g_accountid[20] = {0};
char g_chainid[30] = {0};
char g_denom[20] = {0};

void setPlanetmintAPI( const char* api, size_t len)
{
Expand All @@ -467,7 +469,36 @@ char* getAccountID()
getValueForKey( "accountid", g_accountid);
return g_accountid;
}


void setDenom( const char* denom, size_t len)
{
storeKeyValuePair( "planetmintdenom", denom, len);
memset((void*)g_denom,0, 20);
}
char* getDenom()
{
if( strlen( g_denom) == 0 )
getValueForKey( "planetmintdenom", g_denom);
if( strlen( g_denom) == 0 )
strcpy(g_denom, "plmnt");
return g_denom;
}

void setChainID( const char* chainid, size_t len)
{
storeKeyValuePair( "planetmintchainid", chainid, len);
memset((void*)g_chainid,0, 30);
}
char* getChainID()
{
if( strlen( g_chainid) == 0 )
getValueForKey( "planetmintchainid", g_chainid);
if( strlen( g_chainid) == 0 )
strcpy(g_chainid, "planetmintgotestv1");

return g_chainid;
}


int broadcast_transaction( char* tx_payload ){
HTTPClientLight http;
Expand Down Expand Up @@ -542,12 +573,12 @@ char* create_transaction( void* anyMsg, char* tokenAmount )
}

Cosmos__Base__V1beta1__Coin coin = COSMOS__BASE__V1BETA1__COIN__INIT;
coin.denom = "token";
coin.denom = getDenom();
coin.amount = tokenAmount;

uint8_t* txbytes = NULL;
size_t tx_size = 0;
char* chain_id = "planetmintgo";
char* chain_id = getChainID();
int ret = prepareTx( (Google__Protobuf__Any*)anyMsg, &coin, g_priv_key_planetmint, g_pub_key_planetmint, sequence, chain_id, account_id, &txbytes, &tx_size);
if( ret < 0 )
return NULL;
Expand Down

0 comments on commit ab414aa

Please sign in to comment.