- XBT_ATTRIB_DEPRECATED_v323("Please use Link::by_name()") static Link* byName(const char* name)
- {
- return by_name(name);
- }
- XBT_ATTRIB_DEPRECATED_v323("Please use Link::get_name()") const std::string& getName() const { return get_name(); }
- XBT_ATTRIB_DEPRECATED_v323("Please use Link::get_cname()") const char* getCname() const { return get_cname(); }
-
- /** @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);
+ /** 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;
+
+ void turn_on();
+ bool is_on() const;
+ void turn_off();
+
+ /** 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;
+ void set_property(const std::string& key, const std::string& value);