BLOG about IBM Rhapsody. Contains technical information as well as more private travel stories.

Tag: travel (Page 4 of 6)

Florida 3: Hard-Rock Café

Hard Rock Café

The Hard-Rock Café is a must-visit on all my trips. I always buy a t-shirt (although my wife tells me that I have more than enough t-shirts already…)
The fun with the HRC t-shirts is that they have the name of the city printed on it. You can only buy them local, not on the internet, they have only neutral shirts there.
So if you see someone with an HRC t-shirt from some far, far away destination, he or she has either been there or has a good friend who has been there. (No, I will not bring you a t-shirt…. go there yourself…)

So on the Florida trip we decided to visit ALL the Florida HRC’s. Yes, all of them…
Key West, Miami, Fort Lauderdale, Tampa, Orlando, Daytona Beach and Nassau (On the Bahama’s, not exactly Florida as you can read on …)

We did Key West so the next day we left Arno’s house to drive via Tampa (HRC in the airport) , Orlando (HRC is in the Universal Studios) to Daytona Beach where we stayed in the Hard Rock Hotel. Then on to Miami (next to the Harbour See … )  via Kennedy Space Center (read …) Fly to Nassau and stay on the Bahama’s for a day (See: … ) and finally to Fort Lauderdale ( HRC in the Casino ) and then back to Fort Myers. Great trip, I can recommend it!

Sequence

I receive many questions about how to influence the Rhapsody generated code. Now you can post-process the code using the simplifier or even change the rules with our rules-composer but sometimes you should make life not more complicated than it already is.
There are more ways to ensure Rhapsody generates exactly what you want.
Ask most modeling guru’s (and the traveling modeler agrees…) and they will tell you: You have to model in a way that sequence doesn’t matter. As already said: I agree. But…..
There are circumstances where you just cannot model as you want to. The smaller the controller, the more rigid the real-time requirements, the more trouble to fit everything in and to certify it works.

Classes

Open a new model and if you create 4 classes (in this sequence!) “A”, “B”, “D”, “C”, you will see in your browser that under the default package you have the 4 classes, sorted alphabetically, A, B, C, D. BrowserUnsorted.JPGThis is just the “visual” sort, you can switch that off with either a property or with “View”, “Browser Display options”, “Enable Ordering”. This will switch on the small yellow arrows on top of the browser that let you order items as you want. (Only Visual!!)

Now the sequence of Code generation is not relevant for classes since they have their own file. The sequence of attributes or operation within a class can be important!OrderMenu.JPGBrowserSorted.jpgNow that can also be achieved easily. Rhapsody offers the sorting from within the browser. Depending on if you have switched on the “Enable Ordering” all elements

Editorder.JPGare either shown alfabetically or in the sequence that you have entered them in the model.
The code generation for attributes and operations is not depending on that setting!! Code is generated in alphabetical sequence, or the sequence that you give in the “Edit Order of Attributes (Operations)”.
This opens a dialog where you can precisely select the generated source code sequence.

Now if you have created objects statically using “Make an Object” or by just creating them you can do the same. Right click on “Objects” and you can select “Edit order of Objects” you can select the order that the objects are instantiated. (Do a regenerate, Active Code View is not automatically updated) The same applies for singleton Objects.

This also works with dependencies (with Usage, that will select the sequence of include)

Happy modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

Florida 2: The Keys

The Keys

The Florida Keys are the small string of Islands that lie south of the Florida peninsula. They are connected to each other via a couple of bridges and a long highway.
I’ve been there before but that had to happen on one day and before the flight back so I had not much time to enjoy the beautiful scenery and the islands itself.
The attraction is of course Key West where you are very close to Cuba (90 miles, 145km)

distance-from-cuba-to-key-west-1

So this time we planned a bit longer visit and even an overnight stay. Getting a room was OK, apparently it was not the tourist season. Still it was quite busy on Duval Street that is the main attraction. Lots of cruise-ships stop at Key West, unloading lots of passengers. That is the main income of the islands.

The trip to the island is (for me…) the main attraction. We were driving there in a BMW 430i convertible. That was pretty cool.

Hemingway’s House (& cats)

One of the attractions of Key West is the house of Ernest Hemingway.

IMG_1123.jpg

It is now a museum (you have to pay for it… very undutch…) and shows the house in its original state. The walls are full with Hemingway memorabilia and explanations about his life.
I had heard of Hemingway of course but never read anything from him. I immediately started to read “The old man and the sea”.
The house is populated by many cats that are all descendants of Hemingway’s cat “Snow White” who had 6 toes on each foot. The cats there all (as far as i could see) have that too and is quite remarkable.

How to associate Rhapsody model files in the explorer with a specific Rhapsody version

After installing a new Rhapsody version, e.g. for testing purposes, you might still want to let the Windows Explorer open your .rpy or .rpyx Rhapsody model files with another Rhapsody version you are still using for production. This how-to briefly describes where to configure the file extension to application association.

how to associate rpyx

Step-by-step guide

  1. Open the Windows Registry Editor (regedit.exe)
  2. Navigate to “HKEY_CLASSES_ROOT\.rpyx” (or “HKEY_CLASSES_ROOT\.rpy”)
  3. Make sure the value name “(Default)” contains the data “rpyxFile” (or “rpyFile”) (without quotes)
  4. Navigate to “HKEY_CLASSES_ROOT\rpyxFile\Shell\Open\command” (or “HKEY_CLASSES_ROOT\rpyFile\Shell\Open\command”)
  5. Modify the value named “(Default)” to contains the data (including quotes):
    <Full path to your desired Rhapsody version program path>\Rhapsody.exe” -cmd=open “%1”
    If you have a multi language installation but per default want to open Rhapsody in a specific language or edition, you can add additional arguments before “-cmd…”.
    Examples:

    1. Development Edition in C: -dev_ed -lang=c
    2. Architect for Software: -architect
  6. You might also want to check HKEY_CLASSES_ROOT\rpy[x]File\DefaultIcon

Thanks to Eike for writing this down!

Here some pictures of the keys.

That’s it! Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

Animation in Florida

Vacation

Even traveling modelers have vacation, sometimes. Although my life sometimes looks like a long vacation, it still is work. I usually have only limited time to really look at something.
So I decided to spend 2 weeks in the United States, in Florida. Finally time to see more than airports and security checks.
My youngest son joined me and on may 1 we left in the morning to fly to Fort Myers via Detroit. I will tell a lot more about where we went and what we did.

The planning is to visit The Keys, Tampa, Orlando, Daytona Beach, Bahamas, Miami and of course my friend Arno in Fort Myers.
That is quite a program for 10 days but we’ll see. First we spend a day at Arno’s to join the pool….

Animation

Not really a theme for me… The Willert Version of Rhapsody does not support Animation (Therefore we include our “world-famous” Target Debugger.
A question came in from a customer about the use of animation with more than one Rhapsody version (So you can animate different applications)
This is actually quite easy once you understand how Animation works.
Rhapsody generates extra code when you switch on Animation, every function has some Macro in it, different macros for different functions.
Also the framework includes the Animation and tracing Framework, that provides the functions you need to animate.
If you start the Rhapsody developer it will reserve a TCP/IP Port for the Animation communication. The number is 6423. This is the reason that when you start a second instance of the developer there is an error message that says: “Rhapsody cannot create socket” or something like that.

Solution

There are multiple solutions.
They both involve the Rhapsody.ini file, this file must be right next to your Share directory.

  • Create a second Data directory for Rhapsody and change the Animation Port Number. Create shortcuts that start Rhapsody in different directories.
    Advantage is that you gave control over the port number and you can decide which one to start.
  • Add a line AnimationPortRange=10 to your Rhapsody.ini file. Now Rhapsody will use a new port number (after 6423 or whatever you have configured in rhapsody.ini) each time you start a new Rhapsody instance.
    You have to generate and build your code (It contains the correct port number) to use the correct port.

That’s it for today, Happy Modeling with Rhapsody!

 

Walter van der Heiden (wvdheiden@willert.de)

Deploy back

Introduction

The title is a bit double today, i was deployed back from india to home and I will explain how you can deploy to your Rhapsody project and not lose the “roundtrip” feature!

Deploy back Rhapsody

The purpose is to deploy and leave all files exactly where Rhapsody has generated them so that you are still able to do roundtripping.
It is not completely straightforward but certainly doable.

Assuming that you have a directory c:\work. In that you have 2 directories, Model and Code. The structure is as follows:

  • c:\Work
    • \Model
      • \MyModel
        • \MyComponent
          • \MyConfiguration
            • “This is where Rhapsody generates your code”
    • \Code
      • “This is where the project file for the IDE is
      • “Generated Model”
      • “RXF”
  • RXF install
    • Tools
      • WSTDeployer
        • WSTDeployyer.properties

The trick is to map the “Generated Model” directory to the “MyConfiguration” Directory. Depending on the age of your deployer this is very easy, easy or just a bit of work….

In some deployers you can edit the name of the “Generated Model” directory in the dialog. If not than there is a deployer.ini file in the RXF installation directory, you can change the name of the “Generated Model” directory to the name of MyConfiguration.

Then move the project file (or the complete project if you have already content in it) to the MyComponent directory, start the Deployer Configuration (In Rhapsody under “Tools”) and select the just moved project file.

That’s it.

Deploy back the traveling modeler

Now that turned out to be a lot more difficult… The planning was to fly home on Sunday Evening. Or technically on monday morning, the flight from Delhi to Paris would leave at 00:15 Delhi Time, 19:45 CET ) I had a late flight (19:30-21:50)  from Hyderabad to Delhi and so less than 1,5 hours for my stop-over. From the trip to India I had learned that this was not nearly enough.
At first I thought, well lets just see what happens but since I did not book the flight as a complete flight, missing the plane from Delhi (to Paris) would not be an option.
So I checked the goindigo.in website and I found out I had been clever enough to book a flight with rebook and cancel options. Yeah….
So I rescheduled that flight to be early enough (16:00-18:25) That would be more than enough.
So I left the hotel exactly at 12:00 (CET: 7:30 Sunday )packed and paid. On my way home! I took a Uber to the airport, that was almost an hour drive ( and almost €8.- )

There I tried to figure out where I had to be. That is not too easy, the airport did not make announcements and I was pretty early so my flight did not yet show up on the monitors. But I could check in my luggage (I had booked the Fast Forward Option, a good idea in India…) quite fast. I did not have to stand in line.
So I was there hours too early but hee… better than 1 minute too late…. Spend some time shopping for home, drinking a Mango Lassi, eating something.
The plane left in time and flew on-time. My suitcase was in-time, the bus was easy to find and even waited for me so I was on the correct airport terminal early. checked in my suitcase within an hour of landing…. So it is possible.
But I seriously doubt if that is reproducible, So i did not mind being early. What I did mind is that just before boarding time, Air France started to make announcements about delays.

The plane was delayed. For more than an hour. Not cool, my connection in Paris was only 1:20…. not too long.
The plane left too late but promised to make up for lost time. It was an old Airbus 330. Also no USB chargers and very limited seating room for a continental flight..
On top of that the two ladies in front of me immediately reclined their seats the moment the “Fasten your Seatbelts” light went of. Sigh.

Next to me sat an old lady, very friendly but she only spoke French. i do speak a little French but not nearly as much as English or German… This was going to be a long flight.
Normally (I’m used to KLM) on long flights, you first get a drink, then dinner, with drinks and another drink or coffee after dinner. Then the lights go out and you can sleep (if you like) Air France pushed out drinks together with the food as fast as possible.
The ladies in front of me continued “sleeping” and did not eat. And refused to put her chair back. So I had about 30cm for my food. Thanks!
I managed to eat and drink that without accidents and noticed that there was not going to be anything more to drink or eat.
The ladies in front of me thought that this was the right time to change their minds and to order food and drinks. Thanks!
Chairs were kept in the sleep position, of course.
I got my earplugs and my face-mask and prepared to sleep. At take-off the family in the middle row, 2 rows before me already had trouble with their 3 kids but as soon as the lights went out the kids decided that it was time to start waking up the other passengers. Thanks!
The seats in the old A330 were clearly out-dated. So with a back that hurt, no sleep what so ever I ate my breakfast. The pilot had broken his promise and did not make up for the lost time so I would arrive an hour late in CDG, not really my favorite airport..
Flight attendants could not give much information, just that we landed on terminal 2F and that I had to go to 2E. Sounds close, but I know CDG, it is not close…
I gathered my luggage before the landing so I could run out of the plane fast, I even ignored the ladies in front of me and as soon as the plane was stopped I ran to the door. There I waited until it opened and I started my morning sport… I had less than 20 minutes but…. I made it! In spite of passport check and even a security check (WHY???) that cost me my water (grrr) I made it to the plane in time.
I crashed in my seat, luckily here there were some better tempered passengers, they had fun about me sweating and panting.
I didn’t care, I made it in time. I was pretty sure that my suit-case would not but I did not care. Air France would take care of that.

And then the pilot announced that we would have some delay because of the fog in the Netherlands… To make a long story short… that took 3,5 hours. Leaving the plane was not allowed (They would not let you in again…. many passengers with connecting flights left because they would not make their flights) so I stayed. There was water and a sandwich and finally we took off.
I arrived at Schiphol around . I thought: well there is a sunny side: My suitcase has made it now: not. CDG was not able to adapt. So I waited at the luggage belt for nothing. Then to KLM, report missing luggage, then the train home. I arrived home at 5:30pm, 32 hours after I left the hotel…

 

Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

 

Hyderabad

Indian Traffic

My destination was Hyderabad this time. Never been there before but I have been to India before. I really like india, nice people, beautiful country. The country is big (certainly compared to the Netherlands…) and the amount of people is huge (1.3 Billion!)
The traffic is just amazing. In Europe we mostly drive on the right side of the road, in the UK they drive on the left side and in India they drive wherever there is place…

The first time i was in India I was picked up at the airport in Mumbai (Bombay) for a taxi-drive to Pune, a 160 kilometer drive that took almost 4 hours.
The first half hour I spent saying goodbye to my life. I was pretty sure I would not survive the drive. After a while, however, you figure out the (actually very simple) rules of driving in India.

  • What’s behind you is not important. It’s their problem, not yours.
  • Honk at least once a minute. (Otherwise your car will explode, I think)
  • use every free space on the road.
  • use all available room next to a road as well.
  • You have priority if you are there first.
  • don’t be aggressive or mad, the others know what they are doing.

That’s about it. The last one is important. Most drivers know pretty well what they are doing. “But India has the highest mortality rate in traffic” i hear you say. Yes true. But that happens only outside of the city. In the city you just cannot drive fast enough to die in an accident.
In the same way you can cross the very busy streets. Have confidence in the others, they will see you and decide which side they will pass you. So just cross the street and don’t hesitate.

Indian Food

The main reason I really like to go to india is the food. Indian food is really awesome. Spicy and very different from our european food. I found out that Hyderabad is famous for its Biryani and that they eat spicier than in the rest of India.
I don’t mind, i’m used to eating quite spicy.
In India they also eat in a special way: with the hand. Only the right hand, the other hand is used for “other purposes” (Do the math…) That is a bit difficult being a lefty but I managed. Yes I ate with my hands as well. When in Rome, do as the Romans.

Deployer

I learned that the system of “Generate Code, Generate RXF files, Deploy, switch to IDE, compile” is still difficult for people to understand.

if you follow the IBM way of creating an adapter for Rhapsody, you generate code in Rhapsody, that will also generate a makefile and you build from Rhapsody. As already said, we decided to do this differently because:

  • command-line length in Windows. Large Applications cannot be built like this
  • too many settings and extra files you need for embedded targets

So we use a different approach.

  • Generate
    Still generates Code from the Rhapsody model
  • Build
    Does not really build but generates the RXF include files that provide the static settings for e.g. the Memory Blocks etc.
  • Deploy
    Depending on the version of the RXF, we have called deploy in the “run” phase but now we call that mostly in the “Build” phase.
    It takes your Rhapsody generated sources (And the RXF includes _and_ the complete RXF and inserts them in a prepared IDE project.
  • Switch to your IDE
    Windows TAB, your IDE will probably show you that files have changed
  • Compile
    Use your IDE to compile. And Debug.

What you lose in this way is the roundtripping, unless… you select the Rhapsody Generated Source Directory as Home for your IDE Project.

Common misunderstandings/problems:

  • using Tools, <RXF> Deployer Configuration only configures the deployer. It does NOT deploy!
  • You have to prepare your IDE project. We deliver the “Getting Started” project (And a backup) that works. Your own project must include some things like “RXF” and “Generated Source” Folders. Check your Documentation.
  • If you have made changes to your IDE project: SAVE!!!! Deploy will use the IDE settings on the disk and will also overwrite your changes…
  • Clean up your old Rhapsody sources in Rhapsody (Code, Clear Redundant Source Files) to prevent them from being deployed.

I hope this helps you in understanding the RXF!

Back to India

 

OK, that’s it, have fun with Rhapsody and the RXF!

Walter van der Heiden (wvdheiden@willert.de)

Incredible India

Recently I visited India for a 10 days. In Hyderabad to be precise. So after arriving at home Friday night after a week of training in Bückeburg I had to unpack and re-pack my bags. Saturday morning early my KLM plane for Delhi would leave from Schiphol.
It was an old 747, I haven’t flown a 747 since a long time, i didn’t even know that they were still in use. But I saw a couple of them so KLM is still using them, On the inside you could clearly see that the 747 is a bit old. No USB chargers, I tried to operate the miniature inflight entertainment screen (That was not much larger than my iPhone) and just before i started to get annoyed because it wouldn’t accept my inputs I realized it wasn’t a touch-screen… The rest was also outdated but…. still OK. The plane left a bit before 13:00u (1pm) and would arrive 7,5 hours later in New Delhi. Too early to sleep, but I had a connecting flight with a long stop-over so I thought I could find some other time to sleep a bit.

I had an Economy plus seat, a bit more room and… luck because the middle seat stayed empty. You could choose between Indian food and Western food. Easy choice… for me. Nice detail: all the food on the flight was vegetarian! And very, very good… I tried a nap after the lunch but i was not tired enough. So after almost 8 hours we landed on Indira Gandhi International Airport in New Delhi.

I got out pretty early, just after the Business Class and I was in line for the customs early. Unfortunately, KLM had forgotten to supply us with the visa papers… so I had to go back and fill it in and then line up behind the rest of the plane… Took quite a while but in the end they let me in. I’ve been to India before, last time it took me 2 days at the embassy in The Hague to get a Visum, the online Visum is a huge improvement.

After that searching for my suitcase (I had a big case with Training Material) and after I finally found that I went to an exchange shop to change some euro’s into Rupees. A bit of cash money is always convenient. I brought some (Well.. actually a lot…) from my last visit but India decided to use new banknotes and make the old ones invalid. Thanks India!
I had 4,5 hours for my stopover so I was very relaxed, going to the last check at the customs, bought myself a SIM-card so I could use Mobile Data in India (My mobile plan covers much but it does not cover India…) and then I started searching for the place where I could check-in my luggage for the flight with IndiGo Airway… That turned out to be in the domestic terminal. And that was on an airport with the same name but that name was also used for an older airport on the other side of Delhi… So I had to cross the airport to the shuttle terminal and drag my stuff into an old bus together with 50 other people with too many suitcases and other luggage. I managed to get a ticket and waited for the bus in the most air polluted place I’ve ever been. Half an hour equaled 10 packs of cigarettes. Yikes.

Slowly however… time ran out. The bus came and had to drive almost an hour… after arriving only 40 minutes would be left. If you have ever been to an airport in India you know that is not nearly enough… Luckily a nice Indian gentleman next to me in the bus understood my problem and helped me out. He arranged 2 guys on the airport that took my suitcases and led me through some “secret” airport elevators and hallways. They spoke with a lady behind the counter and I was the first one in a long, long line… Costed me EUR 10,- Not “compliant” I’m afraid but saved a lot more… With 1 minute left I made it to the bus to the plane.

At the plane it was time for a surprise, it was an Airbus A320neo. Almost brand new (although I read today that some of them are grounded due to Pratt&Whitney engine trouble) It took off precisely in time at 5am and flew to Hyderabad in just over 2 hours. The flight was more or less OK but I learned one more thing: Indian pilots fly just as Indian taxi drivers drive….

After 2 hours we were in Hyderabad. We tried landing twice and twice it made a fly-over. (According to the pilot “a completely safe maneuver “) Yes please….
After circling for an hour the plane accelerated and the pilot told us we would fly to Chennai. Cool, I did not expect to ever go there and before you know… But information was scarce and I did not really know what to expect. Directly after the landing and parking all other passengers stood up and started moving to the door and shouting through each other. Some guy from IndiGo got in the plane and mastered the chaos. He let he passengers out that had to be in Chennai anyway. We waited for 2 hours in the burning sun. We got a lunch box with chips and (Yeah!!) water. After 2 hours we took off again and an hour later we landed in Hyderabad.

After a non successful search for the hotel shuttle I gave up and took a taxi to the hotel where I arrived 24 hours after leaving home.

OK… this is a Rhapsody BLOG….

I have some news on Rhapsody as well. Some of it was written by Eike Römer on our Download Portal. I copied it here.

  • The 8.3 Version is now OK to use from our point of view with restrictions:
    • only with iFix 2 (all available on our Download Portal)
    • Beware if you use it for existing projects! Either your Version history is lost (or retained with much effort) or you have to meticulously save in the old format.
    • for new projects it is OK
  • The 64Bit version is also free to use! read here how you can update the frameworks.

 

Rhapsody 8.3 with the RXF Frameworks

Our existing Realtime eXecution Frameworks (RXF) available on the Willert Download Portal (https://download.willert.de/) can be used together with Rhapsody 8.3 iFix 2. However, RXF versions that have been tested and released with an earlier Rhapsody version than 8.1.5 need the applied JDK workaround documented on: https://download.willert.de/rhapsody-8-1-5-support/

RXF-Cert is Rhapsody Version Specific

RXF-Cert frameworks (prepared for safety critical software development certification) are an exception, as they have been documented, tested and prepared for certification for one specific Rhapsody version. Please contact us and discuss the Rhapsody upgrade path for your specific certification environment if you want to migrate to Rhapsody 8.3 iFix 2.

Rhapsody 32- vs. 64-Bit

Until today we highly recommended only installing Rhapsody in the 32-bit edition. The main reason was a limitation in features like roundtripping, reverse engineering etc.

With Rhapsody 8.3 iFix 2 this has changed. You may now also work with the 64-bit edition of Rhapsody. However the Willert Installer (Setup.exe as part of an RXF release) needed to learn how to handle Rhapsody 64-bit installations. All RXF releases after 2018-03-13 can handle Rhapsody 64-bit installations out-of-the-box. For older RXF releases you need to replace the old Setup.exe with the one you can download here:

https://download.willert.de/downloads/setup_2018-03_64bit/

 

That was it! happy modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

 

Think!

This is the week of the IBM Think! in Las Vegas. I actually hate Las Vegas, it is a very aggressive place to be for my poor Asperger brain. I already had some serious “Sensor Overload Errors” there. I prefer Florida but you can’t win them all. IBM wants me to go to Vegas…

Also the IBM Conferences get bigger and bigger every year. I loved the Innovate in Florida, not just because of Florida but also because it was much smaller. You could really find all the people you need. In LV it is almost impossible to meet somebody.

Luckily there is the German IoT Conference (and hopefully the US IoT Conference) I feel a lot more at home there.

At least “Think!” is a great name, thinking is generally a good idea.

Hyperlinks

To gather information in your model it is a good idea to use Hyperlinks. You can use hyperlinks to save links to:

  • model elements (Change the view of your elements)
  • websites (Compiler, CPU, Willert!)
  • documents on your disk (For use in the project)

For documentation it is better to use “controlled files”, they will be part of the model and can be transferred to others.

Package Hyperlinks are a bit hidden, you have to right-click on a package and select “Add New”, “Relations” , “Hyperlinks”. Don’t forget that a click on a hyperlink will not open the features but the target of the hyperlink.

 

Explorer Helperhelper_explorer.JPG

I often search for my Model directory. Rhapsody does not always show it in the File Menu and you then have to open the configuration, go to the Settings Tab and look where the generated source is. There is a better way to do that.
Goto “Tools” “Customize” “Helpers…”.
Add a new item there, call it Explorer (or what you like) and fill in “explorer” at the command and “.” at the arguments.
This will give you a menu item under Tools that opens an explorer window with your project directory. Cool eh?

Happy Modeling with Rhapsody!

Walter van der Heiden ( wvdheiden@willert.de )

Your license is safe in Switzerland. Very Safe…

Introduction

This week I’m in Switzerland. helping a customer to install and use Rhapsody and a lot of other tools. Switzerland is cool, very nice to travel to because of the beautiful landscape. Not nice to travel to because everything is soooo expensive… For the price of a  normal meal I can feed my entire family in Germany… This time I was lucky, finding a very nice and quiet hotel where the food was delicious and not even that expensive (Well not for Switzerland…) I was also lucky with picking up my rental car: a free upgrade… OK, not a Merc, but the BMW 420D X-Drive was a nice car. And the snow on the last day was a piece of cake with the 4-wheel drive and the winter tires.

Back to work

As I have written before, it is not easy to install all tools in a way that everything works. Careful planning is required here.

Willert RXF License

The RXF does not have a license. There are 2 types of customers: One that is willing to pay and one that will never pay for software. License mechanisms are only there to annoy the first type: People that have paid for software and are legally entitled to use it.
The second type tries to hack it and if that is not possible: they will use other software.
We at Willert have rather that people steal our software then that they buy it from our competitors.

IBM Rhapsody license

IBM uses the so-called Flexible License Manager (Flex-LM), in spite of the name it is a very inflexible piece of software. Many things can go wrong there. We literally spend hours to get the stuff running sometimes.

Steady or Floating?

There are many different license types for Rhapsody depending on how you use the software and what version you use.

  • AU – Authorized User
  • FL – Floating User

The difference between these 2 is that an AU License is for a named person. This has to be the same person, always! (You can, of course, move the license internally but not on an hourly basis)
An FL can be used by multiple persons that not even have to be on the same location just not on the same time. Theoretically, if you have sites all over the world, you can have 3 people working a full day with same license. IBM allows that, Telelogic had a special (more expensive) license for that.
NOTE: IBM requires you to have a list available with the licenses you use and the names of the actual user! They are entitled to check that. (This is one of the points in the license agreement that you have not read)

Server, Locally or Dongle?

Flex-LM works with a license file. There are parts built into the software that uses it to check the file and determine if you are allowed to start it.

  • Server, you have a server that is reachable for everyone in the company (Yes that can be an international server)
  • Locally Server, you have the Flex-LM server on your local machine
  • Locally license file, there is no Flex-LM server, Rhapsody will read and decode the license file itself. The license file uses your network cards MAC address as a “key”.
  • Locally Dongle, you have a license file that uses the Dongle “ID” as a “key”

For the Server (local or remote) you need to install the Flex-LM key Manager

Have I already told you that I hate Windows?

I do. Really. It is such a @#$%^&*( OS. The fact that you must distinguish between 32-Bit and 64-Bit is already a pain not to mention everything else.
So for the dongle driver you need to check if you have 32- or 64-Bit. Also it seems to be a bit of a problem when you have the latest Windows 10 version. (although it seems to be Windows Type, (Home, Pro, ultimate, etc) dependant.
You can download your driver here.

OK. I did all that. It doesn’t work. Now what?

First: Don’t get mad or sad, this is not abnormal… Here are some pointers where you can start to get stuff running:

  • As always: You can ask us. We help you.
  • You can ask google. You’ll be surprised what google knows when you type in your exact error message.
  • READ the error message. Flex-LM mostly says exactly what the problem is.
  • find your lmtools.exe program, it helps you finding what is wronglmtoolsMain
  • There is an environment variable TELELOGIC_LICENSE_FILE that points to license files or paths where license files are (The latter only finds “license.lic” files). Unfortunately this is not the only source for locations, there is also:
  • A Registry Entry: HKEY_CURRENT_USER\Software\FLEXlm License Manager also has a Field “TELELOGIC_LICENSE_FILE” that contains the path information. If you want to delete incorrect entries you have to do it here as well… Flex-LM updates this entry when you add new paths to the Environment Variable but does not delete any when you change the Env Var again…
  • Check the number of your Dongle (Do this also physically on the Dongle itself) in the lmtools tab: “System Setting” and in the license file.
  • Any change in your system, OS update or Rhapsody update can influence the working of your license. beware of that. So if your license does not work anymore, try to check if something happens to the OS or other software (Check logs files)
  • Do you have a new network card? Most licenses work with your MAC address. Sometimes you can change the MAC address of your network card. But you can ask for a new license, IBM will give you one (Not every week of course…)

So. I hope this helps a little bit!

Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

 

Computer problems

Somehow my Schiphol flights are jinxed. Last year my Zürich flight was cancelled twice, once with snow, the other one while the flight control center wasn’t working. But I was not thinking about that in the train to Schiphol. Today I fly to Bristol, that is… when KLM, Schiphol or whoever is letting me…

It is snowing very lightly so the plane arrived late, but that’s OK… Dropping off my suitcase was real quick today (thanks SkyPriority ) I could even pass the really long line for the passport check (What??? Yep… Brexit, remember…) But I always carry my real passport with me so I could use the electronic line. 5 minutes instead of 1,5 hours… Cool. I thought…

But at the gate, where I met Robert who was flying in from Detroit, we were waiting and waiting and waiting… After a while the PA system explained that they had computer problems and that boarding might take a while. Oh great.

But it was faster than feared and we were in the bus pretty fast. Wait the bus??? Yep.. Since Brexit the UK travels via gate D6 in the basement, you have to go by bus to the place where they park the, relatively small, airplanes (Embraer 175/190) After entering the bus and driving a bit we were waiting before an airplane. And waiting… and waiting… until the electronic Bus voice told us that the bus was leaving…

And after a small drive we were being dropped off at the terminal. When all passengers were back they told us that the plane we saw was really there but they couldn’t find the crew….

I’m typing this while waiting for a crew. Hoping we still go, it would be very inconvenient when the flight would be cancelled now.
After almost 3 Hours (The time after which KLM would have to start pay….) they finally managed to get a crew and get us in the air.. Hey! Flying is fun. Always.

C or C++

Always the question. I don’t want to answer it now, I just want to give some tips and tricks. In Rhapsody, a model (a.rpy file) has a language. if you open the file with a text editor you can see that on the first line, it says “C” (or “C++” or “Java”) Now, all units, which are files basically, have this language indicator in them. There is also a “*”, that indicates a “don’t-care” what the language is. That is very useful for profiles that are more or less language independent (e.g. a “Styles” profile that contains stuff to influence the GUI )

So it is possible to switch parts of your model to another language, just right click on the unit, select “Edit Unit” and then you can select the language. Now there are some side-effects. You can change the language of a component but it can only contain packages and classes/objects of the same language in its scope. So that is why not all browser elements show up. Also… there is a way to make elements show up in both, the “*” method. You have to edit the .sbs files by hand but it works.

I already tried that for you and…. it works…;-) You can create a “C” package, include that in the scope of a “C” Component, close the model, edit the package file by hand to be the other language, open the model and…. you can include it in the other component. Then edit the package file to be “*” (after closing the model…) and you will see that you can generate 2 different languages from the same package.

32Bit or 64Bit

I think that Rhapsody 8.3 has a real good 64Bit version. If the issues with the new file format and extensions (and some other issues) are solved, we start to test our RXF and other tools for the use with 64Bit. That will solve some problems! Also 64Bit is a lot faster when handling large AUTOSAR Models!

IFix2

– IBM just released iFix2 for Rhapsody 8.3.

That’s it for today, happy Modeling with Rhapsody

Walter van der Heiden (wvdheiden@willert.de)

Publisher Subscriber

On the road again….

Last week I was on tour in Germany by car. Not by myself but together with Andreas. That makes traveling a lot more fun, alone is OK but with someone to talk to (or to listen to Jazz on my Burmester…) is a lot cooler.

img_0058

S-class Burmester speaker

First evening stage was from home to Bückeburg. Sunday evening is perfect for driving, it is quiet on the road and trucks are only allowed on the street after 22:00u. Then the next morning early to Stuttgart but via Karlsruhe. We had a visit to a partner company, show them our AUTOSAR solution. then to Stuttgart for the hotel.

Next two days was at an automotive customer to help them using Rhapsody to create the architecture for some very cool stuff. Sorry,…can’t tell you any more… sometimes stuff must be kept secret….

During that 2 days I came across an old friend, the Publisher-Subscriber Design Pattern and I decided to write something about it.

Design Pattern

Publisher Subscriber is a design pattern. A design pattern is not just a library function, it is a standard way to solve a problem, you can not give standard code for it but you can give example code that you must adapt to implement in your own realm. (Not always, due to clever inheritance it is possible to give some standard stuff for OO languages.)

What is PS (Publisher – Subscriber) ? It is just what it says. Somebody publishes something and somebody else can subscribe to it.
Suppose you have a button in your system and you want an event when the button is pressed. Easy, just do a CGEN (me->receiver, evOfInterest() )….
If it only were that easy… Of course this is not a solution, you probably want to re-use the button in other applications. If you have solved it like this, you have to change the button each time you want to re-use it. Better is to let the button be unaware of anything from the application and:

Reverse the Relation

Yes. The application should have a relation with the hardware and not the other way around. The hardware should have a “subscribe()” function that allows an interested user to be notified when the event of interest comes by.

*^@#$&*( “C”…

Yes… the old “C” fan starts to see the advantages of “C++”… “C” definitely has its uses but design patterns just work so much easier when you have encapsulation, inheritance templates and overloading.

image-1

A very cool example of ‘C’…

The publisher subscriber pattern works as follows, you have a publisher that “publishes” a certain service, let’s say a button can be pressed, you can “subscribe” to that press. This is done by a subscribe function where a function pointer and (We’re using Rhapsody in”C”!) a “me”-pointer are passed. The function stores them in attributes and can call the function via the pointer. Sounds easy but there are some caveats. You have to know the signature of the function to “type” the attribute and the subscribe functions’ arguments. This is a bit awkward since you can not “just” take any function, your compiler will protest. Also the “me”-pointer has to be of type “void *”, you can never predict which object it will be. Depending on the compiler you need some casts… not really elegant.PublSubsc

Elegant C++

Compare that to “C++” where you just create a Publisher Class that has a relation with a subscriber class. The publisher Class has the “subscribe” function that has a pointer to the class as argument. This will be stored in the “Subscriber”, that has an abstract Notify function that needs to be implemented in the inheriting class (Since it is abstract) Screen Shot 2018-03-28 at 16.12.29.png
You can use the subscriber type as a template and you have a ready made function that works for most cases. You only have to adapt the subscriber function but you can even make multiple functions with different parameters, the compiler will help you.

To make life easier I have put this in a Rhapsody 8.2.1 model, download here: PublSubsc.
As always: If you need an older Version: please respond.

That was it for today! Happy modeling with Rhapsody!

Walter van der Heiden (wvdheiden@willert.de)

« Older posts Newer posts »

© 2026 Rhapsody TechBlog

Theme by Anders NorenUp ↑