Microros Portenta H7 Int64MultiArray subscriber is not getting any data

The microros is fully initialized from the dev computer showing the micro_ros_node in the ros2 node list and even in rqt_graph encoder_pos -> micro_ros_node, but for some reason the portenta h7 is not serial printing anything even "inside call back"

#include <micro_ros_arduino.h>
#include <rcl/rcl.h>
#include <rclc/rclc.h>
#include <rclc/executor.h>
#include <std_msgs/msg/int64_multi_array.h>

#define LED_PIN 13

// ROS 2 objects
rcl_subscription_t subscriber;
std_msgs__msg__Int64MultiArray msg;
rclc_executor_t executor;
rclc_support_t support;
rcl_allocator_t allocator;
rcl_node_t node;

// Error blink loop
void error_loop() {
    while (1) {
        digitalWrite(LED_PIN, !digitalRead(LED_PIN));
        delay(100);
    }
}

// Subscriber callback
void subscription_callback(const void * msgin) { 
    Serial.print("inside call back);
    const std_msgs__msg__Int64MultiArray * m =
        (const std_msgs__msg__Int64MultiArray *)msgin;

    Serial.print("[Callback] Array size: ");
    Serial.println(m->data.size);

    for (size_t i = 0; i < m->data.size; i++) {
        Serial.print("Data[");
        Serial.print(i);
        Serial.print("] = ");
        Serial.println(m->data.data[i]);
    }
}

#define RCCHECK(fn) { rcl_ret_t temp_rc = fn; if(temp_rc != RCL_RET_OK){error_loop();} }
#define RCSOFTCHECK(fn) { rcl_ret_t temp_rc = fn; if(temp_rc != RCL_RET_OK){} }

void setup() {
    pinMode(LED_PIN, OUTPUT);
    Serial.begin(115200);
    digitalWrite(LED_PIN, LOW);

    // Configure WiFi transport to micro-ROS agent
    set_microros_wifi_transports(
        (char*)"",
        (char*)"",
        (char*)"192.168.0.22",
        8888
    );

    allocator = rcl_get_default_allocator();

    // Initialize ROS 2 support
    RCCHECK(rclc_support_init(&support, 0, NULL, &allocator));

    // Create node
    RCCHECK(rclc_node_init_default(&node, "micro_ros_node", "", &support));

    // Initialize subscriber
    RCCHECK(rclc_subscription_init_default(
        &subscriber,
        &node,
        ROSIDL_GET_MSG_TYPE_SUPPORT(std_msgs, msg, Int64MultiArray),
        "encoders_pos"
    ));

    // Initialize executor and add subscriber
    RCCHECK(rclc_executor_init(&executor, &support.context, 1, &allocator));
    RCCHECK(rclc_executor_add_subscription(&executor, &subscriber, &msg, &subscription_callback, ON_NEW_DATA));

    Serial.println("Subscriber ready, waiting for /encoders_pos...");
}

void loop() {
    delay(100);
    // Spin executor to handle incoming messages
    RCSOFTCHECK(rclc_executor_spin_some(&executor, RCL_MS_TO_NS(100)));
}

Welcome to the forum

As your topic does not relate directly to the installation or operation of the IDE it has been moved to the Programming category of the forum