Skip to content

Commit

Permalink
Merge pull request #662 from afischerdev/docs
Browse files Browse the repository at this point in the history
Updated service, osmand doc, added docker doc
  • Loading branch information
afischerdev committed Feb 19, 2024
2 parents 97e9a82 + 503ceb6 commit 47ee77b
Show file tree
Hide file tree
Showing 4 changed files with 189 additions and 5 deletions.
43 changes: 38 additions & 5 deletions docs/developers/android_service.md
Expand Up @@ -39,19 +39,52 @@ Please note: when they have a parameter 'weight' the result is not an absolute n

This parameters are needed to tell BRouter what to do.

### using profiles

For calulation BRouter uses a set of rules defined in a profile. See description of profile [rules](https://github.com/abrensch/brouter/blob/master/docs/developers/profile_developers_guide.md).

Here we talk about how we let BRouter know witch profile to use.
There are three ways:

1. use the parameter 'v' and 'fast'
```
"v"-->[motorcar|bicycle|foot]
"fast"-->[0|1]
This enables BRouter to look into the file serviceconfig.dat.
In there BRouter find the profile associated for e.g bicyle_fast trekking
This could be changed by the user calling the BRouter app server-mode.
```

2. use the profile parameter
```
profile=trekking
It needs an available file in the BRouter profile folder e.g. trekking.brf
```

3. use a remote profile
```
remoteProfile=a long string with routing rules
This is saved in BRouter profile folder temporary with the file name 'remote.brf'
```


### profile parameter

Profile parameters affect the result of a profile.
The variables inside a profile predefine a value e.g. avoidsteps=1
A parameter call gives the chance to change this start value without changing the profile e.g. avoidsteps=0
For the app it is a list of params concatenated by '&'. E.g. extraParams=avoidferry=1&avoidsteps=0
The server calls profile params by a prefix 'profile:'. E.g. ...&profile:avoidferry=1&profile:avoidsteps=0

By using this parameter logic, there is no need to edit a profile before sending.

### using profile parameter inside an app

To be flexible it is possible to send a profile to BRouter - server or app.

Another variant is to send parameters for an existing profile that are different from the original profile.

With the version 1.7.1 it is possible to collect parameters from the profile.
With the version 1.7.1 it is possible to collect parameters from the profile.
The variable parameters are defined like this
```
assign avoid_path = false # %avoid_path% | Set to true to avoid pathes | boolean
Expand All @@ -61,9 +94,9 @@ Now you could do that with an calling app.

What to do to get it work?

- First copy the [RoutingParam](brouter-routing-app/src/main/java/btools/routingapp/RoutingParam.java) class to your source - use the same name and package name.
- First copy the [RoutingParam](brouter-routing-app/src/main/java/btools/routingapp/RoutingParam.java) class to your source - use the same name and package name.
- Second analyze the profile for which you need the parameter.
This [BRouter routine](https://github.com/abrensch/brouter/blob/086503e529da7c044cc0f88f86c394fdb574d6cf/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java#L103) can do that, just copy it to your source to use it in your app.
This [BRouter routine](https://github.com/abrensch/brouter/blob/086503e529da7c044cc0f88f86c394fdb574d6cf/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java#L103) can do that, just copy it to your source to use it in your app.
It builds a List<RoutingParam> you could send to BRouter app.
- You find the call of BRouter app in comment at [RoutingParameterDialog](https://github.com/abrensch/brouter/blob/086503e529da7c044cc0f88f86c394fdb574d6cf/brouter-routing-app/src/main/java/btools/routingapp/RoutingParameterDialog.java#L33)

Expand All @@ -79,7 +112,7 @@ intent.putExtra("runsilent", true);
startActivity(intent);
```

This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog.
This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog.

### silent app call

Expand All @@ -92,7 +125,7 @@ intent.putExtra("runsilent", true);
startActivity(intent);
```

This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog.
This suppress the first question after installation for the BRouter path, generates the BRouter folders in main space and starts the download dialog.

## other routing engine modes in app

Expand Down
125 changes: 125 additions & 0 deletions docs/developers/docker_guide.md
@@ -0,0 +1,125 @@
---
parent: Developers
---

# Docker help

In addition to the intro in readme.md about Docker, here are a few commands for daily work with the system.

Build the Docker with a version based name
```
$ docker build -t brouter-1.7.2 .
```

Start Docker with name additional to the Docker image name.
Please note:
The path for segments are on a Windows system.
Here the port used in server.sh is published.
```
$ docker run --rm -v "I:/Data/test/segment4":/segments4 --publish 17777:17777 --name brouter-1.7.2 brouter-1.7.2
```

and with a mount for profiles as well
```
$ docker run --rm -v "I:/Data/test/segment4":/segments4 -v "I:/Data/test/profiles2":/profiles2 --name brouter-1.7.2 brouter-1.7.2
```

Show the running Docker processes
```
$ docker ps
output:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b23518e8791d brouter-1.7.2 "/bin/sh -c /bin/ser…" 5 minutes ago Up 5 minutes 0.0.0.0:17777->17777/tcp brouter-1.7.2
```

Fire some curl or wget commands to test if is realy useful running.

Stop a running Docker image - please note, this only works when starts docker image with name, see above
```
$ docker stop brouter-1.7.2
```

Docker available images

```
$ docker images
output:
REPOSITORY TAG IMAGE ID CREATED SIZE
brouter-1.7.2 latest e39703dec2fa 2 hours ago 410MB
brouter latest 728f122c7388 3 hours ago 410MB
```

Control
## Docker with docker-compose

Use a git clone to build a local folder with last version.
Make a Docker container with version number inside your repository folder.
```
$ docker build -t brouter:1.7.2 .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
brouter-1.7.2 latest e39703dec2fa 3 hours ago 410MB
brouter 1.7.2 e39703dec2fa 3 hours ago 410MB
```

Start a container with composer
This needs a docker config file docker-compose.yml
Something like this:
```
version: '2'
services:
brouter:
image: brouter:1.7.2
restart: unless-stopped
ports:
- 17777:17777
volumes:
- type: bind
source: "I:/Data/test/segment4"
target: /segments4
# - type: bind
# source: "I:/Data/test/profiles2"
# target: /profiles2
```

Start it
```
$ docker-compose up -d
```

Have a look what is running
```
$ docker-compose ps
or
$ docker-compose ls
or
$ docker ps
```


Now update your repository (git pull) and build your Docker container with the new version tag
```
$ docker build -t brouter:1.7.3 .
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
brouter 1.7.3 5edc998cb5ae 3 hours ago 410MB
brouter-1.7.2 latest e39703dec2fa 6 hours ago 410MB
```

Replace the version in Docker config file docker-compose.yml
```
image: brouter:1.7.3
```

Stop old running container and start the new one
```
$ docker-compose down
$ docker-compose up -d
```
26 changes: 26 additions & 0 deletions docs/users/osmand.md
Expand Up @@ -67,3 +67,29 @@ application profiles"/>
The BRouter app should be launched before OsmAnd for this specific entry to
appear in OsmAnd. Therefore, if you cannot find "BRouter (offline)" navigation
option, you should force quit OsmAnd and restart it.


## OsmAnd version 4.7.1

From version 4.7.1 upwards Osmand supports the profile parameter for mapping:
Since Osmand version 3, many profiles can be defined in Osmand and the user can easily switch between these profiles.
This allow now when using the service-interface to address different brouter-profiles in a more flexible and better comprehensive way.

- If in Osmand a profile has "BRouter" defined as navigation service
- AND the profile-name looks like "Brouter[mysting]

==> then the profile "mystring" will be used in the Brouter-app!
(this new mapping replaces in that case the basic mapping defined above and based on the file "serviceconfig.dat)

### Examples: Osmand-profile name Brouter-app
```
[Brouter[trekking] "trekking" profile will be used (file trekking.brf)
[Brouter[racebike] "racebike" profile will be used (file racebike.brf)
....
```
Remark:
Currently Osmand do not check the defined name (case sensitiv) for the Brouter-profile (mystring).
If no profile is found, the routing will fail with "Could not calculate route.."!

<img src="osmand/brouter-osmand-4.7.1.png" alt="BRouter configuration in OsmAnd
application profiles"/>
Binary file added docs/users/osmand/brouter-osmand-4.7.1.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 47ee77b

Please sign in to comment.