Commit graph

458 commits

Author SHA1 Message Date
Eric House
ced26e8e37 remove release-build-only warning 2019-11-27 08:44:09 -08:00
Eric House
7eaa466f78 add ability to send moves via NFC
You can now play an entire game via NFC. There's no UI though: big
question is how to make the feature "discoverable."
2019-11-23 10:53:51 -08:00
Eric House
8da3c5fc68 add comms_getPending(), and refactor to implement 2019-11-18 09:26:46 -08:00
Eric House
c69ec52502 add comms stats to conn status display (DEBUG only) 2019-11-05 08:30:38 -08:00
Eric House
685c8879c3 don't consider message received until it's processed
I think I'm seeing a bug where msg <n> is received, I record that I'm
now looking for msg <n+1>, fail to process <n> (perhaps because some
resource is temporarily unavailable?), and am now in a state where I
won't accept <n> when it's resent. This fixes this by only recording <n>
received after processing code has accepted it.
2019-11-03 08:35:56 +00:00
Eric House
96ee5bec8c start adding logging specific to comms' windowing
(Hi from Santiago)
2019-11-01 07:22:56 -07:00
Eric House
21b0815923 make msgNo reflect srcID, not channelNo
It's more useful if it's per-device unique within a game. (Just used for
debugging now, so no impact on anything.)
2019-03-18 10:55:40 -07:00
Eric House
d1881e7fc4 logging toward tracking a rare assertion failure 2019-02-26 14:33:18 -08:00
Eric House
f5c9962b66 tweak/reduce logging 2019-02-06 19:36:17 -08:00
Eric House
bdf1bd3b84 fix problems with RelayService
Darned thing was dropping packets, failing to connect games built in
response to invitations, and otherwise misbehaving. First was due to not
resheduling when exited with outbound packets in queue; second to not
overriding relayNoConnProc() (due to signature change.) Though it still
happens occasionally.... Also added timestamps to track how long it
takes a packet to be sent and ACK'd.
2019-02-04 13:28:05 -08:00
Eric House
15a2897112 Revert "toward compiling with gcc8"
This reverts commit d293517e7c.
2019-01-29 09:05:54 -08:00
Eric House
d293517e7c toward compiling with gcc8
My VSIZE is no longer legal, and apparently there's no workaround (no
way to safely figure the length of an array whose size is known at
compile time.) To avoid the risk of duplicating little constants, added
macros that define length in a way a new VSIZE can pick it up. Couldn't
make that work for struct field arrays, however, so there I'm using
constants.
2019-01-28 17:24:53 -08:00
Eric House
db641c4664 log gameSeed; generate on linux too
I'm seeing a rare case where a game connectes to relay specifying a room
and somehow gets both slots, having provided different gameSeeds the two
times. This means an opponent won't connect, the room being full in that
game. I can't reproduce, so am logging seed changes better and switching
linux client to leave seed generation to comms as Android does.
2019-01-08 08:16:50 -08:00
Eric House
84f636cbd5 always resend via SMS when opening game
It's done for other comm types too, and is necessary to get linux test
script to pass once I make SMS delivery unreliable. But it may duplicate
the tickle that Android's doing and result in duplicate messages: test.
2018-07-17 07:05:33 -07:00
Eric House
d4436b7706 Break part of util into dutil
Trying to separate what's game-specific from what can be app/device
specific (i.e. with a long lifespan, and available when a game isn't
open.)

Android will be broken after this commit and fixed after the next
2018-07-05 07:58:50 -07:00
Eric House
d46a4d13ba use mem_stream_make_raw() where possible in common code 2018-06-27 23:42:50 -07:00
Eric House
4504302b3b make "release" builds compile again
Release isn't really a thing on linux, but I'm fixing something that
only reproduces when DEBUG is undefined.
2018-02-18 11:30:54 -08:00
Eric House
ec075eff18 comment out assertion that's firing when db wiped 2017-11-11 18:49:23 -08:00
Eric House
f2c4c82129 a shot at no-conn connecting
Ideally the comms module wouldn't go through its connecting routine in
order to join a game. To that end I added a join() method to relay.py
and code to call it. Joins happen (pairing games, starting new ones,
etc.), but after that communication doesn't. First part of fixing that
would be to make cookieID persistent and transmit it back with the rest
of what join sends (since it's used by all the messages currently sent
in a connected state), but I suspect there's more to be done, and even
that requires a fair number of changes on the relay side. So all that's
wrapped in #ifdef RELAY_VIA_HTTP (and turned off.)
2017-11-10 21:34:02 -08:00
Eric House
55f5b500e3 cleanup: method names and logging 2017-11-02 06:19:35 -07:00
Eric House
bd250cfe1e log before asserting 2017-07-19 07:16:18 -07:00
Eric House
bdc1f5ff51 when game full drop message but don't assert
I'm seeing assertions when a game gets into a state I don't fully
understand: host receives messages that need a channelNo assigned but
the game's full. With luck they're duplicates and can be ignored,
because that's all I can do.
2017-06-28 07:04:15 -07:00
Eric House
95ec573169 save disabled booleans in comms state
I want them persisted since the GTK UI doesn't make sense and they
should effect background sends and receives too.
2017-05-26 07:30:42 -07:00
Eric House
b96d44393a add and use boolToStr
Just to make log messages a bit more helpful. Should be no behavior
change, and no change in code generated in release builds.
2017-01-22 14:15:29 -08:00
Eric House
8bf65622b5 fix crash duplicating no-address network game
An edge case, but: doing "new from" on a game without any connection
types crashed because of an assertion in comms that assumed
addr_setType() was being called on zero-initialized flags, which
shouldn't have been a requirement. Pulled that as well as java code that
added RELAY-type connectivity to any game that had none. If a game has
none, leave it that way.
2017-01-07 07:41:38 -08:00
Eric House
68104bcf83 remove logging 2016-12-19 22:21:51 -08:00
Eric House
33326d38a7 wifi direct: harvest and send mac address
Grab and store the local device's mac address. Add p2p as a type of
address, represented by the mac address of the recipient. Include the
local device's address in invitations sent when specified by user. Now
the WifiDirectService class is being passed a packet and the address of
the recipient; it will next need to set up sockets with every device it
encounters and map them to their mac addresses so that it can do a send.
2016-11-14 08:06:53 -08:00
Eric House
87150c7d91 replace assertion with logging and dropping event
Until I figure out why I'm see it, as it's getting in the way of other
things.
2016-08-13 17:16:20 -07:00
Eric House
19713a40ad add param to comms_resendAll to limit type of message sent
(e.g. BT). Meant to be used when a single type has become available.
2016-02-02 07:01:48 -08:00
Eric House
87517edd6f fix counting of messages sent by "Resend messages" menuitem: actually
count them, and do so based on new msgNo passed from comms that's
concatenation of channelNo and msgID so that duplicates (over multiple
transports) aren't counted twice.
2015-09-30 06:50:04 -07:00
Eric House
389a09ac1a Merge branch 'android_branch' into relay_noconn
Conflicts:
	xwords4/android/XWords4/archive/R.java
	xwords4/android/XWords4/res/values/strings.xml
	xwords4/android/XWords4/res_src/values-ba_CK/strings.xml
	xwords4/android/XWords4/res_src/values-ca_PS/strings.xml
2015-08-13 07:30:55 -07:00
Eric House
3a32d3a17b return count of messages sent from comms_resendAll(), and post it as a
toast so user sees something happened.
2015-08-13 07:05:06 -07:00
Eric House
517cfe6fda bring over saved file format change from relay_conn branch so builds
from each will be able to open each other's files.
2015-08-10 06:24:40 -07:00
Eric House
0a95bc0f42 drop messages using comms methods (e.g. SMS) for which comms hasn't
been set up. Fixes assertion firing when SMS messages go to wrong app
(normal vs CrossDbg), though the right fix is to have the two apps
using different ports so they don't get each other's messages.
2015-07-31 22:15:57 -07:00
Eric House
dad39eedde Remove devID from comms address. It's not needed yet, may never be,
and I don't want to store it until it is.
2015-07-22 06:16:29 -07:00
Eric House
0f33228155 get rematch working on linux, at least for two-device games. (Handling
the case where one of several guests wants to rematch is a hard
problem for later.) Requires passing old-style relayIDs (connname plus
device index) when devIDs aren't available, which they may not always
be.
2015-07-06 20:28:16 -07:00
Eric House
8f794fbd32 beginning of support for invite-by-relay (which is mostly interesting
for Rematch): works for linux version, provided you know the relayID
of the device you're inviting. Added to common/ a stream-saving
version of java's NetLaunchInfo I'll probably want to use there too
for cross-platform compatibility (there being no jni support for
json.)
2015-07-01 07:10:45 -07:00
Eric House
2e8c7695f3 fix failure to connect using means (e.g. BT) that becomes available
partway through a game. Problem was that once a channel was working
with one means we wouldn't fall back to default addressing for the
means for which we didn't have a return address yet. (NOTE: Not yet
fully tested...)
2015-06-11 07:29:47 -07:00
Eric House
f2f5fb22e6 use new comms header to transmit isServer bit 2015-02-23 18:28:31 -08:00
Eric House
86d8a46da2 Merge branch 'android_branch' into android_multi2
Conflicts:
	xwords4/common/comms.c
2015-02-18 19:40:36 -08:00
Eric House
b23c4d0a73 change comms header format to add a version and flags, marking with an
almost unique 16-bit quantity. 1 in 2^16 new games will fail because
its connID will match, but that's ok in part because it can only
happen during the time between when this is released and follow-on
version that assumes all older versions are gone.
2015-02-18 19:19:36 -08:00
Eric House
159a1a8dd2 use TAGFMT stuff for comms_resendAll() 2015-02-17 20:45:39 -08:00
Eric House
615ec72ea7 fix channelNo equality test so it doesn't break relay games, which
connect a bit differently.
2015-02-10 07:26:23 -08:00
Eric House
72a1d8b7d4 clear any server bits that happen to have been set in older games. 2015-02-10 07:05:34 -08:00
Eric House
cf4431402b additional check for misdelivered messages that fixes
three-participant SMS games on a single device: if message arrived on
a different channel from what its header says it was meant for, drop
it.
2015-02-10 06:55:08 -08:00
Eric House
ad6be1bb7e add debug-only "tag" to open games so logging can more easily track
what's going on when multiple participants in a single game are on the
same device. But for a couple of strings passed into the jni the
changes are only in DEBUG code.
2015-02-09 19:15:43 -08:00
Eric House
a34f4e4954 don't save unset channelSeed 2015-02-09 07:28:11 -08:00
Eric House
9e403ac6b2 add assert around the new bit that's -- bitten -- me once already 2015-02-09 06:46:34 -08:00
Eric House
5a28f8dedf fix recent message header hack to not break addressing of messages 2015-02-08 18:42:38 -08:00
Eric House
88dd25fb21 fix channel comparison so messages actually get deleted after they're
ack'd.
2015-02-08 13:39:35 -08:00
Eric House
fb011624bb add another assertion meant to find threading problems, and fix assert
firing because flag was set too late and sometimes bypassed.
2015-02-08 10:37:54 -08:00
Eric House
7e634ecc64 hijack a bit from channelNo to indicate whether message sender is
server or guest so that sender can tell when it receives a message
from itself (and reject it.) This fixes a lot of confusion in testing
where both participants in a networked game are on the same device,
but might also work around e.g. relay bugs.
2015-02-08 09:58:34 -08:00
Eric House
c6b42c539c add assert to ensure there are no thread issues: mutex may be required
if the assert winds up getting hit.
2015-02-08 07:51:08 -08:00
Eric House
17307f910b fix problem with misdelivered message forever locking out future
messages: when comms thinks a message is an init but server drops it,
give comms that info so it can remove it and give the next one a
chance.
2015-02-07 13:24:09 -08:00
Eric House
951f5462b3 remove assert. Can't always get forceChannel right on creation, and
it's mean to be advisory.
2015-01-12 07:23:50 -08:00
Eric House
28bfa3c904 make forceChannel part of CurGameInfo rather than comms, since Android
needs to save it there on receipt of an invitation (doesn't create
full game with comms until later.)  Passes discon2 tests and seems to
work on a single Android device. (Haven't tested inviting on Android
yet.)
2014-12-29 07:39:28 -08:00
Eric House
897c4d5786 add param to force a client to connect to host requesting a particular
channel. Works well enough that relay test script works. Not yet
integrated for let alone tested on Android.
2014-12-21 17:40:00 -08:00
Eric House
f0cf77d7d6 fix overwriting of addresses that happened for most (relay-only) games
run by my test script: match records based on channel number only.
This has yet to be tested on multi-addressing Android builds.
2014-12-10 07:54:50 -08:00
Eric House
5935681b82 in getDestID, deal with possibility game was consumated via a
non-relay channel, and allow client to use HOST_ID_SERVER.
2014-12-05 06:19:02 -08:00
Eric House
a6f9f6608a drop relay connect meta-messages (as well as game messages) when relay
send is disabled.
2014-12-02 06:52:48 -08:00
Eric House
53bfe9812d add const 2014-11-24 07:52:03 -08:00
Eric House
a1cdef6ad8 fix log format 2014-11-24 06:30:58 -08:00
Eric House
142861656e don't send when channel address doesn't have the right type yet 2014-11-21 22:53:48 -08:00
Eric House
fbea67e479 don't kill relay when bluetooth turned off: pass comms type into
comms_transportFailed()
2014-11-20 07:12:25 -08:00
Eric House
1d1af9ffb3 fix some asserts: we have BT working now 2014-11-14 07:06:02 -08:00
Eric House
f2ecefd573 copy bt address info too 2014-11-13 07:27:03 -08:00
Eric House
74afdbd8b6 add more asserts 2014-11-12 06:52:58 -08:00
Eric House
0e2bbfc1ad augment addresses even when message received is a duplicate. Now games
using (fake) SMS and relay work whichever of the address modes is
disabled during the game, on either side.  At least for two-device
games.
2014-11-11 07:46:01 -08:00
Eric House
c087824b47 snapshot with a bit of debugging added, mostly to tranfer to another machine 2014-11-07 20:26:02 -08:00
Eric House
8e616095ad add a bit more logging of channelNos 2014-11-06 20:28:51 -08:00
Eric House
70f4541bbe Merge branch 'android_branch' into android_multi2
Conflicts:
	xwords4/common/comms.c
2014-11-06 20:09:20 -08:00
Eric House
a34a859d18 log channelNo more consistently 2014-11-06 18:44:19 -08:00
Eric House
540d3e9622 wire disabling checkboxes into comms. They work -- and show that
multi-addressing needs debugging still.
2014-11-06 06:35:28 -08:00
Eric House
b1de8663d6 fix to compile with DEBUG undefined 2014-11-06 06:32:00 -08:00
Eric House
2426e04a70 fix overwriting of address info so that, AFAICT, both address types
are successfully being used through much of a test game.
2014-11-05 21:57:25 -08:00
Eric House
8aae7ae10a fix crash: don't use comms before initialized 2014-11-05 07:49:17 -08:00
Eric House
17bc0ab47c snapshot of work toward communicating when two addresses are in use.
An invitation works with relay and (fake) SMS on, and the invited
client connects successfully using both (the second to arrive being
correctly identified as a dupe.)  While the game can be played after,
only SMS messages are being received. And opening a saved game
crashes.
2014-11-05 07:41:20 -08:00
Eric House
e1a10508e1 when preprocessing a message, limit search to the address type of the
channel it came in on if known.
2014-11-02 17:24:37 -08:00
Eric House
b624867cb4 add addr_rmType() 2014-10-28 08:03:19 -07:00
Eric House
93f0b626af snapshot: invite sent by NFC connects two devices using relay with BT
ability passed too (though not yet used.)
2014-10-27 07:51:25 -07:00
Eric House
878a16b3bc snapshot: android compiles, and works well enough to exchange moves
via relay!  Lots of changes, mostly around treating connTypes as a Set
inside the java world.  Jni to translate to that is a pain.
2014-10-16 06:45:24 -07:00
Eric House
fe4c7b52f2 snapshot: relay test script works with a second address type set
(though with its actual transport stubbed out).  Android doesn't even
compile.
2014-10-15 07:26:18 -07:00
Eric House
93526d38d7 cleanup (version upgrade test works) 2014-09-25 22:24:09 -07:00
Eric House
43bd3c018a make an addr's conType a bitfield rather than holding a single value.
Works for large numbers of relay games in test, but will not yet
actually hold more than one value.  Should be safe to merge to main
branch once stream upgrade is verified.
2014-09-25 20:05:37 -07:00
Eric House
4d2f49d33f when sending and don't have an address for channel yet, send the one
comms was created with, which is what client will have to do anyway.
2014-09-14 13:41:12 -07:00
Eric House
23b72467bb don't assert unset cookieID, as that's normal (I think) for unconnected case 2014-03-08 12:47:58 -08:00
Eric House
c1e22dd3cf add summary DB column and jni code to fetch it to store and display number of unacked messages a game has. And add debug-only option to display it in the main list. In the future I want to be able to iterate over all these games and resend their packets (without opening them visually) when an internet connection comes back up. 2014-02-28 18:59:12 -08:00
Eric House
025bcb885b don't move state forward when should be moving back 2014-02-09 19:35:17 -08:00
Eric House
0b132661ca change struct name from r to rr for easier searching; no code change 2014-02-07 21:12:45 -08:00
Eric House
e34cc9007d fix problems with opening and using wordlists on 64-bit linux by
making XP_U32 32 rather than 64 bits. Duh. Do same on Android jni just
in case.
2014-01-07 06:58:20 -08:00
Eric House
de41802f54 rename variable so I don't trip up again 2013-12-17 21:08:27 -08:00
Eric House
4420049bd0 remove duplicate lines (added by merge?) 2013-12-16 08:05:35 -08:00
Eric House
1f877c7567 remove logging 2013-07-29 07:29:01 -07:00
Eric House
a191c6fc2a don't add chats to queue at len 64 rather than 128 2013-07-22 06:12:06 -07:00
Eric House
27d9f3de45 Don't enable chat when more than 128 messages are in queue to prevent
an extremely unlikely cause of stalls -- and make tests trip over full
queues less often.
2013-07-18 07:37:45 -07:00
Eric House
62dacb83d8 fix to compile when DEBUG not defined 2013-07-16 08:17:46 -07:00
Eric House
9e358ad413 don't insert a new message in queue if it's identical to the one
currently at the end.  This mostly happens when devices are making
several initial client connection attempts before succeeding.
2013-07-12 07:34:12 -07:00
Eric House
a522266ce4 add message checksumming for android too by making it part of util
(compiled out by default)
2013-07-10 08:05:47 -07:00
Eric House
5462a05692 Merge branch 'gtk_multigame' into android_branch 2013-07-09 19:35:26 -07:00
Eric House
bf1cdf225c print queue less frequently 2013-07-09 19:32:49 -07:00
Eric House
d50c808f96 Merge branch 'android_branch' into gtk_multigame
Conflicts:
	xwords4/android/XWords4/src/org/eehouse/android/xw4/DlgDelegate.java
	xwords4/common/comms.c
	xwords4/linux/cursesmain.c
	xwords4/linux/cursesmain.h
	xwords4/linux/gtkmain.c
	xwords4/linux/gtkmain.h
	xwords4/linux/linuxmain.c
	xwords4/linux/main.h
	xwords4/linux/scripts/discon_ok2.sh
	xwords4/relay/xwrelay.cpp

(Note: The curses app crashes on exit with mempool assertions, but that's a problem before the merge.)
2013-07-09 07:18:00 -07:00
Eric House
a3de759d9e fix to compile on Android when DEBUG set 2013-07-07 19:40:07 -07:00
Eric House
923d41e0ee fix to compile when DEBUG not set 2013-07-07 13:17:26 -07:00
Eric House
bbac923f68 assert queueLen at the point where it'll be easier track why it's overgrowing 2013-07-05 21:32:41 -07:00
Eric House
7229535be7 insist on non-0 channel ID *net of mask*; don't send acks when we
don't have a connID yet, as this confuses the server.  This fixes
assertions in testing that were pretty common when chat was enabled;
it may also fix the reported problem on Android that games get hosed
when people are using chat, as the server's response (without the
assert) was to add a new channel.
2013-07-03 07:39:05 -07:00
Eric House
858d00332a when an initial message from a client arrives with channel already
set, drop it (after asserting in debug code.)  I'm not yet sure why
this happens, but giving it a new channel is not the right move.
2013-07-02 18:49:48 -07:00
Eric House
1f63745e34 add more logging in search of channelNo bug 2013-07-01 07:54:38 -07:00
Eric House
c77021231c print checksums of sent and received messages 2013-06-30 08:33:29 -07:00
Eric House
b31858ee5e log rather than assert when hostid changes -- though I'm not seeing
this now that the relay doesn't send packets to the wrong device
2013-06-26 00:42:55 -07:00
Eric House
6d22c3ab86 tweak logging 2013-06-22 05:51:29 -07:00
Eric House
8e8b4755b3 bring in changes from gtk_multigame to remove assertion fail when
connname gets changed by relay due to failure to ack it (which happens
when a large number of games is being run in a test.)
2013-05-30 06:48:29 -07:00
Eric House
d78a4979da HACK: if gi's notion of gameID is out of sync, force it in (logging
the fact).  I'm not sure why but this is required sometimes on
Android.
2013-01-28 07:01:49 -08:00
Eric House
3be45a67f7 fix erroneous asserts: it's uncommon but ok for a device to get
assigne a second connname.  (Cause: failure of relay to receive the
device's ACK.)
2013-01-26 18:56:53 -08:00
Eric House
c839db4a25 disconnect from relay no matter what the state 2013-01-22 06:12:55 -08:00
Eric House
f6e7ece578 add comms_stop() and an assert to make sure it's called. Explicit
stop and a message to the relay when using a UDP socket makes up for
there being no notification of connection closing.
2013-01-16 06:31:09 -08:00
Eric House
5463535265 don't increase backoff if there wasn't actually anything to send. 2012-11-14 05:42:47 -08:00
Eric House
c4df31892e Fix occasional infinite loop of devices sending and receiving the same
message over and over when getting updated by GCM.  The problem
occurred when one device had an un-ACKable initial message still in
its queue.  I call resendAll a lot, which caused that message to get
resent to the other game which then replied without being able to ACK
it so it remained to be sent again.  This would continue until users
moved forward in the game.  The fix is to add a backoff timer to
resendAll() so that it can't loop.  The timer is reset when an ackable
and new message is received, meaning there's been a change in what's
available to resend.  And since users calling resendAll manually
expect it to do something, add a force param that ignores the backoff.
seems to fix the problem (but needs a lot of testing.)
2012-11-13 21:25:03 -08:00
Eric House
cf8d30ce5d tweak logging; fix uninitialized debug-only variable 2012-11-13 21:18:52 -08:00
Eric House
57ea768aaf refuse to send 0-length messages. That may happen only when the stupid
curses client calls server_initClientConnection over and over, but
reduces unnecessary messaging in that case at least.
2012-11-13 07:22:48 -08:00
Eric House
43b1e219f3 add a bit more logging to comms 2012-11-13 06:14:36 -08:00
Eric House
1316ae4b67 Fix relay devid protocol to deal with case where client submits a
ID_TYPE_RELAY id that's not in the devices table (as has happened when
a device switches relay URLs during testing, but might also happen if
I have to delete an entry from the devices table.)  In that case,
return ID_TYPE_NONE to the client, which will be its clue to delete
its ID_TYPE_RELAY id and submit the platform-specific id again.

Note: android won't compile this revision thanks to util.h change
2012-11-10 15:05:44 -08:00
Eric House
f1ee77882b Send devid with RECONN as well as CONN so games present when device
upgrades can also use GCM.  Tested on relay but not device.
2012-11-09 06:54:12 -08:00
Eric House
9ad28908bb assert enum within range 2012-11-06 07:07:14 -08:00
Eric House
59937b8514 modify how devids are handled on the relay and the protocol through
which they're communicated to the device.  Device is expected to have
a platform-specific notion of ID which the relay stores in a new
devices table and indexes with a 32-bit number which is returned to
the device -- which is encouraged but not required to use it in lieu
of the longer ID in future communications.  Modify linux client and
test script to use the relay-supplied id.  Some of this is commented
out for now.
2012-11-03 10:58:01 -07:00
Eric House
3469975d2a add, still disabled by compile-time flags, code to transmit device ID
(e.g. ID Android devices get via GCM) to relay and to associate it
there with messages that need to be delivered.
2012-10-30 07:01:47 -07:00
Eric House
6ddd4a61c1 fix compile errors (mostly unused variables) found by gcc on latest
Ubuntu (12.04).
2012-09-25 07:28:02 -07:00
Eric House
0ccc2331b5 address bug where message was getting ACK'd by a device that failed to
save what it had ACK'd leaving the game permanently broken.  Do that
by adding a new method game_saveSucceeded() called after the client
claims to have committed bytes returned by game_writeToStream() to
disk.  In that method comms updates the value it'll use in subseqent
ACKs.
2012-09-10 07:31:45 -07:00
Eric House
32e1530d3f i => ii; no other change 2012-08-22 07:44:21 -07:00
Eric House
08f03af2cc don't write gameID as 32 bits when it's bound for old-version client,
and assert based only on the lower 16 bits in case came from
old-version client.  Fixes crashes testing mid-game upgrade from beta
43.
2012-05-07 07:02:43 -07:00
Eric House
033a69be8d to make it easier to tell games apart, print the number[s] of the
remote device[s] as part of summary view and in game config screen
(read-only).  Use same field in summaries table for remote phone
numbers and bt addresses.
2012-04-18 23:23:36 -07:00
Eric House
416a1054a7 Merge branch 'android_ack' into android_bt
Conflicts:
	xwords4/common/comms.c
	xwords4/common/comtypes.h
2012-04-13 20:57:35 -07:00
Eric House
f22d9530b1 track what's been ack'd, and add method to ack what hasn't been. 2012-04-13 20:21:59 -07:00
Eric House
404265565b tighten definition of connected BT or SMS game 2012-04-12 22:14:13 -07:00
Eric House
ac06d730f8 fix so chat works on SMS (and BT, though untested) 2012-03-24 12:04:07 -07:00
Eric House
fe614e9efc delegate phone number comparison to platform code which in Android
case has a method for it.  strcmp is not enough.
2012-03-19 07:36:18 -07:00
Eric House
a2493ffa97 Merge branch 'android_branch' into android_bt 2012-03-06 07:47:05 -08:00
Eric House
24ac205917 cleanup -- no behavior change 2012-03-06 06:23:04 -08:00
Eric House
9a2b488183 Merge branch 'android_branch' into android_bt 2012-02-14 16:56:20 -08:00
Eric House
914fa857be return COMMS_CONN_NONE as address type of null comms rather than asserting. 2012-02-14 16:54:19 -08:00
Eric House
7214b7e12a turn off the palmos-era bt wrapper stuff I was trying to use to know
when to reset the stack.  It breaks Android when I turn on
XWFEATURE_BLUETOOTH and adds no value I can see.
2012-02-07 17:38:24 -08:00
Eric House
47c3bd3090 track a BT game's set (singleton for two-device game) of remote
devices in summary DB so, e.g., we can quickly determine what games
care when a devices becomes available via BT.  First use of this is
notifying when a remote game's deleted -- least that's the plan.  This
commit just adds to the DB and scans the DB to build a map of
device->gameIDs array.
2012-02-06 19:02:19 -08:00
Eric House
6326e45892 make btAddr a string rather than array of bytes. 2012-01-31 18:43:26 -08:00
Eric House
6bfd6e74e6 Merge branch 'android_branch' into android_bt 2012-01-26 06:24:18 -08:00
Eric House
866aeb2387 change relay connect message format to include client version (meaning
of which is TBD).  When a new-version client connects, store the value
it's passed. At first this will let me track how quickly people
upgrade.  Later I can use it to let different clients have different
formats to their messages e.g. to proxy.
2012-01-26 05:43:54 -08:00
Eric House
0934f83106 add gameID to params passed to comms' sendproc, including passing
through to java layer.
2012-01-25 18:27:37 -08:00
Eric House
814e4dd088 cut some logging 2012-01-03 18:53:58 -08:00
Eric House
b04604595f change assertion to log -- fails very infrequently which is probably to be expected. 2011-12-15 18:37:20 -08:00
Eric House
eec83fe5b6 don't fail when RELAY_ALLHERE comes without a connection, as that will
happen when messages come in background.  I'm not sure what the test
I'm removing was there to catch so need to test thoroughly.
2011-11-21 17:38:50 -08:00
Andy2
2492e7cfc5 Merge branch 'android_branch' into send_in_background
Conflicts:
	xwords4/linux/cursesmain.c
2011-11-13 17:10:46 -08:00
Andy2
645695e358 improve logging, and fix mistyped variable found by inspection rather
because of a problem.
2011-11-10 06:41:07 -08:00
Andy2
f41d3c27e6 Merge branch 'android_branch' into send_in_background
Conflicts:
	xwords4/common/server.c
2011-10-19 06:23:16 -07:00
Andy2
652b7e703a Remove difference between debug- and non-debug stream format. 2011-10-18 21:27:28 -07:00
Andy2
b31e829414 Remove file-format differences between debug and non-debug versions.
Fix curses to compile non-debug.
2011-10-18 18:52:37 -07:00
Eric House
26ba812aff cleanup 2011-09-22 17:31:57 -07:00
Andy2
92614370ce Merge branch 'android_branch' into send_in_background
Conflicts:
	xwords4/common/comms.c
2011-09-20 06:21:54 -07:00
Andy2
63893b8a0d add stream_getPtr() and use to remove a couple of allocs, including
one per message sent.
2011-09-18 16:54:36 -07:00
Andy2
b9be2b45f4 sendMsg needs to report success if no-conn send works. 2011-08-17 18:41:45 -07:00
Andy2
7ab8c6eca4 re-factor sending code so essentially same message (without cookieID
that implies a connection) is sent and received by no-conn code.  Use
flags to determine if comms can support no-conn sending without making
up the message only to have it fail to send.
2011-08-16 19:36:23 -07:00
Andy2
e88af19e0a toward the ability to send replies to messages received in background
without user having to open the game, which will e.g. allow a host to
assign tiles, or a robot to move, without the phone's owner noticing
there's a message.  This is on a branch because it may never work.
2011-08-10 18:28:34 -07:00
Eric House
cbfdf992bd add compile-time option to allow passing game seed from commandline.
This should allow testing relay changes to deal better with duplicate
seeds.
2011-07-31 22:23:46 -07:00
Andy2
f3ab40519d add new error message to DEBUG-only printing code. 2011-07-06 06:47:56 -07:00
Andy2
0eec455119 change one return type; improve logging 2011-07-04 12:46:48 -07:00
Andy2
a96dfb57f6 drop-packet test got an assert because we assumed the effects of a
dropped packet.  Instead, now treat the connection as broken and
restart.
2011-06-27 18:30:52 -07:00
Andy2
e886a1aefe lots more changes -- another snapshot, this, rather than stuff
carefully polished and reviewed.  Shows progress, though, in getting
through tests.
2011-06-23 07:12:50 -07:00
Andy2
4c5c435fb5 add new parameter so client always gets notified on connection
including how many players are still missing.
2011-05-19 05:51:00 -07:00
Andy2
4b8e462b8b check for null ptrs to allow creating loading games that won't draw or
communicate with users.
2011-01-23 21:45:41 -08:00
Andy2
4a12f7a96f Revert "in attempt to work around non-random rand() in jni world, call back"
This reverts commit 99c92e779d.

Conflicts:

	xwords4/android/XWords4/jni/utilwrapper.c
2010-12-07 18:43:53 -08:00
Andy2
99c92e779d in attempt to work around non-random rand() in jni world, call back
into the java world by making it a util_ctxt function.  Do same on
linux to test.  We'll see how it is -- and can back this commit out if
there's no improvement.
2010-12-02 19:02:36 -08:00
Eric House
7a2d279308 add logging so script can better track what state relay game is in 2010-11-18 22:27:06 -08:00
Andy2
b0a4790ce0 respond to new game-gone message by passing to utils. 2010-11-11 06:41:24 -08:00
Andy2
22f7a42c1d make comms_getChannelSeed non-static so jni can call it 2010-11-08 17:22:38 -08:00
Andy2
cfd4345287 remove too-frequent logging 2010-11-07 13:31:43 -08:00
Andy2
9e05e6c2b3 add lastMsgRcd to status printout 2010-11-03 18:28:54 -07:00
Andy2
804070efc7 base comms_canChat() on whether connID's been assigned. It's possible
to send a message from a client immediately after its initial message
but init-message dupe-detection in comms will drop that because only
one channel-0 message is expected -- the initial connection message.
So don't encourage platform code to enable the feature before common
code can deliver the message.
2010-11-01 06:57:41 -07:00
Andy2
0d7f2c4f23 add devOrder (= hostID) to params passed on connect. Should make for
better explanatory message.
2010-10-29 06:31:33 -07:00
Andy2
4cd15a9c6a Merge branch 'relay_proxy' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into relay_proxy
Conflicts:
	xwords4/common/comms.c
2010-10-29 05:27:07 -07:00
Andy2
41fc05106b add room name to callback used when device connects 2010-10-28 18:45:55 -07:00
Eric House
eba5b77494 add comms_isConnected; public room variables default to false 2010-10-27 20:50:11 -07:00
Andy2
e909e4b343 remove redundant message; advance state to ALLCONNECTED on receipt of
RECONN or CONN that lists the game as full.  This means we get the
all-green icon (or the A in the gtk case) when in a consummated game
rather than only when all devices are actually connected.
2010-10-23 20:29:24 -07:00
Eric House
85d29cf560 if can't send allcond to a device because it's not connected queue the
message to be sent next time it does.  And since the cookieID will
change and should be there already anyway, remove it.  (Should remove
the hostID too for the same reason.)
2010-10-22 19:02:52 -07:00
Andy2
99dbbb443c add comms_canChat, which knows better than java code what state a
connected game is in, and call it to determine whether to show the
chat icon.
2010-10-21 19:14:10 -07:00
Andy2
b9e3ca212b turn off glib-dependant checksuming for non-linux builds 2010-10-18 22:08:04 -07:00
Eric House
3648c22bd4 fix long-standing bug where initial messages were not getting deleted
and multiplying; log md5 sums of messages in debug build.
2010-10-18 20:17:44 -07:00
Eric House
f246178b8f Merge branch 'relay_proxy' of ssh://xwords.git.sourceforge.net/gitroot/xwords/xwords into relay_proxy 2010-10-12 19:18:21 -07:00
Eric House
0cf94dda8b fix frequent assertion failure that dates from when no messages passed
outside of ALLCOND state.  With this fix the test script is running
all games to completion if given enough time.
2010-10-12 19:16:46 -07:00
Andy2
e637a64d96 Change param signage to fix compiler warning 2010-10-11 06:20:30 -07:00
Eric House
a89520a377 use __func__ 2010-09-28 18:04:31 -07:00
Eric House
047f41b516 send cookieid as part of [RE]CONNECT_RESPONSE in addition to ALL_COND (where it's now redundant). 2010-09-20 22:06:35 -07:00
Andy2
6d6ad96cde don't clear seed when changing roles from guest to host. 2010-09-20 04:56:19 -07:00
Andy2
821e4d9c39 add ACK to protocol, returned by device after gets connName on initial
connection.  Space is held for device on assumption ack will come
back, then given up if it fails.
2010-09-14 13:54:52 -07:00
Andy2
bd71a15ddc turn off heartbeats on client side 2010-09-11 01:23:13 -07:00
Andy2
2ee9031fdc langcode belongs in connect, not reconnect, message 2010-09-10 01:56:58 -07:00
Andy2
20312144dd tons of changes, still rough, snapshoted here: a gtk device vs device
game works to completion with both signing up as guests (no -s) with
one local and one remote player (identical commandlines.)  Not yet
tested: if any signs up as a host, reconnecting rather than
connecting, etc.  This is just a snapshot.
2010-09-10 01:30:40 -07:00
Andy2
01fe388f85 remove logging accidentally checked in 2010-09-03 06:40:17 -07:00
Andy2
b742c7dbb7 add new booleans to relay address record around public rooms 2010-09-03 06:38:46 -07:00
Andy2
a34ccb424f device now passes list of "relayID"s, consisting of connName plus
device id, to relay, one for each stored game that's communicating via
the relay.  Relay parses out each relayID.  Next relay can use these
to look up whether messages are available and reply with that, and
device can put up a notification.
2010-08-22 12:16:57 -07:00
Andy2
205723e03b add missing event to logging 2010-07-30 17:44:20 -07:00
eehouse
ea6166f8c7 add comms_resetSame that resets relay with existing params. 2010-06-05 03:39:16 +00:00
eehouse
9b955ae770 resendAll on REconnect as well as connect since it doesn't otherwise
seem to get done.
2010-03-28 16:09:34 +00:00
eehouse
55abf1116b get relay port from prefs and pass into jni 2010-03-25 04:50:19 +00:00