Я использую INET и хочу смоделировать сценарий, который состоит из трех точек доступа (AP) и одного мобильного узла (MN), пусть каждая AP имеет другие связанные MN в своем диапазоне, что я хочу: пока MN (в моем сценарий) передвигаться и получать маяки от точек доступа, прежде чем связываться с точками доступа, могу ли я узнать количество других MN, связанных с каждой точкой доступа? Я исследовал много исходных кодов и нашел MACaddressTable и что-то вроде этого stalist в ieee80211MgmtAP, они полезны для меня? и использовать их в качестве общего числа связанных MN,
Тогда как я могу оценить длину сталиста? или MACaddressTable?
иначе я должен поставить счетчик, чтобы считать это на стороне AP и излучать его через кадр маяка? если да, пожалуйста, дайте мне несколько руководств или ярлыков
С уважением ….
В модели INET AP хранит собственные станции в staList
карта. Для локального расчета текущего номера связанной станции вы можете использовать следующий код:
STAList::const_iterator it;
int assocSta = 0;
for (it = staList.begin(); it != staList.end(); ++it) {
if (it->second.status == ASSOCIATED)
assocSta++;
}
Если вы хотите изменить стандартный кадр маяка, во-первых, вы должны предположить, где именно вы хотите добавить новое поле в кадр маяка, например, после чего существующее поле, а также какой размер должен иметь это поле. Затем:
int noOfAssociatedStas;
) в классе Ieee80211BeaconFrameBody
в файле Ieee80211MgmtFrames.msg
и правильная длина в Ieee80211BeaconFrame
определениев Ieee80211Serializer.cc
после else if (dynamic_cast<const Ieee80211BeaconFrame *>(pkt))
добавить сериализацию нового поля, например:
unsigned int numSta = Frame->getBody().getNoOfAssociatedStas();
b.writeByte(numSta); // assuming that the new field is 1 byte length
в Ieee80211Serializer.cc
в deserialize
добавить десериализацию нового поля после case 0x80: //ST_BEACON
например:
unsigned int numSta = b.readByte();
Обратите внимание, что место добавления нового поля (второй маркер) должно точно соответствовать месту его чтения (третий маркер).