- const char* getCname() const;
-
- /** @brief Get the bandwidth in bytes per second of current Link */
- double bandwidth();
-
- /** @brief Get the latency in seconds of current Link */
- double latency();
-
- /** @brief The sharing policy is a @{link e_surf_link_sharing_policy_t::EType} (0: FATPIPE, 1: SHARED, 2: SPLITDUPLEX)
- */
- int sharingPolicy();
-
- /** @brief Returns the current load (in flops per second) */
- double getUsage();
-
- /** @brief Check if the Link is used */
- bool isUsed();
-
- void turnOn();
- void turnOff();
-
- void* getData();
- void setData(void* d);
-
- void setStateTrace(tmgr_trace_t trace); /*< setup the trace file with states events (ON or OFF). Trace must contain
- boolean values. */
- void setBandwidthTrace(tmgr_trace_t trace); /*< setup the trace file with bandwidth events (peak speed changes due to
- external load). Trace must contain percentages (value between 0 and 1). */
- void setLatencyTrace(tmgr_trace_t trace); /*< setup the trace file with latency events (peak latency changes due to
- external load). Trace must contain absolute values */
-
- const char* getProperty(const char* key);
- void setProperty(std::string key, std::string value);
+ const char* get_cname() const;
+
+ /** Get the bandwidth of the current Link (in bytes per second) */
+ double get_bandwidth() const;
+ /** Set the bandwidth of the current Link (in bytes per second) */
+ void set_bandwidth(double value);
+
+ /** Get the latency of the current Link (in seconds) */
+ double get_latency() const;
+ /** Set the latency of the current Link (in seconds) */
+ void set_latency(double value);
+
+ /** @brief Describes how the link is shared between flows */
+ SharingPolicy get_sharing_policy() const;
+
+ /** @brief Set the level of communication speed of the given host on this wifi link.
+ *
+ * The bandwidth of a wifi link for a given host depends on its SNR (signal to noise ratio),
+ * which ultimately depends on the distance between the host and the station and the material between them.
+ *
+ * This is modeled in SimGrid by providing several bandwidths to wifi links, one per SNR level (just provide
+ * comma-separated values in the XML file). By default, the first level in the list is used, but you can use the
+ * current function to specify that a given host uses another level of bandwidth. This can be used to take the
+ * location of hosts into account, or even to model mobility in your SimGrid simulation.
+ *
+ * Note that this function asserts that the link is actually a wifi link */
+ void set_host_wifi_rate(const s4u::Host* host, int level) const;
+
+ /** @brief Returns the current load (in bytes per second) */
+ double get_usage() const;
+
+ /** @brief Check if the Link is used (at least one flow uses the link) */
+ bool is_used() const;
+
+ /** @brief Check if the Link is shared (not a FATPIPE) */
+ bool is_shared() const;
+
+ void turn_on();
+ bool is_on() const;
+ void turn_off();
+ void seal();
+ /** Setup the profile with states events (ON or OFF). The profile must contain boolean values. */
+ void set_state_profile(kernel::profile::Profile* profile);
+ /** Setup the profile with bandwidth events (peak speed changes due to external load).
+ * The profile must contain percentages (value between 0 and 1). */
+ void set_bandwidth_profile(kernel::profile::Profile* profile);
+ /** Setup the profile file with latency events (peak latency changes due to external load).
+ * The profile must contain absolute values */
+ void set_latency_profile(kernel::profile::Profile* profile);
+
+ const char* get_property(const std::string& key) const;
+ Link* set_property(const std::string& key, const std::string& value);
+ const std::unordered_map<std::string, std::string>* get_properties() const;
+ Link* set_properties(const std::unordered_map<std::string, std::string>& properties);