Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Car.cpp
00001 #include "Car.h" 00002 #include <stdlib.h> 00003 00004 #define TICK 1000 00005 00006 Car::Car(int id, Road* road, int flag) { 00007 this->id = id; 00008 this->road = road; 00009 this->flag = flag; 00010 00011 cycle = 0; 00012 00013 this->thread = NULL; 00014 } 00015 00016 void Car::update() { 00017 while (true) { 00018 ThisThread::sleep_for(TICK); 00019 road->go_flags.wait_all(flag); 00020 cycle++; 00021 00022 position = position + speed; 00023 00024 if (cycle % 5 == 0) { 00025 speed = rand() % 11 + 5; 00026 } 00027 00028 road->done_flags.set(flag); 00029 } 00030 } 00031 00032 void Car::reset(int position, int speed) { 00033 road->done_flags.clear(flag); 00034 00035 if (thread != NULL) { 00036 thread->terminate(); 00037 } 00038 00039 thread = new Thread(); 00040 thread->start( callback(this, &Car::update) ); 00041 00042 cycle = 0; 00043 this->position = position; 00044 this->speed = speed; 00045 } 00046 00047 void Car::stop() { 00048 if (thread != NULL) { 00049 thread->terminate(); 00050 } 00051 }
Generated on Wed Jul 27 2022 10:46:49 by
1.7.2