Convert existing 'c' file to a sketch and add code

Hello All,

Very new to trying coding in the Arduino IDE.
-rtlduino-

Have an existing .c file - example_wlan_repeater , from the amebad_sdk that 'almost' does what I would like it to do albiet i would like to add a function of,when the repeater makes a connection to the AP ( drone AP), the led would blink slowly,dimmly, to verify the repeater actually has a connection to the drone. This .c file does not have the 'LED lights on connection' function.

'example_wlan_repeater .c '

#include <platform_opts.h>
#include "FreeRTOS.h"
#include "task.h"
#include <platform/platform_stdlib.h>

#include "wifi_constants.h"
#include "wifi_structures.h"
#include "lwip_netconf.h"
#include "wifi_conf.h"

#if CONFIG_EXAMPLE_WLAN_FAST_CONNECT
typedef int (*init_done_ptr)(void);
extern init_done_ptr p_wlan_init_done_callback;
extern int wlan_init_done_callback();
#endif
#if CONFIG_BRIDGE
extern void bridgeif_set_mac_init(char *bmac);
extern void bridgeif_add_port_ap_netif(void);
extern void bridgeif_add_port_sta_netif(void);
#endif

#if CONFIG_EXAMPLE_WLAN_REPEATER

#if CONFIG_LWIP_LAYER
extern struct netif xnetif[NET_IF_NUM]; 
#endif

/**
 * @brief  Wi-Fi example for mode switch case: Mode switching between concurrent mode and STA and add to bridge.
 * @note  Process Flow:
 *              - Disable Wi-Fi
 *              - Enable Wi-Fi with concurrent (STA + AP) mode
 *              - Start AP
 *              - Check AP running
 *              - Connect to AP using STA mode
 */
static void example_wlan_repeater_thread(void *param)
{
	/* To avoid gcc warnings */
	( void ) param;

	// Wait for other task stable.
	vTaskDelay(4000);

	/*********************************************************************************
	*	1. Enable Wi-Fi with concurrent (STA + AP) mode
	*********************************************************************************/
	printf("\n\r[WLAN_REPEATER_EXAMPLE] Enable Wi-Fi with concurrent (STA + AP) mode\n");

	/*********************************************************************************
	*	1-1. Disable Wi-Fi
	*********************************************************************************/
	printf("\n\r[WLAN_REPEATER_EXAMPLE] Disable Wi-Fi\n");
	wifi_off();
	vTaskDelay(20);

	/*********************************************************************************
	*	1-2. Enable Wi-Fi with STA + AP mode
	*********************************************************************************/
	printf("\n\r[WLAN_REPEATER_EXAMPLE] Enable Wi-Fi with STA + AP mode\n");
	if(wifi_on(RTW_MODE_STA_AP) < 0){
		printf("\n\r[WLAN_REPEATER_EXAMPLE] ERROR: wifi_on failed\n");
		return;
	}

	uint8_t *mac = LwIP_GetMAC(&xnetif[0]);
	bridgeif_set_mac_init(mac);
	bridgeif_add_port_sta_netif();
	bridgeif_add_port_ap_netif();

	/*********************************************************************************
	*	1-3. Start AP
	*********************************************************************************/
	printf("\n\r[WLAN_REPEATER_EXAMPLE] Start AP\n");
	char *ssid = "ZLL_drone_base";
	char *password = NULL;	// NULL for RTW_SECURITY_OPEN
	int channel = 6;

	if(wifi_start_ap(ssid, (password)?RTW_SECURITY_WPA2_AES_PSK:RTW_SECURITY_OPEN, password, strlen(ssid), (password)?strlen(password):0, channel) < 0) {
		printf("\n\r[WLAN_REPEATER_EXAMPLE] ERROR: wifi_start_ap failed\n");
		return;
	}

	/*********************************************************************************
	*	1-4. Check AP running
	*********************************************************************************/
	printf("\n\r[WLAN_REPEATER_EXAMPLE] Check AP running\n");
	int timeout = 20;
	while(1) {
		char essid[33];
		if(wext_get_ssid(WLAN1_NAME, (unsigned char *) essid) > 0) {
			if(strcmp((const char *) essid, (const char *)ssid) == 0) {
				printf("\n\r[WLAN_REPEATER_EXAMPLE] %s started\n", ssid);
				break;
			}
		}
		if(timeout == 0) {
			printf("\n\r[WLAN_REPEATER_EXAMPLE] ERROR: Start AP timeout\n");
			return;
		}
		vTaskDelay(1 * configTICK_RATE_HZ);
		timeout --;
	}

	/*********************************************************************************
	*	1-5. Connect to AP using STA mode and start DHCP client
	*********************************************************************************/
	printf("\n\r[WLAN_REPEATER_EXAMPLE] Connect to AP\n");
	if(p_wlan_init_done_callback)
		p_wlan_init_done_callback();

	vTaskDelete(NULL);
}

void example_wlan_repeater(char* id){
	if(xTaskCreate(example_wlan_repeater_thread, ((const char*)"example_wlan_repeater_thread"), 1024, NULL, tskIDLE_PRIORITY + 1, NULL) != pdPASS)
		printf("\n\r%s xTaskCreate failed\n", __FUNCTION__);
}

#endif /* CONFIG_EXAMPLE_WLAN_REPEATER */

Can anyone help on this , in regards to adding the needed code and if it is possible to have a 'converter from the C file to sketch?

Thank You

Not without code I can read. Please read the forum instructions.

10-4 figured out formatting ,,sorry bout that

I think the first thing you will need is an Ameba core:

https://www.amebaiot.com/en/ameba-arduino-getting-started/

Hi John,

I have been messing with the ambd_sdk for about three weeks now so am somewhat familiar with that part. I can compile what i want in the example_wlan_repeater c file and works fine other than it does not have the possibilty of getting the LED to blink, once the repeater --rtlduino /BW16- is actually connected to the target AP. AKA: drone AP. This is the part I am missing and am not smart enough to know how to add the code to that 'c' file,,I'll be the first to admit.
Also have the amebad board, libraries added to the Arduino IDE as this can be used to flash natively the binaries generated via commandline ,from the ambd_sdk, to Rrtlduino modules, boards.

Thanks

@brcisna, your topic has been moved to a more suitable location on the forum. Installation and Troubleshooting is not for problems with your project :wink: See About the Installation & Troubleshooting category.

1 Like

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.